单片机秒表设计报告

                            广西科技大学

单片机课程设计说明书

课题名称         单片机秒表系统的设计

 

系      别   职 业 技 术 教 育 学 院

专      业   电 子 信 息 工 程     

              班      级     电子Z112           

              姓名(学号)          红头巾组合      

            

        指导教师      廖贵成                                            

摘要

    近年来随着科技的飞速发展,单片机的应用正在不断的走向深入。本文阐述了基于单片机的电子秒表设计。本设计主要特点是计时精度达到0.1s,解决了传统的由于计时精度不够造成的误差和不公平性,是各种体育竞赛的必备设备之一。

本设计是基于AT89C51单片机设计的,我们是分为几个模块来设计的。首先对秒表的硬件进行了设计,它包括时钟电路设计、复位电路设计以及外部显示电路。利用89C51单片机的定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部中断电路来设计计时器。计时精度为0.1s。其次是软件进行了设计,软件系统采用汇编语言编写程序,包括显示程序,定时中断服务,外部中断服务程序,延时程序等。最后通过仿真调试,在proteus环境下建立了仿真模型,仿真和调试结果表明本设计是正确的。

关键词:单片机;秒表;系统设计


目录

摘要 ………………………………………………………………………………………I

1 课题内容要求及目的………………………………………………………………1

1.1课题内容……………………………………………………………………………1

1.2课题要求……………………………………………………………………………1

1.3 课题目的……………………………………………………………………………2

2 硬件设计………………………………………………………………………………2

2.1 AT89C51单片机简介……………………………………………………………2  

2.2设计思路……………………………………………………………………………3

2.3硬件电路设计………………………………………………………………………3

3软件设计………………………………………………………………………………6

3.1程序设计……………………………………………………………………6

3.2源程序………………………………………………………………………………7

4系统调试与仿真……………………………………………………………………11

4.1 proteus简介……………………………………………………………………12

4.2仿真调试……………………………………………………………………………12

5总结………………………………………………………………………………15

参考文献………………………………………………………………………………16

致谢………………………………………………………………………………………16


1 课题内容要求及目的

1.1课题内容

用AT89C51设计一个秒表,该秒表课可显示0.0~9分59.9秒的时间,进行相应的单片机硬件电路的设计并进行软件编程利用单片机定时器/计数器中断设计秒表,从而实现秒、十分之一秒的计时。综合运用所学的《单片机原理与应用》理论知识,通过实践加强对所学知识的理解,具备设计单片机应用系统的能力。通过本次系统设计加深对单片机掌握定时器、外部中断的设置和编程原理的全面认识复习和掌握。

本系统利用单片机的定时器/计数器定时和记数的原理,通过采用proteus仿真软件来模拟实现。模拟利用AT89C51单片机、LED数码管以及控件来控制秒表的计数以及计位!其中有三位数码管用来显示数据,显示分一位和秒(两位)和十分之一秒,十分之一秒的数码管计数从0~9,满十进一后显示秒的数码管的数字加一,并且十分之一秒显示清零重新从零计数。计秒数码管采用四位的数码管,当计数超过范围是所有数码管全部清零重新计数。

1.2课题要求

本课题是基于单片机的秒表系统设计,它的具体要求有以下几点:

1.实物参见下图,设计一个精度为0.1s的秒表系统

  2.设计,启动按钮、暂停按钮及清零按钮   

  3*.设计每到一秒钟有声音提醒功能,可通过按钮打开及关闭该提醒音

1.3课题目的

通过课程设计,进一步熟悉和掌握AT89C51单片机的结构及工作原理,掌握以单片机核心的电路设计的基本方法和技术,了解表关电路参数的计算方法。通过完成一个包括电路设计和程序开发的完整过程,进一步了解开发一单片机应用系统的全过程,通过此综合训练,为以后毕业设计打下一定的基础。

(1)通过本次课程设计加深对单片机课程的全面认识。

(2)掌握定时器、外部中断的设置和编程。

(3)该实验通过单片机的软件延时设计,设计简单的计时器系统,能正确的计时。

(4)通过本次课程设计能够对程序进行编辑,校验。                                                                                                             

2.硬件设计

2.1 AT89C51单片机简介

AT89C51是一种低功耗、高性能的片内含有4KB快闪可编程/擦除只读存储器(FPEROM-Flash Programmable and Eraseable Read Only Memory)的8位CMOS微控制器,使用高密度、非易失存储技术制造,并且与89C51引脚和指令系统完全兼容。引脚分别如图2.1所示。

图2.1   单片机引脚分布图

图2.1所示的单片机是引脚双列直插封装方式,电源引脚40脚与接地脚20。P0口作输入口使用时,应先向口锁存器写入1。P1口是一个带有内部上拉电阻的8位双向I/O端口。P1的输出缓存可驱动4个TTL输入。P2口是一个带有内部上拉电阻的8位双向I/O端口。P3口也是一个带有内部上拉电阻的8位双向I/O端口,P3端口还用于一些复用功能。

