电子秒表系统的设计_第1页
电子秒表系统的设计_第2页
电子秒表系统的设计_第3页
电子秒表系统的设计_第4页
电子秒表系统的设计_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

近年来随着科技的飞速发展,单片机的应用正在不断的走向深入,秒表计时器是电器制造,工业自动化控制、国防、实验室及科研单位理想的计时仪器,它广泛应用于各种继电器、电磁开关,控制器、延时器、定时器等的时间测试。本文阐述了基于单片机的数字电子秒表设计。本设计主要特点是计时从00到99秒秒表系统,方便了在计时精度要求不高的情况下计时,因为计时精度为1,所以系统电路比较简单。另外硬件部分设置了开始、暂停、清零、复位按键,可以对秒表系统进行计时控制。本设计的数字电子秒表系统采用AT89C52单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部中断电路来设计计时器。将软、硬件有机地结合起来,使得系统能够实现两位LED显示,显示时间为00〜99秒,计时精度为1秒,能正确地进行计时,同时能记录一次时间,其中软件系统采用C语言编写程序,包括显示程序,定时中断服务,外部中断服务程序,延时程序等,并在Keil中调试运行,硬件系统利用PROTEUS强大的功能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态。关键字:单片机;数字电子秒表;仿真1•引言 错误!未定义书签。1.1设计目的及意义 11.2设计任务与要求 12.硬件设计 IV 2.1总体方案的设计 IV2.2单片机的选择 V2.3显示电路的选择与设计 VII2.4按键电路的选择与设计 X2.5时钟电路的选择与设计 XII2.6复位电路的选择与设计 XIII2.7系统总电路的设计 XV3.软件设计 错误!未定义书签。3.1程序设计思想 错误!未定义书签。3.2系统资源的分配 错误!未定义书签。3.3主程序设计 XXII3.4中断程序设计 XXIVJ数字电子秒表的安装与调试 XXVIII4.1软件的仿真与调试 XXVIII4.2硬件的安装与调试 XXVIII 4.3系统程序的烧录 XXIX 4.4数字电子秒表的精度调试 错误!未定义书签。结论 错误!未定义书签。致谢 XXXI参考文献 XXXI1.引言1.1、设计目的及意义秒表计时器是电器制造,工业自动化控制、国防、实验室及科研单位理想的计时仪器,它广泛应用于各种继电器、电磁开关,控制器、延时器、定时器等的时间测试。自首届现代奥运会在希腊雅典举办以来,奥运计时技术一直在不断地向前发展。一百多年过去了,首届现代奥运会上计时所用的跑表如今换成了一系列高科技计时装置,如高速数码摄像机、电子触摸垫、红外光束、无线应答器等等。鉴于当今计时技术的快速发展,掌握电子秒表系统的设计,能够用学过的理论知识设计最简单的秒表系统电路一用AT89C52设计一个2位LED数码显示“秒表”,显示时间为00~99秒,每秒自动加一。另设计一个“开始”按键、一个“复位”按键、一个“暂停”按键和一个“清零”按键。从我国水运仪像台的发明到现在各国都在研制的原子钟这几百年的钟表演变过程中,我们可以看到,各个不同时期的科学家和钟表工匠用他们的聪明的智慧和不断的实践融合成了一座时间的隧道,同时也为我们勾勒了一条钟表文化和科技发展的轨迹。本设计利用AT89C52单片机的定时器/计数器定时和记数的原理,使其能精确计时。利用中断系统使其能实现开始暂停的功能。12M晶振,P0口输出段码数据,2位共阴数码管,P2.0、P2.1位控,三个按键P2.5、P2.6、P2.7分别实现开始、暂停、清零功能,显示电路由两位共阴极数码管组成。初始状态下计时器显示00,当按下开始键时,外部中断INT1向CPU发出中断请求,CPU转去执行外部中断1服务程序,即开启定时器T0。计时采用定时器T0中断完成,定时溢出中断周期为1s,当一处中断后向CPU发出溢出中断请求,每发出一次中断请求就对秒计数单元进行加一,达到10次就对十毫秒位进行加一,依次类推,直到99秒重新复位。在计时过程中,只要按下暂停键,外部中断INT0向CPU发出中断请求,CPU转去执行外部中断0服务程序,即关闭定时器T0,调用显示程序,实现暂停功能,在按下暂停键时,将此时的计时时间存入中间缓存区,当再次按下开始键时,则讲中间缓存区的数据转入最终缓存区,根据以上设计思路从而实现数字电子秒表的计时。本文主要内容包括三部分:第一部分介绍硬件部分设计思路及方案;第二部分介绍了软件部分的设计思路和设计;最后一部分则是整个系统的安装与调试过程。1.2设计任务与要求其设计任务有如下几点:1) 应用AT89C52单片机设计电路实现数字秒表(LED显示00—99秒);选用2位LED数码显示,实时显示两位秒表,采用按键式实现秒表的开始、暂停和清零。2) 硬件设计:根据设计的任务选定合适的单片机,根据控制对象设计接口电路。设计的单元电路必须有工作原理,器件的作用,分析和计算过程;

