51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > ARM/CPLD/综合 > 详细内容
基于ATmega128的GPS时钟设计与实现
发布时间:2009/8/4  阅读次数:2372  字体大小: 【】 【】【

摘    要:介绍了采用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精密时钟主要应用于城市重要公共建筑,如车站、码头、公园、交通路口、标志建筑等场所和电信行业的移动及固定电话报时等方面。


我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号