51单片机做数字电子钟
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机做数字电子钟
悬赏分:10 -解决时间:2009-7-517:42
设计一个数字电子钟,要求可以进行时、分、秒显示,最大显示时间为23:59:59,并且可以通过按键进行时、分调整。"
画出硬件连接电路图,说明各个控制信号的作用。"
画出程序流程图,编写程序,硬件连接调试,直至正确。"
编写课程设计报告。"
3、给定条件
在Dais-52PH+单片机实验箱中,有一片8155芯片用于扩展3×3键盘,还具有6位LED数码显示器,可分别用于按键和显示控制。
在PC机上调试可使用MCS51仿真开发系统。
数字电子钟的工作过程为:从00:00:00(时:分:秒)开始计时,以24小时为一循环,最大计时时间为23:59:59。当需要校正时间时,按下调整键,小时的十位闪烁,等待键入新值,若需调整则按下加1按键,数值以秒为单位自动加1,当十位调整好后,按下确认键确认,然后小时的个位闪烁,等待键入新值,按照十位的调整步骤调整时间,并按下确认键确认,当确认后,分钟的十位开始闪烁,等待键入新值,分钟的十位和个位调整过程与小时调整一样,只是当分的个位调整好后,按下确认键即启动计时。
数字电子钟是以1s为最小定时单位的,51单片机自身具有两个16位定时/计数器,当晶振频率为6MHz时,最大定时时间为0.13s。而具有时、分和秒的数字电子钟只能以1s定时,所以要实现实现1s定时,必须采用软件计数和定时器定时相结合的方法。每1s定时到,修改显示值,送6位LED显示。
本课题需用6个LED数码管显示时间值,并且需调整键、加1键、确认键等控制键。在Dais-52PH+单片机实验箱中,6位LED数码显示器的字形口地址为0FFDCH,字位口地址为0FFDDH,字形表和字位表见附录一。可通过8155可编程接口芯片驱动的3×3键盘实现按键控制(具体电路参考课题一数字秒表)。8155的PC0~PC2为3×3键盘的行扫线,PB0~PB2为3×3键盘的列扫线,键盘工作过程为:单片机从8155的PB0~PB2送出全零,并从PC0~PC2读入数据,当PC0~PC2≠000时,表明有键按下,则逐行从PB0~PB2送出零,再从PC0~PC2口读入,最终确定按键位置和键值,此后,转入相应的按键处理程序,修改显示缓冲区内容。
提问者:wangalong211- 一级
最佳答案
源程序如下:ORG 0000H;程序开始入口
LJMPSTART
ORG0003H ;外中断0中断程序入口
RETI
ORG 000BH ;定时器T0中断程序入口
LJMP INTT0 ;跳至INTTO执行
ORG0013H;外中断1中断程序入口
RETI
ORG 001BH ;定时器T1中断程序入口
LJMPINTT1
ORG0023H ;串行中断程序入口地址
RETI
;---------------主程序----------------------;
START:MOV R0,#70H ;70给R0,清70-7FH显示内存
MOV R7,#0FH
CLEARDISP:MOV @R0,#00H;0给R0中的数为地址的内存中存放(70H)
INCR0
DJNZ R7,CLEARDISP
MOV78H,#2;默认时间为12:00,闹钟5:00
MOV 79H,#1
MOV74H,#2;防止上电时数码管显示00小时
MOV75H,#1
MOV 66H,#1;中断退出时66H为1时,分、时计时单元数据移入显存标志
MOV68H,#1;上电默认闹钟开状态
MOV 7DH,#6 ;闹钟时十位
MOV7CH,#3
MOV 69H,#0
MOV 7AH,#0AH;放入"熄灭符"数据
MOV TMOD,#11H;设T0、T1为16位定时器
MOV TL0,#0B0H ;50MS定时初值(T0计时用)
MOVTH0,#3CH
SETB EA ;总中断开放
SETB ET0;允许T0中断
SETB TR0 ;T0定时器开始计时
MOV R4,#14H;1秒定时用初值(50MS×20)
START1:LCALL DISPLAY ;显示子程序
LCALLBEEP;闹钟查询
JNBP1.7,SETTIME ;P1.7口为0时转时间调整程序
JMP START1 ;P1.7口为1时跳回START1
;-----------------------时间闹钟调整系统--------------------------;
NFLAG:MOV A,68H;设置闹钟开关状态
CJNEA,#1,BEE68
MOV 68H,#0
JMP E6
BEE68:MOV68H,#1
E6:MOV 66H,#8 ;中断退出66H不为1时分、时计时单元数据移入显存标志
MOV 72H,7BH
MOV 73H,7CH
MOV 74H,7DH
MOV 75H,7EH
LCALL DDL
LCALLDDL
MOV 72H,68H
MOV 73H,69H
MOV 74H,7AH
MOV75H,7AH
LCALL DDL
LCALL DDL
MOV66H,#1
LJMP START1
SETTIME:LCALL DDL
JB P1.7,NFLAG ;键按下时间小于1秒,设置闹钟开关状态并查看闹钟时间,不关走时,确保准确,大于1秒调时
MOV TL1,#0B0H ;T1闪烁定时初值
MOV TH1,#3CH
MOV R2,#06H ;进入调时状态,赋闪烁定时初值
MOV 66H,#8 ;调闹钟时保持走时,关闭时钟显示数据
SETB ET1 ;允许T1中断
SETBTR1 ;开启定时器T1
SET1:LCALL DISPLAY;调用显示,防止键按下无显示
JNB P1.7,SET1 ;P1.7口为0等待键释放
MOV R5,#00H;清设置类型闪烁标志
SETN1:INC R5;闹钟分调整
SET5:LCALL DISPLAY
JB P1.7,SET5
SEETN1:LCALLDDL;有键按下大于1秒分时间连续加(0.5秒加1),小于1秒转调时状态
JBP1.7,SET6 ;键释放查询,键释放自动转调时
MOV R0,#7CH
LCALLADD1
MOV A,R3