汇编数字钟 8位数码管显示.doc_第1页
汇编数字钟 8位数码管显示.doc_第2页
汇编数字钟 8位数码管显示.doc_第3页
汇编数字钟 8位数码管显示.doc_第4页
汇编数字钟 8位数码管显示.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

汇编数字钟 (8位数码管显示)这款数字钟是笔者亲自试验过的作品,电路图和程序都经过优化,供爱好者制作参考。 显示格式依然是23-59-59(同样是小时十位如果为0则不显示),调整时间增加了一只按钮,通过调整选择键SET_KEY选择调整位,选中位开始闪烁,此时再按增加键ADD_KEY或减少键DEC_KEY调整选中位,如果长按ADD_KEY或DEC_KEY,系统识别后则进行调时快进,此时停止闪烁,方便人眼观察。同时还增加了调秒功能:如果选中位是秒,则按增加键或减少键都是将秒清零。汇编程序设计:/*程序名称:51单片机8位数码管数字钟汇编程序简要说明:实现24小时制电子钟,8位数码管显示,显示时分秒 显示格式:23-59-59(小时十位如果为0则不显示) 通过3只按键来调整时间 调整选择键SET_KEY:P1.0;通过选择键选择调整位,选中位闪烁 增加键ADD_KEY:P1.1;按一次使选中位加1 减少键DEC_KEY;P1.2;按一次使选中位减1 如果长按ADD_KEY或DEC_KEY,识别后则进行调时快进,此时停止闪烁 如果选中位是秒,则按增加键或减少键都是将秒清零 P0口输出数码管段选信号,P2口输出数码管位选信号。晶振12M编 写:JiangX.net最后更新:08/12/31晚*/ORG 0000H;程序入口地址 LJMP START ORG 000BH;定时器0中断入口地址 LJMP TIMER_0ORG 0300H/*程序开始,初始化*/ START: SETB 48H;使用一个bit位用于调时闪烁标志SETB 47H;使用一个bit位用于产生脉冲用于调时快进时基MOV R1,#0;调整选择键功能标志:0正常走时、1调时、2调分、3调秒MOV 20H,#00H;用于控制秒基准时钟源的产生 MOV 21H,#00H;清零秒寄存器MOV 22H,#00H;清零分寄存器MOV 23H,#00H;清零时寄存器MOV 24H,#00H;用于控制调时闪烁的基准时钟的产生MOV IP,#02H;IP,IE初始化 MOV IE,#82H MOV TMOD,#01H;设定定时器0工作方式1MOV TH0,#3CH MOV TL0,#0B0H;赋定时初值,定时50ms SETB TR0;启动定时器0 MOV SP,#40H;重设堆栈指针/*主程序*/ MAIN: LCALL DISPLAY ;调用显示子程序 LCALL KEY_SCAN ;调用按键检测子程序 JZ MAIN;无键按下则返回重新循环LCALL SET_KEY ;调用选择键处理子程序JB 46H,MAIN;如果已进行长按调整(调时快进),则不再执行下面的单步调整 LCALL ADD_KEY;调用增加键处理子程序,加一LCALL DEC_KEY;调用减少键处理子程序,减一 LJMP MAIN ;重新循环 /*定时器中断服务程序*/ TIMER_0: PUSH ACC PUSH PSW ;保护现场MOV TH0,#3CHMOV TL0,#0B0H ;重新赋定时初值 CPL 47H;产生脉冲用于调时快进时基INC 24HMOV A,24HCJNE A,#10,ADD_TIME;产生0.5秒基准时钟,用于调时闪烁CPL 48H;取反调时闪烁标志位MOV 24H,#00HADD_TIME:;走时INC 20H MOV A,20H CJNE A,#20,RETI1;产生1秒基准时钟 MOV 20H,#00H ;一秒钟时间到,清零20HMOV A,21HADD A,#01HDA A;作十进制调整MOV 21H,A CJNE A,#60H,RETI1 MOV 21H,#00H ;一分钟到 MOV A,22H ADD A,#01H DA A MOV 22H,A CJNE A,#60H,RETI1 MOV 22H,#00H ;一小时到 MOV A,23H ADD A,#01H DA A MOV 23H,A CJNE A,#24H,RETI1 MOV 23H,#00H ;到24点,清零小时RETI1: POP PSW POP ACC ;恢复现场RETI ;中断返回/*显示处理*/ DISPLAY:MOV A,21H ;秒ANL A,#0FH MOV 2FH,A;转换出秒个位,存入2FHMOV A,21H ANL A,#0F0H SWAP A MOV 2EH,A;转换出秒十位,存入2EHJB 46H,MIN;如果长按按键(调时快进),则跳过闪烁处理程序CJNE R1,#3,MIN;如果R1为3,闪烁秒位待调整JB 48H,MINMOV 2FH,#0AH;使该位为10,查表得到使该位不显示的输出MOV 2EH,#0AHMIN:MOV A,22H ;分 ANL A,#0FH MOV 2DH,A;转换出分个位,存入2DHMOV A,22H ANL A,#0F0H SWAP A MOV 2CH,A;转换出分十位,存入2CHJB 46H,HOUR;如果长按按键(调时快进),则跳过闪烁处理程序CJNE R1,#2,HOUR;如果R1为2,闪烁分位待调整 JB 48H,HOURMOV 2DH,#0AH;使该位为10,查表得到使该位不显示的输出MOV 2CH,#0AHHOUR:MOV A,23H ;时 ANL A,#0FH MOV 2BH,A;转换出时个位,存入2BHMOV A,23H ANL A,#0F0H SWAP A MOV 2AH,A;转换出时十位,存入2AHJB 46H,DISP;如果长按按键(调时快进),则跳过闪烁处理程序CJNE R1,#1,DISP;如果R1为1,闪烁时位待调整 JB 48H,DISPMOV 2BH,#0AH;使该位为10,查表得到使该位不显示的输出MOV 2AH,#0AH/*数码管动态扫描显示*/DISP:MOV DPTR,#TABLEMOV A,2FHMOVC A,A+DPTRMOV P0,ACLR P2.7LCALL DELAYSETB P2.7;显示秒个位MOV A,2EHMOVC A,A+DPTRMOV P0,ACLR P2.6LCALL DELAYSETB P2.6;显示秒十位MOV A,#0BFHMOV P0,ACLR P2.5LCALL DELAYSETB P2.5;显示“-”MOV A,2DHMOVC A,A+DPTRMOV P0,ACLR P2.4LCALL DELAYSETB P2.4;显示分个位MOV A,2CHMOVC A,A+DPTRMOV P0,ACLR P2.3LCALL DELAYSETB P2.3;显示分十位MOV A,#0BFHMOV P0,ACLR P2.2LCALL DELAYSETB P2.2;显示“-”MOV A,2BHMOVC A,A+DPTRMOV P0,ACLR P2.1LCALL DELAYSETB P2.1;显示时个位MOV DPTR,#TABLE1;该位使用TABLE1以消除前置0MOV A,2AHMOVC A,A+DPTRMOV P0,ACLR P2.0LCALL DELAYSETB P2.0;显示时十位RET /*按键检测子程序*/ KEY_SCAN: CLR 46H;关闭长按调整(调时快进)标志MOV P1,#0FFH ;将P1口设置成输入状态 MOV A,P1 CPL A ANL A,#07H;P1口低3位连接3个按键,只判断该3位 JZ EXIT_KEY ;无键按下则返回 LCALL DELAY;延时去抖动MOV A,P1;重新判断 CPL A ANL A,#07H JZ EXIT_KEY ;键盘去抖动 MOV R5,A ;临时将键值存入R5MOV R4,#00H;用于控制调时快进速度;设置为00H是为了在进入长按处理前加长延时区分用户的长按与短按,防止误快进 LOOP:;进入长按处理LCALL DISPLAY;使长按时显示正常 MOV A,P1 CPL A ANL A,#07HJB 47H,LOOP1INC R4;调时快进间隔时间基准加1LOOP1:CJNE R1,#03H,LOOP2;如果调秒时长按,则不处理LJMP LOOP3LOOP2:CJNE R4,#99H,LOOP3MOV R4,#70H;确认用户长按后,重新设定起始值,加快调时快进速度SETB 46H;长按调整(调时快进)标志LCALL ADD_KEYLCALL DEC_KEYLOOP3:JNZ LOOP ;等待键释放MOV A,R5;输出键值RETEXIT_KEY:RET/*延时子程序*/DELAY:MOV R7,#150 DJNZ R7,$RET /*选择键处理子程序*/ SET_KEY: CJNE R5,#01H,EXIT;选择键键值INC R1;调整选择功能标志加一CJNE R1,#4,EXITMOV R1,#0MOV 24H,#00H;调时闪烁基准清零 RET/*增加键处理子程序*/ ADD_KEY: CJNE R5,#02H,EXIT;增加键键值CJNE R1,#01H,NEXT1;选择键功能标志为1,调时,否则跳出MOV A,23HADD A,#01HDA AMOV 23H,ACJNE A,#24H,EXITMOV 23H,#00HNEXT1:CJNE R1,#02H,NEXT2;选择键功能标志为2,调分,否则跳出MOV A,22HADD A,#01HDA AMOV 22H,ACJNE A,#60H,EXITMOV 22H,#00HNEXT2:CJNE R1,#03H,EXIT;选择键功能标志为3,调秒,否则跳出MOV 21H,#00H;如增加键按下直接清零秒RET/*减少键处理子程序*/ DEC_KEY: CJNE R5,#04H,EXIT;减少键键值CJNE R1,#01H,NEXT3;选择键功能标志为1,调时,否则跳出MOV A,23HADD A,#99HDA AMOV 23H,ACJNE A,#99H,EXITMOV 23H,#23HNEXT3:CJNE R1,#02H,NEXT4;选择键功能标志为2,调分,否则跳出MOV A,22HADD A,#99HDA AMOV 22H,ACJNE A,#99H,EXITMOV 22H,#59HNEXT4:CJNE R1,#03H,EXIT;选择键功能标志

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论