51单片机-点亮LED灯

我们先来看下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语句后不加分号)

猜你喜欢

转载自www.cnblogs.com/Tayl0r-Swift/p/12441565.html