本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

带有无线电接收器的原子钟
发布时间:2021-04-14
分享到:
带有无线电接收器的原子钟
发布时间:2021-04-14
分享到:

该项目是带有无线电接收器的时钟,可以从DCF77时间信号发送器或GPS卫星的UTC接收确切的日期和时间,并将其显示在128x64像素的图形显示屏上。

DCF77发送器和GPS可同步到原子钟上。

目标:

  • 从DCF77发射机接收日期和时间,对其进行解码,然后将其显示在128x64像素点矩阵显示器上
  • 使用GPS模块从GPS卫星接收UTC,并将其显示在128x64像素点矩阵显示器上
  • 基于实时时钟的独立日期和时间时钟(如果无法接收无线电信号)
  • 测量和显示温度
  • 测量并显示电池电压
  • 显示软件版本信息
  • 简单的菜单系统进行配置
  • 报警功能
  • 按下按钮时发出哔声

硬件框图:

 

原理图:

在它们周围添加了灰色虚线框,以轻松识别哪个块在做什么。

PCB设计:

在PCB设计过程中,目标是使按钮和LCD显示器符合人体工程学,并将PCB装入Deltron 479-0160外壳中。PCB将位于外壳的顶部,按钮和LCD显示屏将位于PCB板的顶部。

软件静态架构:

构建SW系统的软件单元以及它们之间的主要连接。每个软件单元都有一个3个字母的唯一标识符。

BZD:
该SW单元是蜂鸣驱动器。当调用其蜂鸣器的接口功能时,它负责以5 kHz信号驱动蜂鸣器。

CNV:

该SW单元负责各种数据转换:

  • 二进制数到BCD,
  • BCD到十进制数,
  • ASCII数字字符到十进制数字

DCF:
该软件单元是低电平DCF -77驱动器:

  • 处理TIMER3定时器和CCP外设,
  • 将每秒从DCF77接收器接收到的位收集到变量中
  • 在下降沿,它清除TIMER3;在上升沿,读取TIMER3,以确定是否接收到“ 0”位或“ 1”位
  • 提供用于打开和关闭DCF接收器模块电源的接口功能

DCP:
该软件单元是DC F77 P协议驱动程序:

  • 检查收到的数据的奇偶校验
  • 将接收到的位收集到相应的变量中
  • 检查数据的有效性:接收到的数据和时间信息是否在范围内,例如小时数不大于24,等等
  • 如果检查通过,则使用接收到的日期和时间更新独立时钟

GPS:
该SW单元是GPS 驱动程序:

  • 处理UART字节接收中断并将接收到的UART字节放入缓冲区以进行进一步处理
  • 处理接收到的GPS语句:
  • 比较接收到的和计算出的GPS句子校验和
  • 准备最后收到的GPS句子以写在LCD屏幕上
  • 识别GGA和RMA GPS句子
  • 从GPS句子中提取UTC,纬度和经度信息
  • 准备要在LCD屏幕上写入的UTC,纬度和经度信息
  • 收到有效的UTC信息后更新独立时钟
  • 提供用于打开和关闭GPS接收器模块电源的接口功能

INT:
此软件单元是 INT爆发驱动程序:

  • 按下按钮后,RB1,RB4和RB5引脚上的中断
  • 用于RTC(实时时钟)的TIMER1外设的中断rutin
  • UART接收中断
  • 用于DCF77接收的CCP1和CCP2引脚上的中断
  • 它实现了软件其他部分中使用的延迟功能

LCC:
该SW单元句柄 LCD内容,在一个函数调用它:

  • 将时间:小时,分钟,秒写入液晶显示屏
  • 将日期:年,月,日,工作日写入液晶显示屏
  • 写温度,电池电压
  • 绘制并清除无线电信号符号
  • 绘制接收器选择:DCF或GPS
  • 清除屏幕
  • 写入构建信息
  • 写菜单内容
  • 绘制启动屏幕
  • 写入GPS句子,UTC,纬度和经度信息

LED:
此SW单元是LED 驱动器,通过该驱动器可以打开或关闭的功能调用:

  • 调试指示灯
  • LCD背光驱动器

LPD:
此SW单元是L CD显示器低电平协议驱动程序:

  • 在函数调用中,它可以通过SPI将命令和数据发送到LCD显示屏
  • 它处理MSSP串行外设和一些GPIO引脚以发送SPI消息

SCD:
这个软件单元是独立的时钟驱动器,它负责运行基于本地32768kHz晶体的本地时钟:

  • 它计算时间和日期
  • 处理s年
  • 提供的功能可以在接收GPS或DCF信号时更新本地时钟和日期
  • 它提供了增加和减少时间和日期的功能,以通过按钮设置本地时钟的确切时间和日期
  • 计算冬季(CET)和夏季(CEST)时间的UTC偏移量

TIM:
该软件单元协调所有其他软件单元的操作,它是中断管理器:

  • 它处理时钟的闹钟功能
  • 根据状态机的当前状态更新LCD屏幕内容

TMD:

  • 此开关单元是温度测量驱动器,它从VMD驱动器获取温度和电压基准ADC值,并根据传感器特性计算温度。

UAT:
此软件单元是UART驱动程序:

  • 它处理微控制器的EUSART外设,将发送和接收初始化为GPS模块所需的格式。
  • 它提供用于将UART字节发送到GPS模块的接口功能。

VMD:
该开关单元是电压测量驱动器,它处理:

  • 微控制器的模数转换器外围模块。
  • 电池电压的测量。
  • 提供获取ADC数据的功能。

软件动态行为:

可以看到按下时钟的中间按钮以显示SW版本信息时,SW单元之间会发生什么。

外文原文:点击进入
声明:本文由Hackaday授权电路城翻译,系电路城的原创内容,转载请注明出处!

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论