基于单片机的秒表设计单片机课程设计

基于单片机的秒表设计单片机课程设计
基于单片机的秒表设计单片机课程设计

基于单片机的秒表设计单片机课程设计

单片机课程设计

项目名称基于单片机的秒表设计

专业班级通信102班

学生姓名青瓜

指导教师…

2012年11 月20日

摘要

本课程设计的数字电子秒表系统采用AT89C51单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部中断电路来设计计时器。将软、硬件有机地结合起来,使得系统能够实现五位LED显示,显示时间为0~99.99秒,计时精度为0.01秒,能精确地进行计时,并可以随时暂停和开始。软件系统采用C语言编写,包括显示程序,定时中断服务,外部中断服务程序,延时程序等,硬件系统利用PROTEUS强大的功能来实现,简单且易于观察,在仿真中就可以观察到系统实际的工作状态。

关键词:AT89C51单片机;数字秒表;数码管

Abstract

This course is designed digital electronic stopwatch system uses the AT89C51 microcontroller devices, the use of timer / counter timing and counting principle, combined with the display circuit LED digital tube as well as the external interrupt circuit designed timer. The hardware and software combine to enable the system to achieve five LED display, the display time of 99.99 seconds, the timing accuracy of 0.01 seconds, the correct timing, and the right to suspend and start. Software system using C language, including the display program, the timer interrupt service external interrupt service routine, delay procedures, hardware system to implement the use of the PROTEUS powerful functionality, simple cut easily observed in the simulation to the actual work can be observed status.

Keywords: AT89C51 Microcontroller; Digital stopwatch; Digital tubes

目录

摘要 ....................................................................................................................................... I Abstract.................................................................................................................................... I I 第1章绪论 (1)

1.1 概述 (1)

1.2 定时器术的研究现状 (1)

1.2.1 定时器的应用 (1)

1.2.2 定时器定时软件 (2)

1.3 本文研究的意义 (2)

第2章系统总体设计 (3)

2.1 总体方案的设计 (3)

2.2 系统总电路的设计 (3)

第3章系统硬件设计 (5)

3.1 单片机的选择 (5)

3.2 显示电路的选择与设计 (6)

3.3 复位电路模块 (8)

3.4 系统总体设计 (9)

第4章系统的软件设计 (10)

第5章实物焊接、仿真与调试 (13)

5.1 软件的仿真与调试 (13)

5.2 硬件的安装与调试 (14)

第6章结论 (15)

致谢 (16)

参考文献 (17)

附录1 (18)

源程序代码 (18)

附录2 (22)

软件仿真截图 (22)

附录3 (23)

实物照片展示 (23)

第1章绪论

1.1 概述

人类最早使用的定时工具是沙漏或水漏,但在钟表诞生发展成熟之后,人们开始尝试使用这种全新的计时工具来改进定时器,达到准确控制时间的目的。

1876年,英国外科医生索加取得一项定时装置的专利,用来控制煤气街灯的开关。它利用机械钟带动开关来控制煤气阀门。起初每周上一次发条,1918年使用电钟计时后,就不用上发条了。定时器确实是一项了不起的发明,使相当多需要人控制时间的工作变得简单了许多。人们甚至将定时器用在了军事方面,制成了定时炸弹,定时雷管。现在的不少家用电器都安装了定时器来控制开关或工作时间。

秒表计时器是电器制造,工业自动化控制、国防、实验室及科研单位理想的计时仪器,它广泛应用于各种继电器、电磁开关,控制器、延时器、定时器等的时间测试。

在现在的体育竞技比赛中,随着运动员的水平不断提高,差距也在不断缩小。有些运动对时间精度的要求也越来越高,有时比赛冠亚军之间的差距只有几毫秒,因此就需要高精度的秒表来记录成绩。

1.2 定时器术的研究现状

1.2.1 定时器的应用

1、接通延时型定时器:接通延时型定时器是各种PLC中最常见最基本的定时器,这种定时器在SIEMENS的PLC中,称为SD型定时器

2、断开延时型定时器:这种定时器是当输入条件00000为ON时无延时作用,只有在输入条件00000为OFF时产生延时作用。在SIEMENS的PLC中,称为SF型定时器。

保持型接通延时定时器:这种定时器是当输入条件00000为ON后,即产生锁存功能,即使输入条件00000又变为OFF,仍视输入条件为ON,当定时器的当前值等于设定值时,定时器动作,这种定时器在SIEMENS的PLC中,称为SS型定时器。

