原理说明
本例所设计的是一个具有报时功能及作息时间控制钟。它利用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 播放歌曲
硬件连接图
程序说明
整个程序分为主程序、键盘扫描子程序、万年历计算子程序、校时子程序、播放语音子程序几部分。
1、主程序
程序按照结构化程序设计,所有功能都可通过调用子程序完成,主程序较简单,流程见0。SPCE061A具有低功耗的睡眠模式,在睡眠模式下功耗电流可降到几个μΑ,这对于用电池供电的系统非常重要,睡眠模式可以通过按键中断唤醒。
主程序流程图
由于机械触点的弹性作用,在键被按下或弹起时会出现电压抖动,从最初按下到接触稳定要经过数毫秒的弹跳时间,如错误!未找到引用源。所示。为保证键识别的准确,必须进行去抖动处理,去抖动有硬件和软件两种方法。硬件方法就是加去抖动电路,从根本上避免抖动;软件方法有很多种,例子程序主要是利用主程序的循环扫描,主程序循环一次,扫描一次按键,当连续N次扫描到的键值都一样时,则说明是稳定的按键值。
3、万年历计算子程序
利用2Hz中断做时钟源进行计时,每两次中断秒加1,并进行年历计算,年历范围从2001年到3099年。在进行年历计算时,有平闰年计算问题。闰年的条件是:能被400整除,或者能被4整除,但不能被100整除。万年历调整子程序流程图见0。
万年历计算子程序
校时子程序
5、播放语音子程序上一篇:凌阳单片机温度计设计