3) 软件设计:根据电路工作过程,画出软件流程图,根据流程图编写相应的程序,进行调试并打印程序清单;4) 原理图设计:根据所确定的设计电路,利用Protel或Proteus等有关工具软件绘制电路原理图、PCB板图、提供元器件清单;其设计要求是用AT89C52设计一个用2位的LED数码显示;显示时间为00~99秒,每秒自动加1,另设计一个“开始”键、一个“暂停”键和一个“复位”键2.硬件设计2.1总体方案的设计数字电子秒表具有显示直观、读取方便、精度高等优点,在计时中广泛使用。本设计用单片机组成数字电子秒表,力求结构简单、精度高为目标,设计中包括硬件电路的设计和系统程序的设计。其硬件电路主要有主控制器,计时与显示电路和回零、启动和停表电路等。主控制器采用单片机AT89C52,显示电路采用共阴极LED数码管显示计时时间。本设计利用AT89C52单片机的定时器/计数器定时和记数的原理,使其能精确计时。利用中断系统使其能实现开始暂停的功能。P0口输出段码数据,P2.0-P2.4口作列扫描输出,P2.5、P2.6、P2.6、P2.7口接三个按钮开关,分别实现开始、暂停、清零功能。电路原理图设计最基本的要求是正确性,其次是布局合理,最后在正确性和布局合理的前提下力求美观。硬件电路图按照图1.1进行设计。复位电路LED显示复位电路LED显示AT89C52单片机控制器开关电路图11数字秒表硬件电路基本原理图根据要求知道秒表设计主要实现的功能是计时和显示。因此设置了三个按键和两位数码管显示时间,三个按键分别是开始,停止、复位按键。利用这三个按键来实现秒表的全部功能,而两位数码管则能显示最多99秒的计时。计时采用定时器T0中断完成,定时溢出中断周期为1ms,当一处中断后向CPU发出溢出中断请求,每发出一次中断请求就对秒计数单元进行加一,达到10次就对十秒位进行加一,依次类推,直到99秒重新复位。再看按键的处理。这三个键可以采用中断的方法,也可以采用扫描的方法来识别。复位键主要功能在于数值复位,对于时间的要求不是很严格。而开始和停止键则是用于对时间的锁定,需要比较准确的控制。因此可以对复位按键采取扫描的方式。而对开始和停止键采用外部中断的方式。设计中包括硬件电路的设计和系统程序的设计。其硬件电路主要有主控制器,显示电路和回零、启动、停表电路等。主控制器采用单片机AT89C52,显示电路采用共阴极LED数码管显示计时时间,三个按键均采用触点式按键。2.2单片机的选择本课题在选取单片机时,充分借鉴了许多成形产品使用单片机的经验,并根据自己的实际情况,选择了ATMEL公司的AT89S52,ATMEL公司的89系列单片机以其卓越的性能、完善的兼容性、快捷便利的电擦写操作,低廉的价格、超强的加密功能,完全替代87C51/62和8751/52,低电压、低电源、低功耗,有DIP、PLCC、QFP封装,有民用型、工业级、汽车级、军品级等多种温度等级,是当今世界上性能最好、价格最低、最受欢迎的八位单片机。AT89C52P为40脚双列直插封装的8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。单片机的外部结构AT89S52单片机采用40引脚的双列直插封装方式。图1.2为引脚排列图,40条引脚说明如下:主电源引脚Vss和VccVss接地Vcc正常操作时为+5伏电源外接晶振引脚XTAL1和XTAL2XTAL1内部振荡电路反相放大器的输入端,是外接晶体的一个引脚。当采用外部振荡器时,此引脚接地。XTAL2内部振荡电路反相放大器的输出端。是外接晶体的另一端。当采用外部振荡器时,此引脚接外部振荡源。234567234567891011121314151617181920P1.0Pl.lPl.2Pl,3Pl.4Pl.5Pl.6Pl.7RST/VPDEXDP3.0TXDP3.1W0F3.2函亍iP3.3TOP3.4T1P3.5WP3.6IBP3.7XTAL2XTAL1VSS1vccPO.OP0.1P0.2P0.3P0.4P0.5P0.6P0.7EAWPALE/PROGPSEHP2.7P2.6P2.5P2.4P2.3P2.2P2.14039333736353433323130292S27262524232221图L2单片机引脚图控制或与其它电源复用引脚RST/VPD,ALE/PROG,PSEN和EA/VppRST/VPD当振荡器运行时,在此引脚上出现两个机器周期的高电平(由低到高跳变),将使单片机复位在Vcc掉电期间,此引脚可接上备用电源,由VPD向内部提供备用电源,以保持内部RAM中的数据。ALE/PROG正常操作时为ALE功能(允许地址锁存)提供把地址的低字节锁存到外部锁存器,ALE引脚以不变的频率(振荡器频率的1/6)周期性地发出正脉冲信号。因此,它可用作对外输出的时钟,或用于定时目的。但要注意,每当访问外部数据存储器时,将跳过一个ALE脉冲,ALE端可以驱动(吸收或输出电流)八个LSTTL电路。对于EPROM型单片机,在EPROM编程期间,此引脚接收编程脉冲(PROG功能)PSEN外部程序存储器读选通信号输出端在从外部程序存储取指令(或数据)期间,PSEN在每个机器周期内两次有效。PSEN同样可以驱动八LSTTL输入。EA/VppEA/Vpp为内部程序存储器和外部程序存储器选择端。当EA/Vpp为高电平时,访问内部程序存储器,当EA/Vpp为低电平时,则访问外部程序存储器。对于EPROM型单片机,在EPROM编程期间,此引脚上力町伏EPROM编程电源(Vpp)。输入/输出引脚P0.0-P0.7P1.0-P1.7P2.0-P2.7P3.0-P3.7P0口(P0.0-P0.7)是一个8位漏极开路型双向I/O口,在访问外部存储器时,它是分时传送的低字节地址和数据总线,P0口能以吸收电流的方式驱动八个LSTTL负载。P1口(P1.0-P1.7)是一个带有内部提升电阻的8位准双向I/O口。能驱动(吸收或输出电流)四个LSTTL负载。P2口(P2.0-P2.7)是一个带有内部提升电阻的8位准双向I/O口,在访问外部存储器时,它输出高8位地址。P2口可以驱动(吸收或输出电流)四个LSTTL负载。P3口(P3.0-P3.7)是一个带有内部提升电阻的8位准双向I/O口。能驱动(吸收或输出电流)四个LSTTL负载。AT89C52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。CPU是单片机的核心部件。它由运算器和控制器等部件组成。(1) 运算器运算器的功能是进行算术运算和逻辑运算。可以对半字节(4位)、单字节等数据进行操作。例如能完成加、减、乘、除、加1、减1、BCD码十进制调整、比较等算术运算和与、或、异或、求补、循环等逻辑操作,操作结果的状态信息送至状态寄存器。89C52运算器还包含有一个布尔处理器,用来处理位操作。它是以进位标志位C为累加器的,可执行置位、复位、取反、等于1转移、等于0转移、等于1转移且清0以及进位标志位与其他可寻址的位之间进行数据传送等位操作,也能使进位标志位与其他可移位寻址的位之间进行逻辑与、或操作。(2) 程序计数器PC程序计数器PC用来存放即将要执行的指令地址,共16位,可对64K程序存储器直接寻址。执行指令时,PC内容的低8位经P0口输出,高8位经P2口输出。(3) 令寄存器指令寄存器中存放指令代码。CPU执行指令时,由程序存储器中读取的指令代码送入指令寄存器,经译码后由定时与控制电路发出相应的控制信号,完成指令功能。本设计采用ATMEL的AT89C52微处理器,主要基于以下几个因素:AT89C52为51内核,仿真调试的软硬件资源丰富。性价比高,货源充足。功耗低,功能强,灵活性高。DIP40封装,体积小,便于产品小型化。为EEPROM程序存储介质,1000次以上擦写周期,便于编程调试。工作电压范围宽:2.7V-6V,便于交直流供电。2.3显示电路的选择与设计对于数字显示电路,通常采用液晶显示或数码管显示。对于一般的段式液晶屏,需

