基于单片机设计的数字钟实验报告

时间:2024.3.24

  

1  前言........................................................................................................ 3

2  数字钟设计原理.................................................................................... 3

3  流程图.................................................................................................... 4

4  51单片机系统的硬件连接................................................................... 4

5 程序设计.................................................................................................. 6

     5.1主程序

     5.2中断服务子程序

     5.3 显示子程序

     5.4 总的程序清单

6  系统调试及结果分析.......................................................................... 12

7  注意事项.............................................................................................. 12

8  感想与体会.......................................................................................... 13

9 参考文献................................................................................................ 13

一.前言

    20世纪末,电子技术获得了飞速的发展,在其推动下,具有功能强、体积小、可靠性高、价格低廉的单片机在工业控制、数据采集、智能仪表、机电一体化、家用电器等领域得到了广泛的应用,极大的提高了这些领域的技术水平和自动化程度。

现在生活的人们越来越重视起了时间观念,可以说是时间和金钱划上了等号,对于那些对时间把握非常严格和准确的人或事来说,时间的不准确性带来不小的麻烦,所以说以数码管显示的时钟比指针式的时钟表现出了很大的优势。数码管显示的时间简明而且读数快,时间准确显示到秒。

数字钟是采用数字电路对时分秒数字显示的计时装置。数字钟的精度,稳定性远远超过老式机械钟。数字钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受到广大消费者的喜爱。

二.数字钟设计原理

数字钟实际是对标准频率计数的电路,由于计数的起始时间不可能与标准时间一致,故需要在电路上加一个校时电路,同时标准的时间信号必须做到准确稳定。通常使用石英晶体振荡电路构成数字钟。数字钟电子钟由以下几部分组成:按键开关部分,振荡电路部分,89c51单片机控制器,4位数码管显示部分,7407数码管驱动部分。

 

三.流程图

主程序流程图如图2.3所示,定时器T0中断服务程序流程图如2.4所示。

 

                                 图2.4中断服务程序流程图

                                 

四.51单片机系统的硬件连接

1.          硬件电路的设计,硬件电路图如图2.2所示

图2.2硬件电路图

该电路采用AT89C51单片机最小化应用,采用共阴7段LED数码管显示器,P2.4~P2.7口作为列扫描输出,P0口输出段码数据,P1.2,P1.1口接2个按钮开关,用于调时及功能误差,采用12Mhz晶振,可提高秒计时的精确度。

采用动态扫描法实现LED数码管显示。

共阴7段LED显示器显示原理:

10μf电容作用:上电复位;

7407作用:同相缓冲器,驱动数码管;

12M晶振和两个电容组成晶体振荡器。

五.程序设计

1主程序

MAIN:MOV  HOUR, #00 ;时,分,秒,标记清零

              MOV  MIN,  #00H            

              MOV  SEC,  #00H           

              MOV  BUFF,  #00H          

              MOV  SP,    #0EFH             ;设堆栈指针 

              MOV  TH0,  #0ECH              ;定时器赋初值

              MOV   TL0,  #78H         

              MOV   40H,  #100         ;设循环次数

              MOV   41H,  #2              

              MOV   TMOD , #1               ;写TMOD

              MOV   IP, #2                    ;写IP

              MOV   IE, #82H

              MOV R5,#0        ;利用R5进行硬件延时

                            ;开中断

              SETB  TR0                      ;启动定时器

采用定时器T0中断完成一次主程序循环, 调用显示子程序和查键子程序,当端口有开关按下时,输入相应的功能程序。

2中断服务子程序

PTF0:         MOV   TH0,  #0ECH

              MOV   TL0,  #78H

              INC R5

              MOV R6,BUFF

              CJNE R6,#00H,BB

              MOV DPTR,#TAB1

              LJMP LOOP0

   BB:MOV DPTR,#TAB

             

   LOOP0: CJNE R5,#1,LOOP1

   ACALL LOP0

   AJMP JK

   LOOP1:CJNE R5,#2,LOOP2

   ACALL LOP1

   AJMP JK

   LOOP2:CJNE R5,#3,LOOP3

   ACALL LOP2

   AJMP JK

   LOOP3:ACALL LOP3

   MOV R5,#0       

             JK: DJNZ   40H,  PTFOR

              XRL   BUFF,  #0FFH

              MOV   40H,   #100

              JNB    P1.1, JF               

              JNB    P1.2, JS                

              MOV    R7,   41H

             CJNE    R7, #1, AA             

                      

AA:          DJNZ   41H,  PTFOR

            MOV 41H,#2

             MOV    A,   SEC                  ;秒加1

             ADD    A,    #1

             DA  A

             MOV  SEC, A               

             CJNE  A,  #60H,  PTFOR      

             MOV  SEC, #0                      ;秒清零

