多功能天数计时器的设计与应用

2016-07-01 09:59作者张瑞增颜丙波陈纪旸山东大学控制科学与工程学院
电子制作 2016年9期
关键词:计时器倒计时计时

作者 / 张瑞增、颜丙波、陈纪旸,山东大学控制科学与工程学院



多功能天数计时器的设计与应用

作者 / 张瑞增、颜丙波、陈纪旸,山东大学控制科学与工程学院

针对人们对天数正计时、倒计时产品的需要,设计了多功能天数计时器。本文介绍了该天数计时器硬件接口电路及其软件编程思路,提出了正计时/倒计时模式自动转换的简易方法。该系统能够进行天数正计时、倒计时,记录计时开始时间及截止时间,相关信息保存到STC15内部EEPROM中,使其在系统断电后不丢失,解决了现有产品中数据在掉电后不能保存的问题。采用低功耗日历时钟芯片PCF8563 作为实时时钟,并设计了双电源电路向PCF8563供电,使实时时钟在主电路断电后仍可以继续运行,保证系统的稳定性。LED数字屏亮度高,室内室外都可使用,且大小可根据需要选择,提高了系统的通用性。

单片机;正计时;倒计时;EEPROM;PCF8563;LED屏

引言

在企业安全生产中,人们对生产线安全运行天数进行记录并显示。在举办重大活动时,为了提高对活动的关注度和紧迫感,人们开始研发各种倒计时系统[1]。比如高考倒计时、运动会倒计时、比赛时间计时等等。

本文提出一种基于STC15F2K56S2的多功能天数计时系统设计方案,使正计时/倒计时模式可自由转换,并通过实验验证了其可行性、实用性。利用STC15F2K56S2内部EEPROM保存人们设置的计时时间基准,确保系统掉电后设置的参数不会丢失。

1.系统整体设计

系统主要功能是计算当前时间与截止日期间的天数并在LED数字屏显示。在设计上,将系统分为6个子模块:控制器STC15F2K56S2、时钟芯片PCF8563、设定HMI、LED数字屏、485通信电路、电源管理。系统整体结构框图如图1所示。其中控制器STC15F2K56S2作为系统的“大脑”,负责总体运行;时钟芯片PCF8563提供实时时钟;设定HMI(Human Machine Interface:人机界面)、LED数字屏和485通信电路作为系统的输入输出部分。

图1 系统整体结构框图

2.系统硬件电路设计

稳定可靠的硬件是系统长期稳定运行的基础,硬件的模块化设计可以将系统化繁为简,使其更便于设计、制作、调试及维护。下面将整体硬件分6大模块进行详细说明。

■2.1 控制器STC15F2K56S2最小系统

控制器采用STC15F2K56S2,其内部包含增强型8051内核、8路高速10位A / D转换、2KB RAM、56KB ROM、5K 的EEPROM,该EEPROM用于永久保存用户设定的起始日期、终止日期等信息[2]。STC15F2K系列单片机内置SPI(Serial Peripheral Interface:串行外设接口),方便与其他SPI接口设备连接;内置看门狗,可用程序控制其启用及关闭。其最小系统原理图如图2所示。其中CH340G为USB转串口芯片,用于给STC15F2K56S2单片机下载程序及PC与MCU(Micro Controller Unit:单片机)间的串口通信,其封装为SOP-16,方便焊接使用。 STC15F2K56S2作为天数计时系统的控制核心,其引脚功能分配如表1所示。

图2 控制器最小系统原理图

■2.2 时钟芯片PCF8563应用电路

时钟芯片选用PCF8563,该芯片功耗低,具有实时时钟和日历功能,并具有可编程时钟输出、定时中断输出、低电压检测的功能,I2C接口便于和MCU通信[3]。其应用电路如图3所示。其中纽扣电池BAT1用于在系统断电时为PCF8563供电,保证时钟持续、稳定运行。一枚型号为CR1220的纽扣电池的标称容量为38mAH, PCF8563在3V电池供电消耗电流为0.25μA,故主电路断电后一枚CR1220电池可使PCF8563运行15年以上[4]。

