1、 基于单片机的GPS全球定位系统设计软件部分摘 要 GPS全球定位系统在实际生活中被广泛应用,是当今信息时代发展中的重要组成部分。因其具有性能好、精度高、应用广的特点,使其成为了迄今最好的导航定位系统。本文以北京精仪达盛科技有限公司提供的GSU-38A0 GPS接收模块为例,介绍了GPS的通信协议。讨论了基于单片机的GPS接收系统设计, 提出了对GPS全球定位系统定位信息的接收以及对各定位参数数据的提取方法,并给出了系统的硬件电路及软件流程图。通过本设计方法,本系统由单片机控制GPS模块较为精确地计算和显示日期、时间、经度、纬度等卫星信息。 关键词 GPS;GSU-38A0;单片机;MGLS-
2、128641引言1.1 GPS系统及其工作原理全球定位系统(Global Positioning System 简称GPS)是美国第二代军用导航系统,可实现全球范围内的实时导航和定位。GPS由太空卫星、地面控制系统、用户设备三个部分组成。太空卫星共有27颗,24颗运行,3颗备用。24颗可操作的工作卫星以55的倾角分布在地球上空20200KM的6个轨道面上。这些卫星轨道上的分布状态使地球上的任何位置在任意时候都可以同时收到至少6颗卫星的定位信息,这些卫星则不断地给全球用户发送位置和时间的广播数据。地面控制系统主要作用有:根据监控系统对GPS的观测数据计算出卫星的星历和卫星钟的改正参数等,并将这些
3、数据注入到卫星中去;对卫星进行控制,对卫星进行发布指令;接收卫星信号,监测卫星状态等。用户设备用于接收GPS卫星所发出的信号,利用这些信号进行导航定位等工作。GPS系统的基本定位原理是:每颗GPS卫星时刻发布其位置和时间数据信号,用户接收机可以测量每颗卫星信号到接收机的时间延迟,根据信号传输的速度可以计算出接收机到不同卫星的距离。同时收集至少4颗卫星的数据时,就可以算出三维坐标、速度和时间。由于GPS具有全球覆盖以及精度高、定位速度快、实时性好、抗干扰能力强等特点,近年来在国内外得到了广泛的应用,在各个领域发挥了极大的作用,已成为了信息时代不可以或缺的一部分1。1.2 本设计的主要工作本文的主
4、要目的是在GPS和单片机的理论和知识上,选用Atmel公司的AT89S52提取GPS模块的接收数据并由12864液晶显示接收数据。在此设计过程中,主要熟悉GSU-38A0 GPS模块各性能指标,学习NMEA封包并懂得使用NMEA输出命令,结合单片机串行通信知识能实现对GPS接收到的卫星信息进行提取,并在12864液晶显示平台上选择性的显示数据。2 GSU-38A0 GPS模块简介GSU-38A0 GPS模块是北京精仪达盛科技有限公司的产品。其特点是体积小、接口简单、可靠性强,可用于DSP、ARM、单片机系统。,模块5V输入,由固定电源输出芯片LT1085输出3.3V电压给GSU-38A0芯片。
5、GPS模块附有10米的接收天线 2 。2.1 GPS接收模块主要性能指标GPS具有12个数据并行接收通道,包括了8个数据位、1个起始位、1个停止位、无校正位,输出电平为CMOS电平、电流为1mA。通信方式是采用异步串行通信,默认的通讯速率是4800baud,接收频率为1575.42 1.0MHz L1波段C/A码。GSU-38A0 GPS接收模块可以提供经度、纬度、速度、高度、世界协调时间、频率和GPS卫星轨道信息等。它的最大特点是:低压3.3V供电;工作电流不高于50mA(不含天线消耗);高灵敏度-145dBm;可以输出时间的最小单位为0.01秒。GPS的定位精度问题主要应归结于美国军方的军
6、事策略(SA)。在无SA影响的情况下,当PDOP值小于等于3,并且相对被测点GPS卫星不在其轨道上所处位置良好时,得到的位置数据有95%的精度在10米以内;另外使用差分定位技术,其范围在23米左右。如果天线被遮挡或者GPS卫星所处位置不很理想时,PDOP值会降低,而且有部分定位数据的精度可能要超出10米的范围。对于第一次运行,本GPS模块需要花费50秒左右对接收到的卫星数据进行累计运算后,才能完成第一次定位(即“冷启动” )。自冷启动后,每次定位所需要的时间小于12秒。在运行过程中定位信息大约每秒更新一次。如果收到了3颗以上符合PDOP和 HDOP门限值的卫星信号可实现2维定位, 收到4颗符合
7、PDOP和HDOP门限值的卫星信号可实现3维定位。不需要初始状态输入和初始时刻输入。本GPS模块有8M的flash存储器,信息格式可以是NMEA-0183或Binary,采用ASCII代码。附带的天线中心频率为1575.42MHz,右螺旋偏振,增益大于等于-5dB,轴线比为3dB。2.2 GSU-38A0接口说明表1 引脚功能 引脚符号I/O性能1VCCI主电源2RESETI复位3TXD1O数据发送口4RXD1I数据接收口51PPSO1PPS信号输出6TXD0O串行发送数据端口7GPIOI/O唤醒,中断输入8GNDGROUND电源地和信号地 应当注意的是芯片正常工作时电源电压标称值是3.3V,
8、允许的极限范围是3.0V3.9V。超出了此范围将会造成不可修复性的破损。2.3输入数据格式GSU-38A0通过命令来修改定位参数、输出格式、通讯参数、选择语句和工作方式等。GSU-38A0支持NMEA、START、STOP、RESTORE、AUTOSTART、FLXRATE、DATUM、PWRDOWN等8条NMEA-0183格式的命令。2.4输出数据格式 GSU-38A0 GPS的通信波特率默认值为4800bps,1个起始位,8个数据位,1个停止位,无奇偶校验位。通常使用NMEA-0183格式输出,数据代码为 ASCII码字符。NMEA-0183是美国海洋电子协会为海用电子设备制定的标准格式。
9、由于该格式为ASCII码字符串,比较直观和易于处理,在许多高级语言中都可以直接进行判别、分离,以提取用户所需要的数据。 适用GSU-38A0的有6条输出语句:GPGLL:地理位置,经度及纬度; GPGGA:卫星定位后信息; GPVTG:对地方向及对地速度;GPRMG:最起码的GNSS信息; GPGSA:GNSS DOP,一种偏差信息,说明卫星定位讯号的优劣状态;GPASV:GNSS天空范围内的卫星。其中,RMC数据格式是最常见的,提供了最起码的GNSS信息,对一般用户来说,GPRMC提供的数据信息相对其他格式而言价值量更大些。下面便以RMC语句为例来介绍其数据格式,该语句包含了时间、纬度、经度
10、等卫星信息。$GPRMC,hhmmss.dd,s,xxmm.dddd,yyymm.dddd,s.s,h.h,ddmmyy,d.d ,M *hh hhmmss.dd 世界协调时间(UTC)hh:时;mm:分;ss:秒;dd:秒(小数部分)。 S定位状态 A:定位;V不定位。 xxmm.dddd 纬度 xx:度;mm:分;dddd:分的小数部分。 :北纬N/南纬S yyymm.dddd 经度 yyy:度;mm:分;dddd:分的小数部分。 东经E/西经S S.S 对地速度,单位:节。1节(knot)=1.852km/h h.h 方位角;真北方向为0,顺时针方向计算,最大359.9。ddmmyy 日
11、期 dd:日;mm:月;yy:年;按日、月、年格式(年按两位)输出。 d.d 磁偏角 偏差,E:向东;W:向西M 定位方式A:自动;N:手动*hh hh:校验/ 为终止符,表示回车、换行。3硬件设计3.1电源设计 本系统选用的液晶显示器件是型号为MGLS-12864的LCD,需要负电源驱动。有必要设计一个5V输出电压的双电源电路,如图1所示。图1 电源电路3.2系统电路设计图2 系统电路原理图系统采用11.0592MHz晶振,串口方式1接收GPS信息,P1口和P3口用于12864 LED液晶显示接口,可以显示实时时间、纬度、经度及其它GPS数据信息3。本系统主要有两个硬件模块组成:GPS接收模
12、块和液晶显示模块(实物图见附录图A)。GSU-38A0 GPS模块用于接收GPS卫星的信号,并计算出模块测试点所在位置的卫星信息。采用的GPS模块由变频器、信号通道、微处理器、存储单元和接收天线组成。单片机主控制器的串行接收口连接GPS模块数据发送端接收卫星信息。液晶显示模块用于显示接收到的数据信息。12864数据连接单片机P1口,双电源供电。结束开始4软件设计显示数据液晶初始化处理数据串行口中断初始化 数据正确? Y 开始接收数据 N接收数据是否接收到数据帧 N Y图3 系统程序流程图图3为GPS全球定位系统的主程序流程图。系统软件主要由初始化模块、数据接收处理模块组成。初始化模块完成开机上
13、电后对单片机、液晶显示器和GPS 模块的初始化工作。对单片机设置串口工作模式、设置波特率和中断工作模式;对液晶显示器设置开机画面和显示模式;完成对GPS 模块串口的成功通信。数据接收处理模块负责处理从GPS接收到的数据。在单片机串口收到信息后,先判别是否为语句引导头“$”,再接收信息内容,然后根据语句标识区分出信息类别以对收到ASC码进行处理显示。若整个数据接收正确,便对数据进行处理;若接收不正确,则重新进行接收。本设计中,接收时主要提取并存储以下数据内容:当前日期、时间、定位状态、纬度、经度。如图4所示。特别注意的是GPS发送的时间是世界统一时,与我国的时区相差八个小时,所以还要将时间作转换
14、。北京时间应在UTC时间上加上8小时才是准确的北京时,在超出24小时时应作减24小时处理。转换时间要考虑到年月日的变更。数据更新率为每秒一次。系统工作时GPS模块不断得到新的数据,单片机不断刷新RAM,处理完后的数据送液晶显示器显示4。数据接收处理程序流程图如下面图4所示。帧起始$判断帧头RMC判断数据分段提取有效性提取日期提取纬度信息提取时分秒提取经度信息提取数据处理、储存、显示结束图4 数据接收处理程序流程图 在串行中断接收GPS信号中,下面以时间提取为例,由判断帧头到数据的分段提取方法的程序如下:unsigned char data data_item=0 /*全局变量声明*/unsig
15、ned int rece_num = 0void receive() interrupt 4 /*串行中断:接收GPS信号*/unsigned chartemp;RI = 0;temp = SBUF;rece_num+;switch (data_item)case 0:if (temp = $) data_item+;break;case 1: if (temp = G) data_item+;else data_item = 0;break;case 2: if (temp = P) data_item+;else data_item = 0;break;case 3:if (temp =
16、R) data_item+;else data_item = 0;break;case 4:if (temp = M) data_item+;else data_item = 0;break; case 5:if (temp = C) data_item+;else data_item = 0;break;case 6:if (temp = ,) data_item+;g_Ptr = 0;g_Class = 0;g_DataVari = 1; else data_item = 0;break;case 7:if (temp = ,) g_Ptr = 0;g_Class+;break; if (
17、temp = $) data_item = 1;break; switch (g_Class) case 0: /*提取时间数据*/ if (g_Ptr = 24) /判断得到的时间是否超过24小时,超出变作减24处理 j - = 24; g_DisTime0 = j/10+0; /将北京时间高一位作码型变换并赋予高一位显示 g_DisTime1 = j%10 +0;/将北京时间高二位作码型变换并赋予高二位显示 在调试中出现一个奇怪的问题,在作了以上的处理后时间的小时位数据并不完全正确,高位显示的与北京时间相同,但低位却与UTC时间相同。在做了各种尝试(如在UTC时间上做加9处理、直接给六位时
18、间g_DisTime5赋值等)后总结出这样一个问题,以上的算法处理只对六位数据位的高一位处理有效,低五位的显示始终都是正确UTC时间。经过分析,初步认定上面的程序并没有被完全的执行。因GPS接收模块源源不断的传送数据给单片机处理,在运行过程中定位信息大约每秒钟更新一次,在主函数中对收到的时间进行处理时有可能会出现还没来得及处理完毕时便接收到下一帧数据,故时间的处理就可能会有只对高一位处理完成而没完成处理好低五位时又进入了串行口中断,那么液晶显示的结果就是经过处理的高一位(北京时间)和未经处理的低五位(UTC时间)。考虑到以上原因,将原放在主函数的时间转换处理程序放置在到中断时一收到UTC时间就
19、对其进行转换处理。经过了调试,终于在液晶上显示出来正确的北京时间,证明了以上的分析、推断的正确性。.2系统测试结果 2007年5月22日下午2点4分钟左右在肇庆学院学生宿舍5区13栋进行测试,接收天线放置于户外接收信号,启动GPS接收系统,经过测试,液晶显示的结果如下(实物图见附录图B): 220507 140445 A 11229.3980 E 2306.7840 N 此数据代表意义分别如下:220507:表示当天日期为2007年5月22日;140445:表示测试时的当前时间为14时4分45秒;A:表示接收到的卫星信息为可用的资料;11229.3980:表示测试地点的经度为112d 29.
20、3980分;E:表示测试地点为东经;2306.7840:表示测试地点的纬度是23d 6.7840分;N:表示测试地点在北半球。6结束语本文中我们介绍了基于单片机开发的GPS接收机系统设计的方法。 GPS应用越来越广泛,我们的设计只是应用的基础和开端。在实际应用中我们要结合各个领域的特殊情况和特定的技术需求,进行有针对性的处理和设计。GPS提供的定位信息包括了经度、纬度、海拔、速度、航向、磁场、时间、卫星个数及其编号等卫星信息,其接收数据方法类似,故本设计只是提取了其中的部分价值性较高的数据信息。GPS可通过NMEA输入命令对串行通讯参数进行设置,实现个性化显示格式,本设计只使用了其默认的设置参
21、数。参考文献:1邱致和,王万义. GPS原理与应用M.北京:电子工业出版社,2001:38. 2电子电气综合实训系统使用说明书 M.北京:精仪达盛科技有限公司,2000:3747. 3胡健.单片机原理及接口技术M.北京:机械工业出版社,2005:164191. 4戴佳,戴卫恒.51单片机C语言应用程序设计M.北京:电子工业出版社2006:236246. Design of Global Positioning System Based on Single Chip MicrocontrollerPart of Software Haisheng YeAbstract:The Global Po
22、sitioning System is an very importeant part in the information time, which is widely implied in our pratical life. Its the characteristic of perfect performance, high precision and widely impliment that makes it the best navigation positioning system till now. This article has introduced the GPS cor
23、respondence agreement taking the GSU-38A0 GPS sending and receiving moule that provided by the Beijing Techshine Science and Technology Limited Company as an example. And discussed the system design on the base of single chip computer, proposed the method of the GPS systems imformations receiving an
24、d withdrawing of the position parameter data. The article has provided the hardware circtuit and software struct. The system that the single chip computer cotrolling the GPS module can precisely calculate and show the satellite information of date, time, longitude, latitude and so on.Key words:GPS; GSU-38A0; Microcontroller; MGLS-12864附录:图A GPS接收系统图B 测试结果10