1 引言
基于GPS的倒计时牌它主要完成以下功能:
定时接收GPS卫星发送的数据并进行识别和缓存;
对GPS测时数据进行格式转换,以使编码格式适于接收;
在给定时间内刷新DS12C887型时钟的时间;
读DS12C887时间,进行倒计时换算并显示。
2 硬件设计
基于GPS的高精度倒计时牌的硬件结构较为简单,包括控制模块和显示模块,如图1所示。
2.1 控制模块
89C51型单片机是整个控制系统的核心,完成对串行口控制器的初始化和数据读写,还要对接收的各种数据进行识别、转储及显示。
由于日本光电公司GSV-15型OEM GPS接收板传输的数据以串行方式输出一帧10位、波特率为4800bit,MCS-51型单片机串口输入输出格式匹配,所以利用单片机串行口直接从OEM接收数据。
DS12C887具有提供较高精度年、月、日、时、分、秒时间的功能,对其校准后,在掉电情况下,10年之内仍能准确的进行计时,并且能与单片机直接相连。
2.2 显示模块
本系统利用74HC595实现串行方式控制数码管显示,占用口线少,硬件结构简单。74HC595型串/并转换移位寄存器具有锁存和3态输出功能。14脚(SER)为串行输入端;12脚(RCLR)为移位时钟端,上升沿将14脚数据移入寄存器;11脚(SRCLR)为锁存时钟端,上升沿锁存数据;8脚(E)为3态输出控制端,接低电平时输出数据。
单片机输出数据和移位时钟,在时钟上升沿时将数据移入74HC595。P1.0输出数据,在移位脉冲上升沿到来时数据移出。P1.1输出移位脉冲。P1.2输出锁存脉冲。数据出现在并行输出端上经74HC07驱动数码管显示,由于数据已被锁存,在传送下一组数据时,前一组数据的内容不变,以此方式进行数据的传送和显示。由于在控制模块中已用单片机的串行口接收OEM板内容,所以在显示模块软件中要将P1.0、P1.1、P1.2定义为模拟的串行口。这样,P1.0、P1.2、P1.3就可作为串行口使用。
3 软件设计
3.1 主程序
包括对单片机自身机制的设置串行口的初始化等,如图2所示。
3.2 GPS测时接收
GPS测时接收数据由串行口接收,由单片机对其进行读入、识别、转换及存储等操作,在程序开始时,首先识别接收信号,看其是否是要接收的信号,OEM板接收的时间信号的字头为GPZDA。由于接收的时间信号是ASCⅡ码,所以要将接收数据转化为二进制数。由于接收的时间为格林威治时间,所以必须转化为北京时间,然后将转化后的时间写入DS12C887中。DS12C887是一种比较准确的计时电路,不需要时刻接收GPS信号。笔者规定1小时接收1次GPS信号,其流程如图3所示。
3.3 时钟倒计时显示
在此程序中模拟串行口,读DS12C887的数据,利用74HC595对其数据进行显示,流程如图4所示。
3.4 倒计时子程序
以计算从现在到2006年1月1日为例,单片机读DS12C887的时间单元,并将其存放在以69H为起始的单元中。先读取月份,利用查表的方法计算其下月份到预定时间的天数。然后再利用查表方式判断其月份是31天、30天,28天或29天,然后将查表得到的天数减去读取日期,这样将二个天数相加就得到实际天数。进行时、分、秒的计算时,首先把2006年1月1日0点0时0分0秒转化为2006年12月31日23点59时60秒,这样直接利用时、分、秒相减就得到相差的时、分、秒。倒计时流程如图5所示。
4 结束语
本文所述的基于GPS的高精度、无误差倒计时牌经调试运行和参数整定后,运行稳定可靠,连续长期运行积累的误差为零,当时的时间精度误差<15ms。本系统的控制模块结构简单,便于实际开发应用。