全球定位系统(GlobalPositioningSystem,GPS)是美国从20世纪70年代开始研制,于1994年全面建成,以接收导航卫星信号为基础的非自主式导航与定位系统。他以全球覆盖、全天候、连续实时提供高精度的三维位置、三维速度和时间信息的能力,很好地解决了人类导航和定位问题。随着全球定位系统的不断改进,软硬件的不断完善,应用领域正在不断的开拓,无论在军事还是民用领域都得到广泛地应用和发展。实际应用中,GPS接收机收到轨道卫星的信号后,经过解调输出的,是标准格式的GPS定位数据,该数据必须经过进一步处理,才能在用户数据终端上显示。
1 GPS接收机输出数据格式
NMEA-0183是美国国家海洋电子协会制定的用于航海仪器数据异步通信的通用接口标准,他是由ASCII字符组成的字符串。GPS接收机以NMEA-0183标准格式输出GPS定位数据,数据终端设备需要实时从GPS输出的NMEA0183数据流中得到位置信息、时间信息。GPS接收机提供了多种语句格式,有GPGGA,GPGSA,GPGSV,GPRMC,GPZDA和GPGLL等。用户可以根据需要选择一种或多种语句输出。本系统选择接收并解析GPGLL和GPZDA,分别获取地理位置信息和UTC时间信息(含日期),UTC时间通过时差修正得到本地时间信息。
NMEA0183语句包含多个数据项,数据项之间以逗号分隔,语句以回车(CR)和换行(LF)符结尾。
GPZDA语句格式如下:
上述语句中,各数据项的意义如下:
①语句类型:$GPZDA;②UTC时间:14523.62;③UTC日:01~31;④UTC月:01~12;⑤UTC:年2001;⑥本地时差:10时;⑦本地时差:34分;⑧校验和:6E。其中校验和包括$符。
GPGLL语句格式如下:
上述语句中,各数据项的意义如下:
①语句类型:$GPGLL;②纬度值;③北纬;④经度值;⑤西经;⑥UTC时间,时时分分秒秒.秒秒秒格式;⑦状态,A=定位,V=未定位;⑧校验和:2C。其中校验和包括$符。
接收上述GPS信息由AT89C2051单片机的UART完成。GPGLL为55个字符,GPZDA为38个字符。考虑到单片机内部RAM单元有限,为适应GPS同时输出的数据句型比较多,数据量比较大的情况,因此,需要对句型进行选择性接收。
2 主程序设计
主程序主要包括以下几个部分:初始化、接收GPS数据、GPS信息处理、超时处理判断等。GPS数据采用中断方式接收,数据处理由独立子程序完成,主要包括时间、位置信息的提取。数据接收处理完毕后,传送到LCD显示。超时判断时间间隔设定与GPS数据更新速度匹配即可,其目的是保证GPS提供的位置、时闻信息与用户的可视信息同步。
GPS接收机通常采用RS232C/RS 485/422标准:传输速率可以设定,有4 800 b/s等,数据位:8 b,停止位:1 b。
对于AT89C2051单片机,选择定时器1作为波特率发生器,波特率取决于溢出速率。波特率计算公式如下:
系统时钟取11.0592 MHz,则对于波特率4 800 b/s,定时器1重载值为FAH。
3 数据处理子程序设计
接收缓冲区存储的内容是ASCII码(字符),因此在处理成数据的时候要进行转换。
对于时间数据,处理成压缩BCD格式,如对于以下的GPZDA信息:
$GPZDA,114523,18,11,2006,10,34*6E<CR><LF>
经处理后,得到如下信息:11 H(时),45 H(分),23 H(秒),18 H(日),11 H(月),20 H(世纪)-06 H(年代),10 H(时差)。
GPS数据处理子程序首先将接收的时间数据转换为上述BCD数据。根据GPZDA得到UTC时间和本地时差后,可以修正为本地时间输出。时间修正要考虑到进位和借位问题。在程序设计过程中闰年、大月小月需要分别处理。
Hour表示UTC时,Min表示UTC分,Sec表示UTC秒,Day表示UTC日,Mon表示UTC月,YearH表示UTC世纪,YearL表示UTC年代;D_Hour和D_Min表示时差的时和分。
常用GPS接收机输出NMEA0183数据有V2.1,V2.0和V1.5三种版本,其中V2.1版本时差修正到分钟,而V2.0和V1.5只到小时。为满足程序通用,在实际信息解析时以V2.1为准,当接收的信息为V2.0和V1.5时,只需将上述程序中D_min置为0即可。
4 结语
GPS信息处理系统解决了GPS标准数据式的解读、信息的提取、转换和显示问题。另外,他具有时差修正功能,便于全球各地用户使用。以AT89C2051单片机为控制核心,LCD和键盘作为人机界面,以较低的成本满足了用户的一般需求。目前,该系统已在船用导航系统中得到了成功应用。