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

253b171540df25e1b84436cbe50dfc72.gif51单片机(呼吸灯)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;

关于呼吸灯C语言编程Options 1,0,0 // Target 'Target 1' Device (AT89C51) Vendor (Atmel) Cpu (IRAM(0-0x7F) IROM(0-0xFFF) CLOCK(24000000)) FlashUt () StupF ("LIB\STARTUP.A51" ("Standard 8051 Startup Code")) FlashDR () DevID (2976) Rgf (REGX51.H) Mem () C () A () RL () OH () DBC_IFX () DBC_CMS () DBC_AMS () DBC_LMS () UseEnv=0 EnvBin () EnvInc () EnvLib () EnvReg (Atmel\) OrgReg (Atmel\) TgStat=16 OutDir (.\) OutName (a9) GenApp=1 GenLib=0 GenHex=1 Debug=1 Browse=1 LstDir (.\) HexSel=0 MG32K=0 TGMORE=0 RunUsr 0 0 RunUsr 1 0 BrunUsr 0 0 BrunUsr 1 0 SVCSID MODEL5=0 RTOS5=0 ROMSZ5=2 DHOLD5=0 XHOLD5=0 T51FL=80 XT51FL=0 CBANKS5=0 XBANKS5=0 RCB51 { 0,0,0,0,0,0,0,1,0 } RXB51 { 0,0,0,0,0,0,0,0,0 } OCM51 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } OCR51 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } IRO51 { 1,0,0,0,0,0,16,0,0 } IRA51 { 0,0,0,0,0,128,0,0,0 } XRA51 { 0,0,0,0,0,0,0,0,0 } XRA512 { 0,0,0,0,0,0,0,0,0 } IROM512 { 0,0,0,0,0,0,0,0,0 } C51FL=21630224 C51VA=0 C51MSC () C51DEF () C51UDF () INCC5 () AX51FL=4 AX51MSC () AX51SET () AX51RST () INCA5 () PropFld { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } IncBld=1 AlwaysBuild=0 GenAsm=0 AsmAsm=0 PublicsOnly=0 StopCode=3 CustArgs () LibMods () BankNo=65535 LX51FL=292 LX51OVL () LX51MSC () LX51DWN () LX51LFI () LX51ASN () LX51RES () LX51CCL () LX51UCL () LX51CSC () LX51UCS () LX51COB () LX51XDB () LX51PDB () LX51BIB () LX51DAB () LX51IDB () LX51PRC () LX51STK () LX51COS () LX51XDS () LX51BIS () LX51DAS () LX51IDS () OPTDL (S8051.DLL)()(DP51.DLL)(-p51)(S8051.DLL)()(TP51.DLL)(-p51) OPTDBG 48125,-1,()()()()()()()()()() ()()()() FLASH1 { 0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0 } FLASH2 () FLASH3 () FLASH4 () EndOpt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值