用15单片机点亮LED


硬件电路

学习该课程之前,你应该已经掌握了用51单片机点亮LED的基本技巧

下面是和点亮一个LED相关的硬件电路,可以看到主要有四个部分

图中标注了点亮第一个LED需要的电平,红色为1,蓝色为0。

要想第一个LED亮<==74HC573锁存器的Q1应为0<==74HC573锁存器的OE_=0,LE = 1时,让D1 = 0。


代码1:因此点亮一个LED灯的代码如下

#include <STC15F2K60S2.h>
//这里不需要再定义P00,因为15芯片在在头文件里都定义了
void main()
{
	P00 = 0;
	P25 = 0;
	P26 =0;
	P27 = 1;
	while(1);
}

点击后,编译,然后把板子连上电脑,按下图烧录程序

运行后灯会亮,蜂鸣器可能也会响,这是因为蜂鸣器是默认打开的,先不用管

点击显示图片

点击显示图片


代码2:更紧凑的写法

#include <STC15F2K60S2.h>
void main()
{
	P00 = 0;
	P2 = (P2&0x1f)|0x80;//0x1f: 0001 1111;
	                   //P2&0x1f: &是逻辑与,结果使得P2的后5位不变,前三位变0;
					   //(P2&0x1f)|0x80: |是逻辑或,(P2&0x1f)的前三位变为100
	while(1);
}

在proteus中仿真实现

proteus中没有15芯片,因此一般用我们更熟悉的STC89C52代替,两个的功能基本一致,但也略有不同

一个区别是51芯片的头文件reg52.h中没有对P00等引脚具体定义,需要在程序中再具体定义,如下所示

#include <reg52.h>
sbit P00 = P0^0;
sbit P25 = P2^5;
sbit P26 = P2^6;
sbit P27 = P2^7;
sbit P36 = P3^6;
void main()
{
	P00 = 0;
	//下面的三句目的是让Y4引脚输出为低电平
	P25 = 0;
	P26 = 0;
	P27 = 1;
	
	while(1);
}
============================找指导老师布置任务吧==============================