2.2设计思路

这次的试验要求进行计时并且在数码管上显示时间,先要基本了解硬件内在结构,确定用p2并行端口进行数码管控制输入,使用P2.0,P2.1,P2.2,P2.3进行选择0.1秒位,个位秒位,十位秒位,分位,以P1.0为开始和暂停控制,P1.1为清零控制。本次实验设计的基本思路是要求借助AT89C51单片机做出一个959.9s的秒表从十位秒到0.1位秒数这些计时的位数是存在一个内嵌的结构,就是0.1秒位满足条件然后进行跳位使秒位加一的过程,当0.1s到0.9s时该位自动清零并且秒位加一,秒位个位达到9时也自动清零并向十秒位加一当十秒位和个位秒位同时到达59时向分位进1。当计数超过范围是所有数码管全部清零重新计数。其次开始控制,停止控制,清零控制等功能,我们采用蜂鸣器进行提示,该信号由P1.5输出,通过一个延时子程序加以控制。最后就是根据硬件的条件进行编程,要求软硬件相互兼容。这也是设计的关键之处。因此需查阅相关书籍。

2.3硬件电路设计

开始/停止和清零电路

    利用两个开关并联接地,分别接到芯片上的P1.0和P1.1接口,P1.0上的开关控制秒表的开始/停止,P1.1控制清零,如下图

                            

                         图a开始/停止和清零电路

两种操作皆采用按键操作,简单快捷,易于完成。

(2)硬件电路设计                                                                                                                                                                                       

使用proteus软件设计的硬件电路包含了两个功能键及蜂鸣器控制开关。具体如图b所示。

图b  硬件电路连接图

由电路图我们可以看到,我们用P2.0,P2.1,P2.2,P2.3进行0.1秒位,秒位,十秒位,分位进行位选,蜂鸣器用P1.5做输出口,按下开始按钮,秒表开始工作,蜂鸣器发出声音(无响应电路控制蜂鸣器停止和开始,所以按下“开始”按钮,蜂鸣器开始发声,再按一下“开始/停止”按钮,蜂鸣器停止发声,秒表计时停止)。         

图3-6为数码管的引脚图,每位的段码线(a,b,c,d,e,f,g,dp)分别与1个8位的锁存器输出相连,由AT89C51控制组合0-9十个数据,如令其显示1则b,c引脚(即2,3引脚)送高电平,此时数码管显示1。由于各位的段码线并联,8位I/O口输出段码对各个显示位来说都是相同的。

3软件设计                                                                       3.1程序设计

    根据课题内容,可做出主程序流程图如图c所示。

图c 主程序流程图

   流程图体现着设计程序的思路程序,开始后首先进行数据初始化然后是条件判断满足条件或不满足则进行对应的处理,如首先依次判断是否暂停是否清零,然后十分之一妙位计数,再判断是否进位,若是秒位就加一,秒位加一后进行声音提示,接着再判断是否有进位,若有则十秒位加一,若十秒位有进位则向十分位进一,十分位计满则重新开始。

3.2源程序:

ORG   0000H

LJMP   MAIN

          ORG      000BH

          LJMP TIME

          ORG      0100H

MAIN:  MOV    SP,#50H

        MOV     TCON,#01H  ;定义中断方式

            MOV      10H,#0AH

        MOV     20H,#00H   ;BIN  m_SECOND

        MOV     21H,#00H   ;BIN  SECOND

        MOV     22H,#00H   ;BIN  MINUTE

      MOV     31H,#00H ; BCD  m_SECOND

              MOV     32H,#00H   ;BCD  SECOND

         MOV     33H,#00H   ;

         MOV     34H,#00H   ;BCD  MINUTE

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

        MOV     TH0,     #0D8H   ;10ms

        MOV     TL0,     #0F0H

        MOV     IE,      #10000010B

ML1:      LCALL     DISP

KEY:   JNB     P1.0, CONTROL;

        JNB     P1.1,     CLEAR 

        CONTROL:

          LCALL   DL1

          JB      P1.0, ML1

LOOP1:   LCALL   DISP

          JNB     P1.0,LOOP1

          CPL     TR0

         CLEAR:   LCALL  DL1

          LCALL   DISP

          JB      P1.1, ML1

          CLR     TR0

          MOV     20H,#0

          MOV     21H,#0

          MOV     22H,#0

          MOV     31H,#00H   ; BCD  m_SECOND

          MOV     32H,#00H   ; BCD  SECOND

          MOV     33H,#00H  

          MOV     34H,#00H   ; BCD  MINUTE

          JNB      p1.1,CLEAR

          LJMP     ML1

TIME:     MOV  TH0,#0D8H

         MOV  TL0,#0F0H

                MOV      10H,#0AH

          MOV  A,20H

