最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

单片机 数字时钟 闹钟

来源:动视网 责编:小OO 时间:2025-09-24 10:28:07
文档

单片机 数字时钟 闹钟

一、设计要求1通过键设置当前时间。2可设定闹钟,到时报警,一个发光管闪烁(1次/秒),有复位键停止报警。3可切换显示闹钟时间和当前时间。二、系统硬件设计说明及原理图1系统总体方案1)由于要显示数字时间,所以需要6位数码管。2)时间的定时用时钟电路,修改时间和定时用手动按键控制,报警通过喇叭和发光二极管显示。3)ATC51单片机加上外围器件(2个3位共阳数码管,8个限流电阻,一个发光二极管和一个蜂鸣器)和应用程序(proteus软件和KEIL编译软件),构成相应的应用系统。2系统设计原理图通
推荐度:
导读一、设计要求1通过键设置当前时间。2可设定闹钟,到时报警,一个发光管闪烁(1次/秒),有复位键停止报警。3可切换显示闹钟时间和当前时间。二、系统硬件设计说明及原理图1系统总体方案1)由于要显示数字时间,所以需要6位数码管。2)时间的定时用时钟电路,修改时间和定时用手动按键控制,报警通过喇叭和发光二极管显示。3)ATC51单片机加上外围器件(2个3位共阳数码管,8个限流电阻,一个发光二极管和一个蜂鸣器)和应用程序(proteus软件和KEIL编译软件),构成相应的应用系统。2系统设计原理图通
一、设计要求

1 通过键设置当前时间。

2 可设定闹钟,到时报警,一个发光管闪烁(1次/秒),有复位键停止报警。

3 可切换显示闹钟时间和当前时间。

二、系统硬件设计说明及原理图

1系统总体方案

1)由于要显示数字时间,所以需要6位数码管。

2)时间的定时用时钟电路,修改时间和定时用手动按键控制,报警通过喇叭和发光二极管显示。

3)ATC51单片机加上外围器件(2个3位共阳数码管,8个限流电阻,一个发光二极管和一个蜂鸣器)和应用程序(proteus软件和KEIL编译软件),构成相应的应用系统。

2系统设计原理图

通过S1、S2、S3和S4四个按键,对时间进行修改和闹钟的设置,S0控制闹钟的启动和停止。

按下S1键显示闹钟,松开后显示时间;按下S4键进入时间修改模式,再按S4键时间的时加1,按S2分加1,调整结束后按下S1恢复正常显示;按下S3键进入闹钟修改模式,再按S3键闹钟的时加1,按S2分加1,调整结束后按下S1恢复正常显示。

三、程序流程图及源程序

    1.流程图

2.源程序

ORG 0000H

LJMP START

ORG 000BH

LJMP TIME

;********初始化*********

START:   MOV SP, #50H

         MOV 20H,#00H             ;定义秒

         MOV 21H,#00H             ;定义分

         MOV 22H,#00H             ;定义时

         MOV 23H,#01H             ;定义闹钟分钟

         MOV 24H,#01H               ;定义闹钟小时

         MOV 25H,#00H                        

         MOV 26H,#01H

         MOV 30H,#00H              ;BCD  SECOND

         MOV 31H,#00H

         MOV 32H,#00H              ;BCD  MINUTE

         MOV 33H,#00H

         MOV 34H,#00H              ;BCD  HOUR

         MOV 35H,#00H

         MOV 36H,#01H

         MOV 37H,#00H

         MOV 38H,#01H

         MOV 39H,#00H

         MOV 50H,#00H           ;按键次数

           MOV TMOD,#01H          ;16位计数器

         MOV TH0, #03CH         ;赋初值

         MOV TL0, #0B0H

         MOV IE,  #87H          ;中断允许

         SETB TR0               ;启动T0

         MOV R2,#14H

         MOV P2,#0FFH

;*********主程序**********

MAIN:   JB P1.4,GB 

        LCALL TIMEPRO                   ;调用闹钟判断

