视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
多功能电子钟课程设计报告
2025-09-29 22:22:31 责编:小OO
文档
课题:多功能电子钟设计

一、实验目的及要求:

1.利用定时器0的定时中断和动态显示,实现电子钟的走时及校正。

2.时间及日期显示实验台上的四个数码管分别显示时.分及显时的低位的右下脚的点闪烁表示秒的显示和月、日。显示格式如下:

⑴.时间显示         ,前两格显示时而第二格有下脚的小点作秒显示。(闪烁状态)。后两格显示分钟。

⑵.日期显示         ,前两格显示而与秒显示的相对点不闪烁停于常亮状态表示月与日的相隔点,后两格表示日的显示。

3.时间走时准确,每天误差不超过5秒。

4.仿照电子表的校时功能,校时(日期)修改时,被改位能闪烁显示以表示正被修改。

5.若高位为0,则高位可灭零显示。

二、实验效果

1.常态以时间显示

2.编程使该电子钟有4个键,分别为校正键,“十”键,切换键及显示键。

3.正常显示的状态下,“+”键和显示键无效,校正状态下切换键无效。

4.四个键的作用分别为:①校正键,在正常的状态下,第一次按下校正键表示校正月发功能,此时显示当日的日期及月显示闪烁。第二次按下此键表示校日的功能,显示当前日期并且日闪烁显示。第三次按下此键表示校时的功能,此时显示当前时间并且时闪烁显示。第四次按下校正键表示校分功能,显示当前时间并且分闪烁显示。②“+”键,功能为当前校正的内容在每按一下此键的情况下不进位的在该闪烁的内容上加“1”。③确定键,使校正的内容生效并且返回正常显示时间的状态下。④切换键,表示切换当前显示的模式,如:当前显示的是时间,则按一下切换键则切换到日期的显示状态,反之亦成立。如在按下切换键的状态下,5秒后没任何操作则返回到正常显示时间的状态。

三.实验思路(原理)

由以上分析可知要使日期及时间显示出来, 首先想到的是要将它们存放起来,然后再将其送往数码管显示出来,这里又牵涉到一个问题,怎样将它们存放起来又要存到哪儿去?这就要我们给它们分配存储单元以备送往显示,例如准备四个存储单元30H~33H分别存储月、日、时和分,送往显示时要为其准备显示缓冲存储区,如3AH、3BH,月、时送3AH缓存,日、分送3BH缓存备送显示,接下来就是相关方式初始化为内容显示作准备,其中包括时间/日期(T/D)标志的置位,校正标志的清除及定时期/计数期工作方式及初始化。选好工作方式及计算出初值,打开中断申请标志位允许显示及校正中断服务程序的调用,然后,设计程序将显示缓存区的内容分解成BCD码送入43H~40H并以备显示,在该状态下要检查当前状态是否处于校正状态,若不是则将其静态显示出来,若是处于校正状态下,查看2FH.3是否为0,若是则送往静态显示,若不是的话,将对应的校正内容的BCD码单元送入DAH再显示出校正状态。

校正中断服务程序设计的思路:首先判断其是否处于校正状态,若不是处于校正状态,再检查是否有按下时间/日期显示切换键。如果已按下该键则取反T/D显示标志位,在该情况下又要判断其标志位的状态,T/D若为1则将时间内容送入显示缓冲区以待显示,若其值为0则将日期内容送入显示缓冲区以待显示。在没有按下显示切换键的情况下,确认是否要按下校正键,若不按下,则同样判断时间/日期显示的标志位值,若为“1”则显示时间,为“0”则显示日期。若按下校正键,则此时切换键无效,在该情况下,若按一下校正键则校正指针SP的值相应的做加“1”操作,指向下一个要校正的内容,此后判断21H.0的值,若为0则将日期内容送入显示缓存区,若为1则将时间内容送入显示缓存区以待显示。显示后返回先前状态,若在校正状态下按下“+”键,则校正指针相对应的校正内容单元加1,值满不进位的加1,而后同样判断20H.0的值,情况与上面相同,而在校正状态下按确定键,则清楚校正标志而置位时间/日期显示标志,将时间显示的内容送入显示缓存区以备显示。返回到正常状态下(显示时间状态)。