4、脉冲型定时器:这种定时器是当输入条件00000为ON后,定时器即时动作,但经过定时器所设定的时间后,即使输入条件00000仍为ON,定时器却变为OFF状态。即这种定时器ON状态的维持时间是由设定值决定的。如果00000为ON的时续时间小于定时器的设定值,定时器的ON状态维持时间为输入条件00000为ON的持续时间。这种定时器在SIEMENS的PLC中,称为SP型定时器。

5、扩张型脉冲定时器:这种定时器与脉冲型定时器的区别是,只要输入条件00000

出现了ON状态,不管其持续时间多长,均可使定时器为ON的维持的时间与定时器的设定值一致。这种定时器在SIEMENS的PLC中,称为SE型定时器。

1.2.2 定时器定时软件

是一个多任务定时提醒的软件,它全面支持WINDOWS 9X/ME/NT/2K/XP按时执行程序、播放声音、关机、待机、拨号、断开连接、关闭显示器等等操作。具有多种设定任务的方法。支持SKIN,可以随意更换界面。

工业用定时器是指输入信号进入后,按预先设定的时间发送输出信号的控制设备。定时器的开始方法动作模式有2种开始方法。

例:ON延迟动作,信号ON延迟动作:预先在定时器电源部施加电压的状态下输入进入输入部开始计时动作。电源ON延迟动作:定时器的电源部上施加电压的话定时器开始动作。

1.3 本文研究的意义

目前,定时器确实是一项了不起的发明,使相当多需要人控制时间的工作变得简单了许多。人们甚至将定时器用在了军事方面,制成了定时炸弹,定时雷管。现在的不少家用电器都安装了定时器来控制开关或工作时间。所以,定时器的研究对我们现在以及将来的生活具有十分重要的现实意义。

本课程设计是在校学生素质教育的重要环节,是理论与实践相结合的桥梁和纽带。单片机课程设计,要求学生更多的完成软硬件结合的动手实践方案,解决目前学生课程实际过程中普遍存在的缺乏动手能力的现象。其目的和任务是训练学生综合运用已学习的课程“单片机原理及应用”、“数字电子技术”的基本知识,独立进行单片机应用技术和开发工作,掌握单片机程序设计、调试和应用电路设计、分析及调试检测。

本设计利用AT89C51单片机的定时器/计数器定时和记数的原理,使其能精确计时。利用中断系统使其能实现开始暂停的功能。P0口输出段码数据,P2.0-P2.3口作列扫描输出,P1.0、P1.1、P1.2、P1.3、P1.4分别接五个按钮开关,分别实现开始/暂停、清零和可增加的拓展功能。显示部分由四位共阴极数码管组成。

初始状态下计时器显示00.00,当按下开始键时,外部中断INT0向AT89C51发出中断请求,CPU转去执行外部中断0服务程序,即开启定时器T0。计时采用定时器T0中断完成,定时溢出中断周期为1ms,当一处中断后向CPU发出溢出中断请求,每发出一次中断请求就对毫秒计数单元进行加一,达到10次就对十毫秒位进行加一,依次类推,直到99.99秒重新复位。

本论文主要内容包括三部分:第一部分介绍硬件部分设计思路及方案;第二部分介绍了软件部分的设计思路和设计;最后一部分则是整个系统的安装与调试过程。

第2章系统总体设计

2.1 总体方案的设计

数字电子秒表具有显示直观、读取方便、精度高等优点,在计时中广泛使用。本设计用单片机组成数字电子秒表,力求结构简单、精度高为目标。

设计中包括硬件电路的设计和系统程序的设计。其硬件电路主要有主控制器,计时与显示电路和回零、启动和停表电路等。主控制器采用单片机AT89C51,显示电路采用共阴极LED数码管显示计时时间。利用定时器/计数器定时和记数的原理,使其能精确计时。利用中断系统使其能实现开始暂停的功能。P0口输出段码数据,P2.0-P2.3口作列扫描输出,P1.0、P1.1、P1.2、P1.3、P1.4分别接五个按钮开关,分别实现开始/暂停、清零和可增加的拓展功能。电路原理图设计最基本的要求是正确性,其次是布局合理,最后在正确性和布局合理的前提下力求美观。硬件电路图按照图1.1进行

设计。

图2-1 数字秒表硬件电路基本原理图根据要求知道秒表设计主要实现的功能是计时和显示。计时部分采用定时器T0中断完成,定时溢出中断周期为1ms,当一处中断后向CPU发出溢出中断请求,每发出一次中断请求就对毫秒计数单元进行加一,达到10次就对十毫秒位进行加一,依次类推,直到99.99秒重新复位。