要专门的驱动电路,而且液晶显示作为一种被动显示,可视性差,不适合远距离观看;对于具有驱动电路和单片机接口的液晶显示模块(字符或点阵),一般多采用并行接口,对单片机的接口要求较高,占用资源多;另外,AT89C52单片机本身无专门的液晶驱动接口。而数码管作为一种主动显示器件,具有亮度高、响应速度快、防潮防湿性能好、温度特性极性、价格便宜、易于购买等优点,而且有远距离视觉效果,很适合夜间或是远距离操作。因此,本设计的显示电路采用8段数码管作为显示介质。 数码管显示可以分为静态显示和动态显示两种。由于本设计需要采用两位数码管显示时间,如果静态显示则占用的口线多,硬件电路复杂。所以采用动态显示。复位电路LED显示复位电路LED显示AT89C52单片机控制器开关电路图1.3显示电路基本原理图动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。通常各位数码管的段选线相应并联在一起,由一个8位的I/O口控制;各位的公共阴极位选线由另外的I/。口线控制。动态方式显示时,各数码管分时轮流选通,要使其稳定显示必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的段码,在另一时刻选通另一位数码管,并送出相应的段码,依此规律循环,即可使各位数码管显示将要显示的字符,虽然这些字符是在不同的时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短就可以给人同时显示的感觉。数码显示管分为共阳数码管和共阴数码管两种,共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起,如图1.4(b),通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起,如图(c),通常,公共阴极接低电平(一般接地),其它管脚接段驱动电路输出端,当某段驱动电路的输出端为高电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可

