介绍单片机流水灯程序
单片机流水灯是使用单片机来控制一组LED灯进行不断流动的效果,并且可以随着时间不断的变化。该程序不仅简单易学,而且是初学者入门的一个好的案例,也是了解单片机基础知识和常用语法的绝佳方法。
实现8个灯的单片机流水灯程序
对于单片机流水灯程序的实现,我们需要使用到单片机的输出端口,通过向端口发送高低电平控制LED灯亮灭。如果要实现8个灯的单片机流水灯,我们需要把8个LED灯连接到单片机的8个输出端口上,并且控制它们的输出顺序。
在代码实现中,我们需要使用单片机自带的延时函数,来控制LED灯亮灭时间,从而实现流水灯的效果。这种方式也被称为硬件延时,因为其不依赖于单片机的处理速度,而依赖于单片机电路自身的稳定性。代码实现如下:
#include sbit LED1=P0^0; sbit LED2=P0^1; sbit LED3=P0^2; sbit LED4=P0^3; sbit LED5=P0^4; sbit LED6=P0^5; sbit LED7=P0^6; sbit LED8=P0^7; void delay(unsigned int); void main() { while(1) { LED1=1; delay(1000); LED2=1; delay(1000); LED3=1; delay(1000); LED4=1; delay(1000); LED5=1; delay(1000); LED6=1; delay(1000); LED7=1; delay(1000); LED8=1; delay(1000); LED1=0; LED2=0; LED3=0; LED4=0; LED5=0; LED6=0; LED7=0; LED8=0; } } void delay(unsigned int xms) { unsigned int i,j; for(i=xms;i>0;i--) for(j=112;j>0;j--);
单片机流水灯程序的优化
虽然我们已经成功实现了单片机流水灯程序,但是程序极其简单,效果也较单调,我们可以对程序进行优化,以使其流光溢彩。在对程序进行优化时,几乎所有的优化都是围绕延时部分进行的。下面是优化后的代码:
#include sbit LED1=P0^0; sbit LED2=P0^1; sbit LED3=P0^2; sbit LED4=P0^3; sbit LED5=P0^4; sbit LED6=P0^5; sbit LED7=P0^6; sbit LED8=P0^7; void delay(unsigned int); void main() { while(1) { LED1=1; delay(200); LED2=1; delay(200); LED3=1; delay(200); LED4=1; delay(200); LED5=1; delay(200); LED6=1; delay(200); LED7=1; delay(200); LED8=1; delay(200); LED1=0; LED2=0; LED3=0; LED4=0; LED5=0; LED6=0; LED7=0; LED8=0; delay(200); } } void delay(unsigned int xms) { unsigned int i,j; for(i=xms;i>0;i--) for(j=112;j>0;j--); }
上面的代码通过减小延时的时间,使得LED灯相继亮灭的时长变得更短,从而使得灯与灯之间的切换更加顺畅和流畅。我们也可以通过添加更多的灯,改变延时时间比例等方法,来进一步美化单片机流水灯的效果,并且可以随意的调整。
本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/mcuodb.html
郑重声明:
本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
我们不承担任何技术及版权问题,且不对任何资源负法律责任。
如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。
如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!