JF:          MOV  A, MIN                       ;分加1

             ADD  A, #1

             DA   A

             MOV   MIN,  A               

            CJNE  A, #60H,PTFOR         

            MOV   MIN,  #0                  ;  分清零

           ACALL LED

JS:        MOV   A,HOUR

           ADD  A,#1

           DA   A

           MOV   HOUR,A                   ;时加1

           CJNE  A, #24H,PTFOR                ;时加到24时否?是,清零

           MOV  HOUR, #0 

 PTFOR:RETI          

定时器T0用于时间计时,定时溢出中断周期为5ms,中断进入后,先进行定时中断初值校正,当中断累计200次(即5ms*200=1S)时,对秒计数单元进行加1操作,计时单元中采用24进位。

晶振频率fosc=12MHZ,T0工作于方式0,产生5ms中断,则T0的初始值计算公式为:

T=(216-a)μs

得:               a=216-*T

                      =216-5000

                      =60536

化为16进制数:      a=0EC78H

3显示子程序

LOP0:       MOV  A, MIN                 ;显示分钟的个位

          ANL  A, #0FH                   

          MOVC  A, @A+DPTR

          MOV  P0,A                   

          MOV  P2,#0F0H                

          CLR  P2.4                   

          CLR  P0.4                  

                

          RET   

        

LOP1:      

    MOV  A, MIN                        ;显示分钟的十位

          SWAP  A           

          ANL  A, #0FH                

          MOVC  A, @A+DPTR

          MOV   P0, A                   

          MOV   P2, #0F0H              

          CLR   P2.5                    

          CLR   P0.4                   

          RET

LOP2:       MOV  A, HOUR              ;显示时钟的个位

          ANL  A, #0FH               

          MOVC  A, @A+DPTR

          MOV  P0, A                   

          MOV   P2,  #0F0H                  

          CLR   P2.6

          RET

LOP3:     

          MOV  A, HOUR                       ;显示时钟的十位

SWAP  A                    

          ANL  A, #0FH                

          MOVC  A, @A+DPTR

          MOV  P0, A                  

          MOV  P2, #0F0H                     

          CLR  P2.7                   

          CLR  P0.4      

          RET

TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH         ;不带小数点的字型码

TAB1:DB,0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH ;带小数点的字型码

时间显示子程序每次显示4个连续单元的十进制BCD数码,首地址在调用显示子程序时需要先指定.由于采用7段共阴LED数码观动态扫描实现数据显示,所以显示用十进制BCD码数据的对应段码存放在ROM中。

显示时,先取出内存地址中的数据,然后查得对应的显示用段码从P0口输出,P2口将对应的数码管选中供电,就能显示该地址单元的数据值。

4.总的程序清单

HOUR  EQU  3AH                            ;赋值伪指令

MIN    EQU  3BH

SEC    EQU   3CH

BUFF   EQU   3DH

ORG 0000H

AJMP  MAIN                             

ORG  000BH                                 ;主程序入口

AJMP  PTF0

ORG 0033H                                  ;跳转到标号PTF0执行

;**************************************************************

;主程序

MAIN:        MOV  HOUR, #00H              ;时,分,秒,标记清零

              MOV  MIN,  #00H            

              MOV  SEC,  #00H           

              MOV  BUFF,  #00H          

              MOV  SP,    #0EFH            ;设堆栈指针 

              MOV  TH0,  #0ECH          ;定时器赋初值

              MOV   TL0,  #78H        

              MOV   40H,  #100         ;设循环次数

              MOV   41H,  #2              

              MOV   TMOD , #1               ;写TMOD

              MOV   IP, #2                    ;写IP

              MOV   IE, #82H

              MOV R5,#0 

                                          ;开中断

              SETB  TR0                    ;启动定时器

PTF0:  SETB P1.2       

              MOV   TH0,  #0ECH

              MOV   TL0,  #78H

              INC R5

              MOV R6,BUFF

              CJNE R6,#00H,BB

              MOV DPTR,#TAB1

              LJMP LOOP0

   BB:MOV DPTR,#TAB

             

   LOOP0: CJNE R5,#1,LOOP1

   ACALL LOP0

   AJMP JK

   LOOP1:CJNE R5,#2,LOOP2

   ACALL LOP1

   AJMP JK

   LOOP2:CJNE R5,#3,LOOP3

   ACALL LOP2

   AJMP JK

   LOOP3:ACALL LOP3

   MOV R5,#0       

             JK: DJNZ   40H,  PTFOR

              XRL   BUFF,  #0FFH

              MOV   40H,   #100

              JNB    P1.1, JF               

              JNB    P1.2, JS               

              MOV    R7,   41H

             CJNE    R7, #1, AA             

                      