4.实验流程图

(1).时间中断服务程序

5.实验程序

  ORG    0000H           ;程序入口地址

  LJMP   MAIN

  ORG    000BH

  SJMP   ITOP

  ORG    0030H

MAIN:CLR     A

        MOV   30H,A          ;程序初始化,计数单元设初值

        MOV   32H,#59

        MOV   34H,#23

        MOV   36H,#01H

        MOV   38H,#01H

        MOV   66H,#03H

        MOV   67H,#03H

        MOV   40H,#00H

        MOV   2FH,#0AH

        CLR    20H.1             

        CLR    20H.2

        CLR    20H.3

        CLR    20H.4

        MOV   TMOD,#01H         ;设置计数器的计数方式

        MOV   TL0,#0B0H          ;给计数器装初值

        MOV   TH0,#3CH    

        CLR    PT0                ;中断允许设置

        SETB   TR0

        SETB   ET0

        SETB   EA

HERE: SJMP   HERE

ITOP: MOV    TL0,#0B0H

      MOV    TH0,#3CH

      LCALL  DISP                ;调用显示子程序

      DJNZ    2FH,LOOP

      MOV    2FH,#0AH           ;秒计时初值设置

      CPL     20H.1

      JB      20H.1,LOOP1

      MOV    40H,#0FFH

      AJMP   LOOP2

LOOP2:  INC  30H                ;计时程序

         MOV  A,#78H

         CJNE  A,30H,LOOP       ;判断秒是否已到

         MOV   30H,#00H

         INC    32H

         MOV   A,#3CH

         CJNE   A,32H,LOOP      ;判断分是否已到

         MOV   32H,#00H

         INC    34H

         MOV   A,#18H

         CJNE   A,34H,LOOP      ;判断时是否已到

         MOV   34H,#00H

         INC    30H

         MOV   A,#32

         CJNE   A,30H,LOOP      ;判断月是否已到

         MOV    30H,#01H

         INC     37H

         MOV    A,#DDH

         CJNE   A,38H,LOOP      ;判断年是否已到

        MOV    38H,#01H

LOOP:  RETI

DISP:   JB      20H.2,LOOP3       ;显示子程序

        MOV    62H,32H           ;显示内容送显示缓冲单元,如下类似

        MOV    H,34H

        SJMP    LOOP4

LOOP3:  MOV   40H,#0FFH

         MOV   62H,32H

         MOV   H,34H

         SJMP   LOOP4

LOOP4:  MOV   A,62H

         MOV   B,#0AH

         DIV    AB

         MOV   63H,A

         MOV   62H,B

         MOV   A,H

         MOV   B,#0AH

         DIV    AB              ;使进制调整,备显示

         MOV   65H,A

         MOV   H,B

         MOV   R4,#H

         MOV   R0,#65H

         MOV   SCON,#00H

SEND:   MOV   A,@R0

         JNE    MIE00

         MOV   A,#10H

MIE00:JNB    20H.4,MIE0      

       JNB    20H.3,MIE0

       JNB    20H.3,MIE0

       MOV   A,#10H

MIE0:MOV    DPTR,#TAB       ;查找显示内容程序,用于显示

      MOVC    A,@A+DPTR

      MOV    SUBF,A

      JNB     TI,$

      CLR     TI

      DEC     R0               

      MOV    A,@R0

      JNB     20H.4,MIE1       ;判断显示内容

      JNB     20H.3,MIE1

      JNB     2FH.3,MIE1

      MOV    A,#10H

MIE1:MOV    DPTR

      MOVC   A,@A+DPTR

      ADD     A,40H

      MOV    SBUF,A

      JNB     TI,$

      CLR    TI

      DEC    R0

      MOV   A,@R0 

      JNE    MIE11

      MOV   A,#10H

