基于AT89S52和HD7279A的多功能电子钟

来源:本站
导读:目前正在解读《基于AT89S52和HD7279A的多功能电子钟》的相关信息,《基于AT89S52和HD7279A的多功能电子钟》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《基于AT89S52和HD7279A的多功能电子钟》的详细说明。
简介:基于AT89S52和HD7279A的多功能电子钟:功能:整点报时,时分秒调整,闹钟的设置,闹钟开关,万年历及其调整,闰年。

判断,秒表,芯片:AT89S52,HD7279A

基于AT89S52和HD7279A的多功能电子钟

切换到年月日显示当前日期

基于AT89S52和HD7279A的多功能电子钟

将日期调整到2008年验证闰年

基于AT89S52和HD7279A的多功能电子钟

PCB图

基于AT89S52和HD7279A的多功能电子钟

系统原理图

基于AT89S52和HD7279A的多功能电子钟

计时开始,黄灯为闹钟就绪灯

基于AT89S52和HD7279A的多功能电子钟

万年历从0000年可到9999年

基于AT89S52和HD7279A的多功能电子钟

基于AT89S52和HD7279A的多功能电子钟

59分59秒了,整点报时灯红灯准备亮起

基于AT89S52和HD7279A的多功能电子钟

红灯亮了,整点到了,30S后整点报时灯(红)自动熄灭

基于AT89S52和HD7279A的多功能电子钟

下一步验证闹钟,闹钟就绪灯(黄)为开,当前闹钟时间为01时01分

基于AT89S52和HD7279A的多功能电子钟

闹钟灯(绿)亮了,其实还有一个蜂鸣器在响,关掉闹钟,黄灯和绿灯都被关掉,若不关闭则一分钟后自动关闭,但是闹钟就绪灯不会自动关闭,下图为手动关闭

基于AT89S52和HD7279A的多功能电子钟

秒表准备

基于AT89S52和HD7279A的多功能电子钟