■2.3 LED数字屏设计

LED数字屏的优点是亮度高、视角广,在室内室外都可以被清晰的看到,且其大小有多种型号,可根据不同需求进行选择,提高了系统的通用性。LED数字屏内部有3位七段数码管,每段数码管由多个LED灯串并联组成。其驱动采用大功率达林顿集成电路ULN2803,每段的驱动电流最大可达500mA,为LED数字屏的供电提供了充足的裕度。使用74HC573锁存器锁存LED数字屏段选信号,从而用P2口可控制3位数码管的段选。一位LED数字屏驱动电路如图4所示。

表1 天数计时系统中STC15引脚功能分配表

图3 PCF8563应用电路图

■2.4 设定HMI

设定HMI采用12864液晶作为后台显示、6个独立按键用于设定参数、一个蜂鸣器用于输出声音。在液晶上显示当前时间日期、倒计时截止日期、正计时开始日期、倒计时剩余天数、正计时累计天数等信息。

■2.5 485通信电路

图4 一位LED数码屏驱动电路

485通信为预留接口,以备后期将设备接入物联网系统,实现远程设定计时参数及控制LED数字屏的亮灭。485通信具有通信距离远、抗干扰能力强的优点,此处选用MAX485芯片作为TTL与RS-485转换芯片,其硬件电路如图5所示[5]。

图5 485通信接口电路

■2.6 电源电路

电源作为整个系统的心脏,其稳定性、抗干扰能力、负载能力将对系统的稳定运行起到至关重要的作用。本系统采用LM2596_5V开关型稳压芯片,其负载电流最大可达3A,且具有较好的负载调整特性。在DC-DC转换前,设计LC滤波电路以减小电源的纹波。电源电路如图6所示。

3. 系统软件设计

天数倒计时/正计时器的软件采用模块化设计,在主程序中进行计时模式的判断及相应天数的计算;按键设定计时模式及参数的设定在外部中断中完成。为防止系统在异常情况下,受到强烈干扰,MCU程序跑飞,导致系统长时间不能正常工作,引入看门狗。如果MCU没有在规定的时间内按预定要求访问看门狗,就判断MCU为异常状态,看门狗就强制MCU复位,使系统重新从头开始按用户编写的程序运行。

■3.1 主程序设计

主程序采用C语言进行编程,使用到顺序结构、分支结构、循环结构,在main()函数中执行的操作流程如图7所示。首先进行系统初始化,然后读取PCF8563的日历时钟,从EEPROM中读取当前的计时状态,而后进入3种分支结构的判断,并根据判断执行相应的操作。

图6 5V电源电路

■3.2 输入设置

首先对6个按键的功能定义为菜单/确定键、左移键、右移键、加1键、减1键、屏幕唤醒键。在设定参数时,长按菜单/确定键2s,进入设定模式并且液晶屏的相应区域光标闪烁,这样既防止了误碰按键带来的问题又将设定的变量突出显示;再次长按菜单/确定键2s,将设置的参数保存,并跳转到运行模式。12864液晶背光灯电源和供电电源的通断用三极管开关电路控制,在设定好各参数10s后,关闭液晶显示,节省电能;在需要显示时,按下屏幕唤醒按键,12864液晶即可重新显示。

图7 主程序流程图

系统时间的设定与矫正、计时截止日期的设定在外部中断中处理。其处理流程如下图8所示。当设定的截止日期晚于RTC(Real Time Clock:实时时钟)日期时,则在程序中判断为倒计时模式;若设定的截止日期早于或等于RTC日期,则在程序中判断为正计时模式。

图8 按键设定RTC及计时截止日期流程图

■3.3 计时天数的计算及显示

3.3.1 当前日期距离截止日期天数的计算

若RTC日期小于截止日期,则认为是倒计时;若RTC日期大于等于截止日期,则认为是正计时,此算法在程序中完成。计时天数的计算以倒计时为例进行说明。