显示出各种数字或字符。此时,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。图L4(a)数码管引脚图(b)共阳极内部结构图(c)共阴极内部结构图本设计采用共阴极数码显示管做显示电路,由于采用的是共阴的数码显示管,所以只要数码管的a、b、c、d、e、f、g、h引脚为高电平,那么其对应的二极管就会发光,使数码显示管显示。〜9的编码见表1.1。动态显示电路由显示块、字形码驱动模块、字位驱动模块三部分组成。如图1.3所示为本系统的5位LED动态显示器接口电路。图中,5个数码管的8段段选线分别与外接上拉电阻的单片机P0口对应相连,而5个数码管的位控制端则和NPN型三极管的集电极相连接。单片机的P2.0〜P2.4口则分别对应数码显示管的最低位到最高位,P2.0〜P2.4口分别和五个NPN型三极管的基极相连,做三极管导通的控制端,而NPN型三极管选用9013型三极管。根据9013的资料显示:其耐压值为40V,最大功率为0.65W,最大电流为0.5A,电气性能完全满足本设计的要求。另外数码管显示是采用动态显示,所以对三极管的开关频率有一定的要求。根据电子秒表的设计计算可知动态显示的频率最高为3KHz,而9013的导通频率为150MHz,完全能满足本设计的要求,所以最终选取9013三极管最为位控制开关。由于数码管是有P0口来驱动,它内部没有上拉电阻,作为输出口时驱动能力比较弱,不能点亮数码显示管,因此P0口必须接上拉电阻来提高驱动能力。另外一位共阴数码管的驱动电流一般为20mA左右,如果电流太大容易造成数码管损坏,所以也需要根据电源的电压值来确定上拉电阻的大小。如果电阻过小,势必会形成灌电流过大,造成单片机IO的损坏,如果电阻过大,那么对拉电流没有太大的影响。电源供电电压为5V,当上拉电阻选用220Q电阻时灌电流为22mA。不会损坏单片机的I/O口,同时也可以为数码显示管起到限制电流的保护作用。显示电路显示电路如图4所示,它的位控端连接在一起,共用2根数据线,。假设段控端有段码输入时,每个数码管的段控端都收到了段码,但只有位控线有效的数码管才能显示数据,反之亦反。共阳极数码管段控端为低电平有效,位控端高电平有效,共阴极数码管恰恰相反。八位一体数码管用于动态扫描,即把数码管显示数据的段控码分时送到其

对应的段控端。当一个段控码被送到段控端时,显示此段控码数据的数码管,它的位控端置有效电平,数码管点亮;而其他数码管的位控端送无效电平,数码管不亮。持续点亮一段时间,再送其它的段控码,依次把显示段控码的数码管,使其位控端为有效电平,其他数码管的位控端为无效电平,就这样数码管依次被点亮。RESPACK-8231212RESPACK-82312121617801134OCX,4显示电路因为52单片机的I/O口的驱动能力有限,所以在点亮数码管一定要加上驱动电路,如图左上角的电路。jjlatx2LATXTSHAjjlatx2LATXTSHA二EIANESP2.4按键电路的选择与设计 1 1 9 201 12345本设计中有四个按键,分别实现开始、暂停、复位和查看功能。这三个键可以采用中断的方法,也可以采用查询的方法来识别。对于复位键和查看键,主要功能在于数值复位和对上次计时时间的查看,对于时间的要求不是很严格,而开始和暂停键主要用于时间的锁定,需要比较准确的控制。因此可以考虑,对复位键和查看键采用查询的方式,而对于开始和暂停键采用外部中断。四个按键均采用低电平有效,具体电路连接图如图

1.5所示。当按键没有按下时,单片机的I/O口直接连接电源,因此需要接上拉电阻来进行限流,本设计中选取阻值为2kQ的电阻作为上拉电阻,根据计算可知此时的灌电流为2.5mA,查看AT89C52的资料得知次电流在安全范围内,符合安全设计要求。图1.5按键电路按键电路中由于采用了外部中断,所以需要用至【JP3口的第二功能。P3口引脚的第二功能如表1.2表1.2P3口引脚第二功能表P3口引脚特殊功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INTO(外部中断0请求输入端)P3.3INT1(外部中断1请求输入端)P3.4TO(定时器/计数器0计数脉冲输入端)P3.5T1(定时器/计数器1计数脉冲输入端)P3.6WR(片外数据存储器写选通信号输出端)P3.7RD(片内数据存储器读选通信号输出端)2.5时钟电路的选择与设计单片机的时钟信号用来提供单片机内各种微操作的时间基准,89S52片内设有一个由反向放大器所构成的振荡电路,XTAL1和XTAL2分别为振荡电路的输入和输出端,89S52单片机的时钟信号通常用两种电路形式得到:内部振荡方式与外部振荡方式。外部方式的时钟很少用,若要用时,只要将XTAL1接地,XTAL2接外部振荡器就行。对外部振荡信号无特殊要求,只要保证脉冲宽度,一般采用频率低于12MHz的方波信号。时钟发生器把振荡频率两分频,产生一个两相时钟信号P和P供单片机使用。P1 2 1在每一个状态S的前半部分有效,P在每个状态的后半部分有效。本设计采用的内部振2荡方式,内部振荡方式所得的时钟信号比较稳定,实用电路中使用较多。本设计系统的时钟电路如图1.4所示。只要按照图1.6所示电路进行设计连接就能使系统可靠起振并能稳定运行。图中,电容器C、C起稳定振荡频率、快速起振的作用,电容值一般为1 25〜33pF。但在时钟电路的实际应用中一定要注意正确选择其大小,并保证电路的对称性,尽可能匹配,选用正牌的瓷片或云母电容,如果可能的话,温度系数尽可能低。本2.5.2时序AT89C52典型的指令周期(执行一条指令的时间称为指令周期)为一个机器周期,一个机器周期由六个状态(十二振荡周期)组成。每个状态又被分成两个时相P和P。TOC\o"1-5"\h\z1 2所以,一个机器周期可以依次表示为SP,SP……,SP,SP。通常算术逻辑操作在11 12 61 62P时相进行,而内部寄存器传送在P时相进行。1 2

