单片机多功能时钟程序设计(编辑修改稿)内容摘要:

程序 LINE 设定显示屏的主要参数 .让时间显示在上一行且只显示一个时分秒,如“ 12: 12: 12PMXQ1”,不造成显示多个的后果。 NCD 为常函数表,将 0 A、 P、 M、 X、 Q 数字 和字母 依次存放到以左边标号为起始地址的存储单元中。 TIME 中就是将时分秒的十位、各位分别赋予 R0, 还有判断 50H 中是 00H 还是 0FFH,如果是 00H 就显 示上午 AM,然后星期加一,如果是 0FFH 就显示下午 PM, 然背后调用查表程序将其显示在液晶屏上。 值得注意的是:时与分、分与秒之间需将冒号也显示出来。 同理,定时时间的显示在第二行,由 TIME1 控制。  显示部分程序 TIME: CLR A MOV XBR0, A LCALL LCD MOV DPTR,NCD MOV A,32H SWAP A MOV R0,A LCALL LINE1 LCALL DELAY MOV R0,32H LCALL LINE1 LCALL DELAY 多功能时钟程序设计 11 MOV R0,10 LCALL LINE1 LCALL DELAY MOV A,31H SWAP A MOV R0,A LCALL LINE1 LCALL DELAY MOV R0,31H LCALL LINE1 LCALL DELAY MOV R0,10 LCALL LINE1 LCALL DELAY MOV A,30H SWAP A MOV R0,A LCALL LINE1 LCALL DELAY MOV R0,30H LCALL LINE1 LCALL DELAY MOV A,50H CJNE A,0FFH,LOPA MOV R0,12 LCALL LINE1 LCALL DELAY MOV R0,13 LCALL LINE1 多功能时钟程序设计 12 LCALL DELAY AJMP LOPP LOPA: MOV R0,11 LCALL LINE1 LCALL DELAY MOV R0,13 LCALL LINE1 LCALL DELAY LOPP: MOV R0,14 LCALL LINE1 LCALL DELAY MOV R0,15 LCALL LINE1 LCALL DELAY MOV R0,34H LCALL LINE1 LCALL DELAY MOV DPTR,NED MOV P7,0C0H MOV P6,1H MOV P6,0H MOV R0,11 LCALL LINE1 LCALL DELAY MOV A,42H SWAP A MOV R0,A LCALL LINE1 LCALL DELAY 多功能时钟程序设计 13 MOV R0,42H LCALL LINE1 LCALL DELAY MOV R0,10 LCALL LINE1 LCALL DELAY MOV A,41H SWAP A MOV R0,A LCALL LINE1 LCALL DELAY MOV R0,41H LCALL LINE1 LCALL DELAY MOV R0,10 LCALL LINE1 LCALL DELAY MOV A,40H SWAP A MOV R0,A LCALL LINE1 LCALL DELAY MOV R0,40H LCALL LINE1 LCALL DELAY MOV A,60H CJNE A,0FFH,LOPA1 MOV R0,12 LCALL LINE1 多功能时钟程序设计 14 LCALL DELAY MOV R0,13 LCALL LINE1 LCALL DELAY LJMP LOP44 LOPA1:MOV R0,11 LCALL LINE1 LCALL DELAY MOV R0,13 LCALL LINE1 LCALL DELAY LOP44:MOV R0,14 LCALL LINE1 LCALL DELAY MOV R0,15 LCALL LINE1 LCALL DELAY MOV R0,44H LCALL LINE1 LCALL DELAY1 RET LINE1: MOV A,R0 ANL A,0FH MOVC A,@A+DPTR MOV P7,A MOV P6,05H MOV P6,04H RET 多功能时钟程序设计 15 LCD: LCALL DELAY MOV P7, 38H MOV P6, 01H MOV P6, 00H LCALL DELAY MOV P7, 0EH MOV P6, 01H MOV P6, 00H LCALL DELAY MOV P7, 06H MOV P6, 01H MOV P6, 00H LCALL DELAY MOV P7, 01H MOV P6, 01H MOV P6, 00H LCALL DELAY RET DELAY: MOV R6,50 DELAY0: MOV R5,50 DJNZ R5,$ DJNZ R6,DELAY0 RET DELAY1: MOV R4,35。 DD DELAY2: MOV R3,150 DELAY3: MOV R2,250 DJNZ R2,$ DJNZ R3,DELAY3 DJNZ R4,DELAY2 多功能时钟程序设计 16 RET NCD:DB39。 039。 ,39。 139。 ,39。 239。 ,39。 339。 ,39。 439。 ,39。 539。 ,39。 639。 ,39。 739。 ,39。 839。 ,39。 939。 ,39。 :39。 ,39。 A39。 ,39。 P39。 ,39。 M39。 ,39。 X39。 ,39。 Q39。 ,39。 39。 常数表 NED:DB39。 039。 ,39。 139。 ,39。 239。 ,39。 339。 ,39。 439。 ,39。 539。 ,39。 639。 ,39。 739。 ,39。 839。 ,39。 939。 ,39。 :39。 ,39。 A39。 ,39。 P39。 ,39。 M39。 ,39。 X39。 ,39。 Q39。 ,39。 39。 常数表 END 5 工作过程分析 时钟程序分析 在设计时分秒的程序时,首先定时 1s,然后循环 60 次,则计时 60秒,再判断是否循环 60次,没有则继续执行以完成秒的计时,若完成 60 次循环则分加一,同理当分计数满 60时,时加一,在判断是否计数满 12 次, 若完成 12次则上下午翻转,在判断是否由下午变成上午,若是则星期加 1, 以此完成时 时分秒 上下午星期 的计时 并据 此 编写程序。 (主程序未给出) T0: MOV TL0,0B0H。 定时 50ms MOV TH0,3CH DJNZ R1,X。 计时 1s MOV R1,04H LCALL ABC。 跳转到计时程序 LCALL DING。 跳转到定时程序 LCALL TIME。 跳转到显示程序 X: RETI ABC: MOV A,30H ADD A,1。 秒加 1 DA A。 做十进制调整 MOV 30H,A CJNE A,60H,Y。 是否等于 60s。 若不是,则跳至 Y MOV 30H,00H。 若是,则 30H 清零 MOV A,31H ADD A, 1。 分加 1 DA A。 做十进制调整 MOV 31H,A CJNE A,60H,Y。 是否等于 60s。 若不是,则跳至 Y MOV 31H,00H。 若是,则 31H 清零 MOV A,32H ADD A,1。 时加 1 DA A。 做十进制调整 MOV 32H,A 多功能时钟程序设计 17 CJNE A,12H,L MOV A,31H CJNE A,00H,L MOV A,30H CJNE A,00H,L。 是否为 12:00:00。 若不是,跳 L MOV A,50H CPL A MOV 50H,A。 上下午翻转 CJNE A,00H,Y MOV A,34H。 判断是否是下午变成上午,若不是,跳 Y ADD A,01H。 星期加 1 DA A MOV 34H,A CJNE A,08H,Y MOV 34H,01H L: MOV A,32H。 时钟是否为 13,若不是,跳 Y CJNE A,13H,Y MOV 32H,01H。 若是,时钟变成 1 Y:RET T0进入中断,开始时分秒 上下午星期 的计时。 最大显示为“ 11: 59: 59PMXQ7”。 定时程序分析 定时程序实则就是让时钟设定一个闹铃时间,当 系统时间与设定的时间一致时显示时间并使 LED 灯 亮。 先判断秒是否相等,不等则继续,相等则跳转到lop1 判断分,同理相等时跳转到 lop lop lop4 判断时 上下午、星期 ,当系统设定的与显示的时间都相等时跳到程序 TSR使 LED亮。 闹钟时间由 K4调整。 DING: MOV A,30H CJNE A,40H,N。 判断秒是否相等 AJMP LOP1 LOP1: MOV A,31H CJNE A,41H,N。 判断分是否相等 AJM。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。