扫盲教程:51单片机控制单个LED灯闪烁 适合新手
说明:本文和上个教程一样也是单纯的扫盲教程,是上一篇点亮LED灯的升级版,也就是不光要把LED灯点亮,还要控制它熄灭,要控制它有规律的闪烁,本文同样只对单片机入门级的小伙伴,如果是老鸟请自觉飘过。 好了,我们继续说今天的实验,单片机控制LED流水灯,这个其实比上一个点亮LED的实验复杂一点点,硬件上就是把多几个LED, 软件上加上控制LED灭和闪烁的代码,其实他的控制原理并不复杂只要弄明白其中的原理,下面同样我们从硬件和软件两个维度来深入剖析一下。希望你看完能有所收获。 硬件方面 发光二极管:发光二极管的发光原理在上一篇文章中已经说得很明白啦,此处不再赘述。不明白的可以移驾此处查看 单片机:单片机其点亮的控制原理和上一篇一样,没有什么可以说的,下面我着重说一下闪烁的控制原理,我们都知道想要LED闪烁,就要让它亮和灭,只需要在上个代码中加入灭的代码就可以了,但是闪烁就需要有个控制时间的概念,那么这个时间怎么来的呢?大家还记不记得我有过一篇专门介绍单片机最小系统的文章,里面提到了一个晶振电路,对了这个闪烁时间就是根据晶振频率的倒数来计算的,也就是根据机器周期来计算的,不明白的请自行充电计算机相关知识。我们根据机器周期算出时间,然后写入C语言代码中,再把代码烧进单片机,就可以实现控制。 好了,通过以上的讲解我想你应该明白这个系统的工作原理了吧。下面开始讲解一下软件代码部分 软件部分及其详细注释 #include"reg51.h" //定义头文件 sbit led=P2^0; //定义引脚 void delay(unsigned char i) / /延时函数 i=1时 延时10us { while(i--); //循环语句 } void main() //main代表主函数,程序执行的部分 { led=0; //LED赋值为0 while(1) //代表这循环 { led=~led; //~表示之前的值取反,即0变1 1变0 delay(100); //延时,使得led灯闪烁,改变此变量可以调整闪烁间隔时间 } 下面是我烧入代码后的实验结果,实验成果! 好了,看完了以上的文章,我想你应该明白这个实验的软硬件控制原理了吧,最后如果有什么问题或者建议请给我留言或者私信啊,看到一定第一时间回复,如果你喜欢我的文章,欢迎关注转发评论哦,我们下期再见! |