GB:         LCALL DISPLAY1                    ;调用时间显示

         JB P1.3,M1                 ;P1.3=1时转移    S4没有按下

         LCALL SETTIME             ;调用SETTIME调时子程序

         LJMP MAIN

M1:      JB P1.2,M2                 ;P1 g.2=1时转移   S3

         LCALL SETATIME             ;调用SETATIME子程序 

         LJMP MAIN

M2:      JB P1.0,M4                 ;P1.0=1时转移 S1

         LCALL LOOKATIME            ;调用LOOKATIME显示闹钟子程序

M4:      LJMP MAIN

;*********延时子程序********

DELAY:   MOV R4,#030H

DL00:    MOV R5,#0FFH

DL11:    MOV R6,#9H

DL12:    DJNZ R6,DL12

         DJNZ R5,DL11

         DJNZ R4,DL00

         RET

;***********时间调整*******

SETTIME:                     ;设置时间

L0:      LCALL DISPLAY1

MM1:     JB P1.3,L1           ;P1.3=1时转移 

         MOV C,P1.3 

         JC MM1

         LCALL  DELAY1       ;延时

         JC MM1

MSTOP1:  MOV C,P1.3             ;P1.3为0时转移

         JNC MSTOP1                      

         LCALL DELAY1         ;延时

         MOV A,50H 

         INC 50H                       

         CJNE A,#00H,HJ1

            LJMP L0

HJ1:     MOV C,P1.3  

         JNC  MSTOP1

         INC 22H              ;小时自加一

         MOV A,22H

         CJNE A,#18H,GO12     ;小时计数循环 

         MOV 22H,#00H           ;复位

         MOV 34H,#00H

         MOV 35H,#00H

         LJMP L0

L1:      JB P1.1,L2      ;P1.1=1时转移

         MOV C,P1.1

         JC L1

         LCALL  DELAY1     ;延时

         JC L1

MSTOP2:  MOV C,P1.1          ;P1.1=0时转移

         JNC MSTOP2     

         LCALL DELAY1      ;延时

         MOV  C,P1.1

         JNC  MSTOP2

         INC 21H              ;分钟加一

         MOV A,21H

         CJNE A,#3CH,GO11     ;分钟计数循环

         MOV 21H,#00H          ; 复位

         MOV 32H,#00H

         MOV 33H,#00H

         LJMP L0

 GO11:   MOV B,#0AH

         DIV AB

         MOV 32H,B             ; 将A的低4位存入32单元

         MOV 33H,A             ; 将A的高4位存入33单元

         LJMP L0

GO12:    MOV B,#0AH

         DIV AB

         MOV 34H,B            ;将A的低4位存入34单元

         MOV 35H,A             ;  将A的高4位存入35单元

         LJMP L0

L2:      JB P1.0,L0         ;  P1.0=1时转移

         MOV C,P1.0

         JC  L2

         LCALL  DELAY1        ;延时

         MOV  C,P1.0

         JC  L2

STOP1:   MOV  C,P1.0       ; P1.0=0时转移

         JNC STOP1               

         LCALL  DELAY1         ;延时

         MOV  C,P1.0

         JNC STOP1

         MOV 50H,#00H

         LJMP  MAIN

;*******设置闹钟*******

SETATIME:LCALL DISPLAY2       ; 调用DISPLAY2显示闹钟

N0:      LCALL DISPLAY2

MM2:     JB P1.2,N1           ;P1.2=1时转移

         MOV C,P1.2

         JC MM2

         LCALL  DELAY1        ;  延时

         JC MM2

MSTOP3:  MOV C,P1.2               ; P1.2=0时转移

         JNC MSTOP3                          

         LCALL DELAY1            ; 延时

         MOV A,50H 

         INC 50H

         CJNE A,#00H,HJ2

           LJMP N0

