王仲夏,谢添,王苏明
(1.皖江工学院电气信息学院,安徽马鞍山,243000;2. 南京苏宁工程咨询有限公司,江苏南京,210000)
每年学校都要组织各种类型的考试,如其中期末考试,并且在社会上也有许多社会化的考试,考生参加考试的人数众多且考场分布广泛,少则一个学校,多则十几个学校,在所有的这些考试中考生最需要控制的就是考试的时间,在考场中也分布了各种类型的时钟,如何保证各考场教室的时钟与考试时间同步,是保障考试公平公正的重要因素。本文在电子时钟原有的功能上进行扩展,如定时提醒、设置考试过程中的提醒时间、提醒次数,甚至在考试时间内对相应的电气设备(无线电屏蔽仪)的定时启动和停止,因此对电子时钟的设计是具有实际意义的。
根据系统的功能要求,初步确定该系统由主控时钟模块(STC89C52+DS1302)、按键模块、显示模块(数码管)和通信模块组成。系统方框图如图1所示。
图1 考场时钟系统方框图
DS1302与STC89C52单片机的连接简单,将引脚I/O、SCLK、RST与单片机的I/O口连接即可,将DS1302中的数据读取到单片机中,单片机将处理后的数据通过数码管显示出来。通过加入的三个独立按键,可进一步对时间进行修改,三个按键分别是菜单、+、-,例如第一次按下菜单键时选中分(此时‘分’闪烁),此时可以通过按下+键来增加分,按下-键来减少分;当第二次按下菜单键时选中时(此时‘时’闪烁)此时可以通过按下+键或-键可以增加或者减少时;当第三次按下菜单键后,修改后的时间数据写入DS1302时钟芯片并通过数码管显示出来。时钟校时由HC05蓝牙模块,蓝牙模块直接接到单片机的RXD和TXD引脚构成,系统原理图如图2所示。
图2 考场时钟系统原理图
STC89CC52是STC公司生产的一种低功耗、高性能的八位微控制器,内部具有8K用户应用程序空间。STC89C52沿用了经典的MCS-51内核,并在其基础上做出了改进,使芯片具有一些传统51单片机不具备的功能。内置4KB的EEPROM,复位电路,3个16位定时器/计数器,4 路外部中断,中断触发方式有下降沿触发和低电平触发两种,看门狗定时器,全双工串行口。另外STC89C52有空闲模式、掉电保护两种可供选择的节电模式,空闲模式下,CPU停止工作,但RAM、定时器/计数器、串口、中断等工作不会受到影响。掉电保护方式下,RAM内容被保存,直到下一次单片机工作时数据也不会丢失,但单片机会停止工作,如果让单片机继续工作,按下复位键即可,在单芯片上,由于STC89C52具有8位的CPU和可编程Flash的优点,因此可以为现在大多数嵌入式控制系统提供更多可选择的解决方案。
DS1302是一个内部带有RAM的时钟芯片,并且有两个电源引脚(主电源,后备电源),这使DS1302芯片即使在没有主电源的情况下,仍然能够长时间的保证时间的准确性,DS1302芯片通过简单的串行接口与单片机进行通信,其工作电压为2.5V~5.5V。DS1302具有很全的计时功能。例如DS1302芯片具有可自动调整每月的天数和闰年的天数的功能,这使其更加智能化,该芯片还提供秒、分、时、日、月、年的信息,时钟可通过AM/PM 指示决定采用24 或12 小时制,本次系统只采用了时、分、秒进行计时功能。
2.2.1 DS1302与单片机之间的通信
DS1302 与单片机之间通过三个引脚(RST、I/O、SCLK)进行通信,它们之间采用同步串行通信的方式通信。
2.2.2 DS1302的优点
DS1302有两个电源引脚,分别为后备电源(VCC1)、主电源(VCC2),该芯片在不同的供电系统中供电方式也会发生改变,在单电源与电池供电的系统中由VCC1提供低电源,在双电源系统中由VCC2提供主电源。时钟芯片的供电模式取决与VCC1和VCC2的大小,当VCC2大于VCC1时,由VCC2给芯片供电;反之,由VCC1给芯片供电。因此在断电情况下,DS1302以VCC1备用电源进行其内部供电以保证下次开启时时间不会出现错误。对于连续长时间测量的控制系统来说,采用具有良好特性的DS1302作为记录测控系统中的数据记录时,可以进一步提高系统的工作效率。而且由于其软硬件设计也非常简单,因此对于长时间连续的测控系统来说是一个不错的选择。
此系统选用的是四位一体的共阴极数码管,其内部已连接好,引脚(正面向上)从左到右顺序依次为 1、a、f、2、3、b、dp(+)、dp(-),4、g、c、e,其中 a、b、c、d、e、f、g、为段引脚,1、2、3、4分别表示4个数码管的位,dp(+)接电源正,dp(-)接单片机I/O口。
本系统共采用3个独立按键,分别与单片机的P3.5、P3.6、P3.7口连接,分别是菜单、+、-功能。在调整时间时,可通过菜单键、+、-键对时间进行调整。在调整的过程中,数码管对应显示的调节项会闪烁,分别对时、分进行设置。按键电路与单片机的连接见图2。
系统程序流程图如图3所示,程序执行时先进行系统初始化,再判断菜单键是否按下,当菜单键按下时进入时间修改模式,设置完成后把修改后的数据写入DS1302时钟芯片并通过数码管显示。若无按键按下则读取时间数据送入数码管显示。
图3 系统流程图
DS1302时钟程序流程图如下图所示,芯片工作时,会进入初始化程序,芯片内的数据会在出现中断信号时被送入单片机中处理并通过数码管显示,然后判断是否按下菜单键,若按下,则设置完成后将数据送入时钟芯片并显示,若无按键按下则直接送入EPROM中并显示。
图4 DS1302系统流程图
本次系统设计实现了时钟显示及时间调整的功能,从设计前期的查找资料,到后期的动手设计,焊接实物等都让笔者收获良多,特别是将一个系统分成几部分小的模块,然后逐步实现各模块的功能,最后把它们组合成一个完整的系统,这种搭积木式的模块化,任务化的系统设计对初学者具有一定的帮助。