设N0为当前日期,N1为当前日期在当前年的天数,N2为当前日期到当前年底剩余的天数,S0为终止日期,S1为终止日期在终止年的天数,D1为当前日期距离终止日期的天数。时间先后如下图9所示。

图9 倒计时天数计算示意图

三位计时器最大计时时间为999天,跨度最大为3年。因此倒计时天数分以下3中情况进行计算。

(1)终止年与当前年在同一年

D1 = S1 - N1

(2)终止年与当前年为连续年

D1 = N2 + S1

(3)终止年与当前年跨度3年,计中间一年的天数为Y2

D1 = N2 + S1 + Y2

由于太阳历中,平年闰年相差一天,因此必须判断相关的年份是否为闰年。相关年份为闰年时2月29天、全年366天,否则2月28天、全年365天。为使MCU能够进行天数的运算,定义相关变量。

定义结构体变量

typedef struct

unsigned int Year;

unsigned char Mon;

unsigned char Day;

unsigned char Hour;

unsigned char Min;

unsigned char Sec;

}RTC_Struct;

RTC_Struct Set_Data;

计算一年中的指定某一天来在该年中度过的天数、剩余的天数方法如下。

首先,预定义12个月的天数,写入数组

unsigned char Mon_Day[12] = {31, 28, 31, 30, 31, 30, 31,31, 30, 31, 30, 31};

对于指定的一天Set_Data.Day,先判断其所在年份Set_Data.Year是否为闰年。若为闰年则Mon_Day[1]= 29,A_Year_All_Day=366,否则Mon_Day[1]=28,A_Year_All_ Day=365。

然后,计算该天在所在年中度过的天数

Spend_Day = Mon_Day[0]+ Mon_Day[1]+……+ Mon_ Day[Set_Data.Mon-2]+ Set_Data.Day

该天在所在年中剩余的天数Surplus_Day = A_Year_All_ Day - Spend_Day。采用此算法S1、N1、N2、Y2的值即可算出,从而可得当前日期距离终止日期的天数D1。

天数正计时的算法与上面的算法相似,只需交换一下截止日期与RTC日期的顺序即可,此处不再详述。

3.3.2 当前日期距离截止日期天数的显示

当前日期距离截止日期天数的分别在后台HMI的液晶及LED数字屏上显示。具体显示方案需要根据天数位数不同来用不同的方式进行显示,其具体显示方案如图10所示。根据数据D1位数的多少点亮LED数字屏,减少了系统无用的功耗,以节约电能。

图10 计时天数在液晶及LED数字屏上显示方案

4. 结语

基于STC15F2K56S2设计的天数计时器,能够的实现天数倒计时、正计时的功能,同时能够显示当前日期、时分秒等信息,并具有体积小、性价比高、安装方便的特点,很好的满足了人们对于天数倒计时、天数正计时的需求。当前设计为一个独立运行的计时系统,但预留了485通信接口,以便后期与其他物联网设备连接,实现联网控制。

* [1]陈娜. 室外倒计时系统的设计与实现[J].河南科技学院学报(自然科学版)2009(1)

* [2] 陈桂友.单片机应用技术基础[M].2015: 北京:机械工业出版社.230

* [3] 龙世瑜,林汉,陈新源.基于PCF8563户外型倒计时系统的设计[J].单片机与嵌入式系统应用2004(2)

* [4] PCF8563 Real-time clock/calendar Product data sheet. Rev.11. 26 October 2015

* [5] 赵意鹏,赵河明,张毅,李焕.基于MODBUS和RS-485布网方式的气体监测系统设计[J]-计算机测量与控制 2015(9)

猜你喜欢
计时器倒计时计时
畅游计时天地
松鼠的计时器
腕表计时2.0
12时计时法与24时计时法的互化
超高精度计时器——原子钟
24时计时法
抗缪勒氏管激素:卵巢功能的计时器!
竖向固定电火花打点计时器的技巧