HJ2:     MOV  C,P1.2

         JNC  MSTOP3

         INC 24H              ;小时加一

         MOV A,24H

         CJNE A,#24,GO22        ;小时计数循环

         MOV 24H,#00H             ;复位

         MOV 38H,#00H

         MOV 39H,#00H

         LJMP N0

N1:      JB P1.1,N2                ;P1.1=1时转移

         MOV C,P1.1

         JC N1

         LCALL  DELAY1         ;延时

         JC N1

MSTOP4:  MOV C,P1.1                ;P1.1=0时转移

         JNC MSTOP4                         

         LCALL DELAY1            ;延时

         MOV  C,P1.1

         JNC  MSTOP4

         INC 23H                  ;分钟加一

         MOV A,23H

         CJNE A,#60,GO21          ;分钟计数循环

         MOV 23H,#00H            ;复位

         MOV 36H,#00H

         MOV 37H,#00H

         LJMP N0

GO21:    MOV  B,#0AH

         DIV  AB

         MOV  36H,B         ;将A的低4位存入36单元

         MOV  37H,A         ;将A的高4位存入37单元

         LJMP N0

GO22:    MOV  B,#0AH

         DIV  AB

         MOV  38H,B        ;将A的低4位存入38单元

         MOV  39H,A        ;将A的高4位存入39单元

         LJMP N0

N2:      JB P1.0 ,N0        ;P1.0=1时转移

         MOV C,P1.0

         JC  N2

         LCALL  DELAY1       ;延时

         MOV  C,P1.0

         JC  N2

STOP2:   MOV  C,P1.0

         JNC STOP2

         LCALL  DELAY1

         MOV  C,P1.0

         JNC STOP2

         MOV 50H,#00H

         LJMP MAIN

;*******闹钟判断*****************

TIMEPRO: MOV A,21H

         MOV B,23H

         CJNE A,B,BK           ;判断定时闹钟的分钟

         MOV A,22H

         MOV B,24H

         CJNE A,B,BK         ;判断定时闹钟的小时

         SETB 25H.0

         MOV C,25H.0

         LCALL TIMEOUT  ;调用TIMEOUT

      BK:RET

;**************喇叭报警*****************

TIMEOUT:

     X1: LCALL BZ            ;调用喇叭响应程序

         CLR 25H.0           ;调用喇叭响应程序结束

         LCALL    DELAY           ;延时

         CLR 25H.0

         LJMP DISPLAY1          

     BZ:MOV C,25H.1

        MOV P1.6,C

         CLR P1.7

         MOV R7,#0FFH            ;喇叭响应时间

     T2: MOV R6,#0FFH

     T3: DJNZ R6,T3

         DJNZ R7,T2

         SETB P1.7

         RET

;*************显示闹钟时间************

LOOKATIME:LCALL DISPLAY2

 MM:      JNB P1.0,LOOKATIME  

          LCALL  DELAY1

          LJMP  MAIN

DELAY1:   MOV  R4,#14H         ;时间延时

DL001:    MOV  R5,#0FFH

DL111:    DJNZ R5,DL111

          DJNZ R4,DL001

          RET

;***********定时**************

TIME:   PUSH ACC                  ;保护现场

        PUSH PSW

        MOV    TH0,#03CH                  ;初值

        MOV    TL0,#0B0H

        DJNZ R2,RET0

        MOV    R2,#14H

        MOV A,20H

            CPL 25H.1

        CLR C

        INC  A                        ;秒自加一

         CJNE     A,#3CH,GO1             ;秒计数循环

         MOV 20H,#0                    ;复位

        MOV 30H,#0

        MOV 31H,#0

        MOV     A,21H

        INC  A                        ;分钟自加一

        CJNE A,#3CH,GO2               ;分钟计数循环

        MOV  21H,#0H                  ;复位

        MOV  32H,#0

        MOV  33H,#0

        MOV      A,22H

        INC      A                        ;小时自加一

        CJNE  A,#18H,GO3              ;小时计数循环

        MOV   22H,#00H                 ;复位

        MOV   34H,#0

        MOV   35H,#0

        AJMP  RET0

