简易呼吸灯c语言程序,51单片机(呼吸灯)C语言版

《51单片机(呼吸灯)C语言版》由会员分享,可在线阅读,更多相关《51单片机(呼吸灯)C语言版(16页珍藏版)》请在人人文库网上搜索。

1、基于单片机和PWM的呼吸灯设计培训讲师:类级别:设置米名称:设定计划期间:设置米点:在时间之间:摘要信息该设计基于单片机的原理和接口,通过单片机I/O端口、c语言编程实现了LED变亮、类似人的呼吸变淡等效果。关联语AT89C51,脉冲宽度调制(PWM)一、设计要求:呼吸照明是使LED像呼吸一样闪烁,呼吸时,亮时暗,利用LED的余辉和人眼的持续性效果,使其看起来像人的呼吸。第二,设计原则:通过对PWM(脉宽调制)输出驱动器LED进行c语言编程,逐步增加PWM的工作比,LED模拟呼吸的过程,即明亮、再次变暗和再次变暗.这样往复,再次利用LED的余辉和人眼的持续性效果,看起来像是在呼吸人的呼吸。三、。

2、总体方案设计8个指示灯依次产生呼吸效果。添加其他闪烁图案以增强更加耀眼的效果。四、实验要素和设备(1)组件:8个发光二极管(LED)8个1k电阻2个1nf电容器1个晶振一个AT89C51芯片(2)设备:Atmega128开发板1块一台电脑5、硬件原理(1)主电路:8个指示灯分别连接到AT89C51上的P1端口,共双向使用,将1k的电阻连接到电源。(2)时钟电路:外部时钟方式使用外部振荡脉冲信号。6、软件设计和系统仿真调试(1)调试方法:使用keil软件进行c语言编程和调试,然后使用Proteus模拟软件进行模拟实验。(2)调试过程问题:1、呼吸灯程序在模拟软件pro teus中实现的效果不明显。

3、,因此很难分辨LED是否有呼吸的效果。因此,在使用keil调试器的同时,使用STC刻录软件直接写入开发主板,可以清楚地知道LED是否具有呼吸效果。2、如果程序运行时LED闪烁得太快,人眼挂起效果看起来LED都亮了,因此调试后修改延迟时间可以达到呼吸效果。七、结论和经验在此设计中,c语言程序在开发板中执行适当的功能。调试过程中发现很多问题都是由于粗心,以后的设计方案中要集中注意,不要粗心大意。另外,知识量不足是一个小设计,但是要多研究相关资料,以后确保自己的知识量有多大,保证c程序编写的质量。参考文献1郭天祥,新概念51单片机C语言教程,电子工业出版社,2009年1月2徐爱俊,单片机高级语言C5。

4、1应用程序设计,电子产业出版社,2000年5月附件a:呼吸灯设计电路图附件B:C语言程序列表#include/*-单芯片针脚定义- */Sbit led 0=P1 0Sbit LED1=P1 1Sbit led 2=P1 2Sbit led 3=P1 3Sbit led 4=P1 4sbit le D5=P1 5;Sbit led 6=P1 6Sbit led 7=P1 7void Delay(unsigned int t);/函数声明Unsigned int z,y;Void main (void)/主函数Unsigned int CYCLE=500,PWM _ LOW=0;/定义和分配生命。

5、周期While (1) /主循环/*-全LED照明呼吸- */P1=0x00delay(500);/添加延迟后,您可以看到关闭的过程(以下过程相同)for(PWM _ LOW=1;PWM _ LOW0Pwm _ low-)/逐渐出道的过程P1=0x00启用/LEDdelay(PWM _ LOW);P1=0xff/关闭LEDdelay(CYCLE-PWM _ LOW);/在主循环中添加必须继续工作的其他程序,以推迟长度,并将600个循环从599减少到1/*-第一个LED灯光呼吸- */led 0=1;delay(500);for(PWM _ LOW=1;PWM _ LOW0PWM_LOW -)L。

6、ED0=0delay(PWM _ LOW);led 0=1;delay(CYCLE-PWM _ LOW);/*-第二个LED灯光呼吸- */LED1=1delay(500);for(PWM _ LOW=1;PWM _ LOW0PWM_LOW -)led 1=0;delay(PWM _ LOW);LED1=1delay(CYCLE-PWM _ LOW);/*-第三个LED灯光呼吸- */led 2=1;delay(500);for(PWM _ LOW=1;PWM _ LOW0PWM_LOW -)led 2=0;delay(PWM _ LOW);led 2=1;delay(CYCLE-PWM _ 。

7、LOW);/*-第四个LED灯光呼吸- */led 3=1;delay(500);for(PWM _ LOW=1;PWM _ LOW0PWM_LOW -)led 3=0;delay(PWM _ LOW);led 3=1;delay(CYCLE-PWM _ LOW);/*-第五个LED呼吸- */led 4=1;delay(500);for(PWM _ LOW=1;PWM _ LOW0PWM_LOW -)led 4=0;delay(PWM _ LOW);led 4=1;delay(CYCLE-PWM _ LOW);/*-第六个指示灯呼吸- */led 5=1;delay(500);for(PWM。

8、 _ LOW=1;PWM _ LOW0PWM_LOW -)led 5=0;delay(PWM _ LOW);led 5=1;delay(CYCLE-PWM _ LOW);/*-第七个LED呼吸- */led 6=1;delay(500);for(PWM _ LOW=1;PWM _ LOW0PWM_LOW -)led 6=0;delay(PWM _ LOW);led 6=1;delay(CYCLE-PWM _ LOW);/*-第八个LED灯光呼吸- */led 7=1;delay(500);for(PWM _ LOW=1;PWM _ LOW0PWM_LOW -)led 7=0;delay(PWM _ LOW);led 7=1;delay(CYCLE-PWM _ LOW);P1=0x00for(z=500;z0;Z-)for(y=110;y0;y-);P1=0xfffor(z=500;z0;Z-)for(y=110;y0;y-);P1=0x00for(z=500;z0;Z-)for(y=110;y0;y-);P1=0xfffor(z=500;z0;Z-)for(y=110;y0;y-);Void Delay(unsigned int t)while(-t。

你可能感兴趣的:(简易呼吸灯c语言程序)