基于单片机的电子计时秒表的设计和实现
2016-03-20严敏
严 敏
(江苏联合职业技术学院 扬州商务分院, 江苏 扬州 225127)
在日常生活中,计时秒表的应用随处可见,比如:运动会的比赛场现场、实验室等等。此外,我们使用的手机、电子表也都具备秒表的功能。秒表以其独有的计时准确、成本低廉等优点,为人们提供了很大的方便,因而得到广泛的应用。[1-2]本文设计了以AT89C51单片机为核心的电子计时秒表。在Proteus仿真平台进行系统硬件设计,在Medwin3.0开发环境中采用C语言进行系统程序设计,联合调试直至成功。再使用全国技能大赛单片机项目的指定设备亚龙YL-236构建电子秒表,进行实际验证。
一、总体设计要求
本设计秒表能够实现从0.1秒到59分59.9秒的循环计数,计时精度要求为0.1 s。当秒计到60,秒清零,同时分加1;当分计到60,分清零,重新开始计时。该设计使用6个共阳型LED数码管进行计时数值的显示。LED数码管左起第2、3两位显示分,第4、5两位显示秒的整数部分,第6位显示秒的小数部分,第1位不显示。有三个独立式按键,分别为启动键、停止键、清零键。总体结构如图1所示。
图1 电子计时秒表总体结构
二、硬件设计
本次设计使用AT89C51单片机,它的主要任务是对按键的状态进行扫描,然后控制其内部的定时/计数器进行工作,通过LED数码管显示计时数值。AT89C51单片机的P0口接LED数码管的段码(a、b、c、d、e、f、g、dp),P2 口接 LED 数码管的位码,P3口的P3.0、P3.1、P3.2分别接启动键、停止键、清零键这三个独立按键。按键的一端接地,另一端通过电阻接电源。当按键按下时,输入到单片机I/O口的是低电平;当按键没有按下时,输入到单片机I/O口的是高电平。采用Proteus软件绘制系统硬件电路图,表1列出了绘制电路原理图所需的元器件清单。
三、软件设计
硬件接好后,启动MedWin3.0单片机集成开发环境,采用C51语言编写系统程序,编译并排除错误,直至无误。生产.hex十六进制文件,加载到51单片机芯片中,就可以看到电子计时秒表的仿真运行效果。软件编程主要完成按键的扫描、计时、数码管的显示等功能。采用模块化设计思路,包括系统初始化程序、LED数码管显示子程序设计设计、独立按键扫描子程序设计、定时器中断服务子程序设计、延时子程序设计等等。程序流程如图2-4所示。
表1 元器件清单
图2 主程序流程图
图3 T0中断子程序流程图
图4 LED显示子程序流程图
(一)定时器中断服务子程序
本设计使用单片机定时器的中断方式计时,定时器T0、T1有4种工作方式,通过定时器方式控制寄存器TMOD的M1、M0两位进行设置。[3]如表2所示。由于T0、T1都是增量计数器,因此在计算初值时,需要将计数的最大值减去实际计数值,公式:计数初值=2n-实际计数值,其中n为定时器位数。[4]比如:在工作方式1下,要定时20 ms,初值=65536-20000(晶振频率为12 MHz时机器周期为1 us)。在工作方式1下最大定时约为65 ms,超过此值,需要增加中断次数。本次设计电子计时秒表的精度为0.1 s,即100 ms,因此定时器定时50 ms,中断两次便可实现。其部分代码设计如下所示:
表2 定时器工作方式
(二)LED数码管显示子程序设计
在编程时,LED数码管要显示哪个数字或字符,只需写入相应的字段码,利用动态扫描的方式,分时轮流选通各个LED数码管。当扫描速度达到一定程度时,由于人眼的视觉暂留效应就分辨不出来了,感觉是所有LED数码管同时点亮。其部分代码设计如下所示:
(三)独立按键扫描子程序设计
由于按键为机械弹性开关,机械触点在断开、闭合时会出现一连串的抖动,键抖动会使得单片机把一次按键误当成多次。为了确保对按键的一次闭合只做一次处理,必须先要进行按键去抖处理,在按键闭合稳定后再做出相应处理。按键的抖动,可以使用硬件或软件两种方法消除,这里使用软件消抖。当单片机检测到有键闭合,先调用一个5~10 ms的延时程序,等前沿抖动消失后再一次检测键的状态,如果仍然为低电平,才确定真正有键按下,其部分代码设计如下所示:
四、仿真与实验
图5 电子计时秒表的仿真
图6 电子计时秒表的实验
从图5、图6仿真和实验结果可以看出:本设计秒表能够实现从0.1秒到59分59.9秒的循环计数,符合设计要求。
五、结束语
电子计时秒表在人们的日常生活中得到了广泛的应用。本文设计了基于单片机的电子计时秒表,该设计具有电路简单、计时准确、系统稳定、成本低廉等优点。同时运用Proteus虚拟仿真技术和基于单片机技能大赛设备的实际操作,能够很好地帮助学生理解定时/计数器以及中断的应用功能,对于单片机系统的教学演示和实际设计也具有很大的应用价值。
[1]黄华飞.基于Proteus的数字电子钟设计[J].科技创新导报 ,2014(28):101-102.
[2]李琼.基于Proteus仿真的数字电子钟设计[J].中小企业管理与科技,2011(12):216-217.
[3]张杰.基于Proteus软件的单片机数字时钟系统开发[J].中国新技术新产品,2010(13):40-41.
[4]郭海丽.基于单片机的数字秒表设计[J].电子元器件应用,2014(20):27-29.