GO1:    MOV       20H,A

        MOV    B,#0AH

        DIV    AB

        MOV    31H,A                  ;将A的低4位存入31单元

        MOV    30H,B                  ;将A的高4位存入30单元

        AJMP   RET0

GO2:    MOV    21H,A

        MOV    B,#0AH

        DIV    AB

        MOV    33H,A                 ;将A的低4位存入33单元

        MOV    32H,B                 ;将A的高4位存入32单元

         AJMP    RET0

GO3:    MOV        22H,A

        MOV     B,#0AH

        DIV     AB

        MOV     35H,A               ;将A的低4位存入35单元

        MOV     34H,B                ;将A的高4位存入34单元

           AJMP    RET0

RET0:   POP PSW                       ;恢复现场

        POP ACC

        RETI

;********显示子程序**********

DISPLAY1:    MOV      R0,#30H

            MOV   R3,#0FEH

            MOV   A,R3

PLAY1:      MOV   P2,A

            MOV   A,@R0                ;取要显示的数据

            MOV   DPTR,#DSEG1          ;指向字形段码首地址

            MOVC  A,@A+DPTR

            CJNE R0,#34H,PA

            ORL A,#80H

         PA:CJNE R0,#32H,PB

            ORL A,#80H  

     PB:CPL A                   ;查表取字形段码

            MOV   P0,A                 ;指向P0口

            LCALL DL1

            MOV    P2,#0FFH

            MOV   A,R3               ;判断是否显示到最低位

            RL    A                   ;左移一位

            JNB    ACC.6,LD1

            INC    R0                 ;缓冲器地址加一

            MOV   R3,A

            LJMP  PLAY1

LD1:        RET

DISPLAY2:   PUSH ACC                  ;保护现场

            PUSH PSW

            MOV      R0,#36H

            MOV      R3,#0FBH

            MOV   A,R3

            

PLAY2:      MOV   P2,A

            MOV   A,@R0              ;取要显示的数据

            MOV   DPTR,#DSEG1        ;指向字形段码首地址

            MOVC  A,@A+DPTR

            CJNE R0,#38H,PP

            ORL A,#80H

         PP:CPL A                    ;查表取字形段码

            MOV   P0,A                ;指向P0口

            LCALL DL1                 ;调用DL1

            MOV   P2,#0FFH

            MOV   A,R3                ;判断是否显示到最低位

            RL    A                    ;左移一位

            JNB    ACC.6,LD2

            INC    R0                   ;缓冲器地址加一

            MOV   R3,A

            LJMP  PLAY2                  ;调用PLAY2

LD2:        POP   PSW

            POP ACC                       ;恢复现场

            RET

    ;******DELAY*******

DL1:        MOV      R7,#20H

DL:            MOV      R6,#20H

DL6:        DJNZ  R6,$

            DJNZ  R7,DL

            RET

DSEG1:      DB 3FH,06H,5BH,4FH,66H     ;七段码表

            DB 6DH,7DH,07H,7FH,6FH

            END

5 课程设计体会

通过单片机课程设计之后,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我们还学会了如何去培养创新精神和严谨的科学作风,从而不断地战胜自己,超越自己。更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。

文档

单片机 数字时钟 闹钟

一、设计要求1通过键设置当前时间。2可设定闹钟,到时报警,一个发光管闪烁(1次/秒),有复位键停止报警。3可切换显示闹钟时间和当前时间。二、系统硬件设计说明及原理图1系统总体方案1)由于要显示数字时间,所以需要6位数码管。2)时间的定时用时钟电路,修改时间和定时用手动按键控制,报警通过喇叭和发光二极管显示。3)ATC51单片机加上外围器件(2个3位共阳数码管,8个限流电阻,一个发光二极管和一个蜂鸣器)和应用程序(proteus软件和KEIL编译软件),构成相应的应用系统。2系统设计原理图通
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top