谭艳春 朱又敏
摘 要:51系列单片机以系统架构开放、工作性能灵活可靠、价格低廉的优势,在工业自动化、交通控制、智能仪表等众多领域得到了广泛的应用。为了进一步研究并拓展其应用场景,本文利用STC89C52单片机、KeilC51和Proteus软件对多功能体育用计时器进行了完整的软硬件开发与设计。Proteus在线仿真验证了系统设计的正确性及合理性,具有较强的实际指导意义和应用价值。
关键词:KeilC51;Proteus;STC89C52;计时器
中图分类号:TP399 文献标识码:A
Abstract:MCS-51 has been widely used in industrial automation,traffic control,intelligent instruments and many other fields because of its open system structure,flexible and reliable performance and low price.In order to further study the SCM and expand its application,the paper designs and develops the software and hardware of multi-functional sports timer through MCU STC89C52,KeilC51 and Proteus.The online simulation of Proteus verifies the validity and rationality of the system design,proving its considerable guiding significance and practical value.
Keywords:KeilC51;Proteus;STC89C52;timer
1 引言(Introduction)
STC89C52单片机使用经典的MCS-51内核,但又做了很多改进使该芯片具有传统51單片机不具备的功能,它以低功耗、高性能可为众多嵌入式控制应用系统提供灵活、智能、有效的解决方案[1-3]。
Proteus和Keil是目前比较流行的单片机仿真软件和集成开发软件。其中,Proteus不仅具有其他EDA工具软件的仿真功能,还能仿真单片机及外围器件,是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台;而Keil支持51单片机的所有兼容机。所以将Proteus和Keil应用于单片机的前期开发设计与仿真,可以充分检验系统设计的合理性及可靠性,避免直接搭建硬件电路带来的一些不可逆的严重后果,如因设计问题导致芯片烧毁等,因此用Proteus和Keil进行系统的前期开发仿真对硬件电路的搭建具有实际指导意义和作用[4-6]。
2 硬件电路设计(Design of hardware circuit)
该系统的硬件电路主要包括STC89C52最小电路模块、锁存电路模块、按键模块和显示模块四部分,电路方框图如图1所示。
各电路模块的具体说明如下:
2.1 STC89C52最小电路模块
该模块采用内部时钟方式,晶振频率选为12MHz,由此可知一个机器周期为1us。设计时器的最小计时单位为tmin ms,因此定时器T0的初始值计算公式为:TH0=(65535-tmin)/256;TL0=(65535-tmin)%256。
2.2 锁存电路模块
锁存电路模块采用2块74HC573,它是一种包含八路3态输出的非反转透明锁存器。
2.3 按键模块
用K1—K4四个按键分别实现计时器的启动/停止、存储、回显和清零的功能,具体电路如图3所示。
2.4 显示模块
计时器从左到右依次显示为:分钟(2位,最多计时59分钟)、空1位、秒(2位,最多计时59秒)、空1位、10毫秒(2位,最多计时100个10毫秒)。
3 KeilC51环境下的编程(Programming in the KeilC51)
3.1 软件编程要点及难点分析
(1)启动/停止按键、计时按键、回显按键和清零按键信息分别通过STC89C52单片机的P3.2—P3.5的四个引脚输入。
(2)通过P0口将位选信息,以及需要显示的数字信息同时送给两个74HC573锁存器。
(3)1个74HC573锁存器接数码管的A-G,DP引脚,另1个74HC573锁存器接8个数码管的公共端,并通过STC89C52的P1.4和P1.5引脚控制两个锁存器的使能。
(4)该计时器最小计时单位tmin的选择:虽然人的手眼协调与反应时间和人当时的状态有很大关系,如兴奋的时候比沮丧的时候反应快,但大量的统计数据表明,正常人的反应时间一般不会低于100ms,因此本文设计的体育用计时器的最小计时单位选为10ms完全可以满足实际需求和应用,而没有必要再过分地细化。
(5)该系统的设计难点在于如何实现计时数据在正确位置的显示。因为所有的时间(本设计包括分、秒、100ms)都是通过并行I/O口送出,因此需要通过软件编程控制数据应在其对应的数码管上显示,即分显示在左数1位和2位、秒显示在左数4位和5位、100ms显示在左数7位和8位。
3.2 程序流程图
该系统的程序流程图如图2所示。
3.3 系统源代码
该多功能体育用计时器系统的代码比较多,因篇幅所限,故本文只介绍以下几个主要源代码模块[7,8]。
3.4 系统的应用拓展
本文设计的多功能体育用计时器的最多存储计时个数、回显个数及显示模式可根据实际情况进行调整。
(1)计时器最多存储计时个数及回显个数的调整。
如果要改变该计时器的最大存储计时个数及回显个数,实现方法特别简单,可通过重新定义变量temp_buf进行改变。例如将该数组的定义由temp_buf[10][3]变为temp_buf[20][3],则意味着该计时器的最大存储计时个数及回显个数由10个变为20个。
(2)计时器显示模式的调整。
计时器的显示模式应和实际需求相匹配,因此需要根据不同的应用场合进行适当的调整。例如有些应用场景不需要很高的精度(最小计时单位为秒即可),但要求计时较长(长达数个小时),此时可以选取这样的显示模式:小时(2位,最多计时99小时)、空1位、分(2位,最多计时59分)、空1位、秒(2位,最多计时59秒)。以上功能可以通过调整源代码中的void t0_server(void)interrupt 1和void display(u8 which_bit,u8 which_number)这两个函数来实现。当然如果8位显示还不能够满足实际需求,则可以通过增加硬件来实现。
4 程序加载及仿真演示(Program loading and simulation demonstration)
将调试过没有语法错误的代码文件*.HEX加载到Proteus原理仿真图的STC89C52单片机中,点击运行后,依次按下K1~K4,可以观察到与预期一致的計时效果,即可以实现启动、停止、记录、回显和清零的功能。具体操作过程是先按下K1,启动系统,然后间隔随机的时间按下K2共10次,即记录存储了10个数据,再按下K3(10次),依次显示第10个、第9个……第1个的时间,最后按下K4,实现清零功能。而且经过多次反复实验,该系统都可以正常运行,说明系统有很好的稳定性和可靠性。由于文本的限制,无法演示系统运行的动态过程,这里只截取了仿真过程中的一张图。图3展示的是存储键K2第1次按下时,记录的时间(0'6.26''),当再按下回显键K3时,以倒序依次显示存储的时间数据,倒数第二个数据显示的和图3完全一致,即0'6.26''。这里要注意一个问题:若存储键K2键连续按下的次数超过系统设置的上限值,则以后的存储操作不会被系统执行,例如本文设置的计时数组为temp_buf[10][3],即最多可以存储10组时间。所以在使用系统之前,要根据实际需求进行合理设置,避免存储过程中因设置不足导致数据的丢失。
5 结论(Conclusion)
本文所设计的多功能体育用计时器通过Proteus软件在线仿真验证了该系统设计的正确性,以及运行的可靠性和稳定性。此外,该系统还可以根据不同应用场合的实际需求对计时器的最多存储个数、回显个数及显示格式通过简单修改软件中的一些函数和变量参数来实现,因此该系统具有很好的拓展性,以及较强的实际指导意义和应用价值。
参考文献(References)
[1] 于博,杨晓庆.基于KeilC51与Proteus仿真联合的单片机应用研究[J].软件工程师,2015,18(9):51-52.
[2] 郭文会.基于单片机与RS485通信芯片的智能家居控制系统设计[J].自动化与仪器仪表,2016(09):244-246.
[3] 谭玉琪,王超,汤吉昀.基于Proteus的单片机多机通信的设计与仿真[J].电子设计工程,2019(3):164-168.
[4] 谭艳春,朱又敏,刘目磊.基于KeilC51和Proteus花样流水灯系统的设计[J].软件工程,2018,21(11):14-16.
[5] 邓力.基于Keil时序逻辑和Proteus的电路仿真[J].实验室研究与探索,2017,36(01):80-83.
[6] 朱敏玲,张伟,侯凌燕.基于Proteus的微机原理与接口技术教学改革[J].实验室研究与探索,2016,35(01):155-160.
[7] 林立等.单片机原理及应用——基于Proteus和Keil C[M].北京:电子工业出版社,2018.
[8] 杜树春.基于Proteus和KeilC51的单片机设计与仿真[M].北京:电子工业出版社,2012.
作者简介:
谭艳春(1980-),女,硕士,讲师.研究领域:系统设计,信号处理.
朱又敏(1966-),男,硕士,工程师.研究领域:射频通信.本文通讯作者.