- 10
- 0
- 约 17页
- 2016-12-10 发布于贵州
- 举报
《单片机课程设计:单片机控制的倒计时牌毕业设计(论文)word格式》
倒计时牌
方案选择
1.1题目:倒计时牌
1.2要求:
1.2.1实现日历功能;
1.2.2显示距倒计时时刻还有多长时间(显示天、时、分、秒);
1.2.3 倒计时的时间可人为设定;
1.3 总体设计:
本倒计时牌以AT89C51单片机作为核心,最长可以倒计时100天。可以显示距倒计时时刻还有多长时间,显示格式为天(十位,个位)、时(十位、个位)、分(十位、个位)、秒(十位、个位);倒计时的时间可以人为设定;另外还可以显示当前的日历,显示格式为年(四位),月(两位),日(两位)。
倒计时设置时间时的位切换、设定数值、启动定时器、切换日历通过外部中断来实现。
倒计时牌天、时、分、秒的计时分别利用100、24、60、60进制自减计数来实现。
倒计时的显示电路由LED数码管组成, 利用8只数码管显示,从左至右依次显示为天(十位,个位)、时(十位、个位)、分(十位、个位)、秒(十位、个位)及年(四位),月(两位),日(两位)。
硬件原理电路图的设计及分析
倒计时牌硬件系统的设计,关键是其显示器接口电路的设计,本设计采用直接利用单片机AT89C51的并行I/O口构成倒计时牌显示接口电路,其硬件系统主要包括单片机(包含晶振、电源)、控制电路(设置初始时间以及日历切换)及显示接口电路。
2.1 模块方框图
2.2 电路图
2.3 使用说明
倒计时牌具有如下工作状态:设置状态和运行状态。倒计时牌上电后,显示为全0。这时要设置倒计时时间,按K1,开始设置时间,这时设置的是秒,按一次K2,秒加1;再按一次K1,设置分,依次类推;设置完天后,按K1则启动定时器,开始倒计时。
在倒计时牌运行状态下,按K2,显示当前的日期(年、月、日);再按一次,回到倒计时间显示。
注:INT0对应的开关为位切换/启动按钮K1;
INT1对应的开关为修改/日历切换按钮K2。
3.程序设计及分析
3.1 软件系统模块图
3.2各子程序设计
3.2.1主程序
主程序(MAIN)的主要功能是初始化程序、转换子程序和调用延时子程序以及数码管的断码表,其流程图如下:
程序代码(加注释)如下:
MAIN:
MOV TMOD,#01H ;定时器T0设为方式一
MOV R1,#17 ;日历
MOV R2,#00H ;切换显示(日历和倒计时的切换)
MOV R5,#0AH ;十次中断产生一秒
MOV R3,#00H ;利用外部中断0对天、时、分、秒进行切换
MOV R4,#00H ;当倒计时开始(R3=5)时对倒计时的初值不能再进行设置
MOV 30H,#00H ;天
MOV 31H,#00H ;时
MOV 32H,#00H ;分
MOV 33H,#00H ;秒
MOV 34H,#20 ;年的前两位
MOV 35H,#09 ;年的后两位
MOV 36H,#06 ;月
MOV 37H,#17 ;日
SETB EX0
SETB EX1
SETB IT0 ;外部中断0为边沿触发
SETB IT1 ;外部中断1为边沿触发
SETB ET0
SETB EA
MOV TH0,#3CH ;定时器T0置初值
MOV TL0,#0B0H
/*下面为转换子程序*/
LOOP:
/*下面为显示程序*/
DISPLY:
/*下面为延时程序*/
DL1ms:MOV R7,#02H
DL: MOV R6,#0FFH
DL6: DJNZ R6,DL6
DJNZ R7,DL
RET
3.2.2转换子程序及显示子程序模块
转换子程序(LOOP)将中断服务程序中产生的天、时、分、秒数据,转换成适应LED数码管显示的数据,并将其存放在缓冲区中;
各个要显示的单元都存放在数据缓冲区中,如下表:
显示子程序(DISPLY)动态控制数码管的点亮同时显示数据,完成8个LED数码管的动态显示,显示字符通过查表方式实现,在显示过程中调用延时程序;各显示单元显示前须将其数据由存放地址单元拆分后传送至显示缓冲区中,再将其传送至对应的端口。
下面是秒的转换子程序和显示模块
LOOP:
MOV DPTR,#DMB ;段码表首地址放进DPTR
MOV A,33H ;对秒进行拆分
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV 46H,A ;秒的十位对应的段码放进缓冲区46H
MOV A,B
MOVC A,@A+DPTR
MOV 47H,A ;秒的个位对应的段码放进缓冲区47H
/*下面为显示程序*/
DISPLY:
CLR P2.
原创力文档

文档评论(0)