基于89C51单片机的多功能时钟设计.doc_第1页
基于89C51单片机的多功能时钟设计.doc_第2页
基于89C51单片机的多功能时钟设计.doc_第3页
基于89C51单片机的多功能时钟设计.doc_第4页
基于89C51单片机的多功能时钟设计.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

课程设计成果说明书题 目:基于89C51单片机多功能时钟的设计 学生姓名: 学 号: 学 院: 机电工程学院 班 级: 指导教师: 李良儿 浙江海洋学院教务处2012年12 月 16 日摘 要本设计是基于89C51单片机,主要以51单片机为控制核心,采用汇编语言进行编程。设计的单片机多功能时钟系统由1块AT89C51芯片,1个 7SEG八位LED数码管,2块74HC244列驱动及按键电路和闹铃电路组成。具有正常的时钟显示,秒表计时和时钟校时等基本功能,同时发挥部分的功能也得到了实现,并且还具有一定的创新功能。关键词 单片机;多功能时钟;AT89C51;51单片机; 目 录一、设计任务及主要技术指标和要求 61.1 设计任务 61.2 主要技术指标和要求 6二、引言 6三、设计方案 6 3.1 系统方案的选定 6 3.2 系统总体设计框图 6四、系统硬件的设计74.1 系统总电路 74.2 显示器 74.3 按键电路 7五、系统软件的设计85.1 主程序 85.2 显示子程序 85.3定时器T0中断服务程序85.4 T1中断服务程序9 5.5 调时功能程序 9 5.6 秒表功能程序9 5.7闹钟时间设定功能程序 9六、系统调试10 6.1 硬件调试10 6.2 软件调试10 6.3 综合调试10七、指标测试10 7.1 测试仪器10 7.2 指标测试10八、设计总结10九、参考文献11一、设计任务及主要技术指标和要求 1.1 设计任务:单片机多功能时钟的设计。 1.2 主要技术指标和要求: 基本要求:(1)、能实现正常的时钟功能。分别由6个数码管显示实时的时、分、秒。时、分后面加小数点区分。(2)、能实现秒表的功能。以0.01秒为计数单位,显示范围在09999.99秒。有秒表的开始、停止和清零功能。(3)具有时钟校时功能:能对时、分按实际时间进行手动校正。发挥部分:(1)被校时段有闪烁功能。(2)开机能显示班级、学号等信息,并能滚屏显示。 创新部分: (1)具有定时闹铃功能。 (2)具有整点报时功能。 二、引言单片机,是集CPU ,RAM ,ROM ,计数和多种接口于一体的微控制器。自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注。可靠性高、灵活性好、开发较为容易,广泛应用于智能生产和工业自动化上。51单片机通过软件编程,在LED液晶屏上实现小时,分,秒的显示,经过对比测试,发现计时的走时精度较高,可满足多种场合的应用需求,另外上电时具有滚动显示子程序,可以方便显示制作日期等信息。本文详细介绍了AT89C51单片机的基本原理,本文论述了7SEG-MPX6-CA-BLUE液晶屏和74HC244缓冲器的工作原理及其软件设计过程。三、设计方案3.1系统方案的选定为了实现LED显示器的数字显示,可以采用静态显示法和动态显示法,由于静态显示法需要数据锁存器等硬件,接口比较复杂,考虑时钟显示只有六位,且系统没有其他复杂的处理任务,所以采用动态扫描法实现LED的显示。单片机采用89C51系列,这样单片机就具有足够的空余硬件资源实现其他的扩充功能。3.2、系统总体设计框图四、系统硬件的设计 图4.2 单片机时钟硬件仿真电路单片机时钟硬件仿真电路见图8.2。采用单片机最小化应用设计,采用共阳七段LED显示器,p0口输出段码数据,p2.0-p2.7口作列扫描输出,p1、p3口串联16个按钮开关后接led发光管,p3.7端口接5v的小峰鸣器用于按键发音及定时提醒、整点到时提醒等。为了提醒共阳LED数码管的列扫描驱动电压,用74HC244同相驱动器作LED数码管的电源驱动。采用12MHZ晶振可提高秒计时的精准性。4.1显示器利用一块7SEG-MPX8-CA-BLU共阳八位LED数码管作为显示屏,如下图4.3 4.2按键电路利用七个开关分别接控制芯片的P1.0P1.6口,分别对应所要求的功能。五、系统软件的设计5.1 主程序的设计主程序流程图如下图5.1本设计中计时采用定时器T0中断完成,秒表使用定时器T1中断完成,主程序循环调用显示子程序及查键,当端口有开关按下时,转入相应功能程序。5.2 显示子程序时间显示子程序每次显示6个连续内存单元的十进制BCD码数据,首地址在调用显示程序时先指定。内存中50H55H为闹钟定时单元,60H65H为秒表计时单元,70H75H为时钟显示单元。由于采用七段共阳LED数码管动态扫描实现数据显示,显示用十进制BCD码数据的对应段码存放在ROM表中,显示时,先取出内存地址中的数据,然后查得对应的显示用段码从P0口输出,P2口将对应的数码管选中供电,就能显示该地址单元的数据值。为了显示小数点及“”、“A”等特殊字符,在开机显示班级信息和计时使用时采用不同的显示子程序。5.3定时器T0中断服务程序定时器T0用于时间计时。定时溢出中断周期设为50ms,进入中断后先进行定时中断初值校正,中断累计20次(即50ms20=1s)时对秒计数单元进行加1操作。时钟计数单元地址分别在70H71H(秒)、76H77H(分)、78H79H(时),最大计时值为23小时59分59秒。7AH单元内存放“熄灭符”数据(#0AH),用于时间调整时的闪烁功能。在计数单元中采用十进制BCD码计数,满10进位,T0中断计时程序执行流程见图5.3.5.4 T1中断服务程序T1中断程序用于指示时间调整单元数字的闪亮或秒表计数,在时间调整状态下,每过0.3a左右,将对应调整单元的显示数据换成“熄灭符”数据(#0AH)。这样在调整时间时,对应调整单元的显示数据会间隔闪亮。在作秒表计时时,每10s中断1次,计数单元加1,每100次为1s。秒表计数单元地址在60H61H(10毫秒)、62H63H(秒)、64H65H(分),最大计数值为99分59.99秒。T1中断程序流程图见图5.4.5.5 调时功能程序调时功能程序的设计方法是:按下P1.0口按键,若按下时间小于1s,进入省电状态(数码管不亮,时钟不停),否则进入调分状态,等待操作,此时计时器停止走动。当再按下P1.0按钮时,若按下时间小于0.5s,则时间加1min,若按下时间大于0.5s,则进入小时调整状态,按下P1.1按钮时可进行减1调整。在小时调整状态下,当按键按下的时间大于0.5s时退出时间调整状态,时钟从0s开始计时。5.6 秒表功能程序在正常时钟状态下若按下P1.1口按键,则进行时钟/秒表显示功能的转换,秒表中断计时程序启动,显示首址改为60H,LED将显示秒表计时单元60H65H中的数据。按下P1.2口的按键开关可实现秒表清零、秒表启动、秒表暂停功能,当再按下P1.1口按键时关闭T1秒表中断计时,显示首址又改为70H,恢复正常时间的显示功能。5.7 闹钟时间设定功能程序在正常时钟状态下若按下P1.3口的按键开关,则进入设定闹时调分状态,显示首址改为50H。LED将显示50H55H中的闹钟设定时间,显示式样为00:00: ,其中高2位代表时,低2位将代表分,在定时闹铃时精确到分。按下P1.2键分加1,按P1.0键分减1;若再按P1.3键进入时调整状态,显示式样为00:00: ,按P1.2键时加1,按P1.0键时减1,按P1.1键闹铃有效,显示式样变为00:00:0,再按P1.1键闹铃无效(显示式样又为00:00: )。再按P1.3键调整闹钟时间结束,恢复正常时间的显示。在闹铃时可按一下P1.3口按键使蜂鸣停止,不按,则蜂鸣器将鸣叫1分钟后自行中止。在设定闹钟后若要取消闹时功能,可按一下P1.3键,可听到一声“滴”声表明已取消了闹铃功能。 六、系统调试6.1 硬件调试由于本次设计没有通过实际硬件做出电路,故没有硬件调试,只在Proteus软件上仿真。6.2 软件调试在Proteus软件上画好电路后先要进行硬件线路的测试。(1)先测试LED数码管是否会亮,方法是写一段小程序(P0口为#00H,P2口为#0FFH),装入单片机后运行看8个数码管是否能显示8个“8”,如不会亮或部分不会亮应检查硬件连接线路。(2)按键小开关的检查是用鼠标按下小开关看对应口的发光管是否会亮(经调试可以运行后发光管已省略)。(3)蜂鸣器电路接在P3.7口,在按下P3.7口小开关时应能听到蜂鸣声。6.3 综合调试将设计好的程序装入主控制芯片,进行功能的观察与调试。七、指标测试7.1 测试仪器由于本次设计没有通过实际硬件做出电路,故不用进行仪器的测试。7.2 指标测试 基本要求:(1)具有正常的时钟功能。(2)具有秒表功能。(3)具有时钟校时功能。发挥部分:(1)具有校时段的闪烁功能。(2)具有开机上电时滚屏显示年月日及班级学号的功能创新部分:(1)具有整点闹铃功能。(2)具有倒计时结束时闹铃提醒功能。(3)具有定时闹铃功能。八、设计总结 通过这一周的学习,我感觉有很大的收获:首先,通过这次课程设计使自己对课本上的知识可以应用于实际,使理论与实际相结合,加深自己对课本知识的更好理解,同时也段练了自己的动手能力:能够充分利用电脑去查阅资料,增加了许多课本以外的知识。更加了解了单片机的设计步骤及方法。增加了对AT89C52芯片和7SEG共阳八位LED数码管引脚结构和功能的理解及运用,在设计电路过程中,要考虑到整体的美观性,连接电路时对各线路的连接要细致。在验证面电路效果时,出现了很多问题,其主要问题各个接线点之间错接没接上等。在这个过程中,锻炼了我的细心和耐性。九、参考文献1.楼然苗、李光飞,单片机课程设计指导M,北京,北京航空航天大学出版社,2007.07.2.蔡美琴等,MCS-51系列单片机系统及其应用(第二版)M,高等教学出版社,2004.06.3、楼然苗、胡佳文等,单片机实验与课程设计(PROTEUS仿真版)M,杭州,浙江大学出版社,2010.10附带程序:DISPFIRST EQU 30H ;显示首址存放单元BELL EQU P3.7 ;小喇叭CONBS EQU 2FH;存放报时次数SONGCON EQU 31H;唱歌程序计数器CONR2 EQU 32H;以下为唱歌寄存器CONR3 EQU 33HCONR4 EQU 34HCONR6 EQU 36HCONR7 EQU 37HCONR5 EQU 35HDELAYR3 EQU 38H;以下为延时寄存器DELAYR5 EQU 39HDELAYR6 EQU 3AHDELAYR7 EQU 3BH;*;中断程序入口;*;ORG 0000H ;程序执行开始地址LJMP START ;跳到标号START执行ORG 0003H ;外中断0中断入口RETI ;外中断0中断返回ORG 000BH ;定时器T0中断入口LJMP INTT0ORG 0013H RETIORG 001BHLJMP INTT1ORG 0023HRETI;*;以下程序开始;*;整点报时功能程序ZDBS:MOV A,#10 MOV B,79H MUL AB ADD A,78H MOV CONBS,A JZ OUT00BSLOOP:LCALL DS20ms MOV P3,#00HLCALL DL1SLCALL DL1SMOV P3,#0FFHLCALL DL1SDJNZ CONBS,BSLOOPOUT00:CLR 08H AJMP START1;以下为闹钟功能时的唱歌程序SPPP: ;LCALL MUSICO MOV B,#10BLOOP:LCALL DS20ms LCALL DL1S LCALL DL1S DJNZ B,BLOOP CLR 0AH CLR 05H AJMP START1;倒计时程序进入程序DJS:LCALL DS20ms JB P1.4,START1WAITH111:JNB P1.4,WAITH111 LJMP DJSST;*;主程序开始;*;START:MOV SP,#80H LCALL ST LCALL STFUN0 LCALL STMEN SETB EA SETB ET0 SETB TR0 MOV R4,#14H MOV DISPFIRST,#70H LCALL MUSICO;以下为主程序循环START1:LCALL DISPLAY JNB P1.0,SETMM1 JNB P1.1,FUNSS JNB P1.2,FUNPT JNB P1.3,TSFUN JNB P1.4,DJS JB 08H,ZDBS JB 0AH,SPPP AJMP START1;FUNPT:LJMP FUNPTT;以下为闹钟时间设定程序,按下p1.3进入设定TSFUN:LCALL DS20ms JB P1.3,START1WAIT113:JNB P1.3,WAIT113 JB 05H,CLOSESPMOV DISPFIRST,#50HMOV 50H,#0CHMOV 51H,#0AH;DSWAIT:SETB EA LCALL DISPLAY JNB P1.2,DSFINC JNB P1.0,DSDEC JNB P1.3,DSSFU AJMP DSWAIT;CLOSESP:CLR 05H CLR BELLAJMP START1DSSFU:LCALL DS20ms JB P1.3,DSWAIT LJMP DSSFUNN;SETMM1:LJMP SETMM;DSFINC:LCALL DS20ms JB P1.2,DSWAITDSWAIT12:LCALL DISPLAY JNB P1.2,DSWAIT12 CLR EA MOV R0,#53H LCALL ADD1 MOV A,R3 CLR C CJNE A,#60H,ADDHH22ADDHH22:JC DSWAIT ACALL CLR0AJMP DSWAITDSDEC:LCALL DS20ms JB P1.0,DSWAITDSWAITEE:LCALL DISPLAY JNB P1.0,DSWAITEE CLR EA MOV R0,#53H LCALL sub1 LJMP DSWAIT;以下为秒表功能/时钟转化功能程序;按下p1.1可进行功能转换FUNSS:LCALL DS20ms JB P1.1,START11WAIT11:JNB P1.1,WAIT11 CPL 03H JNB 03H,TIMFUN MOV DISPFIRST,#60H MOV 60H,#00H MOV 61H,#00H MOV 62H,#00H MOV 63H,#00H MOV 64H,#00H MOV 65H,#00H MOV TL1,#0F0H MOV TL1,#0D8H SETB TR1 SETB ET1START11:LJMP START1TIMFUN:MOV DISPFIRST,#70H CLR ET1 CLR TR1START12:LJMP START1;以下为秒表暂停/清零功能程序;按下p1.2清零,p1.1推出秒表回到时钟计时FUNPTT:LCALL DS20ms JB P1.2,START12WAIT22:JNB P1.2,WAIT21 CLR ET1 CLR TR1WAIT33:JNB P1.1,FUNSS JB P1.2,WAIT31 LCALL DS20ms JB P1.2,WAIT33WAIT66:JNB P1.2,WAIT61 MOV 60H,#00H MOV 61H,#00H MOV 62H,#00H MOV 63H,#00H MOV 64H,#00H MOV 65H,#00HWAIT44:JNB P1.1,FUNSS JB P1.2,WAIT41 LCALL DS20ms JB P1.2,WAIT44WAIT55:JNB P1.2,WAIT51 SETB ET1 SETB TR1 AJMP START1;以下为键等待释放时显示不会熄灭程序WAIT21:LCALL DISPLAY AJMP WAIT22WAIT31:LCALL DISPLAY AJMP WAIT33 WAIT41:LCALL DISPLAY AJMP WAIT44 WAIT51:LCALL DISPLAY AJMP WAIT55WAIT61:LCALL DISPLAY AJMP WAIT66 ;*;一秒计时程序;*;t0中断服务程序INTT0:PUSH ACC PUSH PSW CLR ET0 CLR TR0 MOV A,#0B7H ADD A,TL0 MOV TL0,A MOV A,#3CH ADDC A,TH0 MOV TH0,A SETB TR0 SETB P3.6 SETB P3.5 DJNZ R4,OUTT0ADDSS:MOV R4,#14H CLR P3.6 CLR P3.5 CPL 07H MOV R0,#71H ACALL ADD1 MOV A,R3 CLR C CJNE A,#60H,ADDMMADDMM:JC OUTT0 ACALL CLR0 MOV R0,#77H ACALL ADD1 MOV A,R3 CLR C CJNE A,#60H,ADDHHADDHH:JC OUTT0 ACALL CLR0 LCALL DS20ms SETB 08H MOV R0,#79H ACALL ADD1 MOV A,R3 CLR C CJNE A,#24H,HOURHOUR:JC OUTT0 ACALL CLR0OUTT0:MOV 72H,76H MOV 73H,77H MOV 74H,78H MOV 75H,79H LCALL BAOJ POP PSW POP ACC SETB ET0 RETI;*;闪动调时程序/秒表功能;*;t1中断服务程序,用于时间调整单元闪烁指示或秒表计时INTT1:PUSH ACC PUSH PSW JB 09H,SPCC JB 06H,DJSFUN JB 03H,MMFUN MOV TL1,#0B0H MOV TH1,#3CH DJNZ R2,INTT1OUT MOV R2,#06H CPL 02H JB 02H,FLASH1 MOV 72H,76H MOV 73H,77H MOV 74H,78H MOV 75H,7AHINTT1OUT:POP PSW POP ACC RETIFLASH1:JB 01H,FLASH2 MOV 72H,7AH MOV 73H,7AH MOV 74H,78H MOV 75H,79H AJMP INTT1OUTFLASH2:MOV 72H,76H MOV 73H,77H MOV 74H,7AH MOV 75H,7AH AJMP INTT1OUT;SPCC:INC SONGCON MOV TH1,#0D8H MOV TL1,#0EFH AJMP INTT1OUTDJSFUN:LJMP DJSSMMFUN:CLR TR1 MOV A,#0F7H ADD A,TL1 MOV TL1,A MOV A,#0D8H ADDC A,TL1 MOV TL1,A SETB TR1 MOV R0,#61H ACALL ADD1 CLR C JZ FSS1 AJMP OUTT01FSS1:ACALL CLR0 MOV R0,#63H ACALL ADD1 MOV A,R3 CLR C CJNE A,#60H,ADDHH1ADDHH1:JC OUTT01 LCALL CLR0 MOV R0,#65H ACALL ADD1OUTT01:POP PSW POP ACC RETI;*;加1子程序;*;ADD1:MOV A,R0 DEC R0 SWAP A ORL A,R0 ADD A,#01H DA A MOV R3,A ANL A,#0FH MOV R0,A MOV A,R3 INC R0 SWAP A ANL A,#0FH MOV R0,A RET;*;分减1子程序;*;SUB1:MOV A,R0 DEC R0 SWAP A ORL A,R0 JZ SUB11 DEC ASUB111:MOV R3,A ANL A,#0FH CLR C SUBB A,#0AHSUB1111:JC SUB1110 MOV R0,#09HSUB110:MOV A,R3 INC R0 SWAP A ANL A,#0FH MOV R0,A RET;SUB11:MOV A,#59H AJMP SUB111SUB1110:MOV A,R3 ANL A,#0FHMOV R0,AAJMP SUB110;*;时减1程序;*; SUBB1:MOV A,R0 DEC R0 SWAP A ORL A,R0 JZ SUB11 DEC ASUBB111:MOV R3,A ANL A,#0FH CLR C SUBB A,#0AHSUBB1111:JC SUB1110 MOV R0,#09HSUBB110:MOV A,R3 INC R0 SWAP A ANL A,#0FH MOV R0,A RET;SUBB11:MOV A,#23H AJMP SUB111SUBB1110:MOV A,R3 ANL A,#0FH MOV R0,A AJMP SUB110;*;清零程序;*;对计时单元复用零用CLR0:CLR A MOV R0,A DEC R0 MOV R0,A RET;*;时钟时间调整程序;*;当调试按键按下进入此程序SETMM:CLR ET0 CLR TR0 LCALL DL1S LCALL DS20ms JB P1.0,CLOSEDIS MOV R2,#06H MOV 70H,#00H MOV 71H,#00H SETB ET1 SETB TR1SET2:JNB P1.0,SET1 SETB 00HSET4:JB P1.0,SET3 LCALL DL05S LCALL DS20ms JNB P1.0,SETHH MOV R0,#77H LCALL ADD1 MOV A,R3 CLR C CJNE A,#60H,HHHHHH:JC SET4 LCALL CLR0CLR CAJMP SET4CLOSEDIS:SETB ET0 SETB TR0CLOSE:JB P1.0,CLOSE LCALL DS20ms JB P1.0,CLOSEWAITH:JNB P1.0,WAITH LJMP START1SETHH:CLR 00H SETB 01HSETHH1:JNB P1.0,SET5SET6:JB P1.0,SET7 LCALL DL05S LCALL DS20ms JNB P1.0,SETOUT MOV R0,#79H LCALL ADD1 MOV A,R3 CLR C CJNE A,#24H,HOUUHOUU:JC SET6 LCALL CLR0 AJMP SET6SETOUT:JNB P1.0,SETOUT1 LCALL DS20ms JNB P1.0,SETOUT CLR 01H CLR 00H CLR 02H CLR TR1 CLR ET1 SETB TR0 SETB ET0 LJMP START1SET1:LCALL DISPLAY AJMP SET2SET3:LCALL DISPLAY JNB P1.1,FUNSUBB SJMP SET4SET5:LCALL DISPLAY AJMP SETHH1SET7:LCALL DISPLAY JNB P1.1,FUNSUBB AJMP SET6SETOUT1:LCALL DISPLAY AJMP SETOUT;FUNSUB,分减1程序FUNSUB:LCALL DS20ms JB P1.1,SET41FUNSUB1:JNB P1.1,FUNSUB1 MOV R0,#77HLCALL SUB1LJMP SET4;SET41:LJMP SET4;FUNSUBB,分减1程序 FUNSUBB:LCALL DS20ms JB P1.1,SET61FUNSUBB1:JNB P1.1,FUNSUBB1 MOV R0,#79H LCALL SUBB1 LJMP SET6;SET61:LJMP SET6;*;显示程序;*;显示数据在70H-75H单元内,用六位LED数码管显示,p0口输出断码数据;p2口作为扫描控制,每个数码管亮7毫秒再逐位循环DISPLAY:MOV R1,DISPFIRST MOV R5,#80HPLAY:MOV A,R5 MOV P2,A MOV A,R1 MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A MOV A,R5 JNB ACC.5,LOOP5 CLR P0.7LOOP5:JNB ACC.3,LOOP6 CLR P0.7LOOP6:LCALL DL1ms INC R1 MOV A,R5 JB ACC.2,ENDOUT RR A MOV R5,A MOV P0,#0FFH AJMP PLAYENDOUT:MOV P2,#00H MOV P0,#0FFH RETTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,88H,0BFH;共阳段码表 0,1,2,3,4,5,6,7,8,9,不亮,啊,-;*;SDISPLAY,上电滚动屏显示程序;*;不带小数点显示,有A,-显示功能SDISPLAY:MOV R1,DISPFIRST MOV R5,#80HSPLAY:MOV A,R5 MOV P2,A MOV A,R1 MOV DPTR,#TABS MOVC A,A+DPTR MOV P0,A MOV A,R5 LCALL DL1ms INC R1 MOV A,R5 JB ACC.2,ENDOUTS RR A MOV R5,A AJMP SPLAYENDOUTS:MOV P2,#00H MOV P0,#0FFHRETTABS:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0C6H,0BFH,88H;显示数0 1 2 3 4 5 6 7 8 9 不亮 C -A;内存数0 1 2 3 4 5 6 7 8 9 0AH 0BH 0CH 0DH;STAB表,启动时显示2012.12.16,C10-1-13(学号)用STAB:DB 0AH,0AH,0AH,0AH,0AH,0AH,08H,01H,0CH,01H,0CH,00H,01H,0BH,0AH,0AH DB 06H,01H,0CH,02H,01H,0CH,02H,01H,00H,02H,0AH,0AH,0AH,0AH,0AH,0AH;注:0A不亮,0B显示A,0C显示-;*;ST,上电显示年月班级用,采用移动显示,先右移,后左移;*;ST:MOV R0,#40H MOV R2,#20H MOV R3,#00H MOV R4,#0FEH MOV P1,R4 CLR A MOV DPTR,#STABSLOOP:MOVC A,A+DPTR MOV R0,A MOV A,R3 INC A MOV R3,A INC R0 DJNZ R2,SLOOP MOV DISPFIRST,#5AH MOV R3,#1BHSSLOOP2:MOV R2,#25SSLOOP12:LCALL SDISPLAY DJNZ R2,SSLOOP12 MOV A,R4 RL A MOV R4,A MOV P1,A DEC DISPFIRST DJNZ R3,SSLOOP2 MOV P1,#0FFH MOV DISPFIRST,#40HSSLOOP:MOV R2,#25SSLOOP1:LCALL SDISPLAY DJNZ R2,SSLOOP1 MOV A,R4 RL A MOV R4,A MOV P3,A INC DISPFIRST MOV A,DISPFIRST CJNE A,#5AH,SSLOOP MOV P3,#0FFH RET;*;延时程序;*;1毫秒延时程序,LED灯显示程序DL1ms:MOV DELAYR6,#14HDL1:MOV DELAYR7,#19HDL2:DJNZ DELAYR7,DL2 DJNZ DELAYR6,DL1RETDL50ms:MOV DELAYR5,#50DLms:LCALL DL1ms DJNZ DELAYR5,DLms RET;20毫秒延时程序,采用调用子程序以改善LED的显示闪烁现象DS20ms:CLR BELL LCALL DISPLAY LCALL DISPLAY LCALL DISPLAY SETB BELL RET;延时程序,用按键时间长短判断DL1S:LCALL DL05S LCALL DL05S RETDL05S:MOV DELAYR3,#20HDL05S1:LCALL DISPLAY DJNZ DELAYR3,DL05S1 RET;*;以下是闹铃时间设定程序中的时调整程序;*;DSSFUNN:LCALL DISPLAY JNB P1.3,DSSFUNNMOV 50H,#0AHMOV 51H,#0CHWAITSS:SETB EA LCALL DISPLAY JNB P1.2,FFFF JNB P1.0,DDDD JNB P1.3,OOOO JNB P1.1,ENA AJMP WAITSSOOOO:LCALL DS20ms JB P1.3,WAITSSDSSFUNNM:LCALL DISPLAY JNB P1.3,DSSFUNNM MOV DISPFIRST,#70H LJMP START1ENA:LCALL DISPLAY JB P1.1,WAITSSDSSFUNMM0:LCALL DISPLAY JNB P1.1,DSSFUNMM0 CPL 05H JNB 05H,WAITSS11 MOV 50H,00H AJMP WAITSSWAITSS11:MOV 50H,#0aH AJMP WAITSSFFFF:LCALL DS20ms JB P1.2,WAITSSDSSFUNMM:LCALL DISPLAY JNB P1.2,DSSFUNMM CLR EA MOV R0,#55H LCALL ADD1 MOV A,R3 CLR C CJNE A,#24H,ADDHH33NADDHH33N:JC WAITSS ACALL CLR0 AJMP WAITSSDDDD:LCALL DS20ms JB P1.0,WAITSSDSSFUNDD:LCALL DISPLAY JNB P1.0,DSSFUNDD CLR EA MOV R0,#55H LCALL SUBB1

温馨提示

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

最新文档

评论

0/150

提交评论