ORG  0000H     LJMP   MAINORG  000BH     LJMP     CLOCKORG  001BH     LJMP     BRTORG  0030HKEY BIT  P1.4CLK BIT  P1.5DAT BIT  P1.6CS  BIT  P1.7                   ;说明:P1.0为正点报时标志,在正点时亮器,半分钟后自动关闭,                   ;P1.1为闹钟开关标志,可由键盘设置 ,初始状态为开,亮30秒                   ;P1.3,P1.2为闹钟,一分钟后自动关闭,亮的前提是闹钟开关打开                   ;P1.4为KEY,P1.7CS                   ;可通过在正常显示状态下按3键随时关闭闹铃                   ;在走时状态下按1键进入时间调整,按3小时加1,按4时加1,再按1切换到分,按3加1,按4减1,按F返回                   ;在时钟状态下,按2进入闹钟设置,其它同时间调整                   ;在时钟状态下,按3进入闹钟开关,可随时开关闹铃?若不关则1分钟后  自动关闭                   ;在时钟状态下按C进入秒表,按D开始,按E停止,按c清零,再按D可重新开始,按f退出秒表                   ;在时钟状态下按0显示年月日,按D进入日期调整,可自动识别闰年。MAIN: MOV     SP,#60H      MOV     TMOD,#11H           ;定时器0,1工作在方式1      MOV     IE,#8AH               ;开定时器中断      MOV     TH1,#0D8H      MOV     TL1,#0F0H      MOV     TL0,#0B0H             ;定时器地低位初始化      MOV     TH0,#3CH              ;定时器高位初始化      MOV     2AH,#14H              ;年高位      MOV     2BH,#09H              ;年低位      MOV     2CH,#05H              ;月      MOV     2DH,#19H              ;日      MOV     20H,#17H              ;时单位      MOV     21H,#3BH              ;分单元      MOV     22H,#30H              ;秒单元      MOV     23H,#00H              ;定时器计数单元      MOV     50H,#00H              ;闹钟时位      MOV     51H,#00H              ;闹钟分位      MOV     52H,#00H              ;闹钟秒位      SETB    TR0                   ;开始定时      CLR     P1.1                  ;闹铃状态开关      SETB    P1.0                 ;关整点报时灯      SETB    P1.3                  ;闹铃关      SETB    P1.2       ;*******************初始化完毕********************************SS:LCALL CUTIN0   LCALL DISP   JB KEY,LK   LCALL READ   LCALL  LDELAY   MOV A,28HLP1:JNB  KEY,LP1   CJNE A,#01H,NAO           ;按1键进入时间设置   LCALL KEY0   SJMP  LKNAO:CJNE A,#02H,SWITCH             ;按2键键入闹钟设置    LCALL  LDELAY    LCALL  KEY1    SJMP  LKSWITCH:CJNE A,#03H,MB               ;按3键进入闹钟开关       MOV C,P1.1       CPL C       LCALL  LONG       MOV P1.1,C       SJMP LKMB:  CJNE A,#0CH,DATE               ;按C键进入秒表     LCALL MBWAIT                   ;按0键进入年月日显示       SJMP  LKDATE: CJNE  A,#00H,SETD D1:  LCALL CUTIN2      LCALL DISPD      LCALL SHORT      JB KEY,D1      LCALL  READ      MOV A,28H      CJNE  A,#0FH,D1      MOV 29H,#98H      LCALL SEND      MOV 29H,#03FH      CALL SEND      SJMP  SSSETD:CJNE    A,#0DH,LK           ;按D键进入年月日调整     LCALL     KEY2   LK:SJMP  SSCUTIN0: MOV     25H,R0        MOV     R0,#78H        MOV     A,22H        ACALL   BCD        MOV     A,21H        ACALL   BCD        MOV     A,20H        ACALL   BCD        MOV     R0,25H        RETCUTIN1: MOV     25H,R0        MOV     R0,#78H        MOV     A,42H        ACALL   BCD        MOV     A,41H        ACALL   BCD        MOV     A,40H        ACALL   BCD        MOV     R0,25H        RETCUTIN2:MOV 25H,R0       MOV R0,#78H;78H中为日个位       MOV A , 2DH       ACALL BCD       MOV A ,2CH       ACALL BCD       MOV A,2BH       ACALL BCD       MOV A,2AH       ACALL BCD       MOV  R0,25H;7FH中为年千?       RETBCD:    MOV     B,#0AH        ;把数据调整为两位BCD码        DIV     AB        MOV     @R0,B        INC     R0        MOV     @R0,A        INC     R0        RETCLOCK:  MOV     TL0,#0B0H     ;分秒单元进位        MOV     TH0,#3CH        PUSH    PSW        PUSH    ACC        INC     23H        MOV     A,23H        CJNE    A,#14H,RET0        MOV     23H,#00H        INC     22H        JNB     P1.1,NZD        SETB    P1.2        SETB    P1.3NZD:    MOV     A,21H        CJNE    A,#00H,CLOOPEN:   MOV     A,22H        CJNE    A,#1EH,ZD        ;正点报时半分钟后关闭        SETB    P1.0ZD:     CJNE    A,#3CH,RET0        MOV     22H,#00H        INC     21H        SETB     P1.2             ;闹1分钟后钟关        SETB     P1.3        MOV     A,21H        CJNE    A,#3CH,RET0        MOV     21H,#00H        CLR     P1.0        INC     20H        MOV     A,20H        CJNE    A,#18H,RET0        MOV     20H,#00H        MOV     A,2CH        CJNE    A,#02H,OTHERMON        LCALL YEAR        CJNE    A,#00H,NEXT7OTHERMON:LCALL DAYS         CJNE  A,2DH,NEXT6         MOV   2DH,#01H         SJMP  ADM  CLO:   SETB   P1.0         SJMP  OPENNEXT6:   INC   2DH         SJMP  B0NEXT7:   MOV   A,2DH         CJNE  A,#1DH,NEXT6         MOV   2DH,#01HADM:     INC   2CH         MOV   A,2CH         CJNE  A,#0DH,B0         MOV   2CH,#01H         INC   2BH         MOV   A,2BH         CJNE  A,#64H,B0         MOV   2BH,#00H         INC   2AH         MOV   A,2AH         CJNE  A,#64H,B0         MOV   2AH,#00HRET0:   JB      P1.1, B0        MOV     A,20H           ;开关为开时判断时间,为关则直接退出中断        CJNE    A,50H,B0        MOV     A,21H        CJNE    A,51H,B0        CLR    P1.3         ;开闹钟        CLR    P1.2B0:     POP     ACC        POP     PSWFH:     RETIYEAR:   MOV     A,2BH        MOV     B,#04H        DIV     AB        MOV     A,B        CJNE    A,#00H,NL        MOV     A,2BH        MOV     B,#64H        DIV     AB        MOV     A,B        CJNE    A,#00H,LEAP        MOV     A,2AH        MOV     B,#04H        DIV     AB        MOV     A,B        CJNE    A,#00H,NLLEAP:   MOV     A,#01H        SJMP    BACKYNL:     MOV     A,#00HBACKY:  RET              ;****************************每月天数(按平年计)***************************DAYS:   DEC     2CH        MOV     A,2CH        MOV     DPTR,#TAB        MOVC    A,@A+DPTR        INC     2CH        RET TAB:DB 1FH,1CH,1FH,1EH,1FH,1EH     DB 1FH,1FH,1EH,1FH,1EH,1FH      ;*********年月日调整************1键切换,3键+1,4键-1,F键返回****************KEY2:  LCALL CUTIN2       LCALL DISPD        MOV   29H,#88H        LCALL SEND        MOV   29H,#3FH        LCALL SEND        JB    KEY,KEY2        LCALL READLP2:    JNB   KEY,LP2        LCALL  LDELAY        MOV   A,28HSYH2:   CJNE  A,#02H,SYH3        INC   2AH        MOV   A,2AH        CJNE  A,#64H,KEY2        MOV   2AH,#00H        SJMP  KEY2SYH3:   CJNE  A,#03H,YLK1        DEC   2AH        MOV   A,2AH        CJNE  A,#0FFH,KEY2        MOV   2AH,#63H        SJMP  KEY2YLK1:   CJNE  A,#01H,KEY2YLK:    LCALL   CUTIN2        LCALL    DISPD        MOV   29H,#88H        LCALL SEND        MOV    29H,#0CFH        LCALL SEND        LCALL  SHORT        LCALL  LDELAY        JB    KEY,YLK        LCALL  READLP3:    JNB   KEY,LP3        LCALL  LDELAY        MOV    A,28HSYL2:   CJNE   A,#02H,SYL3        INC    2BH        MOV    A,2BH        CJNE   A,#64H,YLK        MOV    2BH,#00H        SJMP   YLKSYL3:   CJNE   A,#03H,MK1        DEC    2BH        MOV    A,2BH        CJNE   A,#0FFH,YLK        MOV    2BH,#63H        LCALL  SHORT        SJMP   YLKMK1 :   CJNE   A,#01H,YLKSM:     LCALL DISPD        MOV   29H,#88H        LCALL SEND        MOV   29H,#0F3H        LCALL SEND        LCALL   CUTIN2        LCALL DISPD        JB     KEY,SM        LCALL  READLP4:    JNB    KEY,LP4        LCALL  LDELAY        MOV    A,28HSETM2:  CJNE   A,#02H,SETM3        INC    2CH        MOV    A,2CH        CJNE   A,#0DH,SM        MOV    2CH,#01H        SJMP   SMSETM3:  CJNE   A,#03H,DK1        DEC    2CH        MOV    A,2CH        CJNE   A,#00H,SM        MOV    2CH,#0CH        SJMP   SMDK1:    CJNE   A,#01H,SMDK:     LCALL  CUTIN2        LCALL DISPD        MOV   29H,#88H        LCALL   SEND        MOV     29H,#0FCH        LCALL   SEND        JB      KEY,DK        LCALL   READ        LCALL   LDELAYLP5:    JNB     KEY,LP5        MOV     A,28HSD2:    CJNE    A,#02H,SD3        MOV     A,2CH        CJNE    A,#02H,OTHER1        LCALL   YEAR        CJNE    A,#01H,OTHER1        INC     2DH        MOV     A,2DH        CJNE    A,#1EH,DK        MOV     2DH,#01H        SJMP    DKOTHER1: LCALL   DAYS        CJNE    A,2DH,AD        MOV     2DH,#01H        SJMP    DKAD:     INC     2DH        SJMP    DKSD3:    CJNE    A,#03H,FK0        DEC     2DH        LCALL   SHORT        MOV     A,2DH        CJNE    A,#00H,DK        MOV     A,2CH        CJNE    A,#02H,OTHER2        LCALL   YEAR        CJNE    A,#01H,NEXT4        MOV     2DH,#1DH        LCALL  SHORT        SJMP    DKNEXT4:  MOV     2DH,#1CHDBK:    LJMP  DKOTHER2: LCALL   DAYS        MOV     2DH,A        LJMP    DKFK0:    CJNE    A,#01H,FK        LJMP    KEY2FK:     CJNE    A,#0FH,DBK        MOV     29H,#88H        LCALL   SEND        MOV     29H,#0FFH        LCALL   SEND        MOV     29H,#98H        LCALL  SEND        MOV   29H,#03FH        LCALL  SEND        RET       ;************秒表*********MBWAIT:     MOV 78H,#00H             ;D键开始            MOV 79H,#00H             ; E键停止            MOV 7AH,#00H              ; 按C键清零            MOV 7BH,#00H              ; 再按D键重新开始            MOV 7CH,#00H               ;F键退出            MOV 7DH,#00H            MOV 7EH,#00H            MOV 7FH,#00H            LCALL  DISPD            JB   KEY,MBWAIT            LCALL  READ            MOV  A,28H            CJNE  A,#0DH,MBWAITKAISHI:     SETB TR1  ;开启定时器T1WAIT0:    LCALL DISPD          JB  KEY,WAIT0  ; 等按键,按E停止          LCALL  READ          MOV A,28H          CJNE A,#0EH,WAIT0          CLR  TR1WAIT1:    LCALL  DISPD          JB   KEY,WAIT1          ;按F键清零          LCALL  READ          MOV  A,28H          CJNE A,#0CH,WAIT1          MOV  78H,#00H          MOV  79H,#00H          MOV  7AH,#00H          MOV  7BH,#00H          MOV  7CH,#00H          MOV  7DH,#00H          MOV  7EH,#00H          MOV  7FH,#00HWAIT2:    LCALL  DISPD          JB  KEY,WAIT2          LCALL  READ          MOV  A,28H          CJNE A,#0DH,WAIT3         ; 按D键重新开始,其他键退出秒表          SJMP  KAISHIWAIT3:    CJNE A,#0FH,WAIT2           ;按E键退出秒表EXIT:     MOV  29H,#98H          LCALL  SEND          MOV   29H,#3FH          LCALL   SEND              RETDISPM:CALL DISP      MOV   29H,#88H      LCALL  SEND      MOV   29H,#0F3H      LCALL  SEND      RETDISPH:CALL  DISP      MOV    29H,#88H      LCALL   SEND      MOV    29H,#0CFH      LCALL   SEND      RETDISPD:MOV   29H,#98H      LCALL   SEND      MOV    29H,#0FFH      LCALL    SEND      LCALL DISP      MOV 29H,#0CEH      CALL SEND      MOV  29H,7EH      ACALL SEND      MOV 29H,#0CFH      LCALL SEND      MOV  29H,7FH      LCALL SEND      RETDISP:MOV R1,#78H     MOV R4,#0C8H     MOV R2,#06DISP_LOOP:MOV 29H,R4          LCALL SEND          MOV 29H,@R1          LCALL SEND          INC R4          INC R1          DJNZ R2,DISP_LOOP          RETSEND:     MOV R3,#08H          CLR CS          LCALL LONGSEND_LOOP:MOV C,29H.7          MOV DAT,C          SETB CLK          LCALL SHORT          CLR CLK          LCALL SHORT          MOV A,29H          RL A          MOV 29H,A          DJNZ R3,SEND_LOOP          CLR DAT          RETBRT:      MOV     TL1,#0F0H          MOV     TH1,#0D8H     ;初值,10ms中断一次          PUSH    PSW          PUSH    ACC          INC 78H          MOV A,78H          CJNE A,#0AH,FH1          MOV  78H,#00H          INC  79H          MOV A,79H          CJNE A,#0AH,FH1          MOV  79H,#00H          INC  7AH          MOV A,7AH          CJNE A,#0AH,FH1          MOV  7AH,#00H          INC  7BH          MOV A,7BH          CJNE A,#06H,FH1          MOV  7BH,#00H          INC  7CH          MOV A,7CH          CJNE A,#0AH,FH1          MOV  7CH,#00H          INC  7DH          MOV A,7DH          CJNE A,#06H,FH1          MOV  7DH,#00H          INC  7EH          MOV  A,7EH          CJNE  A,#0AH,FH1          INC   7FH          MOV   A,7FH          CJNE   A,#0AH,FH1          MOV    7FH,#00HFH1:            POP  ACC                POP PSW                RETILONG:           MOV  70H,#25    ; 50uSDELAY_LOOP:     DJNZ  70H,DELAY_LOOP                RETSHORT:          MOV  70H,#4    ; 8uSSHORT_LP:       DJNZ 70H,SHORT_LP                RETREAD:           MOV 29H,#15H                      ;发送读键盘指令  ACALL SEND                LCALL LONG                LCALL RESE                LCALL LONG                RETRESE:           MOV 71H,#8   ; =8                SETB DAT   ; P1.2(DATA)                CALL LONG  ;RECEIVE_LOOP:   SETB CLK ; CLK                CALL SHORT  ;                MOV A,28H  ;                RL A                MOV 28H,A                MOV C,DAT   ;                MOV 28H.0,C                CLR CLK   ; CLK                CALL SHORT                DJNZ 71H,RECEIVE_LOOP; 8                CLR DAT ; DAT                RETSKEY:MOV  42H,#00H    LCALL  CUTIN1    LCALL  DISPH    JB  KEY,SKEY    LCALL READ    LCALL  LDELAYLP6:JNB  KEY,LP6    MOV A,28HHK2:CJNE A,#02H,HK3    INC  40H    MOV  A,40H    CJNE A,#18H,NEXT0    MOV  40H,#00HNEXT0:AJMP SKEYHK3: CJNE A,#03H,K1     DEC 40H     MOV A,40H     CJNE A,#0FFH,NEXT1     MOV  40H,#17HNEXT1:AJMP SKEYK1:CJNE A,#01H,NEXT1TURNTO:LCALL CUTIN1       LCALL DISPM       JB KEY,TURNTO       LCALL READ       LCALL  LDELAYLP7:   JNB  KEY,LP7       MOV A,28HMK2:   CJNE A,#02H,MK3       INC 41H       MOV A,41H       CJNE A,#3CH,TURNTO       MOV 41H,#00HNEXT2: LCALL SHORT       AJMP TURNTOMK3:   CJNE A,#03H,F4       DEC 41H       LCALL SHORT       MOV A,41H       CJNE A,#0FFH,TURNTO       MOV 41H,#3BH       AJMP  TURNTOF4:    CJNE   A,#01H,BACK       AJMP  SKEYBACK:  CJNE A,#0FH,TURNTO       MOV 29H,#88H       LCALL SEND       MOV 29H,#0FFH       LCALL SEND       RET       ;************校时子程序**********KEY0:  MOV 41H,21H       MOV 40H,20H       CLR TR0       MOV  23H,#00H       ACALL SKEY       MOV 22H,42H       MOV 21H,41H       MOV 20H,40H       MOV TH0,#3CH       MOV TL0,#0B0H       SETB TR0       RETKEY1:  MOV 41H,51H     ;************闹钟设置子程序************       MOV 40H,50H       ACALL SKEY       MOV 51H,41H       MOV 50H,40H       SETB  P1.2       SETB  P1.3       RET       ;**********延时子程序******LDELAY: MOV     53H,#0AFHLDLY1:  MOV     54H,#0AFHLDLY:   DJNZ    54H,LDLY        DJNZ    53H,LDLY1        RETEND

提醒:《基于AT89S52和HD7279A的多功能电子钟》最后刷新时间 2024-03-14 01:14:49,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《基于AT89S52和HD7279A的多功能电子钟》该内容的真实性请自行鉴别。