基于单片机的数字秒表设计
扫描二维码
随时随地手机看文章
摘要:文中设计了一种以单片机为控制核心的数字秒表。该数字秒表采用C语言开发,通过数码管显示计时结果。对系统硬件电路和软件进行了设计,以Proteus和Keil软件为开发平台,对数字秒表进行了仿真。仿真结果表明该数字秒表精度高、稳定性强。
关键字:单片机;数字秒表;仿真
当今,计算机技术带来了科研和生产重大飞跃,微型计算机的应用已渗透到生产、生活的各个方面。单片微型计算机具有体积小、价格低、功能强的特点,随着性能不断提高,其适用范围愈来愈宽,在计算机应用领域占有重要的地位。秒表应用于我们生活、工作、运动等需要计时的方面。秒表的数字化给人们生产生活带来了极大的方便,而且大大的扩展了秒表原先的功能。它由刚开始的机械式秒表发展到今天所常用的数字式秒表。秒表的计时精度越来越高,功能越来越多,构造也日益复杂。本文结合单片计算机,实现了一种基于AT89C52单片机的数字秒表的设计,并且利用Proteus和Keil软件实现了仿真。
1 系统设计方案
1.1 系统设计要求
(1)秒表计时最大值为59分59.99秒。
(2)秒表由六位七段LED数码管显示,其中高两位显示“分”,中间两位显示“秒”,低两位显示“0.01”秒。
(3)秒表拥有计时、暂停、清零功能。
(4)设置三个功能键:键1开始计时,键2暂停计时,键3清零计时。
1.2 总体方案设计
数字秒表系统主要完成对计时实时的显示,精度达到0.01s,以及通过功能键可以使当前计时暂停或清零。系统主要包括时钟电路、复位电路、按键电路以及数码管显示电路。
系统采用六个共阳极数码管,其中八位数据口与单片机的P0口通过74LS245双向总线收发器相接,以增加P0的驱动能力。6个片选信号连接单片机P2口的低六位。该电路可满足对计时时间的显示,最小显示单位为0.01s,溢出则向前进位,显示时间的范围为0到59分59.99秒。3个功能键连接到P3口的低三位,控制系统的计时、暂停和清零。系统的整体组成框图如图1所示。
2 硬件电路设计
2.1 单片机的选型
由于本系统只需要单片机完成对计时的显示以及处理定时/计数的中断,对于I/O资源以及处理速度无特殊要求,所以选择Atmel公司生产的AT89C52单片机。AT89C52增加了在线调试功能,程序可以通过JTAG接口下载、调试和固化,可实现实时仿真和在线编程或在系统编程,具有通过网络进行升级、维护的功能。
采用MSC-51系列的单片机相比有两大优势:(1)片内程序存储器采用快闪存储器,使程序的写入方便,还可任意的擦写1000次,使开发更为方便。(2)提供了更小的芯片,使整个硬件电路的体积更小。本设计采用了MSC-51系列89C52单片机,具有程序加密功能且物美价廉,经济实用。
2.2 时钟电路
单片机工作的时间基准是由时钟电路提供的。在单片机的XTAL1和XTAL2两个管脚,接一只晶振及两只电容就构成了单片机的时钟电路。时钟电路如图2所示。电路中,电容器C1和C2对振荡频率有微调作用,通常取(30±10)pF,本设计选用30pF。电路中的品振采用石英晶体震荡器,晶振频率选择12MHz。石英晶体震荡器具有非常好的频率稳定性和抗外界干扰的能力。通过基准频率来控制电路中的频率的准确性。
2.3 复位电路
单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作。无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。89系列单片机的复位信号是从RST引脚输入到芯片的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚有一个高电平并维持2个机器周期(24个振荡周期),则CPU就可响应并且将系统复位。复位分为手动复位和上电复位。系统复位电路如图3所示。
2.4 数码管显示电路
本系统使用了6个共阳极数码管、设计LED显示驱动是一个非常重要的问题,显示电路由LED显示器、段驱动电路和位驱动电路组成。由于单片机的并行口驱动电流太小,不能直接驱动LED显示器,段驱动电路通过74LS245双向总线收发器使P0口与数码管的八段相连,可增加P0的驱动能力。位驱动电路通过六只NPN三极管驱动使P2口的低六位作为位选信号,使之产生足够大的电流,来驱动LED达到足够的亮度,显示器才能正常工作。如果驱动电路能力差,即驱动电流过小,数码管显示亮度不够,而驱动电路驱动电流太大容易损坏数码管。
LED显示器显示控制方式有两种:静态和动态。本设计方案选择的是动态控制方式。由于一位数据的显示是由段码和位码信号共同配合完成的,因此,要同时考虑段和位的驱动能力,而且段的驱动能力决定位的驱动能力。
2.5 按键电路
本系统设置3个功能按键分别为KEY1、KEY2和KEY3,其中KEY1是开始按键,与P3.0相连,按下时数码管开始计时;KEY2是停止按键,与P3.1相连,按下时数码管停止计时:KEY3是清零按键,与P3.2相连,按下时数码管全部清零。当数码管计时时,不能直接按清零按键,只能按停止按键才能停止,再按清零按键全部显示初始化0。
3 系统软件设计
系统软件由主程序模块、延时模块、键盘扫描程序模块以及数码管驱动程序模块组成。
本设计中,计时采用定时器T0中断完成,其余状态循环调用显示子程序,当功能按键按下时,转入相应功能程序。其主程序流程图如图4所示。
4 仿真结果
程序在Keil uVision3环境下编写,编译通过后生成.hex文件加载到Proteus下可正常运行。程序刚运行前数码管显示初值为0000.0 0,按下键KEY1系统开始计时,程序中每0.01s进入一次定时中断。在程序运行过程中若按下键KEY2系统暂停计时,数码管显示计时截至状态;若按下键KEY3,数码管清零。图5为键KEY1抬起、键KEY2按下的状态。
5 结束语
本文利用AT89C52单片机设计了具有计时开始、暂停及清零功能的数字秒表,计时最大值为59分59.99秒,计时精度为0.01秒。利用Proteus和Keil软件进行了仿真,达到了预期的效果。整体电路的计时精度高,电路结构简单,抗干扰能力强,具有广泛的应用前景。