单片机与GPS的接口实验程序

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1单片机与GPS(全球定位系统)接收器的接口GPS的使用现在已经非常普及,大到航空航海系统,小到个人移动设备,都有着它的身影。随着GPS的民用化与成本的降低,已经走入了人们的日常生活中,很多手机、PDA等手持设备都配备了GPS功能。简单的说,GPS就功能就是在地球经纬座标系下对被测对象的方位进行测定,同时可以提供较高精度与实时的测定数据。对于基于单片机的便携式设备,如果要获取持有者的位置信息,则GPS是最好的解决方案。那么单片机与GPS接收器的接口是怎样的呢?下面就对其进行详细的介绍。一般的GPS接收器都采用串口进行数据通信。在串行通信的基础上,又定义了专用的GPS应用协议,如NMEA­0183或KODEN。(1)NMEA­0183协议1.GPGGA:GPS定位数据$GPGGA,hhmmss,XXXX.XXXX,N/S,XXXXX.XXXX,E/W,X,XX,XXX,123456780/­XXXX,M,0/­XXX,M,XXX,XXXX*hhCRLF91011121314151:世界时(UTC)hh:时mm:分ss:秒北京时间(东八时区)=UTC+8(小时)2:纬度“度度分分.分分分分”方式表示。小数点后也以分为单位。3:N:北纬S:南纬4:经度“度度度分分.分分分分”方式表示。小数点后也以分为单位。5:E:东经W:西经6:GPS质量指示0:未定位1:GPS定位2:差分GPS定位。7:使用到的卫星数0~128:HDOP值水平方向的定位精度劣化程序系数。3维定位时也会输出HDOP值。但在未定位时输出“099”。9:天线高度0:正数高于海平面­:负数低于海平面10:天线高度单位m11:地理高度0:正数高于海平面­:负数低于海平面WGS­84测地系时输出,其他测地系输出“0000”12:地理高度单位m213:DGPS修正经过的时间差分数据时龄单位=秒14:差分基准站发播的ID编号15:校验和2.GPGLL:地理位置,纬度/经度$GPGLL,XXXX.XX,N/S,XXXXX.XX,E/W*hhCRLF123451:纬度2:N:北纬S:南纬3:经度4:E:东经W:西经5:校验和3.GPGSA:GPS、DOP与星历$GPGSA,A,X,XX,…………,XX.X,XX.X,*hhCRLF1234561:二维/三维定位方式指示A:自动M:手动2:定位状态1:未定位2:二维定位3:三维定位3:使用到的卫星编号最大12颗卫星的编号(卫星编号1~32),最大可有12颗卫星的编号,12颗卫星以下的情况,省略卫星编号,只输出“,”。4:PDOP值保留小数点后1位。二维定位情况下不输出。5:HDOP值保留小数点后1位。未定位情况下不输出。6:校验和4.GPGSV:可收到信号的GPS卫星$GPGSV,X,X,XX,XX,XX,XXX,XX,,*hhCRLF123456781:语句总数。2:当前语句号。3:当前视野范围内的可能收到的卫星(符合仰角门限值)总数。4:卫星编号(01~32)5:卫星水平仰角(0~90度)6:卫星方位角真北方向为0度,顺时针方向计算,最大359度,三位输出。7:信噪比(0~25dB)注:各卫星的编号,仰角、方位角、S/N值为一组数剧,每条语句可输出4组此类数据。在可收到的卫星数量小于4颗的情况下,其他数值省略,只输出“,”。8:校验和5.GPRMC:推荐最小数据量的GPS具体内容/传输数据$GPRMC,hhmmss,A/V,XXXX.XXX,N/S,XXXXX.XXX,E/W,XXX.X,XXX.X,123456783XXXXXX,,*hhCRLF9101:世界时(UTC)hh:时mm:分ss:秒2:定位状态A:定位V:未定位3:纬度4:N:北纬S:南纬5:经度6:E:东经W:西经7:对地址速度单位为节,1节(knot)=1852m/h8:方位角真北方向为0度,顺时针方向计算,最大359.9度,四位输出。也称作航向角。9:日期按日、月、年格式(年按两位)输出10:校验和6.GPVTG:方位角和对地速度$GPVTG,XXX.X,T,,,XXX.X,N,XXX.X,K*hhCRLF12345671:方位角真北方向为0度,顺时针方向计算,最大359.9度,四位输出。也称作航向角。2:真方位3:对地速度4:速度单位单位为节,1节(knot)=1852m/h5:对地速度6:速度单位单位为公里/小时(Km/h)7:校验和7.GPZDA:时间与日期$GPZDA,hhmmss,XX,XX,XXXX,,*hhCRLF123451:世界时(UTC)hh:时mm:分ss:秒2:日3:月4:年5:校验和8.PKODA:卫星信息(生产商专用语句)$PKODA,P/H,XXX.X,XX,XX,XX,XX,XX,XX,XX,XX,XXXX,M,XXX.X,N,XXX.123456789101112131415X,0/­XX.X,X,XCRLF16171841:P:三维定位定式H:二维定位方式2:DOP值3:第一颗卫星编号4:第二颗卫星编号5:第三颗卫星编号6:第四颗卫星编号7:第一颗卫星的S/N值(dB)8:第二颗卫星的S/N值(dB)9:第三颗卫星的S/N值(dB)10:第四颗卫星的S/N值(dB)11:海拔高度12:高度单位m13:速度14:速度单位节(knot)15:方位角真北方向为0度,顺时针方向计算,最大359.9度,四位输出。也称作航向角。16:振荡频率漂移单位:Hz0:高­:低无频率漂移时输出“050.0”17:经度,精确到1/1000分时的最后一位18:纬度,精确到1/1000分时的最后一位9.PKODG,1:卫星信息(生产商专用语句)$PKODG,1,X,XX,+/­XX,XXX,XX,XX,XX,XX,XX,XX,XX,XX,123456789101112XXCRLF131:定位状态1:GPS定位0:未定位2:星号(01~32)3:水平仰角单位:度+:卫星高于地平线­:卫星低于地平线4:卫星方位角真北方向为0度,顺时针方向计算,最大359.9度,四位输出。也称作航向角。5:水平仰角阀值(00~45度)6:信噪比阀值(00~25)7:HDOP阀值(00~20)8:PDOP阀值(00~30)9:平均因子(01~03)01:低速02:中速03:高速(车载)10:测地系(00~85)11:日12:月13:年注:2、3、4的数据在定位过程中每次输出一颗卫星的相应数据,并按星历表中的5卫星星号顺序切换。10.PKODG,7:差分设定信息(生产商专用语句)$PKODG,7,X,X,XXX,CRLF1231:DGPS设定0:DGPS关1:接收RTCM­104数据格式DGPS信号2:接收WAAS数据格式DGPS信号在没有收到差分广播数据时,即使DGPS开关设定到ON的状态也不能进行差分定位。2:差分定位状态1:DGPS定位0:不能进行DGPS定位3:时间(0~180秒)11.PKODG,15:睡眠工作模式设定信息(生产商专用语句)$PKODG,15,X,XXXXX,XXXXX,XXX,XXXXX,XXX,X,X,+/­XXX,123456789+/­XX,CRLF101:睡眠工作方式设定0:不睡眠1:自动2:手动2:睡眠时间0:无时间限制5~99999秒(1~4秒禁止使用)3:工作时间5~99999秒(0~4秒禁止使用)可能有+/­秒的误差4:测位时间复苏0:断2~999秒(1秒禁止使用)5:睡眠剩余时间(动作时)1~999秒6:测位复苏时间(睡眠时)0~999秒7:天线状态正常时:0断线时:1短路时:28:秒脉冲同步0:与UTC时间不同步(连续输出方式时)1:与UTC时间同步(连续输出方式时)2:为了和UTC时间同步而没有输出(自动方式时)9:延迟时间修正量的设定+/­999m的电波空间传输延迟修正量在对延迟量进行修正换算的过程中,要考虑到同轴电缆电导率的有所不同带来的影响。10:GPS输出的时间与UTC时间的时间差­60~60秒12.上电后的初始输出(2)单片机对GPS数据的解析方法从上面的介绍可以看到,GPS的数据通过NMEA­0183协议进行组织与传输。单片机需要就需要按照协议的规定对接到的数据进行解析,从中提取出有用的数6据。上面的各条语句,我们经常用到的是GPRMC与GPGGA。那么下面就针对于这两语句进行解析。GPS数据解析是有一定的技巧的。以上语句从结构上看,可以看出语句中的参数间均以“,”作为分隔符,因此就可以将一条语句分割为若干个子句,而这些子句就是我们想要的参数了。以下程序例程说明了分割的实现过程:/*­­­­­­­­­­­­­­­­­­­­­­函数名:GPS_S()函数功能:对数据祯进行子串化作者:于振南­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*/intGPS_S(char*s){intlens,i;lens=strlen(s);for(i=0;ilens;i++){if(s[i]==',')s[i]=0;}return1;}上面的程序只是简单的将语句中的“,”替换为了’\0’。这样就把语句这样一个长的整个字符串,分割为了若干个短的离散的字符串。为了对这些离散的字符串进行统一的管理,定义以下结构体:structGPS_GPGGA{charCommand[7];charUTC[7];charWD[9];charWDNS[2];纬度36度00.000N经度136度00.000E高度0m时间在未收到GPS卫星信号时输出ROM存储的时间。收到卫星信号后由卫星上下发的UTC时间修正此时间。频率漂移+00.0Hz速度0.0kt(km/h)方位0.0度卫星参数无charJD[10];charJDWE[2];charPOS_STATUS[2];charWXS[3];7charHDOP[4];charWH[6];charDA1[2];charDH[5];charDA2[4];charSUM[3];};structGPS_GPRMC{unsignedcharCommand[7];unsignedcharTIME[7];unsignedcharVA[2];unsignedcharWD[9];unsignedcharWDNS[2];unsignedcharJD[10];unsignedcharJDWE[2];unsignedcharSPEED[6];unsignedcharXHQD[6];unsignedcharDATE[9];unsignedcharSUM[3];};从各个语句中解析出来的数据项装入以下的结构结中:structGPS_INF{unsignedcharVA;unsignedcharWDNS;doubleWD;unsignedcharJDWE;doubleJD;unsignedcharPOS_STATUS;unsignedcharWXS;floatHDOP;floatSPEED;floatXHQD;structGPS_TIMETIME;};以下的程序例程实现GPS数据解析及数据的装入,如下:/*­­­­­­­­­­­­­­­­­­­­­­函数名:GPS_Analysis()函数功能:对GPS数据祯进行解析并装入到结构体中作者:于振南­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­*/intGPS_Analysis(char*gps_gpgga,char*gps_gprmc,structGPS_INF*gps){8unsignedlongt;delay(1000);gps­VA=(((structGPS_GPRMC*)gps_gprmc)­VA)[0];gps­WDNS=(((structGPS_GPRMC*)gps_gprmc)­WDNS)[0];gps­WD=atof(((structGPS_GPRMC*)gps_gprmc)­

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功