再看按键的处理,通常对于按键的处理有中断和扫描两种方法。本设计的这五个键则是采用扫描的方法来识别。复位键的功能在于数值复位,而开始和停止键则是用于对时间的锁定,因此可以对复位、暂停/开始按键采取扫描的方式。

2.2 系统总电路的设计

系统总电路由以上设计的显示电路,时钟电路,按键电路和复位电路组成,只要

将单片机与以上各部分电路合理的连接就组成了系统总电路。系统总电路图附录B所示。

AT89C51单片机为主电路的核心部分,各个电路均和单片机相连接,由单片机统筹和协调各个电路的运行工作。

AT89C51单片机提供了XTAL1和XTAL2两个专用引脚接晶振电路,因此只要将晶振电路接到两个专用引脚即可为单片机提供时钟脉冲,但在焊接晶振电路时要尽量使晶振电路靠近单片机,这样可以为单片机提供稳定的始终脉冲。

复位电路同晶振电路,单片机设有一个专用的硬件复位接口,并设置为高电平有效。

显示电路由四位数码管组成,采用动态显示方式,因此有八位段控制端和四位位控制端,八位段控制接P0口,P0.0~P0.7分别控制数码显示管的a、b、c、d、e、f、g、dp显示,单片机的P0口没有集成上拉电阻,高电平的驱动能力很弱,所以需要接上拉电阻来提高P0的高电平驱动能力。四位位控制则由低位到高位分别接到P2.0~P2.3口,当P2.0~P2.4端口任意一个端口为高电平时,对应的数码管导通显示。

通过以上设计已经将各部分电路与单片机有机的结合到一起,硬件部分的设计基本完成,剩下的部分就是对单片机的编程,使单片机按程序运行,实现数字电子秒表的全部功能。

第3章系统硬件设计

3.1 单片机的选择

本课题在选取单片机时,充分借鉴了许多成形产品使用单片机的经验,并根据自己的实际情况,选择了ATMEL公司的AT89C51型单片机。

图3-1 AT89C51单片机引脚图

AT89C51单片机采用40引脚的双列直插封装方式。图2-2为引脚排列图,40条引脚说明如下:

主电源引脚Vss和Vcc

1. Vss接地

2. Vcc接+5伏电源

外接晶振引脚XTAL1和XTAL2

1. XTAL1内部振荡电路反相放大器的输入端,是外接晶体的一个引脚。当采用外部振荡器时,此引脚接地。

2. XTAL2内部振荡电路反相放大器的输出端。是外接晶体的另一端。当采用外部振荡器时,此引脚接外部振荡源。

控制或与其它电源复用引脚RST/VPD,ALE/PROG,PSEN和EA/Vpp

1. RST/VPD 当振荡器运行时,在此引脚上出现两个机器周期的高电平(由低到高跳变),将使单片机复位在Vcc掉电期间,此引脚可接上备用电源,由VPD向内部提供备用电源,以保持内部RAM中的数据。

2. ALE/PROG正常操作时为ALE功能(允许地址锁存)提供把地址的低字节锁存到外部锁存器,ALE 引脚以不变的频率(振荡器频率的1/6)周期性地发出正脉冲信号。因此,它可用作对外输出的时钟,或用于定时目的。对于EPROM型单片机,在EPROM 编程期间,此引脚接收编程脉冲(PROG功能)

3. PSEN外部程序存储器读选通信号输出端,在从外部程序存储取指令(或数据)期间,PSEN在每个机器周期内两次有效。PSEN同样可以驱动八LSTTL输入。

4. EA/Vpp、EA/Vpp为内部程序存储器和外部程序存储器选择端。当EA/Vpp为高电平时,访问内部程序存储器,当EA/Vpp为低电平时,则访问外部程序存储器。对于EPROM型单片机,在EPROM编程期间,此引脚上加21伏EPROM编程电源(Vpp)。

输入/输出引脚P0.0 - P0.7,P1.0 - P1.7,P2.0 - P2.7,P3.0 - P3.7

1. P0口(P0.0 - P0.7)是一个8位漏极开路型双向I/O口,在访问外部存储器时,它是分时传送的低字节地址和数据总线,P0口能以吸收电流的方式驱动八个LSTTL 负载。

2. P1口(P1.0 - P1.7)是一个带有内部提升电阻的8位准双向I/O口。能驱动(吸收或输出电流)四个LSTTL负载。

