基于液晶显示的数字时钟设计

上传人:kms****20 文档编号:41223965 上传时间:2018-05-28 格式:DOC 页数:11 大小:47.50KB
返回 下载 相关 举报
基于液晶显示的数字时钟设计_第1页
第1页 / 共11页
基于液晶显示的数字时钟设计_第2页
第2页 / 共11页
基于液晶显示的数字时钟设计_第3页
第3页 / 共11页
基于液晶显示的数字时钟设计_第4页
第4页 / 共11页
基于液晶显示的数字时钟设计_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《基于液晶显示的数字时钟设计》由会员分享,可在线阅读,更多相关《基于液晶显示的数字时钟设计(11页珍藏版)》请在金锄头文库上搜索。

1、基于液晶显示的数字时钟设计基于液晶显示的数字时钟设计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,

2、#70H ;清 70H-7AH 共 11 个内存单元MOV R7,#0BH ;CLEARDISP: MOV R0,#00H ;INC R0 ;DJNZ R7,CLEARDISP ;MOV 20H,#00H ;清 20H(标志用)MOV 7AH,#0AH ;放入“熄灭符“数据MOV TMOD,#11H ;设 T0、T1 为 16 位定时器MOV TL0,#0B0H ;50MS 定时初值(T0 计时用)MOV TH0,#3CH ;50MS 定时初值MOV TL1,#0B0H ;50MS 定时初值(T1 闪烁定时用)MOV TH1,#3CH ;50MS 定时初值SETB EA ;总中断开放SETB

3、ET0 ;允许 T0 中断SETB TR0 ;开启 T0 定时器MOV R4,#14H ;1 秒定时用初值(50MS20)START1: LCALL DISPLAY ;调用显示子程序JNB P3.7,SETMM1 ;P3.7 口为 0 时转时间调整程序SJMP START1 ;P3.7 口为 1 时跳回START1SETMM1: LJMP SETMM ;转到时间调整程序 SETMM; 1 秒计时程序 ;T0 中断服务程序INTT0: PUSH ACC ;累加器入栈保护PUSH PSW ;状态字入栈保护CLR ET0 ;关 T0 中断允许CLR TR0 ;关闭定时器 T0MOV A,#0B7H

4、;中断响应时间同步修正ADD A,TL0 ;低 8 位初值修正MOV TL0,A ;重装初值(低 8 位修正值)MOV A,#3CH ;高 8 位初值修正ADDC A,TH0 ;MOV TH0,A ;重装初值(高 8 位修正值)SETB TR0 ;开启定时器 T0DJNZ R4, OUTT0 ;20 次中断未到中断退出ADDSS: MOV R4,#14H ;20 次中断到(1 秒)重赋初值MOV R0,#71H ;指向秒计时单元(71H-72H)ACALL ADD1 ;调用加 1 程序(加 1 秒操作)MOV A,R3 ;秒数据放入A(R3 为 2 位十进制数组合)CLR C ;清进位标志CJ

5、NE A,#60H,ADDMM ;ADDMM: JC OUTT0 ;小于 60 秒时中断退出ACALL CLR0 ;大于或等于 60 秒时对秒计时单元清 0MOV R0,#77H ;指向分计时单元(76H-77H)ACALL ADD1 ;分计时单元加 1分钟MOV A,R3 ;分数据放入 ACLR C ;清进位标志CJNE A,#60H,ADDHH ;ADDHH: JC OUTT0 ;小于 60 分时中断退出ACALL CLR0 ;大于或等于 60 分时分计时单元清 0MOV R0,#79H ;指向小时计时单元(78H-79H)ACALL ADD1 ;小时计时单元加1 小时MOV A,R3 ;

6、时数据放入 ACLR C ;清进位标志CJNE A,#24H,HOUR ;HOUR: JC OUTT0 ;小于 24 小时中断退出ACALL CLR0 ;大于或等于 24 小时小时计时单元清 0OUTT0: MOV 72H,76H ;中断退出时将分、时计时单元数据移MOV 73H,77H ;入对应显示单元MOV 74H,78H ;MOV 75H,79H ;POP PSW ;恢复状态字(出栈)POP ACC ;恢复累加器SETB ET0 ;开放 T0 中断RETI ;中断返回; 闪动调时 程 序 ;T1 中断服务程序,用作时间调整时调整单元闪烁指示INTT1: PUSH ACC ;中断现场保护P

7、USH PSW ;MOV TL1, #0B0H ;装定时器 T1 定时初值MOV TH1, #3CH ;DJNZ R2,INTT1OUT ;0.3 秒未到退出中断(50MS 中断 6 次)MOV R2,#06H ;重装 0.3 秒定时用初值CPL 02H ;0.3 秒定时到对闪烁标志取反JB 02H,FLASH1 ;02H 位为 1 时显示单元“熄灭“MOV 72H,76H ;02H 位为 0 时正常显示MOV 73H,77H ;MOV 74H,78H ;MOV 75H,79H ;INTT1OUT: POP PSW ;恢复现场POP ACC ;RETI ;中断退出FLASH1: JB 01H,

8、FLASH2 ;01H 位为 1 时,转小时熄灭控制MOV 72H,7AH ;01H 位为 0 时,“熄灭符“数据放入分MOV 73H,7AH ;显示单元(72H-73H) ,将不显示分数据MOV 74H,78H ;MOV 75H,79H ;AJMP INTT1OUT ;转中断退出FLASH2: MOV 72H,76H ;01H 位为 1 时,“熄灭符“数据放入小时MOV 73H,77H ;显示单元(74H-75H) ,小时数据将不显示MOV 74H,7AH ;MOV 75H,7AH ;AJMP INTT1OUT ;转中断退出; 加 1 子 程 序 ;ADD1: MOV A,R0 ;取当前计时

9、单元数据到 ADEC R0 ;指向前一地址SWAP A ;A 中数据高四位与低四位交换ORL A,R0 ;前一地址中数据放入 A中低四位ADD A,#01H ;A 加 1 操作DA A ;十进制调整MOV R3,A ;移入 R3 寄存器ANL A,#0FH ;高四位变 0MOV R0,A ;放回前一地址单元MOV A,R3 ;取回 R3 中暂存数据INC R0 ;指向当前地址单元SWAP A ;A 中数据高四位与低四位交换ANL A,#0FH ;高四位变 0MOV R0,A ;数据放入当削地址单元中RET ;子程序返回; 清零程序 ;对计时单元复零用CLR0: CLR A ;清累加器MOV R0,A ;清当前地址单元DEC R0 ;指向前一地址MOV R0,A ;前一地址单元清 0RET ;子程序返回; 时钟调整程序 ;当调时按键按下时进入此程序SETMM: cLR ET0 ;关定时器 T0 中断CLR TR0 ;关闭定时器 T0LCALL DL1S ;调用 1 秒延时程序JB P3.7,CLOSEDIS ;键按下时间小于 1 秒,关闭显示(省电)MOV R2,#06H ;进入调时状态,赋闪烁定时初值SETB ET1 ;允许 T1 中断SETB TR1 ;开启定时器 T1SET2: JNB P3.7,SET

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号