- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
倒计时牌
方案选择
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)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.7
MOV A,47H
MOV P1,A
LCALL DL1ms
SETB P2.7
CLR P2.6
MOV A,46H
MOV P1,A
LCALL DL1ms
SETB P2.6
3.2.3 定时器T0中断
定时器T0溢出中断(IT0P)程序主要用于
文档评论(0)