基于单片机的日历时钟模块设计
3 系统软件设计
3.1 主程序
主程序主要包括:系统初始化、获取串口数据、设置日历时钟芯片、获取时钟芯片的时间信息和时钟校正、显示等子程序。初始化子程序主要包括设置单片机的串口和定时器的初始化,日历时钟芯片初始参数和驱动芯片的初始化等。主程序流程图如图3所示。
3.2 设置日历时钟子程序
在使用DS12887时,首先要初始化,主要是打开晶振、对控制寄存器A、B写入控制字以及对日历、时钟各寄存器写入初始值。除校时外,上电时不用再次初始化。第一次初始化时,应禁止操作DS12887内部更新周期,即先将寄存器B的SET位置“1”,然后初始化时标寄存器(00H~09H)和状态寄存器A,再通过读寄存器C清除中断标志,读寄存器D将VRT位置“1”,最后将寄存器B的SET位清零,DS12887开始计时。
设置日历时钟,必须保证时钟芯片DS12887处于设置状态,即SET=1,然后向DS12887的专用寄存器写入时间信息,写入完毕后,DS12887恢复正常数据更新状态,即SET=0。在读取日历时钟芯片DS12887的时钟信息时,必须保证UIP=0,然后读取存储其内部寄存器的时钟信息。
为了能够方便地显示时间和校正时钟,可在单片机中的用户寄存器中开辟特殊的时间地址单元作为显示缓冲区,分别放置“年,月,日,时,分,秒”等值。此时只要将DS12887中的时间值读入到用户开辟的时间地址中,用户就可以方便控制时间。
DS12887的日历时钟通过中断和查询2种方法读出。但在读数据时,首先要判断数据是否更新结束,只有在数据更新结束时数据读出才有效。DS12887的时间读取和时钟校正子程序流程图如图4所示。
4 结束语
以日历时钟芯片DS12887为例,介绍了一种该器件与单片机AT89C52的简单实用的硬件接口电路,该电路设计简单可靠,性能稳定,适用于那些对计时精度要求较高的系统,例如在列车制动电子控制单元中,应用DS12887提供准确的时间来保存数据,并安装在制动控制装置内,对列车制动和防滑控制。记录、捕捉故障出现时间及了解故障发生时间前后信号变化的情况,并通过列车总线将故障信息传送给监控装置,以便列车司机及时地采取相应措施,这些对保障列车安全可靠运行有着重要意义。
- 什么是module 以及如何写一个module(转)(04-23)
- 在Linux 2.6内核下编译可以加载的内核模块(04-23)
- 用DSP56F805 PWM模块输出高频正弦波(05-25)
- DSP与PC机的无线交换调制模块设计(09-17)
- 基于TMS320F28334的伺服系统模块设计(02-25)
- Linux安全模块(LSM)简介(06-12)