ALE(a)1字节1周期指令(b)2字节1(a)1字节1周期指令(b)2字节1周期指令(c)1字节2周期指令图1.789S52时序 图1.7给出了AT89S52单片机的取指和执行指令的定时关系。这些内部时钟信号不 能从外部观察到,所用XTAL2振荡信号作参考。在图中可看到,低8位地址的锁存信号 ALE在每个机器周期中两次有效:一次在SP与SP期间,另一次在SP与SP期间。12 21 42 51对于单周期指令,当操作码被送入指令寄存器时,便从SP开始执行指令。如果是 12双字节单机器周期指令,则在同一机器周期的S期间读入第二个字节,若是单字节单机 4器周期指令,则在S期间仍进行读,但所读的这个字节操作码被忽略,程序计数器也不 4加1,在SP结束时完成指令操作。图1.7的(成和(b)给出了单字节单机器周期和双字62节单机器周期指令的时序。89S52指令大部分在一个机器周期完成。乘(MUL)和除(DIV) 指令是仅有的需要两个以上机器周期的指令,占用4个机器周期。对于双字节单机器周 期指令,通常是在一个机器周期内从程序存储器中读入两个字节,唯有MOVX指令例外。 MOVX是访问外部数据存储器的单字节双机器周期指令。在执行MOVX指令期间,外部数 据存储器被访问且被选通时跳过两次取指操作。图1.7中(c)给出了一般单字节双机器周期指令的时序。2.6复位电路的选择与设计关于单片机的置位和复位,都是为了把电路初始化到一个确定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值,复位是一个很重要的操作方式。但单片机本身是不能自动进行复位的,必须配合相应的外部电路才能实现。当AT89C52单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平 时,单片机就完成了复位操作。如果RST持续为高电平,单片机就处于循环复位状态,而无法执行程序。因此要求单片机复位后能脱离复位状态。而本系统选用的是12MHz的

晶振,因此一个机器周期为1US,那么复位脉冲宽度最小应为2US。在实际应用系统中,考虑到电源的稳定时间,参数漂移,晶振稳定时间以及复位的可靠性等因素,必须有足够的余量,根据应用的要求,复位操作通常有两种基本形式:上电复位、手动复位。上电复位要求接通电源后,自动实现复位操作。80C51单片机的上电复位POR(PowerOnReset)实质上就是上电延时复位,也就是在上电延时期间把单片机锁定在复位状态上。在单片机每次初始加电时,首先投入工作的功能部件是复位电路。复位电路把单片机锁定在复位状态上并且维持一个延时(记作TRST),以便给予电源电压从上升到稳定的一个等待时间;在电源电压稳定之后,再插入一个延时,给予时钟振荡器从起振到稳定的一个等待时间;在单片机开始进入运行状态之前,还要至少推迟2个机器周期的延时。立刻在ALE引脚上就可检测到持上述一系列的延时,都是利用在单片机RST引脚上外接一个RC支路的充电时间而形成的。典型复位电路如图1.8(a)所示,其中的阻容值是原始手册中提供的。在经历了一系列延时之后,单片机才开始按照时钟源的工作频率,进入到正常的程序运行状态。在电源电压以及振荡器输出信号稳定之后,又等待了一段较长的延时才释放RST信号,使得CPU脱离复位锁定状态;而立刻在ALE引脚上就可检测到持伯)典型电路 E辭.电路伯)典型电路 E辭.电路图1.8上电复位延时电路©改进电路由于标准80C51的复位逻辑相对简单,复位源只有RST一个(相对新型单片机来说,复位源比较单一),因此各种原因所导致的复位活动以及复位状态的进入,都要依靠在外接引脚RST上施加一定时间宽度的高电平信号来实现。标准80C51不仅复位源比较单一,而且还没有设计内部上电复位的延时功能,因此必须借助于外接阻容支路来增加延时环节,如图1.8(a)所示。其实,外接电阻R还是可以省略的,理由是一些CMOS单片机芯片内部存在一个现成的下拉电阻Rrst。例如,AT89系列的Rrst阻值约为50〜200kQ;P89V51Rx2系列的Rrst阻值约为40〜225kQ,如图1.9所示。因此,在图1.8(a)基础上,上电复位延时电路还可以精简为图1.8(b)所示的简化电路(其中电容C的容量也相应减小了)。

图1.9复位引脚RST内部电路在每次单片机断电之后,须使延时电容C上的电荷立刻放掉,以便为随后可能在很短的时间内再次加电作好准备。否则,在断电后C还没有充分放电的情况下,如果很快又加电,那么RC支路就失去了它应有的延迟功能。因此,在图1.8(a)的基础上添加一个放电二极管D,上电复位延时电路就变成了如图1.8(c)所示的改进电路。也就是说,只有RC支路的充电过程对电路是有用的,放电过程不仅无用,而且会带来潜在的危害。于是附加一个放电二极管D来大力缩短放电持续时间,以便消除隐患。二极管D只有在单片机断电的瞬间(即VCC趋近于0V,可以看作VCC对地短路)正向导通,平时一直处于反偏截止状态。手动复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作使单片机复位。单片机要完成复位,必须向复位端输出并持续两个机器周期以上的高电平,从而实现复位操作。本设计采用上电且开关复位电路,如图1.10所示上电后,由于电容充电,使RST持续一段高电平时间。当单片机已在运行之中时,按下复位键也能使RST持续一段时间的高电平,从而实现上电且开关复位的操作。通常选择C=10〜30吁,R=1K,本设计采用的电容值为22吓的电容和电阻为1K的电阻。图1.10单片机复位电路2.7系统总电路的设计系统总电路由以上设计的显示电路,时钟电路,按键电路和复位电路组成,只要将

