用单片机处理gps数据程序实例.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1. GPS 标准数据(GGA) $GPGGA,1,2,3,4,5,6,7,8,9,M,10,M,11,12,*hhCRLF 1:UTC 当地时间,时分秒格式。 2:纬度,ddmm.mmmm 格式。 3:纬度半球,N 或者S。 4:经度,ddmm.mmmm 格式。 5:经度半球,E 或者W 。 6:GPS 质量参数。 7:可用卫星数,00~12。 8:水平精度,0.5~99.9 。 9:天线上下平均海拔,-999.9~99999.9 米。 10:海拔高度,-999.9~9999.9 米。 11:差分GPS 数据传输间隔时间,单位秒,在非差分模式下为空。 12:差分基准站ID,非差分为空。 2. 推荐最小GPS/TRANSIT 数据(RMC) $GPRMC,1,2,3,4,5,6,7,8,9,10,11,12*hhCRLF 1:UTC 当地时间,时分秒格式。 2:工作状态,A=可用;V=接收器警报,不可用。 3:纬度,ddmm.mmmm 格式。 4:纬度半球,N 或者S。 5:经度,ddmm.mmmm 格式。 6:经度半球,E 或者W 。 7:对地速度,000.0~999.9 节。 8:对地航向,000.0°~359.9° 9:UTC 当地时间,ddmmyy 格式。 10:磁变。 11:磁变方向。 12:工作模式,A= 自主,D=差分,E=评估,N=数据无效。 3.3D 速度信息(PGRMV) $PGRMV,1,2,3*hhCRLF 1:真实东向速度。 2:真实北向速度。 3:垂直速度。 4 . 出语句激活/屏蔽语句(PGRMO) $PGRMO1,2*hhCRLF 1: 目标语句名。 2: 目标语句状态参数。 5. GPS 板设置语句(PGRMC) $PGRMC,1,2,3,4,5,6,7,8,9,10,11,12,13,14*hhCRLF 1:工作模式。 2:海拔高度。 3~8:地球数据索引。 9:差分模式参数。 10:NMEA 波特率设置。 11:速度过滤参数。 12:秒脉冲模式。 13:秒脉冲脉宽设置。 14:默认值。 排除掉对本系统无作用的管脚,实际上我们只需要用到GARMINGPS25LP 的Pin4和Pin5,具体连接概图如下: 图2:单片机与GARMINGPS25LP 硬件接口 再让我们回过头来看看显示的硬件部分设计,在开始设计前有必要对图形液晶模块的工作方式做一个简要的 说明。一个字符要在液晶模块上显示出来必须经过三个基本的控制操作: 1. 向液晶控制芯片写指令代码。 2. 象液晶控制芯片写显示数据。 3. 读显示数据。 而且在这一过程中,液晶控制器必须处于空闲状态,否则只可以对其进行读状态操作。 了这些代码我们就可以很简单的完成字符的液晶显示了,接下来是设计的最后部分,即 GARMINGPS25LP 与单片机的软件接口。 这一部分的流程如下图: 图5:主程序流程 在处理主程序前,有必要先将串口中断服务程序先给出,具体代码如下: serial() interrupt 4 using 1 { RI=0; If(SBUF==0x24) /*判断是否有GPS 数据到来。 0x24为西文字符$的ASCII 码。 { record=1; i=0; igps=0; Numbercoma=0; } if(record==1) { if(SBUF==0x2c){numbercoma++;} if(numbercoma==1) /* 因UTC 紧跟在第一个逗号后,故记录到第一个逗号后就开始记录时间数据。 { stringgps[igps]=SBUF; igps++; } if(SBUF==’*’) /*判断GPRMC 数据是否结束。 { stringgps[igps]=’\0’; /*为字符串添加结束标志。 j=0; len2=spintf(stringgps,”%s”,stringgps+1); NDIG=sprintf(BUFFER,”k1:%d”,k1); Show(); If(len2!=0) { uint numgps=atoi(stringgps); } numgps=0; numbercoma=0; record=0; igps=0; } } } 这里我们可以看出,单片机仅会记录第一个逗号后的数据(数据被存在数据缓冲区BUFFER 中,即UTC 本地 时间数据,因此在主程序中我们需要考虑的问题就是触发串口中断,并将收到的数据送液晶显示。 主程序的代码如下: #include stdio.h #incl

文档评论(0)

xina171127 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档