已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机课程动静态显示设计方案一、设计任务与要求1.1 设计背景 随着科学技术的发展和电子技术产业结构调整,单片机开始迅速发展,由于家用电器逐渐普及,市场对于智能时钟控制系统的需求也越来越大。单片机以其芯片集成度高、处理功能强、可靠性高等优点,成功应用于工业自动化、智能仪器仪表、家电产品等领域。 近些年,人们对数字钟的要求也越来越高,传统的时钟已不能满足人们的需求。多功能数字钟不管在性能还是在样式上都发生了质的变化,有电子闹钟、数字闹钟等等。单片机在多功能数字钟中的应用已是非常普遍的,人们对数字钟的功能及工作顺序都非常熟悉。但是却很少知道它的内部结构以及工作原理。由单片机作为数字钟的核心控制器,可以通过它的时钟信号进行计时实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。通过键盘可以进行定时、校时功能。输出设备显示器可以用液晶显示技术和数码管显示技术。 单片机系统作为一种典型的嵌入式系统,其系统设计包括硬件设计和软件编程设计两个方面,其调试过程一般分为软件调试、硬件测试、系统调试。1.2 课程设计目的通过单片机原理与应用课程设计,使学生掌握单片机及其扩展系统设计的方法和设计原则及相应的硬件调试的方法。进一步加深单片机及其扩展系统设计和应用的理解 1.3 设计要求1、主电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路组成2、秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计3、译码显示电路将“时”、“分”、“秒”计数器的输出状态菁七段显示译码器译码,通过六位LED七段显示器显示出来4、校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整的二、总体方案设计 2.1 电路的总体原理框图根据以上的电子时钟的设计要求可以分为以下的几个硬件电路模块:单片机模块、数码显示模块与按键模块,模块之间的关系图如下面得方框电路图1所示 晶振 数码管显示 单片机时间调整器 图1 硬件电路方框图2.2 实现时钟计时的基本方法利用STC系列单片机的可编程定时/计数器、中断系统来实现时钟计数。(1) 计数初值计算:把定时器设为工作方式1,定时时间为50ms,则计数溢出20次即得时钟计时最小单位秒,而100次计数可用软件方法实现。假设使用T/C0,方式1,50ms定时,fosc=12MHz。则初值X满足(216-X)1/12MHz12s =50000sX=1553600111100101100003CB0H(2) 采用中断方式进行溢出次数累计,计满20次为秒计时(1秒);(3) 从秒到分和从分到时的计时是通过累加和数值比较实现。2.3 电子钟的时间显示电子钟的时钟时间在六位数码管上进行显示,因此,在内部RAM中设置显示缓冲区共8个单元。LED8 LED7 LED6 LED5 LED4 LED3 LED2 LED137H 36H 35H 34H 33H 32H 31H 30H时十位 时个位 分隔 分十位 分个位 分隔 秒十位秒个位2.4 电子钟的时间调整电子钟设置3个按键通过程序控制来完成电子钟的时间调整。A键按一次调整时,按第二次调整分钟,第三次推出时间调整;B键对小时或分钟进行加一;C键对小时或分钟进行减一;2.5 总体方案介绍2.5.1 计时方案利用STC89C52单片机内部的定时/计数器进行中断时,配合软件延时实现时、分、秒的计时。该方案节省硬件成本,且能使读者在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,对单片机的指令系统能有更深入的了解,从而对学好单片机技术这门课程起到一定的作用。2.5.2 控制方案STC89C52的P0口和P1口外接由八个LED数码管(LED8LED1)构成的显示器,用P0口作LED的段码输出口,P1口作八个LED数码管的位控输出线,P3口外接四个按键A、B、C构成键盘电路。STC89C52 是一种低功耗,高性能的CMOS 8位微型计算机。它带有8K Flash 可编程和擦除的只读存储器(EPROM),该器件采用ATMEL的高密度非易失性存储器技术制造,与工业上标准的80C51和80C52的指令系统及引脚兼容,片内Flash 集成在一个芯片上,可用与解决复杂的问题,且成本较低。简易电子钟的功能不复杂,采用其现有的I/O便可完成,所以本设计中采用此的设计方案。三、数字钟的硬件设计3.1 最小系统3.1.1 芯片分析STC89C52单片机引脚图如下:图3-1 STC89C52引脚图MCS-51单片机是标准的40引脚双列直插式集成电路芯片,其各引脚功能如下:VCC:+5V电源。VSS:接地。RST:复位信号。当输入的复位信号延续两个机器周期以上的高电平时即为有效,用完成单片机的复位初始化操作。XTAL1和XTAL2:外接晶体引线端。当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。P0口:P0口为一个8位漏极开路双向I/O口,当作输出口使用时,必须接上拉电阻才能有高电平输出;当作输入口使用时,必须先向电路中的锁存器写入“1”,使FET截止,以避免锁存器为“0”状态时对引脚读入的干扰。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,它不再需要多路转接电路MUX;因此它作为输出口使用时,无需再外接上拉电阻,当作为输入口使用时,同样也需先向其锁存器写“1”,使输出驱动电路的FET截止。P2口:P2口电路比P1口电路多了一个多路转接电路MUX,这又正好与P0口一样。P2口可以作为通用的I/O口使用,这时多路转接电路开关倒向锁丰存器Q端。P3口:P3口特点在于,为适应引脚信号第二功能的需要,增加了第二功能控制逻辑。当作为I/O口使用时,第二功能信号引线应保持高电平,与非门开通,以维持从锁存器到输出端数据输出通路的畅通。当输出第二功能信号时,该位应应置“1”,使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出,具体第二功能如表3-1所示。P3引脚兼用功能P3.0串行通讯输入(RXD)P3.1串行通讯输出(TXD)P3.2外部中断0( INT0)P3.3外部中断1(INT1)P3.4定时器0输入(T0)P3.5定时器1输入(T1)P3.6外部数据存储器写选通WRP3.7外部数据存储器写选通RD表3-1P3端口引脚兼用功能表3.1.2 晶振电路右图所示为时钟电路原理图,在AT89S51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。图3-2晶振电路3.2 数码显示模块设计显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及产品工艺,单片机应用系统中常用的显示器有: 发光二极管LED显示器、液晶LCD显示器、CRT显示器等。LED显示器是现在最常用的显示器之一,如下图所示。图3-4 LED显示器的符号图发光二极管(LED)由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式LED显示器件(半导体显示器)。分段式显示器(LED数码管)由7条线段围成8字型,每一段包含一个发光二极管。外加正向电压时二极管导通,发出清晰的光。只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。LED数码管有共阳、共阴之分。图是共阳式、共阴式LED数码管的原理图和符号。图3-5 共阳式、共阴式LED数码管的原理图和数码管的符号图系统采用动态显示方式,用P0口来控制LED数码管的段控线,而用P2口来控制其位控线。动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任何时刻都只有一位数码管被点亮,但由于人眼存在视觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉。四、系统软件设计4.1 软件设计分析在编程上,首先进行了初始化,定义程序的的入口地址以及中断的入口地址,在主程序开始定义了一组固定单元用来储存计数的时.分.秒,在显示初值之后,进入主循环。在主程序中,对不同的按键进行扫描,实现秒表,时间调整,复位清零等功能。4.2 源程序清单DISBEG EQU 30H CALB EQU P1.7 TIMCON EQU 2FH ORG0000H ;程序开始LJMP MAINORG 0003H ;关外中断0RETIORG000BH ;定时器T0中断程序入口LJMP INTT0 ;跳至INTTO执行ORG 0013H ;关中断1RETIORG 001BH ;定时器T1中断程序入口LJMP INTT1 ;跳至INTT1执行ORG 0023H ;关串行中断RETITAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,88H,0BFH;共阳段码表 012 34567 89不亮A-I_TAB: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表,启动时显示2013年06月07日、A01-01-15(学号)用STAB: DB 0AH,0AH,0AH,0AH,0AH,0AH,05H,01H,0CH,01H,00H,0CH,01H,00H,0DH,0AH,0AHDB 07H,00H,0CH,06H,00H,0CH,03H,01H,00H,02H,0AH,0AH,0AH,0AH,0AH,0AHDLY1M: MOVR6,#14H;1毫秒延时DL_LOOP: MOV R7,#19HDL_LOOP1: DJNZ R7,DL_LOOP1DJNZ R6,DL_LOOPRETDLY20M:CLR CALB ;20毫秒延时LCALL D_II_PLAYLCALLD_II_PLAYLCALLD_II_PLAYSETB CALBRETDL_LOOPS:LCALL DL05SLCALL DL05SRETDL05S: MOV R3,#20H ;8毫秒*32=0.196秒DL05S1: LCALL D_II_PLAYDJNZ R3,DL05S1RET;程序开始 ;整点报时用CTIME: MOV A,#10HMOV B,79HMUL ABADD A,78HMOV TIMCON,ACLOOP: LCALL DLY20MLCALL DL_LOOPSLCALL DL_LOOPSLCALL DL_LOOPSDJNZ TIMCON,CLOOPCLR 08H AJMPMLOOP1;主程序开始MAIN: LCALL ST ;上电显示年月日及班级学号MOV R0,#00H ;清00H-7FH内存单元MOV R7,#80H ;MLOOP: MOV R0,#00H ;INC R0 ;DJNZ R7,MLOOP ;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 ET0 ;允许T0中断SETB TR0 ;开启T0定时器MOV R4,#14H ;1秒定时用计数值(50MS20)MOV DISBEG,#70H ;显示单元为70-75H;以下主程序循环MLOOP1: LCALL D_II_PLAY ;调用显示子程序JNB P1.0,T_SETSC ;P1.0口为0时转时间调整程序JNB P1.1,DLY5 ;秒表功能,P1.1按键调时时作减1加能JNB P1.2,FUNBT ;秒表STOP,PUSE,CLRJNB P1.3,TSET JB 08H, CTIMEAJMP MLOOP1 ;P1.0口为1时跳回MLOOP1FUNBT: LJMP DLY6TSET: LCALL DLY20MJB P1.3,MLOOP1 ;TS_LOOP: JNB P1.3,TS_LOOP ;等待键释放JB 05H,CLRBELL MOV DISBEG,#50H MOV 50H,#0CH ;- -MOV 51H,#0AH ;黑MINCHG: SETB EALCALL D_II_PLAYJNB P1.2,DLY1 ;分加1JNB P1.0,DLY3 ;分减1JNB P1.3,DLY ;进入时调整AJMPMINCHGCLRBELL: CLR 05H CLR CALBAJMP MLOOP1DLY: LCALL DLY20M ;消抖JB P1.3, MINCHGLJMP DLY8 ;进入时调整T_SETSC: LJMP R_SETTIM ;转到时间调整程序R_SETTIMDLY1: LCALL DLY20M ;消抖JB P1.2, MINCHGDLY2: LCALL D_II_PLAY ;等键 释放JNB P1.2, DLY2CLR EAMOV R0,#53H ;LCALL ADD_1 MOV A,R3 ;分数据放入ACLR C ;清进位标志CJNE A,#60H,ADD_M;ADD_M: JC MINCHG ;小于60分时返回ACALLCLR_H ;大于或等于60分时分计时单元清0AJMP MINCHGDLY3 : LCALL DLY20M ;消抖JB P1.0, MINCHGDLY4: LCALL D_II_PLAY ;等键 释放JNB P1.0, DLY4CLR EAMOV R0,#53H ;LCALL SUB_M LJMPMINCHG;以下秒表功能/时钟转换程序;按下P1.1 可进行功能转换DLY5: LCALL DLY20MJB P1.1,T_MLOOP1JNB P1.1,$CPL 03HJNB 03H,DIS_SETMOV DISBEG,#60H ;显示秒表数据单元MOV 60H,#00HMOV 61H,#00HMOV 62H,#00HMOV 63H,#00HMOV 64H,#00HMOV 65H,#00HMOV TL1,#0F0H ;10MS定时初值()MOV TH1,#0D8H ;10MS定时初值SETB TR1SETB ET1T_MLOOP1:LJMP MLOOP1DIS_SET:MOV DISBEG,#70H ;显示时钟数据单元CLR ET1CLR TR1T_MLOOP11:LJMP MLOOP1;以下秒表暂停清零功能程序;按下P1.2暂停或清0,按下P1.1退出秒表回到时钟计时DLY6: LCALL DLY20MJB P1.2,T_MLOOP11T_EST11: JNB P1.2,T_EST11CLR ET1CLR TR1T_EST22: JNB P1.1,DLY5JB P1.2,T_EST21LCALL DLY20MJB P1.2,T_EST22T_EST55: JNB P1.2,T_EST51MOV 60H,#00HMOV 61H,#00HMOV 62H,#00HMOV 63H,#00HMOV 64H,#00HMOV 65H,#00HT_EST33: JNB P1.1,DLY5JB P1.2,T_EST31LCALL DLY20MJB P1.2,T_EST33T_EST44: JNB P1.2,T_EST41SETB ET1SETB TR1AJMP MLOOP1;以下键等待释放时显示不会熄灭用T_EST411: LCALL D_II_PLAYAJMP T_EST11T_EST21: LCALL D_II_PLAYAJMP T_EST22T_EST31: LCALL D_II_PLAYAJMP T_EST33T_EST41: LCALL D_II_PLAYAJMP T_EST44T_EST51: LCALL D_II_PLAYAJMP T_EST55; 1秒计时程序;T0中断服务程序INTT0: PUSH ACC ;累加器入栈保护PUSH PSW ;状态字入栈保护CLR ET0 ;关T0中断允许CLR TR0 ;关闭定时器T0MOV A,#0B7H ;中断响应时间同步修正ADD A,TL0 ;低8位初值修正MOV TL0,A ;重装初值(低8位修正值)MOV A,#3CH ;高8位初值修正ADDC A,TH0 MOV TH0,A ;重装初值(高8位修正值)SETB TR0 ;开启定时器T0DJNZ R4, I_INT0 ;20次中断未到中断退出A_DDS: MOVR4,#14H ;20次中断到(1秒)重赋初值CPL 07H MOV R0,#71H ;指向秒计时单元(71H-72H)ACALLADD_1 ;调用加1程序(加1秒操作)MOV A,R3 ;秒数据放入A(R3为2位十进制数组合)CLR C ;清进位标志CJNE A,#60H,A_DDM A_DDM: JC I_INT0 ;小于60秒时中断退出ACALLCLR_H ;大于或等于60秒时对秒计时单元清0MOVR0,#77H ;指向分计时单元(76H-77H)ACALLADD_1 ;分计时单元加1分钟MOV A,R3 ;分数据放入ACLR C ;清进位标志CJNE A,#60H,A_DDH ;A_DDH: JC I_INT0 ;小于60分时中断退出ACALL CLR_H ;大于或等于60分时分计时单元清0LCALL DLY20M ;正点报时SETB 08HMOVR0,#79H ;指向小时计时单元(78H-79H)ACALL ADD_1 ;小时计时单元加1小时MOV A,R3 ;时数据放入ACLR C ;清进位标志CJNE A,#24H,RSTART ;RSTART: JC I_INT0 ;小于24小时中断退出ACALLCLR_H ;大于或等于24小时小时计时单元清0I_INT0: MOV 72H,76H ;中断退出时将分、时计时单元数据移MOV 73H,77H ;入对应显示单元MOV 74H,78H ;MOV 75H,79H ;LCALLBELLPOP PSW ;恢复状态字(出栈)POP ACC ;恢复累加器SETB ET0 ;开放T0中断RETI ;中断返回;闪动调时程序秒表功能程序;T1中断服务程序,用作时间调整时调整单元闪烁指示或秒表计时INTT1: PUSH ACC ;中断现场保护PUSH PSW JB 03H, R_ADDS ;=1时秒表MOV TL1, #0B0H ;装定时器T1定时初值MOV TH1, #3CH DJNZ R2,I_INT1 ;0.3秒未到退出中断(50MS中断6次)MOV R2,#06H ;重装0.3秒定时用初值CPL 02H ;0.3秒定时到对闪烁标志取反JB 02H,FLASH0 ;02H位为1时显示单元熄灭MOV 72H,76H ;02H位为0时正常显示MOV 73H,77H MOV 74H,78H MOV 75H,79H I_INT1: POP PSW ;恢复现场POP ACC RETI ;中断退出FLASH0: JB 01H,FLASH1 ;01H位为1时,转小时熄灭控制MOV 72H,7AH ;01H位为0时,熄灭符数据放入分MOV 73H,7AH ;显示单元(72H-73H),将不显示分数据MOV 74H,78H MOV 75H,79H AJMP I_INT1 ;转中断退出FLASH1: MOV 72H,76H ;01H位为1时,熄灭符数据放入小时MOV 73H,77H ;显示单元(74H-75H),小时将不显示MOV 74H,7AH MOV 75H,7AH AJMP I_INT1 ;转中断退出R_ADDS : CLR TR1MOV A,#0F7H ;中断响应时间同步修正,重装初值(10ms)ADD A,TL1 ;低8位初值修正MOV TL1,A ;重装初值(低8位修正值)MOV A,#0D8H ;高8位初值修正ADDC A,TH1 MOV TH1,A ;重装初值(高8位修正值)SETB TR1 ;开启定时器T0MOV R0,#61H ;指向秒计时单元(71H-72H)ACALL ADD_1 ;调用加1程序(加1秒操作)CLR C MOV A,R3 JZ R_ADDM ;加1后为00,C=0AJMP I_INT01 ;加1后不为00,C=1R_ADDM: ACALL CLR_H ;大于或等于60秒时对秒计时单元清0MOVR0,#63H ;指向分计时单元(76H-77H)ACALL ADD_1 ;分计时单元加1分钟MOV A,R3 ;分数据放入ACLR C ;清进位标志CJNE A,#60H,R_ADDH R_ADDH: JC I_INT01 ;小于60分时中断退出LCALL CLR_H ;大于或等于60分时分计时单元清0MOVR0,#65H ;指向小时计时单元(78H-79H)ACALL ADD_1 ;小时计时单元加1小时I_INT01:POP PSW ;恢复状态字(出栈)POP ACC ;恢复累加器RETI ;中断返回 ; 加1子 程 序ADD_1: MOVA,R0 ;取当前计时单元数据到ADECR0 ;指向前一地址SWAP A ;A中数据高四位与低四位交换ORL A,R0 ;前一地址中数据放入A中低四位ADDA,#01H ;A加1操作DA A ;十进制调整MOV R3,A ;移入R3寄存器ANL A,#0FH ;高四位变0MOV R0,A ;放回前一地址单元MOVA,R3 ;取回R3中暂存数据INC R0 ;指向当前地址单元SWAPA ;A中数据高四位与低四位交换ANL A,#0FH ;高四位变0MOVR0,A ;数据放入当削地址单元中RET ;子程序返回;分减1子 程 序 ;SUB_M:MOVA,R0 ;取当前计时单元数据到ADECR0 ;指向前一地址SWAP A ;A中数据高四位与低四位交换ORL A,R0 ;前一地址中数据放入A中低四位JZ SUB_M1DECA ;A减1操作SUB_M11: MOV 3,A ;移入R3寄存器ANL A,#0FH ;高四位变0CLR C ;清进位标志SUBB A,#0AHSUB_M111: JC SUB_M110MOV R0,#09H ;大于等于0AH,为9SUB_M10: MOVA,R3 ;取回R3中暂存数据INC R0 ;指向当前地址单元SWAPA ;A中数据高四位与低四位交换ANL A,#0FH ;高四位变0MOVR0,A ;数据放入当削地址单元中RET ;子程序返回;SUB_M1: MOV A,#59HAJMP SUB_M11SUB_M110:MOV A,R3 ;移入R3寄存器ANL A,#0FH ;高四位变0MOV R0,AAJMP SUB_M10;时减1子 程 序 SUB_H:MOVA,R0 ;取当前计时单元数据到ADECR0 ;指向前一地址SWAP A ;A中数据高四位与低四位交换ORL A,R0 ;前一地址中数据放入A中低四位JZ SUB_H1 ;00减1为23(小时)DECA ;A减1操作SUB_H11:MOV R3,A ;移入R3寄存器ANL A,#0FH ;高四位变0CLR C ;清进位标志SUBB A,#0AH ;时个位大于9为9SUB_H111: JC SUB_H110 MOV R0,#09H ;大于等于0AH,为9SUB_H10:MOVA,R3 ;取回R3中暂存数据INC R0 ;指向当前地址单元SWAPA ;A中数据高四位与低四位交换ANL A,#0FH ;高四位变0MOVR0,A ;时十位数数据放入RET ;子程序返回SUB_H1:MOV A,#23HAJMP SUB_H11SUB_H110:MOV A,R3 ;时个位小于0A不处理ANL A,#0FH ;高四位变0MOV R0,A ;个位移入AJMP SUB_H10;清零程序 ;对计时单元复零用CLR_H: CLR A ;清累加器MOV R0,A ;清当前地址单元DEC R0 ;指向前一地址MOV R0,A ;前一地址单元清0RET ;子程序返回;时钟时间调整程序;当调时按键按下时进入此程序R_SETTIM:CLRET0 ;关定时器T0中断CLR TR0 ;关闭定时器T0LCALLDL_LOOPS ;调用1秒延时程序LCALL DLY20M ;消抖JB P1.0,SLEEP ;键按下时间小于1秒,关闭显示(省电)MOV R2,#06H ;进入调时状态,赋闪烁定时初值MOV 70H,#00H ;调时时秒单元为00 秒MOV 71H,#00HSETB ET1 ;允许T1中断SETB TR1 ;开启定时器T1SET_2: JNB P1.0,SET_1 ;P1.0口为0(键未释放),等待SETB 00H ;键释放,分调整闪烁标志置1SET_4: JB P1.0,SET_3 ;等待键按下LCALL DL05S ;有键按下,延时0.5秒LCALL DLY20M ;消抖JNB P1.0,R_SETHH ;按下时间大于0.5秒转调小时状态MOV R0,#77H ;按下时间小于0.5秒加1分钟操作LCALL ADD_1 ;调用加1子程序MOV A,R3 ;取调整单元数据CLR C ;清进位标志CJNE A,#60H,SET_LOOP ;调整单元数据与60比较SET_LOOP: JC SET_4 ;调整单元数据小于60转SET_4循环LCALL CLR_H ;调整单元数据大于或等于60时清0CLR C ;清进位标志AJMP SET_4 ;跳转到SET_4循环SLEEP: SETB ET0 ;省电(LED不显示)状态。开T0中断SETB TR0 ;开启T0定时器(开时钟)SET_LOOP1:JB P1.0,SET_LOOP1 ;无按键按下,等待。LCALL DLY20M ;消抖JB P1.0,SET_LOOP1 ;是干扰返回SET_LOOP1等待SET_LOOP2:JNB P1.0,SET_LOOP2 ;等待键释放LJMP MLOOP1 ;返回主程序(LED数据显示亮)R_SETHH: CLR 00H ;分闪烁标志清除(进入调小时状态)SETB 01H ;小时调整标志置1SET_LOOP3:JNB P1.0,SET_5 ;等待键释放SET_6: JB P1.0,SET_7 ;等待按键按下LCALLDL05S ;有键按下延时0.5秒LCALL DLY20M ;消抖JNB P1.0,STOP ;按下时间大于0.5秒退出时间调整MOVR0,#79H ;按下时间小于0.5秒加1小时操作LCALLADD_1 ;调加1子程序MOVA,R3 CLR C CJNE A,#24H,C_YHH ;计时单元数据与24比较C_YHH: JC SET_6 ;小于24转SET_6循环LCALL CLR_H ;大于或等于24时清0操作AJMP SET_6 ;跳转到SET_6循环STOP: JNB P1.0,STOP1 ;调时退出程序。等待键释放LCALL DLY20M ;消抖JNB P1.0,STOP ;是抖动,返回STOP再等待CLR 01H ;清调小时标志CLR 00H ;清调分标志CLR 02H ;清闪烁标志CLR TR1 ;关闭定时器T1CLR ET1 ;关定时器T1中断SETB TR0 ;开启定时器T0SETB ET0 ;开定时器T0中断(计时开始)LJMP MLOOP1 ;跳回主程序SET_1: LCALLD_II_PLAY ;键释放等待时调用显示程序(调分)AJMP SET_2 ;防止键按下时无时钟显示SET_3: LCALLD_II_PLAY ;等待调分按键时时钟显示用JNB P1.1, DLY7 ;减1分操作AJMP SET_4 ;调分等待SET_5: LCALLD_II_PLAY ;键释放等待时调用显示程序(调小时)AJMP SET_LOOP3 ;防止键按下时无时钟显示SET_7: LCALLD_II_PLAY ;等待调小时按键时时钟显示用JNB P1.1, DLY7B ;小时减1操作AJMP SET_6 ;调时等待STOP1: LCALLD_II_PLAY ;退出时钟调整时键释放等待AJMP STOP ;防止键按下时无时钟显示;DLY7,分减1程序?DLY7: LCALL DLY20M ;消抖JB P1.1,SET_41
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年物流流程设计案例分享
- 2026年国庆文化活动方案策划
- 2026年社区工会活动方案策划
- 2026年医院检验科生物安全培训课件
- 2026年养生会所营销活动方案策划
- 2026年大学校园举办活动方案策划
- 2026年幼儿科学领域指导策略研究报告
- 2026年环境分析市场营销案例
- 2026年灵活运用教学方法提
- 2026年液压系统毕业设计开题报告
- 挖掘铲运和桩工机械司机岗前实践理论考核试卷含答案
- 钢结构厂房门窗安装专项方案
- 2019北京市中考数学真题及答案解析
- 危化经营安全培训课件
- 2025年ICU轮转护士出科考试试题及答案(100题)
- 全国灌溉水有效利用系数测算分析技术指导细则(2024修订版)
- 隧洞安全生产培训内容课件
- (完整版)初中苏教七年级下册期末数学质量测试真题经典及解析
- 法律知识考试试题及答案
- 国家安全教育大学生读本电子版教材2025年课件讲义全套合集
- 邮政机要培训课件
评论
0/150
提交评论