51单片机C语言版.docx
- 文档编号:3772213
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:10
- 大小:228.16KB
51单片机C语言版.docx
《51单片机C语言版.docx》由会员分享,可在线阅读,更多相关《51单片机C语言版.docx(10页珍藏版)》请在冰豆网上搜索。
51单片机C语言版
基于单片机与PWM的呼吸灯设计
实训指导教帅:
班级:
设计人姓名:
设计日期:
设计地点:
完成时间:
本设计是基于单片机的原理与接口设计,采用单片机I/O口,加以C
语言编程实现LED渐亮再渐暗类似人的呼吸一样的效果。
关键词
AT89C51,PWh#宽调制)
一、设计要求:
呼吸灯就是让LED灯的闪烁像呼吸一样,时呼时吸,时亮时暗,利用LED的余辉和人眼的暂留效应,看上去和人的呼吸一样。
二、设计原理:
用C语言编程实现PWM^宽调制)输出驱动LED逐渐增加PWM勺占空比从而实现LED模拟呼吸的过程,即渐亮再渐暗再渐亮再渐暗……如此往复,再利用LED的余辉和人眼的暂留效应,看上去就和人的呼吸一样。
三、整体方案设计
8个LED按照顺序逐个实现呼吸效果。
加以其他闪烁花样增加更炫彩
的效果。
四、实验元件及器材
(1)元件:
LED(发光二极管)8个
1KQ电阻8个
1nf电容2个
AT89C51芯片
晶振1个
1个
(2)器件:
Atmega128开发板
计算机
五、硬件原理
(1)主电路:
8个LED分别连接AT89C51的P1口,使用共阳方式,并加以
1kQ的电阻接入电源。
(2)时钟电路:
外部时钟方式是使用外部振荡脉冲信号
C1
六、软件设计及系统仿真调试
(1)调试方法:
利用keil软件进行C语言程序编写及调试,再利用Proteus仿真软件进行仿真实验。
(2)调试过程所遇问题:
1、由于呼吸灯的程序在仿真软件Proteus中实现的效果不明显,很难辨别LED是否具有呼吸的效果。
所以边用keil调试程序边用STC烧写软件直接写入开发板,从而很明显看出LED是否具有呼吸效果;
2、程序运行时,出现LED闪烁过快,由于人眼的暂留效应看似LED全部一直亮着,经调试,修改延时时间,实现呼吸效果。
七、结论与心得
在本次设计中,C语言程序在开发板中得以实现应有的功能。
在调试
过程中,发现很多问题都是由于不细心导致的,因此在以后的设计方案中,
要集中精力,莫粗心大意。
再者就是知识量的不足,虽然是一个小小的设计方案,但是查阅了很多相关资料,在日后,要多充足自己的知识量,保证C程序的编写质量。
1
2000年5月
:
?
jj-YELLOW
E®-YELLOW
YELLOW
YELLOW
■LLJCW
群.YELLOW
YELLOW
LED-YELLOW
CRVST/SL
,T园C—
附件A:
呼吸灯设计电路图
[2]徐爱钧,《单片机高级语言C51应用程序设计》,电子工业出版社
[1]郭天祥,《新概念51单片机C语言教程》,电子工业出版社,2009
MALI
PDjD/ADD
PD.tZADI
PD.3/AD2
XTAL2
P0.3/AD3
PD.4/AD4
PD.5/AD5
PD.^/AK
RST
PD.7/AD7
F2.o/xe
笠,g
P21/A1D
P$EM
F23/A11
ALE
P24/A12
EA
F25/A13
P2.B/A14
P27/A15
PID
P3.OJRXD
PL1
P3J/TXO
Pl.2
P3.2/IN1D
P1J3
P5.3/INT1
PIA
P3.4TTO
Pl5
P35/T1
PI6
ps.e/w
PI.7
p土痂
Araacsi
K付件B:
c语言程序清单
#include
/*定义单片机引脚-----*/
sbitLED0=P1八0;
sbitLED1=P1八1;
sbitLED2=P1八2;
sbitLED3=P1八3;
sbitLED4=P1A4;
sbitLED5=P1A5;
sbitLED6=P1A6;
sbitLED7=P1A7;
voidDelay(unsignedintt);//函数声明
unsignedintz,y;
voidmain(void)//主函数
unsignedintCYCLE=500,PWM_LOW=0;//定义周期并赋值
while
(1)//主循环
(
/*整排LED灯呼吸*/
P1=0x00;
Delay(500);//加延时,可以看到熄灭的过
程(下面程序同理)
for(PWM_LOW=1;PWM_LOW for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW-与逐渐变亮相反的过程 ( P1=0x00;//点亮LED P1=0xff;//熄灭LED Delay(CYCLE-PWM_LOW);//主循环中添加其他需要 一直工作的程序,延时长度,600次循环中从599减至1 } /*第一颗LED灯呼吸*/ LED0=1; Delay(500); for(PWM_LOW=1;PWM_LOW { LED0=0; Delay(PWM_LOW); LED0=1; Delay(CYCLE-PWM_LOW); } LED0=0; for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--) { LED0=0; Delay(PWM_LOW); LED0=1; Delay(CYCLE-PWM_LOW); } /*第二颗LED灯呼吸*/ LED1=1; Delay(500); for(PWM_LOW=1;PWM_LOW { LED1=0; Delay(PWM_LOW); LED1=1; Delay(CYCLE-PWM_LOW); } LED1=0; for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--) { LED1=0; Delay(PWM_LOW); LED1=1; /* 第三颗LED灯呼吸 */ LED2=1; Delay(500); for(PWM_LOW=1;PWM_LOW ( LED2=0; Delay(PWM_LOW); LED2=1; Delay(CYCLE-PWM_LOW); } LED2=0; for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--) ( LED2=0; Delay(PWM_LOW); LED2=1; Delay(CYCLE-PWM_LOW); } Delay(500); for(PWM_LOW=1;PWM_LOW ( LED3=0; Delay(PWM_LOW); LED3=1; Delay(CYCLE-PWM_LOW); } LED3=0; for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)( LED3=0; Delay(PWM_LOW); LED3=1; Delay(CYCLE-PWM_LOW); } /*第五颗LED灯呼吸*/ LED4=1; Delay(500); LED4=0; Delay(PWM_LOW); LED4=1; Delay(CYCLE-PWM_LOW); } LED4=0; for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)( LED4=0; Delay(PWM_LOW); LED4=1; Delay(CYCLE-PWM_LOW); } /*第六颗LED灯呼吸*/ LED5=1; Delay(500); for(PWM_LOW=1;PWM_LOW ( LED5=0; Delay(CYCLE-PWM_LOW); } LED5=0; for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--){ LED5=0; Delay(PWM_LOW); LED5=1; Delay(CYCLE-PWM_LOW); } /*第七颗LED灯呼吸*/ LED6=1; Delay(500); for(PWM_LOW=1;PWM_LOW { LED6=0; Delay(PWM_LOW); LED6=1; for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)( LED6=0; Delay(PWM_LOW); LED6=1; Delay(CYCLE-PWM_LOW); } /*第八颗LED灯呼吸*/ LED7=1; Delay(500); for(PWM_LOW=1;PWM_LOW ( LED7=0; Delay(PWM_LOW); LED7=1; Delay(CYCLE-PWM_LOW); } LED7=0; for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)( Delay(PWM_LOW); LED7=1; Delay(CYCLE-PWM_LOW); } P1=0x00; for(z=500;z>0;z--) for(y=110;y>0;y--); P1=0xff; for(z=500;z>0;z--) for(y=110;y>0;y--); P1=0x00; for(z=500;z>0;z--) for(y=110;y>0;y--); P1=0xff; for(z=500;z>0;z--) for(y=110;y>0;y--); } } { while(--t); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 语言版