1.LED模块学习
1.1-1 点亮一个LED
LED灯的链接原理图如图所示
其中,VCC表示电源正极(高电平),其中用蓝色线框框出来的RP代表电阻,其阻值为1k,用102表示(即10*10^2),起到限流的作用。
LED灯的本质是发光二极管,只能单向导通,所以我们若想使点亮LED灯,就必须在其的负极(即P2端)接上低电平。
其中,在51单片机里使用的是TTL电平,高电平为5V,低电平为0V。
而我们若想控制P2端给其低电平,则必须通过编程语言(C语言)控制P2口的寄存器来完成。
LED模块与单片机的引脚连接如图。
简单点,我们可以通过如下的C语言代码来实现LED灯的点亮。
其中,1代表给这个位置附上了高电平,0代表给这个位置附上了低电平。而在二进制下,从低位到高位,与八个LED灯的位置一一对应,即此程序点亮了第一个LED灯。而为了书写方便,一般会将二进制数转化为十六进制。
但实际上,使用十六进制依然存在繁琐不方便。所以我们一般会用P2_0=0,P2_1=1等形式 来给P2的接口赋值。(需有头文件#include<REGX52.H>)
1.1-2 LED灯闪烁
在点亮LED灯的基础上,若想实现LED灯闪烁,则需要让LED灯亮与灭之间存在延时。而为了达到延时,我们可以调用这么一个延时函数Delay。
#include <INTRINS.H>
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms)
{
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
xms--;
}
}
这样我们的代码就可以实现LED灯以1s为周期的闪烁。
#include <REGX52.H>
#include <INTRINS.H>
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms)
{
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
xms--;
}
}void main()
{
while(1)
{
P2=0xfe;
Delay(500);
P2=0xff;
Delay(500)