单片机报时控制器
扫描二维码
随时随地手机看文章
原理说明
本例所设计的是一个具有报时功能及作息时间控制钟。它利用SPCE061A单片机的2Hz时基计时,进行年历计算,并用SPCE061A的语音功能将它报出来;在进行时间计算,分每加1时,都与规定的作息时间比较,如果相等则进行相应的控制或动作。本例中假定某高校的作息时间如下所示:
08:00-------08:50 第一节课
09:00-------09:50 第二节课
09:52-------10:05 课间操
10:10-------11:00 第三节课
01:10-------12:00 第四节课
12:00-------13:30 午间休息
13:30-------14:20 第五节课
14:30-------15:20 第六节课
15:21-------15:50 播放歌曲
硬件电路
硬件电路由键盘、声音输出模块和指示灯三部分组成,如图所示。
系统扩展三个按键用于报时及校正时间。SPCE061A的DAC为电流型输出,经负载电阻R1、三极管Q1放大驱动扬声器SPEAKER放音,SPEAKER可选用4Ω或8Ω扬声器。IOA15接一个LED,到规定的作息时间用LED闪烁来表示,使用者可根据具体需要来控制电铃、播放提示语等。凌阳芯片的工作电压为3.3v,在图8.2中,我们给出了获得工作电压两种方法。
1、通过两个二极管连续降压使5v的电压降至3.6v,接近3.3v供芯片使用,这种方法比较简单,但电压值不是很精确。
2、通过LM7833可获得准确的3.3V电压。
硬件连接图
程序说明
整个程序分为主程序、键盘扫描子程序、万年历计算子程序、校时子程序、播放语音子程序几部分。
1、主程序
程序按照结构化程序设计,所有功能都可通过调用子程序完成,主程序较简单,流程见0。SPCE061A具有低功耗的睡眠模式,在睡眠模式下功耗电流可降到几个μΑ,这对于用电池供电的系统非常重要,睡眠模式可以通过按键中断唤醒。
主程序流程图
2、键盘扫描程序
由于机械触点的弹性作用,在键被按下或弹起时会出现电压抖动,从最初按下到接触稳定要经过数毫秒的弹跳时间,如错误!未找到引用源。所示。为保证键识别的准确,必须进行去抖动处理,去抖动有硬件和软件两种方法。硬件方法就是加去抖动电路,从根本上避免抖动;软件方法有很多种,例子程序主要是利用主程序的循环扫描,主程序循环一次,扫描一次按键,当连续N次扫描到的键值都一样时,则说明是稳定的按键值。
3、万年历计算子程序
利用2Hz中断做时钟源进行计时,每两次中断秒加1,并进行年历计算,年历范围从2001年到3099年。在进行年历计算时,有平闰年计算问题。闰年的条件是:能被400整除,或者能被4整除,但不能被100整除。万年历调整子程序流程图见0。
万年历计算子程序
4、校时子程序
系统扩展了三个按键,TIME键用于报时,由于时间包括年月日和时分,按一次TIME键,则报年月日,再按一次则报时分。当一直按住TIME键3秒则进入时间校正状态,语音报当前是XXXX年,按UP键年份增加,按DOWN键减少;按TIME键来切换月、日、时、分,调整完分后,按TIME键确认,语音报出年月日时分。时间增加的流程如0所示,时间减少的流程与增加的相同,所以不再给出时间减少的流程图。在校正时间的状态下,如果连续2分钟键没有被按下,则自动退出。
校时子程序
5、播放语音子程序
报时用SACM-A2000播放。