摘 要:介绍了采用GPSOEM接收板的精确授时功能来实现精密时钟系统的设计思路和方法,给出基本的硬件电路和软件流程并基于ATmega128单片机上实现GPS时钟的提取并在LCD上显示。
关键词:GPS ATmega128 高精度时钟 液晶显示
1.引言
GPS(Global Positioning System)全球定位系统是利用美国的24颗GPS地球卫星所发射的信号而建立的导航、定位、授时的系统。目前,GPS系统广泛地应用在导航、大地测量、精确授时、车辆定位及防盗等领域。
GPS授时功能是其主要功能之一。时间信号的准确与否,直接关系到人们的日常生活、工业生产和社会发展。GPS时钟为满足精密定位和导航的需要,在系统设计与实验之初就建立了自己专用的时间系统,该系统简写为GPST,它由GPS主控站的高精度原子钟守时和授时。由于计算机技术、网络技术、通信技术、GPS定位技术等相关技术的发展,以及GPS OEM板价格的降低,GPS时钟已经具备了为各个应用领域提供高精度授时的可能性。
本文旨在通过利用GPS所提供的精确授时功能,采用单片机技术,设计适合于需要精确授时的高精度时钟系统,并通过LCD进行显示。
2.GPS授时原理
GPS时间系统是由GPS系统定义和使用的时间系统。卫星定位系统以时间为基本观测量,由于卫星高速飞行,因此要求时间系统必须十分精确,否则就会带来很大的距离误差。GPS时间系统以原子频率标准作为时间基准,以1980年1月6日0时作为起点。它不存在跳秒,它的时间与协调时秒以下的差异可以保持在100微妙内,并定期公布误差,在星历文件中发布的卫星钟差就是相对GPS时间系统的钟差。
GPS 授时的基本原理是: 卫星不间断地发送自身的星历参数和时间信息, 用户接收到这些信息后,经过计算求出接收机的三维位置、三维方向以及运动速度和时间信息。这里只需要 GPS 授时系统的时间信息。若设(x,y,z)为接收机的位置, (xn,yn,zn)为已知卫星的位置, 则解下列方程就可以得 x,y,z到和标准时间 T:
(x-x1)2+(y-y1)2+ (z-z1)2 =C2(T+ T-T1 - 1)
(x-x2)2+(y-y2)2+ (z-z2)2 =C2(T+ T-T2 - 2)
(x-x3)2+(y-y3)2+ (z-z3)2 =C2(T+ T-T3 - 3)
(x-x4)2+(y-y4)2+ (z-z4)2 =C2(T+ T-T4 - 4)
其中△T为用户时钟与 GPS主钟标准时间的时差;Tn 为卫星 n 所发射信号的发射时间; 为卫星 n 上的原子钟与GPS主钟标准时间的时差[1]。
3.本系统构成及硬件软件实现
3.1 本设计采用GPS板介绍
本设计采用THALES-NACIGATION公司生产的A12 GPSOEM接收板,它采用了先进半导体设计手段,具有尺寸小、功耗低、性能稳定、性价比高等优良特性。利用它可以方便、快速地开发出各种GPS应用系统。其主要性能指标如下:
接收通道——12通道并行接收,可同时跟踪12颗卫星;
授时精度——小于400ns,无累计误差;
数据更新时间——1s;
体积和重量——39mm×60mm×10mm,约重40g;
数据输出格式——NMEA-0183 v2.0;RTCM-sc104 v2.0;
环境工作温度——-30℃~+80℃;
正常工作参数——电压5(1±0.05)V;电流70mA。
图1 GPSOEM板A12
GPSOEM板提供硬件接口如表1所示:
管脚
信号类型
功能
1
VCC
电源
2
V_ANT
天线电源接口
3
V_BACK
备用电源
4
GND
地
5
RTCM
接收信号口B
6
RXD
接收信号口A
7
TXD
发送信号接口A
8
1PPS
1个脉冲输出/秒
表 1 GPS输出接口定义
其输出数据逻辑电平为 TTL 电平,这样能够很方便地与单片机相连。格式位默认为:波特率4800,8个数据位,1个停止位,无奇偶校验位。GPS输出数据采用NME-0813格式输出,数据代码采用ASCII码字符,本设计采用NME-0813中RMC格式,下面是GPS输出的一组数据:$GPRMC,140736.00,A,3800.9040,N,11226.5364,E,00.0,355.6,121106,04,W,D*3B,其中140736.00代表14时07分36.00秒,121106代表06年11月12日,根据系统需要,我们需要提取这个数据。GPS所得时间为格林尼治时间(零时区),要得到北京时间(东八区)一定要将提取到的世界时加上 8 h 才是北京时间。
3.2 系统组成及其实现
系统选用ATmega128单片机,它有丰富的外部资源,利用它的USART1与GPS接收机通信:
液晶显示器采用含控制器S1D15G14的3510i彩色液晶显示,S1D15G14附带有LCD电源驱动电路的LCD驱动器,可在单片上实现彩色显示,能显示4096色,分辨率是98x67。它与单片机ATmega128采用串口连接。
主程序提取GPS数据采用查询方式[2],
GPS时钟在ATmega128上软件实现[3] (其中LCD函数为显示函数):
if(USART1_Receive() == $) // USART1_Receive()为串口接收函数
{ while((gps_data_buff[counter ++] = USART1_Receive()) != *);
data = 1; j = 0; i = 0 ; //接收数据放入gps_data_buff[ ]数组当中
for (i=0;i<69;i++)
{if(gps_data_buff[i] == ,)
{ data ++ ; j = 0;
}
switch(data)
{ case 1: break;
case 2: time[j ++] = gps_data_buff[i + 1];time[j] = \0 ; break;
case 3: break;
case 4: break;
case 5: break;
case 6: break;
case 7: break;
case 8: break;
case 9: break;
case 10: day[j ++] = gps_data_buff[i + 1];day[j] = \0 ; break;
default: break;
}
}
LCD_FillArea( 0, 0,98,67,COLOR_WHILE); // LCD刷屏函数
LCD_WriteSpecHZ_GPS_time(2,0,COLOR_BLUE); // LCD显示时间汉字提示
LCD_WriteEnglishString(2,16,time,T_TS,COLOR_BLACK,0); //LCD显示时间
LCD_WriteSpecHZ_GPS_day(2,32,COLOR_BLUE); //LCD显示日期汉字提示
LCD_WriteEnglishString(2,48,day,T_TS,COLOR_BLACK,0); //LCD显示日期
}
最后结果如下图4所示:显示时间为2006年12月15日10点09分00.00秒
4.结论
本文作者创新点在于利用ATmega128提取GPS高精度时钟,并实现了GPS时钟在LCD上的显示,它具有精度高、成本低、易于实现等特点。GPS精密时钟主要应用于城市重要公共建筑,如车站、码头、公园、交通路口、标志建筑等场所和电信行业的移动及固定电话报时等方面。