基于瑞萨R7F0C002单片机的JJY数字电波钟设计(下)
接上篇
4 软件流程
JJY 数字电波钟可以自动或手动接收时码,并在 LCD 面板上实时显示年、月、日、时、分、秒等时间信息,也可以手动设置当前时间,同时还具有闹钟设置和响铃功能。
主程序的设计思想为在实现时钟的时间设置、时间显示等基本功能的基础上,融合加入JJY 解码程序,并将解码后的标准时间信息更新到实时时钟,然后继续走时显示,以达到与标准时间的高度同步。程序主要分为时间显示子程序、时间设置子程序、闹钟设置子程序、闹钟响铃子程序以及手动(自动)接收电波子程序。
时钟电波接收子程序是整个程序的关键和核心,它是接收系统的授时技术思想的体现,其设计水平直接关系到接收准确度和时间同步精度。接收时码子程序需要对受干扰信号的正确性进行判别,并通过一定算法保证与授时中心的标准时间同步,即较好地实现秒同步和分钟同步(位同步和帧同步)。同步的基本思想是:首先利用每一位零时刻来找到秒同步,再找到连续的两个 P 码,确定分钟同步,最后便可得到一帧的时间信息数据,实现与标准时间的同步。若在此过程中出现差错,则返回重新开始。
算法实现采用“采样法”,其基本思想是:时间电波接收任务开启后,每隔 10ms 对信号电平采样一次,当有电平变化时,在接下来的连续 5 次采样中,至少有 3 次为已变化电平,则判断此电平变化为有效变化,这样可以最大限度滤掉干扰。然后通过累计高电平的采样次数,就可以判断时码的状态为 1 、 0 或 P。JJY 接收程序流程如图6所示。
实际接收的时码信息由于受到各种因素的影响,脉宽不能正好等于 0.2s、 0.5s、0.8s。为此允许脉宽± 100ms 的误差,即 200ms± 100ms、 500ms± 100ms、 800ms± 100ms 均认为是正常编码,超出此范围即认定为错误码。
连续收到 2 个 P 码定为 1 帧的开始,此后连续接收 59 个正确的时码,则表明完整的一帧时间数据接收完毕。由于 JJY60 传输的日期为一年从 1 月 1 日到现在的天数,所以最终还要变换成月日,转换时,注意闰年的时间处理。
由于东京时间早北京时间 1 小时, 所以如果在中国使用, 需要将转换时间减一小时。
此外, 由于接收完一帧数据需要一分钟时间, 所以当前接收到的时间为上一分钟的时间,需要对接收的时间增加一分钟。程序除了进行小时、分钟奇偶校验外,对收到的时间信息还要校验其符合性。例如日不能大于 366;小时不能大于 23 等,不然可能会显示一些混乱的时间。
此外,接收模块的天线要远离电路板、电池组和液晶屏,否则收不到信号。另外系统也要远离变压器、电脑等干扰源。测试时调整天线的位置,直到看到绿色 LED 有规律的闪烁表示接收正常。在北京,测试表明,白天在空旷地可以接收,夜晚在室内可以接收。
5 结论
本文设计的系统以瑞萨 16 位单片机为核心控制部件, 通过软件编程实现电波钟表的基本功能。它通过接收日本标准授时中心的时码信号,经滤波与解码后对时钟进行自动校时,以消除时钟的累积误差,从而实现全自动同步准确计时。较好地弥补了普通时钟走时不准、需人工校准等缺点,极大地提高了计时精度,有很大的发展潜力和市场前景。
- 瑞萨电子携10款智能家居及智能工业领域方案亮相第五届深圳国际嵌入式系统展(07-24)
- 用途广泛的MCU芯片有哪些原厂?(03-27)
- 基于78K0/LE3MCU的血糖监视仪应用方案(11-29)
- 用瑞萨单片机调试IIC功能时出现了停止信号一直检测不到(11-27)
- 瑞萨电子通过RX130组MCU扩大触摸应用在家电等领域应用(11-24)
- 瑞萨单片机学习笔记(1)基本配置(11-20)