单片机与以上各部分电路合理的连接就组成了系统总电路。系统总电路图如图1.11所/JnoAT89C52单片机为主电路的核心部分,各个电路均和单片机相连接,由单片机统筹和协调各个电路的运行工作并提供了XTAL1和XTAL2两个专用引脚接晶振电路,因此只要将晶振电路接到两个专用引脚即可为单片机提供时钟脉冲,但在焊接晶振电路时要尽量使晶振电路靠近单片机,这样可以为单片机提供稳定的始终脉冲。图1.11系统总电路图复位电路同晶振电路,单片机设有一个专用的硬件复位接口,并设置为高电平有效。按键电路与单片机的端口连接可以由用户自己设定,本设计中软件复位键和查看键分别接单片机的P1.1和P2.5,均设为低电平有效。而另外的开始键和暂停键两键使用了外部中断,所以需要连接到单片机的特殊接口P3.3和P3.2,这两个I/O口的第二功能分别为单片机的外部中断1端口和外部中断0端口。同样设置为位低电平有效。显示电路由五位数码管组成,采用动态显示方式,因此有8位段控制端和5位位控制端,八位段控制接P0口,P0.0~P0.7分别控制数码显示管的a、b、c、d、e、f、g、dp显示,AT89C52的P0口没有集成上拉电阻,高电平的驱动能力很弱,所以需要接上拉电阻来提高P0的高电平驱动能力。五位位控制则由低位到高位分别接到P2.0~P2.4口,NPN三极管9013做为位控制端的开关,当P2.0~P2.4端口任意一个端口为高电平时,与其相对应的三极管就导通,对应的数码管导通显示。通过以上设计已经将各部分电路与单片机有机的结合到一起,硬件部分的设计以大功告成,剩下的部分就是对单片机的编程,使单片机按程序运行,实现数字电子秒表的全部功能。3软件设计3.1程序设计思想本次设计,既可以用汇编语言编程也可以用C语言编程,该设计采用的是C语言编程,C语言是一种面向过程的程序设计语言,C语言简洁、紧凑,使用方便、灵活;本设计采用了C语言编写,C语言由于采用了二进制代码来编写程序,比用汇编语言采用助记符编程要容易理解些,在一定程度上简化了编程过程且用二进制代码代替了汇编语言的助记符。C语言的特点是:c是中级语言它把高级语言的基本结构和语句与低级语言的实用性结合起来。C语言可以象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。C是结构式语言结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。C语言功能齐全 C语言具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。另外C语言也具有强大的图形功能,支持多种显示器和驱动器。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的。C语言适用范围大C语言还有一个突出的优点就是适合于多种操作系统,如DOS、UNIX,也适用于多种机型。3.2程序流程图3.3定时器一、AT89C52单片机内部设有两个16位可编程的定时器/计数器,简称定时器0和定时器1,分别用T0和T1表示°TMOD为模式控制寄存器,主要用于控制T0和T1的工作模式以及工作方式,其各位的定义如下:D7D6D5D4D3D2D1D0GATEC//TM1M0GATEC//TM1M0工作方式1是以16位计数器参加计数°TL0计满后想TH0进位,而TH0溢出后对中断标志位TF0置1,并申请中断。T0是否溢出可用软件查询TF0是否为1来判断在图中,C/T=0时控制开关接通内部振荡器,T0对机器周期加1计数当C/T=0时,多路开关连续震荡器的12分频输出,T0对机器周期记数,这就是定时工作方式。其定时时间为:t=(65536-T0初值)X时钟周期X12当GATE=0时,INT0被封锁仅由TR0便可控制T0开启和关闭。当GATE=1时,T0的开启和关闭取决于INT0和TR0相与的结果,即只有当INT0=1和TR0=1是,T0才被开启。程序中令T0位定时工作方式1。机器周期为1us,通过公式和定时时间t可计算出TO中TH、TL初始值。#include<reg51.h>#defineucharunsignedchar(sbitP20=P2"0;sbitP21=P2"1;sbitKS=P2"5;sbitKP=P2"6;sbitKC=P2"7;intge,shi;ucharcodetab[]=(0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,};} 〃初始化程序voiddelay_ms(unsignedintms)//1ms延时(unchara;while(ms--)for(a=123;a>0;a—);}voidt0intinit() //定时器T0初始化(TMOD=0x01;TH0=0x3c;//50ms定时TL0=0xb0;EA=1;ET0=1;}voidTimer0Interrupt(void)interrupt1 //定时器T0中断方式1(uchartime;TH0=0x3c;TL0=0xb0;time++;if(time==50) //2X50ms=1s(time=0;ge++;}主程序为:voidmain()t0intinit();while(1)display();while(!KS)(display();if(KS)TR0=1;while(!KP)display();if(KP)TR0=0;while(!KC)display();if(KC)TR0=0;shi=0;ge=0;if(ge==10)ge=0;shi++;if(shi==10)shi=0;显示子程序为:voiddisplay()(P20=1;P0=tab[ge];delay_ms(1);P20=0;P21=1;P0=tab[shi];delay_ms(1);P21=0;3.4主程序设计本系统程序主要模块由主程序、定时中断服务程序、外部中断0服务程序和外部中断1服务程序组成。其中主程序是整个程序的主体。可以对各个中断程序进行调用。协调各个子程序之间的联系。系统(上电)复位后,进入主程序,主程序流程图如图2.1。首先对系统进行初始化,包括设置各入口地址、中断的开启、对各个数据缓存区清“0”、赋定时器初值,初始化完毕后,就进入数码管显示程序。数码管显示程序对显示缓存区内的数值进行调用并在数码管上进行动态显示。显示一次就对P1.1和P2.5进行一次扫描,查询复位键P1.1是否按下,当复位键按下后,程序返回开始,重新对系统进行初始化。当没有按下复位键时,程序则扫描P2.5是否按下,当P2.5没有按下则返回显示程,不断地调用显示缓存区的数据进行显示。使用户能清楚的看到当前电子秒表所记录的时间。当查询到P2.5按下后则跳转到另外一段显示程序并调用最红缓存区的数据进行显示,此时显示的