INC     A

         CLR     C

      CJNE   A,#99,GO1 ;转换BCD

           MOV  20H,#0

        MOV     31H,#0

       MOV  A,21H

          INC     A      

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,   #0AH,  GO3

            MOV        22H,   #00H

       MOV         34H,  #0

       AJMP RET0   ;退出中断

GO1:   MOV  20H,  A

        MOV     B,#0AH

        DIV     AB

        MOV     31H,A 

            GO2:   MOV  21H,  A

        MOV     B,   #0AH

        DIV     AB

        MOV     33H,  A

        MOV     32H,  B

           

            AJMP RET0

GO3:   MOV     22H,  A

        MOV     B,   #0AH

                 MOV     34H,  B 

           AJMP RET0

RET0:     POP PSW

           POP ACC

           RETI

DISP:      MOV  R0,  #31H

      MOV  R3,  #0FEH

      MOV  A,  R3

PLAY:     MOV      P2,  A

       MOV      A,  @R0

      MOV      DPTR,  #DSEG1

       MOVC     A,  @A+DPTR

           MOV      P0,   A

           LCALL    DL1

           MOV      P2,   #0FFH

                      RL       A

           JNB      ACC.4,   LD1

           INC      R0

           MOV      R3,   A

       LD1:     RET

      SND:  SETB P1.5

 

DL1:   MOV  R7,#05H     ;延时5*(255*2+2+1)= 2,565us

DL:        MOV  R6,   #0FFH

DL6:   DJNZ  R6,$

          DJNZ  R7,DL

                     RET

DSEG1:   DB 3FH,06H,5BH,4FH,66H

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

 End

4系统调试与仿真

4.1仿真软件简介

   (1)Proteus是英国Labcenter electronics公司出版的仿真软件。它不仅具有其它仿真软件的仿真功能,还能仿真单片机及外围器件,它是目前最好的仿真单片机及外围器件的工具。受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。

   (2)在Proteus绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在Proteus的原理图中看到模拟的实物运行状态和过程。Proteus不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能。                                                                                                                                                                                           

4.2仿真调试

(1) 经过对程序的运行,并用wave软件编译后,用proteus仿真软件进行仿真,按下“开始”按钮之前,可以看到数码管上数字子显示为零如图1所示。

图1  开始状态图

由图1可以清楚的看到,秒表的初始状态,三位数码管都显示为零,蜂鸣器也未工作。

(2) 当按下“开始”时秒表开始计时,秒表开始计时,其状态如图2所示。

图2  开始计时图

由图4.2可以看到,开始计时后,数码管数字在变化,图中为十分之一秒位的数码管显示情况。蜂鸣器发出“滴滴滴”的声音。

(3) 当再次按下“开始/停止”按钮时秒表停止计时,数码管显示的数字不再变化,如图3所示。

                             

图3 停止状态图

由图4.3可以看到按下“开始/停止”按钮后各个数码管的数字不再变化蜂鸣器也停止工作。

(4) 当按下“清零”时秒表无论是在计时还是在停止状态都一律清零各数码管全为零,回到初始状态。

5.1 总结

本文主要从硬件和软件两个方面结合说明设计的总体思路和实现过程,预期的设计目的是:能够实现计时的基本功能,正常显示计时。

在设计过程中,曾经遇到很多的障碍,譬如当用软件延时时,一段程序与下段程序之间没有一个停顿,所以后来利用听是中断才解决问题。设计图经过许多次的修改最后才定下来,但在调试的过程中又出现了问题需要修改原理图;在编程那里花费的时间是最多的,编程的过程是要考虑到程序的可行性和是否与硬件兼容。而能否接好线是本试验的一大难题!在设计中有好多问题都是因为理论知识不扎实,在有些管脚的置零置一上,概念的模糊,还有就是对单片机的指令不够熟悉。最近几年,科学发展很快,渗透在工农业生产的许多领域。通过此次课程设计我们有了更深的认识,只有在设计制作的过程中不断的学习才能有更新的进步。不论在什么地方,什么岗位我门都要不断学习,学以致用。才能把我们的工作做的更好。

                  

参考文献

[1]微型计算机原理与接口技术第5版 中国科学技术大学出版社

[2]模拟电子技术基础第4版.

[3]单片机原理及应用

[4]王毓银.数字电路逻辑设计[M] .高等教育出版社

致谢

在论文完成之际,我要特别感谢廖贵成老师的热情关怀和悉心指导。在我撰写论文的过程中,廖老师倾注了大量的心血和汗水,无论是在论文的选题、构思和资料的收集方面,还是在论文的研究方法以及成文定稿方面,我都得到了刘老师悉心细致的教诲和无私的帮助,特别是她广博的学识、深厚的学术素养、严谨的治学精神和一丝不苟的工作作风使我终生受益,在此表示真诚地感谢和深深的谢意。

在论文的写作过程中,也得到了许多同学的宝贵建议,在此一并致以诚挚的谢意。感谢所有关心、支持、帮助过我的良师益友。

相关推荐