我们先来看下LED灯的原理图
图中的发光二极管就是我们的LED灯,二极管左边接了vcc,那么我们只要把右边的P2x变为低电平就可以点亮对应的二)#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
sbit led=P2^0; //将单片机的P0.0端口定义为led。sbit是定义特殊功能寄存器的位变量,我们就可以对P20进行操作了,这里对应着第一个LED灯。 /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main() { led=0; //P2.0端口设置为低电平,那么LED灯就会亮 while(1);//while死循环,单片机和我们平时写的程序不一样,我们需要让单片机不断地死循环,这也是写代码是必须有的死循环语句 }
编译后生成.hex文件,然后就可以进行烧录了。
如果想要第二个灯亮,那么我们只需要进行 sbit led2=P2^1;然后对这个led2进行操作就可以了。
如果我想让全部灯都亮,我就需要用很多sbit来定义这8个端口吗?
实际上是不需要的,我们可以用#define LED P2来操作这个P2口。
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 #define LED P2; //将单片机的P2端口定义为LED void main() { LED=0x0; //0x0是16进制表示,换为二进制即为0000 0000,这就代表了把P2^0赋值为0,把P2^1赋值为0……
while(1);
}
这样8个led灯就全亮了,如果我只想让其中某几个灯亮,那么对LED赋值就可以,比如1011 0010,0就表示对应的LED灯亮,1表示不亮,化为16进制为0xb2。
LED=0xb2;b赋给LED的高四位,也就是P2^7~P2^4,2赋给第四位,结果就是第1,3,4,7个led灯亮。
(#define语句后不加分号)