python语呼吸灯_语言程序

51单片机(呼吸灯)C语言版.docx

基于单片机与 PWM 的呼吸灯设计实训指导教师 班级设 计 人姓名设 计日 期设 计地 点完 成时 间摘要本 是基于 片机的原理与接口 ,采用 片机I/O 口,加以 C 言 程 LED 亮再 暗 似人的呼吸一 的效果。关键词AT89C51,PWM脉 制 一、设计要求呼吸灯就是 LED 灯的 像呼吸一 , 呼 吸, 亮 暗,利用LED的余 和人眼的 留效 ,看上去和人的呼吸一 。二、设计原理用 C 言 程 PWM脉 制 出 LED,逐 增加 PWM的占空比从而 LED模 呼吸的 程,即 亮再 暗再 亮再 暗如此往复,再利用 LED的余 和人眼的 留效 ,看上去就和人的呼吸一 。三、整体方案设计8 个 LED按照 序逐个 呼吸效果。加以其他 花 增加更炫彩的效果。四、实验元件及器材(1)元件 LED( 光二极管)8 个1K 阻8 个1nf 容2 个晶振1 个AT89C51 芯片1 个(2)器件 Atmega128开发板1 块计算机1 台五、硬件原理(1)主电路 8 个 LED分别连接 AT89C51的 P1 口,使用共阳方式,并加以1k 的电阻接入电源。(2)时钟电路外部时钟方式是使用外部振荡脉冲信号。六、软件设计及系统仿真调试(1)调试方法利用 keil软件进行 C语言程序编写及调试, 再利用 Proteus仿真软件进行仿真实验。(2)调试过程所遇问题1、由于呼吸灯的程序在仿真软件 Proteus 中实现的效果不明显, 很难辨别LED是否具有呼吸的效果。所以边用 keil 调试程序边用 STC烧写软件直接写入开发板,从而很明显看出 LED是否具有呼吸效果;2、程序运行时,出现LED闪烁过快,由于人眼的暂留效应看似LED全部一直亮着,经调试,修改延时时间,实现呼吸效果。七、结论与心得在本次设计中, C 语言程序在开发板中得以实现应有的功能。在调试过程中,发现很多问题都是由于不细心导致的,因此在以后的设计方案中,要集中精力,莫粗心大意。再者就是知识量的不足,虽然是一个小小的设计方案,但是查阅了很多相关资料,在日后,要多充足自己的知识量,保证 C程序的编写质量。参考文献1 郭天祥,新概念 51 单片机 C语言教程,电子工业出版社, 2009年 1 月2 徐爱钧,单片机高级语言 C51应用程序设计,电子工业出版社,2000年5月附件 A呼吸灯设计电路图附件 B C语言程序清单includereg51.h/*-定义单片机引脚 -*/sbit LED0P10;sbit LED1P11;sbit LED2P12;sbit LED3P13;sbit LED4P14;sbit LED5P15;sbit LED6P16;sbit LED7P17;void Delayunsigned int t; unsigned int z,y;函数声明void main void主函数unsigned int CYCLE500,PWM_LOW0; 定义周期并赋值while 1主循环/*整排LED灯呼吸-*/P10 x00;Delay500; 加延时,可以看到熄灭的过程(下面程序同理)forPWM_LOW1;PWM_LOWCYCLE;PWM_LOWPWM表LOW示低P10 x00;DelayPWM_LOW;P10 xff;DelayCYCLE-PWM_LOW;P10 xff;forPWM_LOWCYCLE-1;PWM_LOW0;PWM_LOW与逐渐变亮相反的过程P10 x00; 点亮LEDDelayPWM_LOW;P10 xff; 熄灭LEDDelayCYCLE-PWM_LOW; 主循环中添加其他需要一直工作的程序,延时长度,600 次循环中从599 减至1/*第一颗LED灯呼吸-*/LED01;Delay500;forPWM_LOW1;PWM_LOWCYCLE;PWM_LOWLED00;DelayPWM_LOW;LED01;DelayCYCLE-PWM_LOW;LED00;forPWM_LOWCYCLE-1;PWM_LOW0;PWM_LOWLED00;DelayPWM_LOW;LED01;DelayCYCLE-PWM_LOW;/*第二颗LED灯呼吸*/LED11;Delay500;forPWM_LOW1;PWM_LOWCYCLE;PWM_LOWLED10;DelayPWM_LOW;LED11;DelayCYCLE-PWM_LOW;LED10;forPWM_LOWCYCLE-1;PWM_LOW0;PWM_LOWLED10;DelayPWM_LOW;LED11;DelayCYCLE-PWM_LOW;/*第三颗 LED灯呼吸 */LED21;Delay500;forPWM_LOW1;PWM_LOWCYCLE;PWM_LOWLED20;DelayPWM_LOW;LED21;DelayCYCLE-PWM_LOW;LED20;forPWM_LOWCYCLE-1;PWM_LOW0;PWM_LOWLED20;DelayPWM_LOW;LED21;DelayCYCLE-PWM_LOW;/*第四颗 LED灯呼吸 */LED31;Delay500;forPWM_LOW1;PWM_LOWCYCLE;PWM_LOWLED30;DelayPWM_LOW;LED31;DelayCYCLE-PWM_LOW;LED30;forPWM_LOWCYCLE-1;PWM_LOW0;PWM_LOWLED30;DelayPWM_LOW;LED31;DelayCYCLE-PWM_LOW;/*第五颗 LED灯呼吸 */LED41;Delay500;forPWM_LOW1;PWM_LOWCYCLE;PWM_LOWLED40;DelayPWM_LOW;LED41;DelayCYCLE-PWM_LOW;LED40;forPWM_LOWCYCLE-1;PWM_LOW0;PWM_LOWLED40;DelayPWM_LOW;LED41;DelayCYCLE-PWM_LOW;/*第六颗 LED灯呼吸 */LED51;Delay500;forPWM_LOW1;PWM_LOWCYCLE;PWM_LOWLED50;DelayPWM_LOW;LED51;DelayCYCLE-PWM_LOW;LED50;forPWM_LOWCYCLE-1;PWM_LOW0;PWM_LOWLED50;DelayPWM_LOW;LED51;DelayCYCLE-PWM_LOW;/*第七颗 LED灯呼吸 */LED61;Delay500;forPWM_LOW1;PWM_LOWCYCLE;PWM_LOWLED60;DelayPWM_LOW;LED61;DelayCYCLE-PWM_LOW;LED60;forPWM_LOWCYCLE-1;PWM_LOW0;PWM_LOWLED60;DelayPWM_LOW;LED61;DelayCYCLE-PWM_LOW;/*第八颗 LED灯呼吸 */LED71;Delay500;forPWM_LOW1;PWM_LOWCYCLE;PWM_LOWLED70;DelayPWM_LOW;LED71;DelayCYCLE-PWM_LOW;LED70;forPWM_LOWCYCLE-1;PWM_LOW0;PWM_LOWLED70;DelayPWM_LOW;LED71;DelayCYCLE-PWM_LOW;P10 x00;forz500;z0;zfory110;y0;y;P10 xff;forz500;z0;zfory110;y0;y;P10 x00;forz500;z0;zfory110;y0;y;P10 xff;forz500;z0;zfory110;y0;y;void Delayunsigned int twhilet;