控制/MCU
这篇文章我们讲解使用51单片机控制LED灯的闪烁。那么为了方便理解,我们要从最基础的讲起。闪烁,就是灯一会儿亮一会儿灭,这个一会儿就是时间间隔,也就是今天我们说的延时了。比如灯亮1s,再灭1s,循环往复就是闪烁。
那么首先借助原理图,使用LED1进行演示,也就是P1.0。注意:LED是低电平点亮,不了解原因的去看开头引用的文章。
#include < reg52.h >
sbit LED1=P1^0;//定义LED1为P1.0口
延时函数使用for循环或者while循环,其实就是执行一段空代码,因为每执行一次for或者while循环都要耗费一点时间,这个时间就由指令周期决定,指令周期由时钟频率决定,也就是外部晶振的频率决定。
void delay_ms(unsigned int nms)
{
unsigned char cnt=125;
unsigned char i,j;
for (i=0;i< nms;i++)
for(j=0;j< cnt;j++);
}//这里我们经验值给定是125个for循环为1ms
接下来就是主函数
void main()
{
while(1)
{
LED1=0;
delay_ms(500);
LED1=1;
delay_ms(500);
}
}
主函数理解就很简单了,在永不休止的循环里面,给LED的引脚P1.0隔段时间赋不同的值,让其一会儿输出高电平,一会儿输出低电平,LED也就随着一会儿灭,一会儿亮了。
全部0条评论
快来发表一下你的评论吧 !