AA:          DJNZ   41H,  PTFOR

            MOV 41H,#2

             MOV    A,   SEC                  ;秒加1

             ADD    A,    #1

             DA  A

             MOV  SEC, A               

             CJNE  A,  #60H,  PTFOR      

             MOV  SEC, #0                      ;秒清零

JF:          MOV  A, MIN                       ;分加1

             ADD  A, #1

             DA   A

             MOV   MIN,  A               

            CJNE  A, #60H,PTFOR         

            MOV   MIN,  #0                  ;  分清零

           ACALL LED

JS:        MOV   A,HOUR

           ADD  A,#1

           DA   A

           MOV   HOUR,A                   ;时加1

           CJNE  A, #24H,PTFOR                ;时加到24时否?是,清零

           MOV  HOUR, #0 

 PTFOR:RETI          

LOP0:       MOV  A, MIN                        ;显示分钟的个位

          ANL  A, #0FH                  

          MOVC  A, @A+DPTR

          MOV  P0,A                   

          MOV  P2,#0F0H                

          CLR  P2.4                   

          CLR  P0.4                  

              RET  

LOP1:      

    MOV  A, MIN                        ;显示分钟的十位

          SWAP  A           

          ANL  A, #0FH                

          MOVC  A, @A+DPTR

          MOV   P0, A                   

          MOV   P2, #0F0H              

          CLR   P2.5                   

          CLR   P0.4                    

          RET   

          

LOP2:        MOV  A, HOUR             ;显示时钟的个位

          ANL  A, #0FH               

          MOVC  A, @A+DPTR

          MOV  P0, A                   

          MOV   P2,  #0F0H                 

          CLR   P2.6

          RET

LOP3:     

 MOV  A, HOUR                       ;显示时钟的十位

SWAP  A                    

          ANL  A, #0FH                

          MOVC  A, @A+DPTR

          MOV  P0, A                  

          MOV  P2, #0F0H                     

          CLR  P2.7                    

          CLR  P0.4      

          RET

TAB:  DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH         ;不带小数点的字型码

TAB1:DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH ;带小数点的字型码

    END

系统调试及结果分析

6.1 硬件调试

硬件电路板中器件连接好后,先用万用表测试电路中有无虚焊短接之处,测试无误后,将板子通电,进行静态调试。

取好两跟短的导线,一根导线的其中一端接地,另一端接P2.4~P2.7口中的一个口,若数码管亮,再用另一根导线,其中异端接地,另一端与P0.0~P0.7依次接触,看数码管各段的亮灭情况,从而判断每个数码管各段的好坏及电路的是否正确。

6.2 软件调试

在LCA51编译器下进行汇编程序的编写,以子程序为单位调试,一段一段的编译与访真,最后结合电路板,进行整机联调。

6.3结果分析

由于中断中对堆栈的处理需要花费时间,所以为了减小误差,实现数字钟的走时精度,应当在编程时尽量使中断次数比较少。 

.注意事项

 1.在焊接电路板之前,应事先画好硬件原理图,把每一根精确排布,合理布局好各类元器件。

  2.焊接时要注意焊接工艺,由于是通用板,质量不是太高,如果不注意,上面的小铜片很容易损坏,容易导致虚焊。

  3.电路板及访真机接电源操作时,要注意正负极,并且严格的操作要求进行操作,以免造成元器件和仿真机的损坏。

  4.在进行程序的编写时,应该熟悉所使用的每一条指令和程序的各项要求。

  5焊接器件时,应该先焊接小器件,再焊接大器件,先焊接低器件,再焊接高器件。

  6安装芯片时,应该注意1号脚的位置,如果安装错误,会造成芯片的损坏。

  7焊接完一个模块都要用万用表检测电源和地是否出现短接,如果出现短路,需要检测出现短路的地方。

  8在保证焊接准确度的前提下,应该尽可能考虑美观程度。

 

 

.心得体会

  

基于单片机设计的数字钟精确度较高,因为在程序的执行过程中,任何指令都不影响定时器的正常计数。从而,使数字钟的精度仅仅取决于单片机的产生周期电路和定时器T0硬件电路的精确度;另外,程序较为简洁,具有可靠性较好的可读性和较好的可读性。如果我们想将它应用于实时控制之中,只要对上述程序和硬件电路稍加修改,便可以得到实时控制的实用系统,从而应用到实际工作与生产中去。