3. P2口(P2.0 - P2.7)是一个带有内部提升电阻的8位准双向I/O口,在访问外部存储器时,它输出高8位地址。P2口可以驱动(吸收或输出电流)四个LSTTL负载。

4. P3口(P3.0 - P3.7)是一个带有内部提升电阻的8位准双向I/O口。能驱动(吸收或输出电流)四个LSTTL负载。

3.2 显示电路的选择与设计

对于数字显示电路,通常采用液晶显示或数码管显示。本设计的显示电路采用7段数码管作为显示介质。

数码管显示可以分为静态显示和动态显示两种。由于本设计需要采用四位数码管显示时间,如果静态显示则占用的口线多,硬件电路复杂。所以采用动态显示。

动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。通常各位数码管的段选线相应并联在一起,由一个8位的I/O口控制;各位的公共阴极位选线由另外的I/O口线控制。动态方式显示时,各数码管分时轮流选通,要使其稳定显示必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的段码,在另一时刻选通另一位数码管,并送出相应的段码,依此规律循环,即可使各位数码管显示将要显示的字符,虽然这些字符是在不同的时刻分别显示,但由于人眼

存在视觉暂留效应,只要每位显示间隔足够短就可以给人同时显示的感觉。

图3-2 显示电路基本原理图

数码显示管分为共阳数码管和共阴数码管两种

共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起,如图1.4(b),通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。

共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起,如图(c),通常,公共阴极接低电平(一般接地),其它管脚接段驱动电路输出端,当某段驱动电路的输出端为高电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。

图3-3 (a)数码管引脚图(b)共阳极内部结构图

(c)共阴极内部结构图

本设计采用共阴极数码显示管做显示电路,由于采用的是共阴的数码显示管,所以只要数码管的a、b、c、d、e、f、g、h引脚为高电平,那么其对应的二极管就会发光,使数码显示管显示0~9的编码见表1.1。

表3-1 共阴极数码显示管字型代码字型共阴极代码字型共阴极代码

0 3FH 5 6DH

1 06H 6 7DH

2 5BH 7 07H

3 4FH 8 7FH

4 66H 9 6FH

3.3 复位电路模块

为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般微机电路正常工作需要供电电源为5V±5%,即 4.75~5.25V。由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。

图3-4 复位模块电路图

3.4 系统总体设计

本设计利用AT89C51单片机的定时器/计数器定时和记数的原理,使其能精确计时。利用中断系统使其能实现开始暂停的功能。P0口输出段码数据,P2.0-P2.3口作列扫描输出,P1.0、P1.1、P1.2、P1.3、P1.4分别接五个按钮开关,分别实现开始/暂停、清零和可增加的拓展功能。显示部分由四位共阴极数码管组成。系统总体图如下:

图3-5 系统总体设计电路图

第4章系统的软件设计

在软件设计中,一般采用模块化的程序设计方法,它具有明显的优点。把一个多功能的复杂的程序划分为若干个简单的、功能单一的程序模块,有利于程序的设计和调试,有利于程序的优化和分工,提高了程序的阅读性和可靠性,使程序的结构层次一目了然。

图4-1 主程序流程图

方案中采用了定时中断T0。CPU在响应中断时,先处理高级中断,在处理低级中断,若有多个同级中断时,则按自然优先顺序处理。例如当CPU正在处理一个中断申请时,有出现了另一个优先级比它高的中断请求,这是,CPU就暂停终止对当前优先级

较低的中断源的服务,转去响应优先级比它高的中断请求,并为其服务。待服务结束,再继续执行原来较低级的中断服务程序。而当CPU为级别高的终端服务程序服务时,如果级别低的中断发出中断请求,此时CPU是不会响应的。

AT89C51单片机的自然优先级顺序排列如下:

中断源最高

外部中断0

定时/计数器0溢出中断

外部中断1

定时/计数器1溢出中断

串行口中断最低

第5章实物焊接、仿真与调试

5.1 软件的仿真与调试

Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件,它可以仿真、分析(SPICE)各种模拟器件和集成电路。该软件的主要特点总结后有以下四点:①实现了单片机仿真和SPICE电路仿真相结合的功能。②支持目前主流单片机系统的仿真。

③提供了软件调试功能,并可以与WAVE联合仿真调试。④具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。在电子领域中也起到了很大的作用,它的出现仿真不需要先焊接电路,可以先仿真调试通过后在焊电路,节省了不少在硬件调试上所花的时间。

Proteus ISIS的工作界面是一种标准的Windows界面。它包括标题栏、主菜单、状态栏、标准工具栏、绘图工具栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口等十几个工具,方便了使用者的使用。