时间即为上一次计时的时间。与此同时,在P2.5按下后单片机执行显示程序的同时也在对P2.5进行扫描,当P2.5断开后立即跳转回之前的显示程序显示当前的计时时间。在主程序中还进行了赋寄存区的初始值、设置定时器初值以及开启外部中断等操作,当定时时间到后就转去执行定时中断程序。当外部中断有请求则去执行外部中断服务程序。并在执行完后返回主程序。图2.1主程序流程图

2.4中断程序设计现在方案中采用了三个中断,外部中断INTO,INT1和定时中断TO。CPU在响应中断时,先处理高级中断,在处理低级中断,若有多个同级中断时,则按自然优先顺序处理。例如当CPU正在处理一个中断申请时,有出现了另一个优先级比它高的中断请求,这是,CPU就暂停终止对当前优先级较低的中断源的服务,转去响应优先级比它高的中断请求,并为其服务。待服务结束,再继续执行原来较低级的中断服务程序。而当CPU为级别高的终端服务程序服务时,如果级别低的中断发出中断请求,此时CPU是不会响应的,所以为了避免开始和暂停两个按键中的一个出现没有响应的情况,在进行程序编辑时要注意对中断的使用,避免出现中断的嵌套。,合理分配中断对本设计的实现是至关重要的。另外由于数字式电子秒表的最小精度位1ms,属于高精度电子秒表。定时器T0的定时周期也为1ms,为了使电子秒表暂停键按下后CPU能马上去响应中断程序,必须将暂停的外部中断级别高于定时计数器的中断级别。避免出现CPU执行完定时溢出中断程序后再响应外部中断程序,影响计时精度。AT89C52的自然优先级顺序排列如下:中断源 最高外部中断0定时/计数器0溢出中断外部中断1定时/计数器1溢出中断串行口中断 最低数字式秒表中的两个按键采用了中断实现功能。开始采用外部中断INT0,暂停采用外部中断INT1。另外程序中还用到了定时/计数器0溢出中断进行计时。依据设计要求,暂停的外部中断INT1中断级别最高,计时的定时/计数器0溢出中断次之,开始的外部中断INT0级别最低。(1)外部中断0服务程序:外部中断0服务程序结合外部P3.2停止键实现数字电子秒表的停止功能,具体流程图如图2.2o当按下P3.2停止键按下向CPU发出外部中断请求,CPU转向外部中断0服务程序执行,停止定时器。另外将当前显示的时间进行一次存储,存进中间寄存区。最后中断返回。外部中断。入口停止定时器TO一次存储中断返回图2.2外部中断0服务程序流程图(3)定时中断服务程序当定时/计数器TO器溢出后,向CPU发出中断请求信号。CPU跳转到定时中断程序执行,具体流程如图2.4。定时中断程序是一个进位程序,主要负责对1ms的加一。1ms位没有满十就跳出中断程序,返回显示程序。当1ms位满十后就对1ms位清零,向10ms位加一,同时检测10ms位是否满十,没有满十就跳出中断程序,返回显示程序。如果满十就向100ms位加一,依次类推,最终达到99.999秒后归零,从零开始再次计时。定时/计数器T0工作在方式0下,TH0和TL0组成一个13位的二进制数计数器。单片机开机或复位时,它的值为00H,当T0启动后,从第一个输入脉冲开始计时,每来一个脉冲计数加一,即从0000000000000开始计数到1111111111111,再计数一个脉冲时TH0和TL0组成的13位计数器将会从13个1变成13个0,并产生溢出,溢出位将被送到TF0标志位,通过溢出标志产生溢出中断请求。显然,T0定时器在方式0下引起一次中断所允许计数的最多脉冲个数为213个。但如果定时计数器如果每次都固定从0开始计数,到计满后,再向CPU发出溢出中断请求信号那是毫无意义的。为了使定时计数器在规定的计数脉冲个数字之后(此时应小于213个脉冲),向CPU发出溢出中断请求,可采取预先向TH0和TL0中放入一个初值X的方法,使计数器以X值为起始值开始计数,即X+1,X+2,……直至计数器计满,从1全变为0。设需要计数的脉冲个数为Y,则有:X+Y=213在定时方式下:定时时间间隔位t=(213—X)*振荡周期*12 现在本设计要求1ms实现一次中断,选择定时器T0工作在方式0。所以需要根据以上条件计算出T0的初值。设T0的初值为X,贝(213—X)*12/12*106=1*10-3转换位十六进制数X=7192=1110000011000B即TH0=0E0H(取X的高8位)TL0=18H(取X的低5位)由于定时1ms只是一个理想化的时间,其中并没有考虑到中断后单片机执行语句所花的时间。虽然执行语句所花的时间很短只有即微秒,但积少成多,数字秒表一秒中要溢出中断1000次,积累起来误差就能达到毫秒级,这对于精度到达毫秒级的数字电子秒表来说是很大的误差。所以要在后期编程时还要将单片机读程序的时间考虑进去,在对定时器赋初值时将单片机需要执行的语句所花的时间加上,这样就能使数字电子秒表的误差达到最小。定时中断服务程序入口1ms位加一判断1ms位是否满10 -1ms位清零,10ms位加一判断1ms位清零,10ms位加一判断10ms位是否满1010ms10ms位清零,100ms位加一100ms位清零,1s位加一1s位清零,10s位加一100ms位清零,1s位加一1s位清零,10s位加一10s位清零中断返回图2.4定时中断服务程序4-数字电子秒表的安装与调试4.1.软件的仿真与调试ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件,它可以仿真、分析(SPICE)各种模拟器件和集成电路。该软件的主要特点总结后有以下四点:①实现了单片机仿真和SPICE电路仿真相结合的功能。②支持目前主流单片机系统的仿真。③提供了软件调试功能,并可以与WAVE联合仿真调试。④具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。在电子领域中也起到了很大的作用,它的出现仿真不需要先焊接电路,可以先仿真调试通过后在焊电路,节省了不少在硬件调试上所花的时间。ProteusISIS的工作界面是一种标准的Windows界面,如图1.19所示。它包括标题栏、主菜单、状态栏、标准工具栏、绘图工具栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口等十几个工具,方便了使用者的使用。ProteusSISI绘制原理图的操作与Protel99se绘制原理图的操作基本相同,在这里就不再作赘述。下面拿本设计中的一个仿真例子作简述说明。运行ProteusSISI后,绘制病床呼叫系统的原理图。首先打开已经画好的proteusDSN文件,双击图中的AT89C52芯片,就弹出一个窗口,在ProgramFile项中通过路径选择在Keil中生成的HEX文件,双击选中后确定,这样仿真图中的AT89C52芯片就已经读取了本设计中的HEX文件。单击“三角形按钮”进行仿真。通过对仿真结果的观察来对程序进行修改,最终使程序到达设计要求。4.2硬件的安装与调试按照之前设计好的数字电子秒表原理图,详细计算系统中各个元件的参数,选择相应器件,制作实际电路板。由于考虑到万能板大小的问题及元件之间连线的方便,在焊接元器件前必须考虑元件的布局然后进行实际操作。制作好的电路板可以用万用表(200欧姆档)的红、黑表笔测试电路板的每条走线,当其电阻非常小时,证明走线没有断开,当其电阻很大时,证明该条走线断了,应该重新走线,使电路板在电气上得到正确地连接。选用万用表的20K欧姆档,检测电路中是否存在短路。因为系统采用的是共阴极数码管作为显示电路,必须确保数码管的公共端接的是低电平。(1)晶振电路的测试