我在这次的数字钟设计过程中很是受益匪浅。通过对自己大学三年时间所学的知识的回顾,并充分发挥对所学知识的理解和对设计内容思考和书面表达能力,最终顺利完成了。这为自己今后进一步深化学习,积累了一点的宝贵经验。撰写论文的过程也是专业知识的学习过程,它使我运用已有的专业基础知识,对其进行设计,分析和解决一个理论问题或者实际问题,把知识转化为能力的实际训练。培养了我运用所学知识解决实际问题的能力。

  通过这次的课程设计我发现,只有理论水平提高了,才能够把理论和实际内容相结合,我们的学习不但要立足于书本,以解决理论和实际教学中的实际问题为目的,还要以实践相结合,理论问题即实践课题。

.参考文献

清华大学出版社 田丰 单片机原理及应用

哈尔滨工业大学   张毅刚   新编单片机应用设计

中国电力出版社    窦振中   基于单片机的嵌入式系统工程设计

复旦大学     张友德   单片微型机原理应用与实验

        

更多相关推荐:
单片机电子时钟课程设计报告

基于单片机电子时钟的设计绪论单片机自20世纪70年代问世以来以其极高的性能价格比受到人们的重视和关注应用很广发展很快单片机体积小重量轻抗干扰能力强环境要求不高价格低廉可靠性高灵活性好开发较为容易由于具有上述优点...

单片机课程设计数字钟实验报告

单片机课程设计电子钟一实现功能1能够实现准确计时以数字形式显示时分秒的时间2小时以24小时计时形式分秒计时为60进位能够调节时钟时间3闹钟功能一旦走时到该时间能以声或光的形式告警提示4能够实现按键启动与停止功能...

单片机电子时钟设计报告

科技创新实践[数字时钟设计][用AT89S52单片机设计电子时钟的实验报告]目录单片机的个性化电子钟设计报告1一、设计背景1二、作品介绍1三、设计目的及意义1四、设计要求1五、总体方案设计25.1硬件设计21.…

单片机数字时钟课程设计报告

西安建筑科技大学课程设计论文第1章绪论1设计要求1系统可以按秒进行计时2数字时钟可以显示小时0023分钟0059和秒00593可通过按键K1来选择设置小时分钟和秒设置时可通过加和减按键K2K3来调整时间设置过程...

单片机电子时钟的设计报告

单片机电子时钟的设计目录1引言12设计任务与要求221设计题目222设计要求23系统的功能分析与设计方案331系统的主要功能332系统的设计方案333数码管显示工作原理434电路硬件设计5341设计原理框图53...

基于单片机的数字钟设计 开题报告

毕业设计论文开题报告学生姓名专业设计论文题目指导教师20xx年2月24日学号电气工程及其自动化基于单片机的数字钟设计毕业设计论文开题报告毕业设计论文开题报告毕业设计论文开题报告

51单片机电子时钟课程设计报告

第一部分设计任务和要求11单片机课程设计内容利用STC89C51单片机和LCD1602电子显示屏实现电子时钟可由按键进行调时和1224小时切换12单片机课程设计要求1能实现年月日星期时分秒的显示2能实现调时功能...

单片机简易数字钟设计及其报告

单片机课程设计课程设计报告题目学年学期专业电气工程及其自动化班级094学号姓名指导教师时间20xx年11月日20xx年12月6日浙江XXX学院电子信息学院目录浙江XX学院电子信息学院课程设计报告1设计简介22设...

基于51单片机的数字钟的设计

自动化专业综合设计报告自动化专业综合设计报告设计题目基于51单片机的数字钟的设计所在实验室指导教师学生姓名律迪迪班级文自0921学号20xx90519xx4撰写时间成绩评定自动化专业综合设计报告一设计目的电子钟...

基于单片机的电子时钟设计报告(LCD显示)

单片机原理及应用课程设计任务书题目电子时钟LCD显示1设计要求以AT89C51单片机为核心的时钟在LCD显示器上显示当前的时间使用字符型LCD显示器显示当前时间显示格式为时时分分秒秒用3个功能键操作来设置当前时...

单片机课程设计数字钟报告

电子与信息工程学院综合实验课程报告课题名称单片机课程设计专业通信工程班级1101班学生姓名叶紫学号11160113指导教师张晓虎单片机课程设计正文一引言现代社会科技飞速发展人们生活节奏加快时间就是金钱时间就是生...

单片机数字钟课程设计报告

湖南工业大学课程设计资料袋电气与信息工程学院学年第学期课程名称单片机课程设计指导教师凌云职称教授学生姓名专业班级学号题目数字钟成绩起止日期20xx年12月23日20xx年1月10日目录清单湖南工业大学课程设计任...

单片机数字钟设计报告(22篇)