首先打开已经画好的proteus DSN文件,双击图中的AT89C51芯片,就弹出一个窗口,在Program File项中通过路径选择在WAVE中生成的HEX文件,双击选中后确定,这样仿真图中的AT89C51芯片就已经读取了本设计中的HEX文件。单击“三角形按钮”进行仿真。通过对仿真结果的观察来对程序进行修改,最终使程序到达设计要求。

图5-1 proteus仿真图

5.2 硬件的安装与调试

按照之前设计好的数字电子秒表原理图,详细计算系统中各个元件的参数,选择相应器件,焊接实际电路板。由于考虑到万能板大小的问题及元件之间连线的方便,在焊接元器件前必须考虑元件的布局然后进行实际操作。

制作好的电路板可以用万用表(200欧姆档)的红、黑表笔测试电路板的每条走线,当其电阻非常小时,证明走线没有断开,当其电阻很大时,证明该条走线断了,应该重新走线,使电路板在电气上得到正确地连接。选用万用表的20K欧姆档,检测电路中是否存在短路。因为系统采用的是共阴极数码管作为显示电路,必须确保数码管的公共端接的是低电平。

1.晶振电路的测试

在单片机正常运行的必要条件是单片机系统的时钟稳定正常。实际中,因为各种原因导致系统时钟不正常而出现系统无法正常运行的情况时有,因此系统时钟是否振是通电检查的首要环节。在系统通电的状况下,用万用表的直流电压档(20V),分别测量XTAL1和XTAL2引脚的电压,看是否正常,在调试过程中,测得电压XTAL1引脚应为2.05V,XTAT2应为2.15V。

2.复位电路的测试

复位不正常也会导致系统不能工作。如果复位引脚始终为高电平,系统将始终处于复位状态;如果始终为低电平,不能产生复位所需的高电平信号脉冲,则系统也可能无法正常工作。单片机正常工作时,RST复位引脚应为0V,按下复位按键时,复位引脚为高电平5V左右。

3.显示电路的测试

显示电路是数字电子秒表正常运行最直观的观察窗口,我们可以通过观察显示电路的显示结果观察系统能否正常运行。当显示电路按照电路图焊接好后,用万用表的测二极管档位,将黑表笔接共阴数码管的公共段,然后将红表笔接数码管的各段,当数码管的段能正常显示,说明各点焊接正常。

第6章结论

本设计的数字电子秒表是由AT89C51单片机、共阴数码显示管、控制按键等器件构成的,设有四位计时显示,开始、暂停、复位按键以及一个系统整机复位按钮。计时精度能到达10ms,设计精简,使用简单易懂。系统设计合理,线路简单、功能先进,性能稳定,程序精简,并给出了详细的电路设计方法。本系统是以单片机为核心,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。

通过本次设计,复习巩固我们以前所学习的数字、模拟电子技术、单片机原理及应用等课程知识,加深对各门课程及相互关系的理解,并成功使用了Proteus、Keil 和两款电子软件,使理论知识系统化、实用化,系统地掌握微机应用系统的一般设计方法,培养较强的编程能力、开发能力。

同时,在设计的过程中,我也发现了本系统的许多不足和可以改进的地方。但因时间紧迫等原因没能改进。本设计的数字电子秒表缺少对多次计时时间进行记录的功能。应给在单片机的内部存储区多设置一些存储空间,用来存储多次计时时间。并在程序中编入对多次计时时间的调用显示。虽然存在不足,但本设计的数字电子秒表仍具有它的实用性。

做了将近两周的课程设计,让我感受颇深,有很多知识是书本上学不到的知识,这些都是需要亲自动手实践的。

通过10多天的努力,在向老师的请教和同学的帮助下我终于完成了单片机的课程设计。我觉得作为一名通信专业的学生,单片机的课程设计是十分有意义的。重要的是如何把自己平时所学的东西应用到实际中。虽然自己对于这门课懂的并不多,很多基础的东西都还没有很好的掌握,觉得很难,也没有很有效的办法通过自身去理解,但是靠着这一个多礼拜的努力,在同学的帮助和讲解下,渐渐对这门课逐渐产生了些许的兴趣,自己开始主动学习并逐步从基础慢慢开始弄懂它。我认为这个收获应该说是相当大的。

我觉得课程设计反映的是一个从理论到实际应用的过程,但是更远一点可以联系到以后毕业之后从学校转到踏上社会的一个过程。向别人询问、请教、配合﹑相处,以及自身的动脑和努力,都是以后工作中需要的。

相关主题
相关文档
最新文档