跑马灯课程设计报告.docx
《跑马灯课程设计报告.docx》由会员分享,可在线阅读,更多相关《跑马灯课程设计报告.docx(14页珍藏版)》请在冰点文库上搜索。
跑马灯课程设计报告
课程设计报告
课题名称基于AT89S51的跑马灯设计
系别机电系
专业
班级
学号
学生姓名
指导教师
完成日期2010年月
教务处制
基于AT89S51的跑马灯设计
一、设计任务与要求
1.设计任务
选择采用AT89S51、74LS245、ULN2803、LED等器件,使用汇编语言实现各种跑马灯动态显示效果设计。
2.设计要求
实现16个LED的全亮、全灭、交错显示、流水灯显示等。
可结合灯的排布以及程序设计实现各种跑马灯动态显示效果。
三个输入按键,按键S2时,LED灯亮点依次流动;按键S3时,依次点亮LED灯;按键S4时,LED灯交错点亮。
3.设计目的
通过本课程设计掌握单片机系统设计思路和基本步骤;掌握LED驱动电路、延时程序和按键处理程序设计。
能熟练使用Wave6000软件、编程器或下载线。
熟悉Keil、PROTEUS、Protel99se等相关软件的使用。
二、方案设计与论证
在日常生活中,我们总是花样百出的流水灯光,随着电子技术的飞速发展,人们对灯的花样要求也就更多,如全亮、全灭、交错显示、流水灯显示等。
因此,跑马灯得到了广泛的应用。
一个由单片机控制的较简单的数字钟由电源电路、控制电路、驱动电路、显示电路4部分组成。
1.控制电路
控制电路时整个电路的核心,主要由单片机来完成。
AT89S51单片机的管脚图如图
(1)所示。
单片机执行指令是在时钟脉冲控制下进行的,因此,单片机必须外接振荡器构成时钟电路才能正常工作。
另外,还应该在单片机的RES端外接电阻电容构成复位电路,当单片机运行错误时可以给一个复位信号使其复位。
单片机的对接口电路的控制是由软件向单片机的I/O口(即P0~P3口)来实现的。
AT89S51单片机内部由两个定时/计数器,可以用其中一个定时/计数器来对时间进行计数,而另一个可以对显示器的显示延时进行定时并通过中断把相应的数据通过I/O口送给显示器显示。
同时,通过对图1AT89S51管脚图
外部按键的状态判断来进行时间的调整。
2.显示电路
作为显示电路,采用16个LED灯来进行显示,实现全亮、全灭、交错显示、流水灯显示等。
3.驱动电路
由于单片机的I/O口输出电流比较弱,不够驱动一位LED数码管,因此,必须在I/O口和LED数码管之间接一驱动器和限流电阻来驱动LED数码管。
4.电源电路
由于外部的干扰如电压、电流的波动可能造成直流电源的不稳定,因此,可在电源两端接上滤波器来降低外部干扰对电源造成的影响。
三、单元电路设计
1.时钟电路
单片机执行指令是在时钟脉冲控制下进行的,因此时钟信号时单片机的基本工作条件。
可以通过测量第30脚ALE是否有输出时钟脉冲的六分频信号来判断时钟信号是否正常。
时钟可以由内部和外部两种方式产生,本设计采用内部方式。
如图
(2)所示,在XTAL1和XTAL2引脚上外接定时元件。
定时元件通常采用振荡器和电容组成的并联谐振电路。
X1为振荡器,C1、C2为电容。
振荡器的振荡频率主要取决于晶体,电容对振荡频率由微调作用。
外接晶体振荡器时,电容值可选在30pF左右。
图2内部时钟电路图3电源滤波电路
2.电源电路
如图(3)所示,为了提高电源的稳定,由两个电容并联连接电源两极构成电源滤波电路。
C4电容值比较大,用于滤低频;C5容值比较小,用于滤高频。
3.复位电路
一个时钟周期为振荡周期的2倍,6个时钟周期构成一个机器周期,即12个时钟周期构成一个机器周期。
在RES引脚上输入一个超过两个机器周期的高电平信号,单片机就可以复位。
如时钟频率为12MHz,则有效的复位信号至少应保持2μs以上。
复位电路可以有两种方式:
上电复位电路和外部按键复位电路。
图(4)所示为单片机的上电复位电路。
在上电瞬间,因为电容两端的电压不能突变,RST引脚上电位与Vcc相同。
随着电容器充电过程的进行,RST引脚上的电位逐渐下降。
只要适当选择C和R的数值,即可顺利实现复位操作。
图(5)所示为单片机的外部按键复位电路。
选择R1=1KΩ,R2=10KΩ,当按下按键时R1与R2分压,RST引脚上能得到一个高电平的输入信号,实现复位操作。
图4上电复位电路图5外部按键复位电路
4.接口电路
P1、P2口上每个引脚分别接一发光二极管(LED),通电后电路进入就绪状态,等待用户输入,当用户点击S2,各LED轮流点亮。
当用户点击S3,各LED依次点亮。
当用户点击S4,P1.0至P2.7依次交错点亮。
当用户点击S1后,不论LED工作在那种状态,各LED熄灭。
图6接口电路
四、总原理图及元器件清单
1.总原理图
图7电子钟总原理图
2.元件清单
元件序号
类别
主要参数
数量
备注
R5
色环电阻
1KΩ(1/4瓦)
1
…
R1~R4
色环电阻
10KΩ(1/4瓦)
4
…
R6
色环电阻
390Ω(1/4瓦)
1
…
X1
晶振
12MHz
1
…
C1、C2
陶瓷电容
30pF
2
…
C3
电解电容
22μF
1
…
U1
单片机
AT89S51
1
…
D1~D17
发光二极管
LED(高绿)
17
…
DC2.1
电源插座
ULN2803
2
…
RP1~RP2
排阻
A102J
3
…
S1~S4
按键
6×6×6
4
…
五、硬件焊接与调试
1.先排好电路格局,再按照电路格局把电路焊接好。
2.焊好电路后,先不接通电源,用万用表测试一下电路有没有短接或断开,并做相应的修整。
3.检测好后,通上电源,检测芯片插座电源两端的电压会不会正常。
4.断开电源,插上芯片,再接通电源,用万用表检查一下输出电压是否正常。
5.检测完全没问题后,用仿真器代替单片机,检测程序是否正确,并进行相应的调整。
完全没问题后,就可以将程序烧入单片机,并将单片机芯片插入电路,就可以了。
六、软件设计与调试
程序开始先使P1口为低电平,熄灭各LED,随后系统进入键盘检测循环,当检测到某个键被按下,则转到该键对应的程序处执行。
按键处理程序循环执行各自的功能后,每循环一次后检测S1是否按下,如果按下,各LED熄灭,重新进入键盘检测循环,否则继续循环。
程序流程图如图8。
图8跑马灯程序流程图
跑马灯程序设计清单如下:
;************;
;中断入口程序;
;************;
;
ORG0000H
LJMPSTART
ORG0003H
RETI
ORG000BH
RETI
ORG0013H
RETI
ORG001BH
RETI
ORG0023H
RETI
;************;
;初始化程序;
;************;
INIT:
MOVP1,#00H
MOVP2,#00H
RET
;************;
;主程序;
;************;
START:
ACALLINIT
STAR1:
MOVP3,#0FFH
JNBP3.3,FUN0;亮点流动
JNBP3.4,FUN1;依次点亮
JNBP3.5,FUN2;交错点亮
AJMPSTAR1
FUN0:
LCALLDL20MS;消岸抖动
JBP3.3,STAR1
WAITL0:
JNBP3.3,WAITL0;等待键释放
LCALLFUN00
FUN1:
LCALLDL20MS;消岸抖动
JBP3.4,STAR1
WAITL1:
JNBP3.4,WAITL1;等待键释放
LCALLFUN11
FUN2:
LCALLDL20MS;消岸抖动
JBP3.5,STAR1
WAITL2:
JNBP3.5,WAITL2;等待键释放
LCALLFUN22
FUN00:
MOVA,#01H
FUN000:
MOVP1,A
LCALLDL05S
JBACC.7,FUN011
RLA
AJMPFUN000
FUN011:
MOVP1,#00H
MOVA,#01H
FUN001:
MOVP2,A
LCALLDL05S
JBACC.7,OUT
RLA
AJMPFUN001
OUT:
MOVP2,#00H
LCALLFUN00
RET
FUN11:
MOVA,#01H
FUN111:
MOVP1,A
MOVR1,A
LCALLDL05S
CJNEA,#0FFH,CNTN
AJMPFUN12
CNTN:
RLA
ORLA,R1
AJMPFUN111
FUN12:
MOVA,#01H
FUN112:
MOVP2,A
MOVR1,A
LCALLDL05S
CJNEA,#0FFH,CNTN1
MOVP1,#00H
MOVP2,#00H
LCALLDL05S
LCALLFUN11
RET
CNTN1:
RLA
ORLA,R1
AJMPFUN112
FUN22:
SETBP1.0
LCALLDL05S
SETBP1.2
LCALLDL05S
SETBP1.4
LCALLDL05S
SETBP1.6
LCALLDL05S
SETBP2.0
LCALLDL05S
SETBP2.2
LCALLDL05S
SETBP2.4
LCALLDL05S
SETBP2.6
LCALLDL05S
SETBP1.1
LCALLDL05S
SETBP1.3
LCALLDL05S
SETBP1.5
LCALLDL05S
SETBP1.7
LCALLDL05S
SETBP2.1
LCALLDL05S
SETBP2.3
LCALLDL05S
SETBP2.5
LCALLDL05S
SETBP2.7
LCALLDL30S
MOVP1,#00H
MOVP2,#00H
LCALLDL30S
MOVP1,#0FFH
MOVP2,#0FFH
LCALLDL30S
MOVP1,#00H
MOVP2,#00H
LCALLDL30S
MOVP2,#0FFH
MOVP1,#0FFH
LCALLDL30S
MOVP1,#00H
MOVP2,#00H
LCALLFUN22
RET
;************;
;延时程序;
;************;
DL512:
MOVR2,#0FFH
LOOP1:
DJNZR2,LOOP1
RET
DL20MS:
MOVR3,#28H
LOOP2:
LCALLDL512
DJNZR3,LOOP2
RET
DL05S:
MOVR4,#0AH
LOOP3:
LCALLDL20MS
DJNZR4,LOOP3
RET
DL30S:
MOVR5,#03H
LOOP4:
LCALLDL05S
DJNZR5,LOOP4
RET
END
七、结论与心得
1.通过仿真软件和自己动手的实践,调动了我的学习兴趣和积极性。
2.将实践应用与课堂教学联系在了一起,解决了理论与实践脱节的问题。
3.应用仿真软件,节省了硬件资源,节省资金,避免了实际硬件开发与应用过程中的浪费。
4.使我熟识掌握单片机开发软件的应用,与新技术接轨,为将来从事实际工作打下良好的基础。
八、参考文献
[1]李秀忠.单片机应用技术.北京:
人民邮电出版社.2007
[2]胡汉才.单片机原理及接口技术.北京:
清华大学出版社,2004.
[3]郑毛祥.单片机应用基础.人民邮电出版社,2006.