在单片机正常运行的必要条件是单片机系统的时钟稳定正常。实际中,因为各种原因导致系统时钟不正常而出现系统无法正常运行的情况时有,因此系统时钟是否振是通电检查的首要环节。在系统通电的状况下,用万用表的直流电压档(20V),分别测量XTAL1和XTAL2引脚的电压,看是否正常,在调试过程中,测得电压XTAL1引脚应为2.05V,XTAT2应为2.15V。复位电路的测试复位不正常也会导致系统不能工作。如果复位引脚始终为高电平,系统将始终处于复位状态;如果始终为低电平,不能产生复位所需的高电平信号脉冲,则系统也可能无法正常工作。单片机正常工作时,RST复位引脚应为0V,按下复位按键时,复位引脚为咼电平5V左右。显示电路的测试显示电路是数字电子秒表正常运行最直观的观察窗口,我们可以通过观察显示电路的显示结果观察系统能否正常运行。当显示电路按照电路图焊接好后,用万用表的测二极管档位,将黑表笔接共阴数码管的公共段,然后将红表笔接数码管的各段,当数码管的段能正常显示,说明各点焊接正常。4.3系统程序的烧录图3.1Debiceselection在软件调试中,使用当今流行的功能强大且普遍的WAVE6000软件、进行软件编译与调试,使用MicrocontrollerISPSoftware及其配套的单片机对程序进行烧录。软件调试的流程是这样的:先分别对主要的功能程序模块进行模拟仿真调试;然后再将各程序模块组织起来进行统调。图3.1DebiceselectionAtmelMicrocontrollerI5PSpFtwareThedevicecouldnotbeinitialisedcorrectly.Pleasecheckand

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论