MIE11:JNB    20H.4,MIE2

      JNB    20H.3,MIE2

      JNB    2FH.3,MIE2

      MOV   A,#10H

MIE2:MOV    DPTR,#TAB

      MOVC  A,A+@DPTR

      MOV    SBUF,A

      JNB   TI,$

      CLR   TI

      DEC    R0

      MOV    A,@R0

      JNB    20H.4,MIE3

      JNB    20H.3,MIE3

      JNB    2FH.3MIE3

      MOV   A,#10H

MIE3:MOV   DPTR,#TAB

      MOVC  A,@A+DPTR

      JNB    SBUF,A

      JNB    TI,$

      CLR    TI

      RET

KEY:MOV   A,P1                ;判键按下.子程序

     CJNE   A,#0FFH,KEYIN

     LJMP   EXIT

KEYIN: LCALL   DEL10MS      ;.调用延时程序

        MOV   A,P1            

        CJNE   A,#FFH,KEY00

        LJMP   EXIT

KEY00:JNB    ACC.4,KEY1       ;.判断哪个键按下

       JNB    ACC.5,KEY2

       JNB    ACC.6,KEY3

       JNB    ACC.7,KEY4

KEY1:MOV   A,P1               ;确定哪个键按下。如下类似

      CJNE   A,#0FFH,KEY1

      CPL     20H.2

      LJMP    EXIT

KEY2:MOV   A,P1

      CJNE   A,#0FFH,KEY2

      SETB    20H.4

      INC     66H

      ANL    66H,#03H 

      MOV   A,66H

ONE:CJNE    A,#00H,TWO       ;调式程序,判断该调试的内容。如下类似

     CPL     20H.2

     CPL     20H.3

     SJMP    EXIT

TWO:CJNE   A,#01H,THR

      CPL    20H.3

      SJMP   EXIT

THR:CJNE    A,#02H,FOR

     CPL     20H.3

     CPL     20H.2

     SJMP    EXIT

FOR:CJNE    A,#03H,ONE

     CPL      20H.3

     SJMP     EXIT

KEY3: MOV   A,P1

      CJNE   A,#0FFH,KEY3

      JNB    20H。4,EXIT

      MOV   A,66H

YUE:CJNE   A,#00H,RISHU      ;月调试程序

      INC     38H

      MOV    A,#13

      CJNE    A,38H,EXIT

      MOV    38H,#01H

      SJMP     EXIT

RISHU:CJNE    A,#01H,SHI       ;日期调试子程序

       INC      36H

       MOV     A,#32H  

       CJNE     A,36H,EXIT

       MOV      36H,#01H

       SJMP     EXIT

SHI:CJNE      A,,#02H,FEN       ;时调试子程序

     INC       34H

      MOV    A,#18H

     CJNE    A,#34H,EXIT

     MOV     34H,#00H

     SJMP     EXIT

FEN:CJNE     A,#03H,YUE

     INC      32H

     MOV     A,#3CH

     CJNE     A,3H,EXIT

     MOV      32H,#00H

     SJMP      EXIT

KEY4:MOV     A,P1

      CJNE     A,#0FFH,KEY4

      CLR      20H.4

      CLR      20H.2

      MOV     66H,#03H

      SJMP    EXIT

EXIT:RET

DEL10MS:MOV    R7,#0AH      ;延时10MS子程序

DL:MOV    R6,#077H

DL1:DJNZ    R6,#0FFH

     DJNZ    R7,DL

     RET

TAB:DB  09H 7DH 07H 15H 71H 91H 81H 

     DB  3DH 01H 11H 21H 09H 8BH 

     DB   45H 83H 0A3H 0FFH 0F7H

六.实验心得

   通过本次实验发现自己很多的不足,也就在这次实验中学到了很多东西,包括一些基本的编程,比如延时,显示等等,也更加熟悉了程序的基本结构,子程序的调用和中断程序的使用,在本次实验中实验还是有一点误差,主要原因是在设计程序时,在计时过程中,没有考虑到指令执行所用的时间造成计时的误差。下载本文

显示全文
专题