基于单片机的电子钟设计毕业论文(完整版)(编辑修改稿)内容摘要:
期为 24 小时,显示满刻度为 23 时 59 分 59秒,另外还有校时功能。 因此,一个基本的数字钟电路主要由显示器“时”,“分”,“秒”和单片机,还有校时电路组成。 8 个数码管的段选接到单片机的 P0口,位选接到单片机的 P2 口。 数码管按照数码管动态显示的工作原理工作,将标准秒信号送入“秒单元”,“秒单元”采用 60 进制计数器,每累计 60 秒发 出一个“分脉冲”信号,该信号将作为“分单元”的时钟脉冲。 “分单元”也采用 60 进制计数器,每累计60 分钟,发出一个“时脉冲”信号,该信号将被送到“时单元”。 “时单元”采用 24 进制计时器,可实现对一天 24 小时的累计。 显示电路将“时”、“分”、“秒”通过七段显示器显示出来。 设计 主程序。 ( 本次设计我们采用汇编语言编写程序简单明了)。 口 为数码管段选,采用共阳显示管。 为数码管位选。 70- 71H 秒计时和显示单元。 72- 73H 分显示单元 注意: 72H放个位数 73H放十位数。 74- 75H 小时显示单元。 76- 77H 分计时单元。 78- 79H 小时计时单元。 中断入口程序。 ORG 0000H。 程序执行开始地址 LJMP START。 跳到标号 START 执行 ORG 0003H。 外中断 0 中断程序入口 RETI。 外中断 0 中断返回 ORG 000BH。 定时器 T0 中断程序入口 LJMP INTT0。 跳至 INTTO 执行 ORG 0013H。 外中断 1 中断程序入口 RETI。 外中断 1 中断返回 ORG 001BH。 定时器 T1 中断程序入口 LJMP INTT1。 跳至 INTT1 执行 ORG 0023H。 串行中断程序入口地址 RETI。 串行中断程序返回。 主 程 序。 START: MOV R0,70H。 清 70H7AH 共 11 个内存单元 MOV R7,0BH。 CLEARDISP: MOV @R0,00H。 23 INC R0。 DJNZ R7,CLEARDISP。 MOV 20H,00H。 清 20H(标志用) MOV 7AH,0AH。 放入 熄灭符 数据 MOV TMOD,11H。 设 T0、 T1 为 16 位定时器。 用 初值是 4C00H;用 12M 初值是 3CB0H MOV TL0,00H。 50MS 定时初值( T0 计时用) MOV TH0,4cH。 50MS 定时初值 MOV TL1,00H。 50MS 定时初值( T1 闪烁定时用) MOV TH1,4cH。 50MS 定时初值 SETB EA。 总中断开放 SETB ET0。 允许 T0 中断 SETB TR0。 开启 T0 定时器 MOV R4,14H。 1 秒定时用初值( 50MS20) START1: LCALL DISPLAY。 调用显示子程序 jnb ,set_h。 此按键是小时加 1 jnb ,set_M。 此按键是分钟加 1 SJMP START1。 口为 1 时跳回 START1 set_h: ljmp set_hh set_m: ljmp set_mm。 1 秒计时程序。 T0 中断服务程序 INTT0: PUSH ACC。 累加器入栈保护 PUSH PSW。 状态字入栈保护 CLR ET0。 关 T0 中断允许 CLR TR0。 关闭定时器 T0。 用 初值是 4C00H;用 12M 初值是 3CB0H MOV A,00H。 中断响应时间同步修正 ,要精确调整在这里。 ADD A,TL0。 低 8 位初值修正 MOV TL0,A。 重装初值(低 8 位修正值 ) MOV A,4CH。 高 8 位初值修正 ADDC A,TH0。 MOV TH0,A。 重装初值(高 8 位修正值) SETB TR0。 开启定时器 T0 DJNZ R4, OUTT0。 20 次中断未到中断退出 ADDSS: MOV R4,014H。 20 次中断到( 1 秒)重赋初值 14h MOV R0,71H。 指向秒计时单元( 70H71H) ACALL ADD1。 调用加 1 程序(加 1 秒操作) MOV A,R3。 秒数据放入 A( R3 为 2 位十进制数组合) CLR C。 清进位标志 CJNE A,60H,ADDMM。 24 ADDMM: JC OUTT0。 小于 60 秒时中断退出 ACALL CLR0。 大于或等于 60 秒时对秒计时单元清 0 MOV R0,77H。 指向 分计时单元( 76H77H) ACALL ADD1。 分计时单元加 1 分钟 MOV A,R3。 分数据放入 A CLR C。 清进位标志 CJNE A,60H,ADDHH。 ADDHH: JC OUTT0。 小于 60 分时中断退出 ACALL CLR0。 大于或等于 60 分时分计时单元清 0 MOV R0,79H。 指向小时计时单元( 78H79H) ACALL ADD1。 小时计时单元加 1 小时 MOV A,R3。 时数据放入 A CLR C。 清进位标志 CJNE A,24H,HOUR。 HOUR: JC OUTT0。 小于 24 小时中断退出 ACALL CLR0。 大于或等于 24 小时小时计时单元清 0 OUTT0: MOV 72H,76H。 中断退出时将分、时计时单元数据移 MOV 73H,77H。 入对应显示单元 MOV 74H,78H。 MOV 75H,79H。 POP PSW。 恢复状态字(出栈) POP ACC。 恢复累加器 SETB ET0。 开放 T0 中断 RETI。 中断返回。 加 1 子 程 序。 ADD1: MOV A,@R0。 取当前 计时单元数据到 A DEC R0。 指向前一地址 SWAP A。 A 中数据高四位与低四位交换 ORL A,@R0。 前一地址中数据放入 A 中低四位 ADD A,01H。 A 加 1 操作 DA A。 十进制调整 MOV R3,A。 移入 R3 寄存器 ANL A,0FH。 高四位变 0 MOV @R0,A。 放回前一地址单元 MOV A,R3。 取回 R3 中暂存数据 INC R0。 指向当前地址单元 SWAP A。 A 中数据高四位与低四位交换 ANL A,0FH。 高四位变 0 MOV @R0,A。 数据放入当削地址单元中 RET。 子程序返回 25。 清零程序。基于单片机的电子钟设计毕业论文(完整版)(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。