基于单片机的GPS定位信息显示系统设计毕业论文设计_第1页
基于单片机的GPS定位信息显示系统设计毕业论文设计_第2页
基于单片机的GPS定位信息显示系统设计毕业论文设计_第3页
基于单片机的GPS定位信息显示系统设计毕业论文设计_第4页
基于单片机的GPS定位信息显示系统设计毕业论文设计_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE70jingdezheng毕业论文(设计)BACHELORDISSERTATION论文题目:基于单片机的GPS定位信息显示系统设计毕业论文(设计)原创性声明本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。据我所知,除文中已经注明引用的内容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。作者签名:日期:毕业论文(设计)授权使用说明本论文(设计)作者完全了解**学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。学校可以公布论文(设计)的全部或部分内容。保密的论文(设计)在解密后适用本规定。

作者签名:指导教师签名:日期:日期:

注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画3)毕业论文须用A4单面打印,论文50页以上的双面打印4)图表应绘制于无格子的页面上5)软件工程类课题应有程序清单,并提供电子文档5.装订顺序1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订3)其它

基于单片机的GPS定位信息显示系统设计中文摘要GPS全球定位系统在实际生活中被广泛应用,是当今信息时代发展中的重要组成部分。因其具有性能好、精度高、应用广的特点,使其成为了迄今为止最好的定位导航系统。本论文详细介绍了一种基于单片机、GPS接收模块、OLED液晶显示模块等器件的GPS实时显示功能的实现。分别从硬件设计和软件设计等方面对其作了详细的阐述,并且结合硬件的特点研究了MCS-51系列单片机如何与GPS接收模块实现串行通信,该系统是根据GPS模块数据输出基本原理设计而成的。它是一台体积小巧、携带方便、可以独立使用的全天候实时的定位导航设备。关键词:GPS;单片机;GPS接收模块;OLED液晶屏目录第一章绪论 11.1课题背景及意义 11.2论文主要内容 2第二章GPS定位信息显示系统方案设计 32.1GPS全球定位系统简介 32.2GPS信号接收方案选择 52.3GPS接收模块的研究 52.4总体方案的设计 6第三章基于单片机的GPS硬件电路设计 83.1基于单片机的GPS硬件电路总体结构 83.2基于单片机的GPS定位信息显示系统设计硬件电路简介 83.2.1STC89C52简介 83.2.2SiRFStarIIGPS信号接收模块 123.2.3OLED液晶显示模块介绍 143.3基于单片机的GPS硬件连接介绍 15第四章基于单片机的GPS软件设计 174.1GPS数据包介绍 174.1.1使用ComAssistant.exe软件通过电脑测试GPS 214.2基于单片机的GPS定位系统软件开发环境―KeiluVision2 254.2.18051开发工具 254.2.2uVision2集成开发环境 264.2.3编辑器和调试器 274.2.4测试程序 274.2.5KeilC编译步骤 284.3基于单片机的GPS软件设计思路 314.4模块软件设计 324.4.1液晶模块初始化模块 324.4.2GPS数据接收模块 35第五章系统调试与实验结果 375.1硬件调试 375.2软件调试 375.3实验结果 385.4实验结果分析 39第六章总结 40致谢 41致谢 41参考文献 42附录 43第一章绪论1.1课题背景及意义1978年2月22日第一颗GPS试验卫星的入轨运行,开创了以导航卫星为动态已知点的无线电导航定位的新时代。GPS卫星所发送的导航定位信号,是一种可供无数用户共享的空间信息资源[1]。陆地、海洋和空间的广大用户,只要持有一种能够接收、跟踪、变换和测量GPS信号的接收机,就可以全天时、全天候和全球性的测量运动载体的七维状态参数和三维状态参数。其用途之广,影响之大,是其他无线电接收装置都望尘莫及的。不仅如此,GPSGPS技术的陆地应用GPS技术在陆地上的开发应用可以体现在许多方面,如:各种车辆的行驶状态监控;旅游者或旅游车的景点导游;应急车辆的快速引导行驶;高精度时间比对和频率控制;大气物理观测;地球物理资源勘探;工程建设的施工放样测量;大型建筑和煤气田的沉降检测;板内运动状态和地壳形变测量;陆地以及海洋大地测量基准的测定;工程、区域、国家等各种类型大地测量控制网的测量和建设等。GPS技术的海洋应用GPS技术在海洋方面有着极其重要的作用,比如:远洋船舶的最佳航线测定;远洋船队在途中航行的实时调度和监测;内河船只的实时调度和自主导航测量;海洋救援的搜索和定点测量;远洋渔船的结队航行和作业调度;海洋油气平台的就位和复位测定;海底沉船位置的精确探测;海底管道铺设测量;海岸地球物理勘探;水文测量;海底大地测量控制网的布测;海底地形的精细测量;船运货物失窃报警;净化海洋;海洋纠纷或海损事故的定点测定;港口交通管制;海洋灾难检测等。GPS技术的航空应用GPS技术在航空方面的应用主要体现在:民航飞机的在途自主导航;飞机精密着陆;飞机空中加油控制;飞机编队飞行的安全保护;航空援救的搜索和定点测量;机载地球物理勘探;飞机探测灾区大小和标定测量;摄影和遥感飞机的七维状态参数和三维姿态参数测量等。GPS技术的航天应用GPS技术在航天方面同样也有着很重要的作用:低轨道通讯卫星群的实时轨道测量;卫星入轨和卫星回收的实时点位测量;载入航天器的在轨防护探测;星载GPS的遮掩天体大小和大气参数测量;对地观测卫星的七维状态参数和三维状态参数测量[2]。由此可见,GPS技术已经延伸到各个领域的方方面面,但是要完成以上所述的各种用途,最基本的就是要具备能够接收GPS信号并且能够调制输出的设备,而这种设备最基本的功能就是能够显示当时所处地点的经纬度以及UTC标准时间。现在世面上已经有许多基于GPS接收模块所开发的产品,如GPS手持机、车载GPS导航仪等等,虽然其功能强大,但价格相对而言比较昂贵,而且对于普通应用没有必要。所以基于这种情况下,本次设计针对普通用户使用GPS的切实需要,设计并制作基于单片机的GPS定位信息显示系统。1.2论文主要内容本次设计的主要任务是在GPS和单片机的理论知识基础上,选择合适的单片机提取GPS接收模块接收的数据并且由液晶显示模块显示接收的数据。在此次设计过程中,主要熟悉所选用的GPS接收模块的性能指标,学习NMEA封包并懂得如何使用NMEA输出命令,结合单片机的相关知识能实现对GPS接收到的卫星信息进行提取,并在液晶显示器上选择性的显示需要的数据。

第二章GPS定位信息显示系统方案设计2.1GPS全球定位系统简介全球定位系统(GPS)是本世纪70年代由美国陆海空三军联合研制的新一代空间卫星导航定位系统。其主要目的是为陆、海、空三大领域提供实时、全天候和全球性的导航服务,并用于情报收集、核爆监测和应急通讯等一些军事目的,是美国独霸全球战略的重要组成部分。全球定位系统由三部分构成:(1)地面控制部分,由主控站(负责管理、协调整个地面控制系统的工作)、地面天线(在主控站的控制下,向卫星注入寻电文)、监测站(数据自动收集中心)和通讯辅助系统(数据传输)组成。(2)空间部分,由24颗卫星组成,分布在6个轨道平面上。(3)用户装置部分,主要由GPS接收机和卫星天线组成[3]。这三部分的相互关系如图2.1所示。图2.1GPS全球定位系统组成1978年2月22日,第一颗GPS试验卫星的发射成功,标志着工程研制阶段的开始。1989年2月14日,第一颗GPS工作卫星的发射成功,宣告GPS系统进入了生产作业阶段。GPS系统经过16年的发射试验卫星,到开发GPS信号应用,进而发射工作卫星,终于在1994年3月建成了信号覆盖率达到了98%的GPS工作星座,它由24颗图2.2Block2卫星图全球定位系统有很多特点,其主要特点如下:(1)全天候;(2)全球覆盖;(3)三维定速定时高精度;(4)快速省时高效率;(5)应用广泛多功能。24颗GPS卫星在离地面2万公里的高空上,以12小时的周期环绕地球运行,使得在任意时刻,在地面上的任意一点都可以同时接收到6颗以上GPS卫星的定位信息。只要有4颗卫星的定位信息,GPS接收机就能向用户提供三维坐标、时间及移动速度等信息参数。由于卫星的位置精确可知,在GPS观测中,我们可得到卫星到接收设备的距离,根据三维坐标中的距离公式,利用3颗卫星,就可以组成3个方程式,解出观测点的位置(X,Y,Z)。考虑到卫星的时钟与接收机时钟之间的误差,实际上有4个未知数,X、Y、Z和钟差,因而需要引入第4颗卫星,形成4个方程式进行求解,从而得到观测点的经纬度和高程。由于卫星运行轨道、卫星时钟存在误差,大气对流层、电离层对信号的影响,以及人为的SA保护政策,使得民用GPS的定位精度只有100米。美国政府宣布从2000年起,在保证美国国家安全不受威胁的前提下,取消SA政策,GPS民用信号精度在全球范围内得到改善,利用C/A码进行单点定位的精度由100米提高到20米。为了达到更高的定位精度,往往还采用了差分GPS(DGPS)技术,建立基准站(差分台)进行GPS观测,利用已知的基准站精确坐标,与观测值进行比较,从而得出一修正数,并对外发布。接收机收到该修正数后,与自身的观测值进行比较,消去大部分误差,得到一个比较准确的位置。实验表明,利用差分GPS2.2GPS信号接收方案选择要实现在液晶显示器上显示出接收到的GPS数据信息,首先要实现GPS信号的接收。在接收GPS信号方案上可以有两种选择。第一种方案是选择GPS接收芯片然后再根据芯片设计标准,设计外围电路和安装天线等,选择这个方案的优点是可以掌握到GPS接收部分的电路设计技术,但是这个方案的缺点也是显而易见的,首先实现的难度较大,不容易成功,其次由于GPS接收芯片一般都是厂商直接供货,单独采购价格会很高。第二种方案是选择成品的GPS接收模块,采用这个方案的优点是由于现阶段GPS接收模块的制造技术已经相当成熟,性能稳定并且使用非常方便,定位成功后直接就可以通过模块输出GPS相关信息。并且在经过大规模的商业化生产后价格已经能被我们所接受,这样的模块在市面上也能够容易的购买到。从上面的分析可以知道,选择GPS接收模块就能够很好的作为本次设计接收GPS定位信息的解决方案,因此我选择第二种方案来完成本次设计。2.3GPS接收模块的研究GPS接收模块是接收机的关键部分,而且型号很多,功能各异,一般组成结构主要由低噪声下变频器、并行信号通道、CPU、储存器等组成。GPS接收模块通过它的接收天线获取卫星信号,经过变频、放大、滤波、相关、混频等一系列处理,可以实现对天线视界内卫星的跟踪、锁定和测量。在获取了卫星的位置信息和测算出卫星信号传播时间之后,即可计算出天线位置。用户通过输入输出接口,与GPS接收模块进行信息交换,实现功能。GPS接收模块内部结构如图2.3所示。图2.3GPS接收模块内部结构2.4总体方案的设计本次设计要求通过单片机控制GPS器件实现定位信息显示功能。在这里使用常见的MCS-51型单片机作为处理器,利用MCS-51单片机的串行接口接收SiRFStarIIGPS信号接收模块输出的数据信号,并通过软件方法筛选出其中有用的定位数据,最后通过单片机的并行接口输出至液晶显示模块显示的方案。该GPS定位信息显示系统硬件部分主要由以下几个部分组成:(1)接收部分:以SiRFStarIIGPS接收模块为核心的GPS接收机;(2)控制电路:由51单片机作为微处理器控制GPS信号;(3)显示部分:OLED液晶显示模块;(4)电源电路部分:用以提供系统工作时所必须的电。单片机系统:本次设计使用51单片机作为微处理器,控制GPS数据的读取和传输过程。利用其串行接口接收SiRFStarIIGPS接收模块输出的NMEA-0183语句数据,并将接收到的数据经过筛选和处理后发送到OLED液晶显示器显示。外围电路:外围电路一部分是由GPS接收器件及其辅助电路组成,一部分是OLED液晶显示模块的电源电路和显示电路。SiRFStarIIGPS接收模块主要由变频器、信号通道、存储器、中央处理器和输入输出接口构成。它接收天线获取的卫星信号,经过变频、放大、滤波、相关、混频等一系列处理,可以实现对天线视界内卫星的跟踪、锁定和测量定位。单片机控制程序:编写程序,实现单片机控制系统的初始化,控制GPS器件完成数据的采集,进行相应的信号处理,并通过单片机接口输出至液晶显示模块显示必要的数据。由此可知:GPS接收模块将接收到的GPS卫星导航电文调制解码,转换为标准格式后,送给单片机,当单片机接收到GPS发送过来的导航电文后,经过片内程序的识别筛选,将筛选出来的导航电文送到显示模块,并且最后通过液晶显示器按照要求显示出来。

第三章基于单片机的GPS硬件电路设计3.1基于单片机的GPS硬件电路总体结构根据总体设计方案,该基于单片机的GPS硬件电路设计主要由GPS信号接收部分(SiRFStarIIGPS信号接收模块)、控制芯片(STC89C516RD+单片机)、显示部分(OLED液晶显示模块)这几部分构成。其大体结构框图如图3.1图3.1基于单片机的GPS硬件总体结构框图3.2基于单片机的GPS定位信息显示系统设计硬件电路简介3.2.1STC89C516RD+简介STC89C516RD+是一个低电压,高性能CMOS8位单片机,采用40引脚双列直插封装方式。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容[4]。STC89C516RD+引脚如图3.2所示:图3.2STC89C52引脚图其引脚说明如下:主电源引脚(2根):VCC(Pin40):电源输入,接+5V电源;GND(Pin20):接地线。外接晶振引脚(2根):XTAL1(Pin19):片内振荡电路的输入端;XTAL2(Pin18):片内振荡电路的输出端。控制引脚(4根):RST(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位;ALE/PROG(Pin30):地址锁存允许信号;PSEN(Pin29):外部存储器读选通信号;EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。可编程输入/输出引脚(32根):STC89C516RD+单片机有4组8位的可编程I/O口,分别为P0、P1、P2、P3口,每个口有8根引脚,共32根。P0口(Pin39~Pin32):8位双向I/O口线,名称为P0.0~P0.7;P1口(Pin1~Pin8):8位准双向I/O口线,名称为P1.0~P1.7;P2口(Pin21~Pin28):8位准双向I/O口线,名称为P2.0~P2.7;P3口(Pin10~Pin17):8位准双向I/O口线,名称为P3.0~P3.7。STC89C516RD+主要功能如表3.1所示。表3.1STC89C516RD+2主要功能主要功能特性兼容MCS51指令系统8K可反复擦写FlashROM32个双向I/O口256x8bit内部RAM3个16位可编程定时/计数器中断时钟频率0-24MHz2个串行中断可编程UART串行通道2个外部中断源共6个中断源2个读写中断口线3级加密位低功耗空闲和掉电模式软件设置睡眠和唤醒功能时钟电路STC89C516RD+内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD分别是此放大器的输入端和输出端。时钟可以由内部方式产生或外部方式产生。内部方式的时钟电路如图3.3(a)所示,在RXD和TXD引脚上外接定时元件,内部振荡器就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。晶体振荡频率可以在1.2~12MHz之间选择,电容值在5~30pF之间选择,电容值的大小可对频率起微调的作用[5]。外部方式的时钟电路如图3.3(b)所示,RXD接地,TXD接外部振荡器。对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。(a)内部方式时钟电路(b)外部方式时钟电路图3.3时钟电路(2)复位复位是单片机的初始化操作。其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动[6]。除PC之外,复位操作还对其他一些寄存器有影响,它们的复位状态如表3.2所示。表3.2一些寄存器的复位状态寄存器复位状态寄存器复位状态PC0000HTCON00HACC00HTL000HPSW00HTH000HSP07HTL100HDPTR0000HTH100HP0-P3FFHSCON00HIPXX000000BSBUF不定IE0X000000BPCON0XXX0000BTMOD00HRST引脚是复位信号的输入端。复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。若使用颇率为6MHz的晶振,则复位信号持续时间应超过4us才能完成复位操作。整个复位电路包括芯片内、外两部分。外部电路产生的复位信号(RST)送至施密特触发器,再由片内复位电路在每个机器周期的S5P2时刻对施密特触发器的输出进行采样,然后才得到内部复位操作所需要的信号[7]。3.2.2SiRFStarIIGPS信号接收模块该设计中GPS信号接收模块所选用的是SiRFStarIIGPS接收模块,该模块是由美国瑟孚科技有限公司所生产。主要使用到的引脚如图3.4所示。该模块具有12通道并行接收能力,所接收的GPS信号属于民用频段的L1信号(1575.42MHz),在没有SA干扰的情况下平均定位误差为10米,动态速度误差为0.1米/秒,信号灵敏度达到-142dBm,冷启动定位时间为42秒,热启动时间为38秒,重新定位时间仅仅需要图3.4SiRFStarII引脚图GPS数据输出格式为标准的NMEA-0183标准,采集地理信息的更新速率为每两秒一次,地图坐标系为WGS-84坐标系[8]。该模块天线采用的是体积小、可靠性高、灵敏度高的微带天线,该天线封装在模块内部,更进一步的提高了整个模块的可靠性。该模块实物图如图3.5所示。图3.5GPS接收模块它的工作电压为2.7V-3.3V,工作电流仅为75mA,它由GSP2e数字IC、GRF2i射频IC和GSW2模块化软件组成。GSP2e主要集成了一个增强型GPS内核、一个50MHz的ARM7CPU、独立的内部总线和外部总线、1MbEDODRAM、高精度实时时钟、GPS接收机外部设备和2个UART。GRF2i主要由片内压控振荡器和基准振荡器、集成中频滤波器(IF)、集成LNA和数字接口等组成。GSW2模块化软件很容易集成到现有系统中,并提供功能强大的开发环境。SiRFStarII除增加了中央处理器和卫星信号追踪引擎,SiRFStarII在芯片组中集成了兆位存储器(DRAM),这个是其它同类产品的八倍。这使其不仅可执行各项GPS功能,还能为用户应用提供额外存储。将IF滤波器集成到射频芯片内而无需新增外部滤波器,从而进一步降低了元件的数目并增加了可靠性。该芯片的主要特征如表3.3所示。表3.3SiRFStarII主要特征SiRFStarII特点功能用处信号捕捉从有遮挡地区走出时快速重捕卫星信号在遮挡环境下提供更多的定位结果信号跟踪跟踪弱信号比正常信号信噪比低20dB改善信号可利用性,在信号衰减严重的地方也可定位单卫星定位在短暂的仅能收到一颗卫星的情况下定位在信号阻塞的地区也可定位,适于车载GPS多级消除误差减小GPS反射径带来的误差使GPS定位准确度提高到5m差分GPS周期(大约30分钟)更新星历和修正时间功率几乎变成了以前的20%,增加使用时间功率分配1s内有800ms的时间接收机不工作,仅仅有200ms的时间用于重捕、跟踪、定位工作在不想频繁给出定位结果的情况下,节省功耗3.2.3OLED液晶显示模块介绍(1)OLED液晶显示模块概述OLED,即有机发光二极管(OrganicLight-EmittingDiode),又称为有机电激光显示(OrganicElectroluminesenceDisplay,OELD)。因为具备轻薄、省电等特性,因此从2003年开始,这种显示设备在MP3播放器上得到了广泛应用,而对于同属数码类产品的DC与手机,此前只是在一些展会上展示过采用OLED屏幕的工程样品,还并未走入实际应用的阶段。但OLED屏幕却具备了许多LCD不可比拟的优势。目前OLED显示屏广泛用于手机、MP3、工控显示设备上,具有亮度高、显示精度高、功耗低等特点OLED液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。OLED液晶显示模块引脚如图3.6所示。图3.6OLED液晶显示引脚图管脚从左到右定义为:GND:电源地VCC:供电电源3.3V、5V都可以D0:CLK时钟D1:MOSI数据RES:复位DC:数据/命令3.3基于单片机的GPS硬件连接介绍整个硬件设计要求GPS接收模块输出的信号通过单片机STC89C52、GPS信号接收模块、12864液晶显示模块、电源相连接实现系统功能。硬件电路设计如图3.7所示。图3.7GPS硬件电路图

第四章基于单片机的GPS软件设计4.1GPS数据包介绍4.1.1GPS上电后,每隔一定的时间就会返回一定格式的数据,数据格式为:$信息类型,x,x,x,x,x,x,x,x,x,x,x,x,x每行开头的字符都是‘$’,接着是信息类型,后面是数据,以逗号分隔开。一行完整的数据如下:$GPRMC,080655.00,A,4546.40891,N,12639.65641,E,1.045,328.42,170809,,,A*604.1.2GPGSV:可见卫星信息GPGLL:地理定位信息GPRMC:推荐最小定位信息GPVTG:地面速度信息GPGGA:GPS定位信息GPGSA:当前卫星信息这里我们只介绍GPRMC和GPGGA的信息(因为后面介绍的51单片机程序只解析了这两个数据包,有兴趣想研究的朋友可以解析更多的数据包出来,但是要考虑单片机的运行速率,因为GPS对单片机的串行输入会使单片机产生很多的串行中断单片机要花很多时间处理。如需更多的数据包格式介绍请查找NMEA0183协议的资料)4.1.2$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh<1>UTC时间,hhmmss(时分秒)格式<2>定位状态,A=有效定位,V=无效定位<3>纬度ddmm.mmmm(度分)格式(前面的0也将被传输)<4>纬度半球N(北半球)或S(南半球)<5>经度dddmm.mmmm(度分)格式(前面的0也将被传输)<6>经度半球E(东经)或W(西经)<7>地面速率(000.0~999.9节,前面的0也将被传输)<8>地面航向(000.0~359.9度,以真北为参考基准,前面的0也将被传输)<9>UTC日期,ddmmyy(日月年)格式<10>磁偏角(000.0~180.0度,前面的0也将被传输)<11>磁偏角方向,E(东)或W(西)<12>模式指示(仅NMEA01833.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)解析内容:1.时间,这个是格林威治时间,是世界时间(UTC),我们需要把它转换成北京时间(BTC),BTC和UTC差了8个小时,要在这个时间基础上加8个小时。2.定位状态,在接收到有效数据前,这个位是‘V’,后面的数据都为空,接到有效数据后,这个位是‘A’,后面才开始有数据。3.纬度,我们需要把它转换成度分秒的格式,计算方法:如接收到的纬度是:4546.408914546.40891/100=45.4640891可以直接读出45度4546.40891–45*100=46.40891可以直接读出46分46.40891–46=0.40891*60=24.5346读出24秒所以纬度是:45度46分24秒。4.南北纬,这个位有两种值‘N’(北纬)和‘S’(南纬)5.经度的计算方法和纬度的计算方法一样6.东西经,这个位有两种值‘E’(东经)和‘W’(西经)7.速率,这个速率值是海里/时,单位是节,要把它转换成千米/时,根据:1海里=1.85公里,把得到的速率乘以1.85。8.航向,指的是偏离正北的角度9.日期,这个日期是准确的,不需要转换GPGGA数据详解$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*xx<CR><LF>$GPGGA:起始引导符及语句格式说明(本句为GPS定位数据);<1>UTC时间,格式为hhmmss.sss;<2>纬度,格式为ddmm.mmmm(第一位是零也将传送);<3>纬度半球,N或S(北纬或南纬)<4>经度,格式为dddmm.mmmm(第一位零也将传送);<5>经度半球,E或W(东经或西经)<6>定位质量指示,0=定位无效,1=定位有效;<7>使用卫星数量,从00到12(第一个零也将传送)<8>水平精确度,0.5到99.9<9>天线离海平面的高度,-9999.9到9999.9米M指单位米<10>大地水准面高度,-9999.9到9999.9米M指单位米<11>差分GPS数据期限(RTCMSC-104),最后设立RTCM传送的秒数量<12>差分参考基站标号,从0000到1023(首位0也将传送)。2、使用ComAssistant.exe软件通过电脑测试GPS。2.1首先介绍测试前的准备(TTL转接板)GPS的工作模式是电源通电即从其TXA脚上输出NMEA格式的数据包(刚启动和没有信号的情况下数据包是无效的)因此使用时只需要给GPS提供5V供电并将GPS的TXA引脚接到单片机或者TTL转USB小板(或者TTL转DB9小板)的RXD上就行,而GPS的RXA(RXD)引脚则用不上2.2.1硬件准备使用串口助手测试GPS时需要有TTL转USB或者TTL转DB9的转接小板(带DB9口的可不使用转接板,但是部分GPS的DB9口是针座的(公头),因为设计的时候主要是为了兼容单片机及ARM开发板,由于台式机上的DB9串口座也是公头的,因此需要一根母对母的串口线来连接GPS与电脑),本店有TTL转USB小板由于51单片机开发板下载电路是通过RS232转TTL的MAX232(或者是STC232)芯片或者是USB转TTL的PL2303芯片来实现转换的,因此可以借用该电路实现GPS与电脑的通信。1、拔下开发板电源线,并取下单片机。2、将GPS的TXA接到51单片机的P31引脚位置(此脚对应的是MAX232或者PL2303芯片的RXD,可以接收数据发送到电脑的USB口或者串口)2.2.2GPS数据线连接GPS数据线连接时只需将GPS的TXA引脚接到TTL转接板的RXD引脚,没有转接板的按照上面2.2.1中所介绍的利用51开发板上的电平转换电路的步骤来做。注意:在接好GPS的TXA脚以后要保证GPS的负极和转接小板的负极是连在一起的,尤其是准备给GPS使用独立的电源供电的时候(只有这样才能实现TTL数据传输,部分买家朋友没有注意这点因此测试时收到的都是16进制的乱码)2.2.3给GPS供电给GPS供电时需要注意GPS模块的工作电压,一般从USB拆机模块都是直接采用5V供电的(不带RS232电平,DB9座的模块),这个电源可以用单独的开关电源或电池供电,也可以是从单片机开发板上直接供电4.1.1使用ComAssistant.exe软件通过电脑测试GPS首先介绍测试前的准备(TTL转接板)GPS的工作模式是电源通电即从其TXA脚上输出NMEA格式的数据包(刚启动和没有信号的情况下数据包是无效的)因此使用时只需要给GPS提供5V供电并将GPS的TXA引脚接到单片机或者TTL转USB小板(或者TTL转DB9小板)的RXD上就行,而GPS的RXA(RXD)引脚则用不上硬件准备使用串口助手测试GPS时需要有TTL转USB或者TTL转DB9的转接小板(带DB9口的可不使用转接板,但是部分GPS的DB9口是针座的(公头),因为设计的时候主要是为了兼容单片机及ARM开发板,由于台式机上的DB9串口座也是公头的,因此需要一根母对母的串口线来连接GPS与电脑)没有小板的话也可使用带下载功能的51单片机开发板代替,方法如下:由于51单片机开发板下载电路是通过RS232转TTL的MAX232(或者是STC232)芯片或者是USB转TTL的PL2303芯片来实现转换的,因此可以借用该电路实现GPS与电脑的通信。1、拔下开发板电源线,并取下单片机。2、将GPS的TXA接到51单片机的P31引脚位置(此脚对应的是MAX232或者PL2303芯片的RXD,可以接收数据发送到电脑的USB口或者口)GPS数据线连接GPS数据线连接时只需将GPS的TXA引脚接到TTL转接板的RXD引脚,没有转接板的按照上面所介绍的利用51开发板上的电平转换电路的步骤来做。注意:在接好GPS的TXA脚以后要保证GPS的负极和转接小板的负极是连在一起的,尤其是准备给GPS使用独立的电源供电的时候(只有这样才能实现TTL数据传输,没有注意这点的话因此测试时收到的都是16进制的乱码)给GPS供电给GPS供电时需要注意GPS模块的工作电压,一般从USB拆机模块都是直接采用5V供电的(不带RS232电平,DB9座的模块),这个电源可以用单独的开关电源或电池供电,也可以是从单片机开发板上直接供电,注意2.2.2步中的红字部分。注意:模块本身是3.3V供电的(USB转TTL小板有3.3V电源电压输出),引脚说明请看图一。如果需要使用5V电源请从圆孔插座接入或者按照下图二所示的“5V电源正极”排针接入,负极可从图一所示的任一GND引脚接入。完成上叙步骤后就可以连接电脑了,将USB转TTL小板插到电脑的USB口或者将串口线接到台式机的DB9串口上,打开软件,如下图所示:串口软件操作界面软件的设置步骤如图三所示,一共3步(1)设置端口号使用台式机上的串口测试的需自己找到串口号(经常烧录单片机的的话这个肯定是知道的),这里介绍一下使用TTL转USB小板测试的话,XP系统下,在桌面上的“我的电脑”上单击右键>>属性>>硬件>>设备管理器>>端口。即可查看到端口号。如下图所示(2)设置波特率GPS模块波特率主要有4800bps和9600bps两种,绝大部分是4800bps,少数是9600bps的,极少数的REB3571板是38400bps波特率的,如果不知道波特率可以先设置为4800即可,如果进行下一步时获得数据不对的话改为9600或者38400即可。(3)打开串口点击打开串口如果波特率和端口都设置正确了的话即可获得数据包,如下图所示:串口助手收到的数据包(无效定位)仔细研究过就会知道,上面的数据包是无效的,因为可以看到GPRMC数据包的第<2>部分“定位状态”是“V”,GPGGA的<6>是“0”。因为sirfGPS在有信号的地方冷启动需要40秒左右,上面的图片就是在冷启动的时候截的图,接下来看定位成功后的数据,你应该能够发现不同了。3.使用J-NavGPSAnalyzer.exe软件测试GPS如果上述步骤一步一步完成了的话这一步就很容易了,打开J-NavGPSAnalyzer软件,蓝色图标的这个。接线方法和使用串口助手测试时是一样的,不再做介绍。只需在软件中设置串口号和波特率并打开串口就可以了,需要注意的是,J-NavGPSAnalyzer有一个自动波特率选择功能,可以自动找到GPS的波特率,如下图所示。由于在第2步使用串口助手时已经知道了GPS的波特率,因此建议手动设置波特率。J-NavGPSAnalyzer设置打开串口后就可看到下图所示的界面了J-NavGPSAnalyzer收到数据包(定位成功)所示界面定位7颗有效卫星,当定位到无效卫星时绿色的柱状条呈灰色,我测试是使用的REB3571开发板凌晨1点多测试的,天线放置在阳台上,买家实际测试时由于使用的GPS不同性能有些出入或者周围环境的因素定位的效果可能也会有些出入(我最多时定位到11颗有效卫星),或多或少,一般只要有一条绿色的柱形条GPS就可以正常工作了。需要注意的是,测试时GPS的天线一定要朝上,而且放到越空旷的地方效果越好。4.2基于单片机的GPS定位系统软件开发环境―KeiluVision24.2.18051开发工具KeiluVision2是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统C语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,它还能嵌入汇编,您可以在关键的位置嵌入。KeilC51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。C51编译器功能的不断增强,使我们可以更加贴近CPU本身及其他的衍生品。C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包括:编译器,汇编器,实时操作系统,项目管理器,调试器。uVision2IDE可为它们提供单一而灵活的开发环境[11]。KeiluVision2与同类开发环境具有以下优点:(1)真正的集成调试环境,集成了编缉器、编译器、调试器;(2)众多强大软硬件调试手段,包括逻辑分析仪、跟踪器、逻辑笔、波形发生器、影子存储器、记时器、程序时效分析、数据时效分析、硬件测试仪、事件触发器;(3)所有类型的单片机集成在一个调试环境下,支持汇编、C、PL/M源程序混合调试;(4)支持软件模拟,支持项目管理;(5)支持点屏功能,直接点击屏幕就可以观察变量的值,方便快捷;(6)功能强大的观察窗口,支持所有的数据类型;(7)树状结构显示,一目了然;(8)在线直接修改、编译、调试源程序,错误指令定位[12]。4.2.2uVision2集成开发环境(1)项目管理工程(project)是由源文件、开发工具选项以及编程说明三部分组成的。一个单一的uVision2工程能够产生一个或多个目标程序。产生目标程序的源文件构成“组”。开发工具选项可以对应目标,组或单个文件。uVision2包含一个器件数据库(devicedatabase),可以自动设置汇编器、编译器、连接定位器及调试器选项,来满足用户充分利用特定微控制器的要求。此数据库包含:片上存储器和外围设备的信息,扩展数据指针(extradatapointer)或者加速器(mathaccelerator)的特性。uVision2可以为片外存储器产生必要的连接选项:确定起始地址和规模[13]。(2)集成功能uVision2的强大功能有助于用户按期完工。集成源极浏览器利用符号数据库使用户可以快速浏览源文件。用详细的符号信息来优化用户变数存储器;文件寻找功能:在特定文件中执行全局文件搜索;工具菜单:允许在V2集成开发环境下启动用户功能;可配置SVCS接口:提供对版本控制系统的入口;PC-LINT接口:对应用程序代码进行深层语法分析;Infineon的EasyCase接口:集成块集代码产生;Infineon的DAVE功能:协助用户的CPU和外部程序。DAVE工程可被直接输入uVision2。4.2.3编辑器和调试器(1)源代码编辑器uVision2编辑器包含了所有用户熟悉的特性。彩色语法显像和文件辩识都对C源代码进行和优化。可以在编辑器内调试程序,它能提供一种自然的调试环境,使你更快速地检查和修改程序。(2)断点uVision2允许用户在编辑时设置程序断点(甚至在源代码未经编译和汇编之前),用户启动V2调试器之后,断点即被激活。断点可设置为条件表达式,变量或存储器访问,断点被触发后,调试器命令或调试功能即可执行。在属性框(attributescolumn)中可以快速浏览断点设置情况和源程序行的位置,代码覆盖率信息可以让你区分程序中已执行和未执行的部分。调试函数语言uVision2中,你可以编写或使用类似C的数语言进行调试。内部函数:如printf,memset,rand及其它功能的函数;信号函数:模拟产生CPU的模拟信号和脉冲信号;用户函数:扩展指令范围,合并重复动作。变量和存储器用户可以在编辑器中选中变呈来观察其取值。双层窗口显示,可进行以下调整:当前函数的局部变量;用户在两个不同watch窗口页面上的自定义变量;堆栈调用(callstack)页面上的调用记录(树)(calltree);不同格式的四个存储区[14]。4.2.4测试程序uVision2调试器具备所有常规源极调试,符号调试特性以及历史跟踪,代码覆盖,复杂断点等功能。DDE界面和shift语言支持自动程序测试。CPU和外设模拟装置uVision2为8051及衍生产品提供了高速CPU模拟功能和片上扩展口.在对话框内可直接观察和修改I/O值,也可以用预装的C-LIKE宏指令书写符号函数来提供动态输入。(2)目标监控器uVision2含一个可配置的监控器,可测试目标器件上的软件体。监控器用uVision2的调试器直接工作,可支持代码区。它要求目标系统具备6字节堆栈空间,6KB的代码ROM和256字节XdataRAM。(3)MCB517/251启动工具包在开始一项8051工程时,MCB启动工具会对你有很大帮助。每一个启动工具包括一套2K字节的开发工具和许多可快速运行的举例程序。用户可在检测8051性能的同时,查看开发工具的可行性。MCB517AC板含高性能InfineonC517A单片机,它提供标准8052外围设备和A/D转换器,PWM,搜索/比较,8位数据指针,一个高速运算单元[15]。同时包含对81C90CAN控制器和代码区的支持。本次设计软件采用了C语言程序编写,并在KeiluVision2开发环境下编译、调试。4.2.5KeilC编译步骤KeiluVision2C51软件是目前功能最强大的单片机C语言集成开发环境,这里介绍简单的编译步骤。运行Keilc51进入编辑界面,如图4.1所示。图4.1Keilc51编辑界面首先进入菜单project/newproject建立一个新工程,如图4.2所示。图4.2建立新工程选择要保存的路径,输入工程文件的名字,如图4-3所示。图4.3保存路径根据使用的单片机选择相应的型号,如图4.4所示。图4.4选择单片机型号(5)单击“Target1”前面的“+”号,然后在“SourceGroup1”上单击右键,弹出如图4.5所示界面加入源文件。如还没有源文件请先进入菜单File/New生成一个图4.5加入源文件界面(6)进行输出文件设置,进入菜单project/optionsfortarget选择OUTPUT选项卡,勾选CrestHEXFile项,如图4.6所示。图4.6输出文件设置(7)程序编写完成后进入菜单Project/Buildtarget编译工程,如图4.7所示。生成的*.HEX文件即可作为下载程序使用[13]。图4.7生成文件4.3基于单片机的GPS软件设计思路该GPS设计的核心部分是GPS接收模块与单片机的通讯,以及单片机将收到的信息筛选编排显示位置后送到LCD液晶显示模块显示。在设计该软件时采用了模块化的思想,之所以采用模块化的设计思想,主要是想到了软件模块化后方便软件的调试,同时也方便了该软件的移植,在不同的硬件平台上运行该软件只需要更改相应的软件模块就可以实现。该软件模块设计分为液晶模块初始化模块,GPS数据接收模块,单片机模块这三个主要模块。其程序流程图如图4.8所示。图4.8软件程序流程图4.4模块软件设计4.4.1液晶模块初始化模块在该设计中所使用的是12864液晶显示模块,其初始化程序如下所示:#include"LCD.h"voidclr_screen(){Lcd_WriteCmd(0x34);//扩充指令操作delay(5);Lcd_WriteCmd(0x30);//基本指令操作delay(5);Lcd_WriteCmd(0x01);//清屏delay(5);}voidLcd_WriteCmd(ucharcmd){ LCD_RS=0; LCD_RW=0; LCD_EN=0; _nop_(); _nop_(); P0=cmd; DelayNOP(); LCD_EN=1; DelayNOP(); LCD_EN=0;}voidLcd_WriteDat(uchardat){ LCD_RS=1; LCD_RW=0; LCD_EN=0; P0=dat; DelayNOP(); LCD_EN=1; DelayNOP(); LCD_EN=0;}voidLcd_Init(void){ LCD_PSB=1;//并口方式 Lcd_WriteCmd(0x34);//扩充指令操作 delay(5); Lcd_WriteCmd(0x30);//基本指令操作 delay(5); Lcd_WriteCmd(0x0C);//显示开,关光标 delay(5); Lcd_WriteCmd(0x01);//清除LCD的显示内容 delay(5);}voidLcd_SetPos(ucharX,ucharY){ucharpos;if(X==0){X=0x80;}elseif(X==1){X=0x90;}elseif(X==2){X=0x88;}elseif(X==3){X=0x98;}pos=X+Y;Lcd_WriteCmd(pos);//显示地址}voidLcd_DispLine(ucharline,ucharpos,uchar*str){ inti=0; Lcd_SetPos(line,pos); while(str[i]!='\0') { Lcd_WriteDat(str[i]); i++; }}4.4.2GPS数据接收模块首先要对GPS接收模块是否有信号发送给单片机进行识别,而且由于GPS接收模块发送出来的数据不是我们全部需要的,所以有必要再对语句进行识别,然后取入我们所需要的语句GPRMC。其识别程序如下:if(GPS_RMC_Parse(rev_buf,&GPS))//解析GPRMC { RMC_YES; GPS_DisplayOne(); //显示GPS信息 error_num=0; gps_flag=0; rev_stop=0; } else { error_num++; if(error_num>=20)//如果数据无效超过20次 { RMC_NO; error_num=20; GPS_Init();//返回初始化 } gps_flag=0; rev_stop=0; REV_NO; }程序代码详见附录。

第五章系统调试与实验结果完成了系统的硬件设计、制作和软件编程之后,要使系统能够按照设计意图正常运行,必须进行硬件和软件系统调试。5.1硬件调试硬件调试的主要任务是排除硬件故障,其中包括设计的错误和工艺性故障等。检查所设计的硬件电路板所有的器件和引脚是否正确。第一步,我用数字万用表进行了逐一对点的检查,检查各导线间是否有短路与开路的故障。第二步测输入5V电源(0V地)线是否与电路中的对应点的电源(地)线相连接是否正确;及检查开关是否正常,是否连接正确。测芯片管座与芯片管座之间用导线连接起来的对应脚是否导通和截止。(2)将仿真插头插入单片机插座进行调试,检查各接口是否满足设计的要求。(3)将程序代码经过Keil软件仿真生成的(.hex)文件,用编程器将生成的文件导入单片机STC89C52中。(4)将写入程序的单片机插入硬件电路单片机管座,查看液晶显示器12864显示结果是否符合设计要求。5.2软件调试软件调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序的错误,同时也能发现硬件的故障。软件调试是一个模块一个模块进行的,首先单独调试各子程序是否能够按照预期的功能,接口电路的控制是否正常,最后调试整个程序,尤其注意的是各模块间能否正确的传递参数。(1)检查OLED液晶显示模块程序,观察在液晶显示器上是否能够显示相应的字符。(2)检查GPS模块程序,通过观察OLED液晶显示情况理解GPS信号接收状况。(3)通过GPS模块程序和OLED液晶显示模块程序的结合,观察OLED液晶显示器上的GPS显示信息。5.3实验结果经过软件部分和硬件部分的调试,最后实现了其功能。GPS初始化如图5.1所示。图5.1GPS初始化时间、经纬度显示结果如图5.2所示。图5.2时间、经纬度显示结果5.4实验结果分析图5-2所示的实验结果是我在合肥学院竹苑A座419寝室测试的结果。谷歌地图显示这个位置的经纬度如图5.3所示。图5.3谷歌地图显示结果GPS定位显示系统设计所测量出来的结果中,时间是很精确的,但是经纬度有所差异,根据我的装置显示的结果是北纬31度45分15秒,东经117度14分51秒。谷歌地图上显示的结果是北纬31.7505度,东经117.2530度。经过单位换算可知,谷歌地图显示的结果是北纬31度45分18秒,东经117度15分10秒。由于我所选用的GPS接收模块的版本比较低,而且在实验过程中有其他因素干扰,比如天气方面和电离层的影响,以及在谷歌地图上点选的位置有误差,最终使得我所测量的结果与谷歌地图之间有些许误差,但是误差是能够被接受的,因此,本次试验结果是可靠、有效的,满足设计要求。

第六章总结随着GPS的应用越来越广泛,GPS设备普及速度也将大大加快,在我们国内GPS产业才刚刚起步,GPS产业的兴起势必也将大大的推进GPS在民间的应用。GPS已在各个领域发挥了重要的作用,为促进人类发展作出了不可估量的贡献。不过由于专业GPS设备价格昂贵,普通消费者难以承受,所以也限制了GPS在民间的大量应用,现在各个GPS厂商的当务之急便是降低GPS的制造成本,削减一些普通消费者平时用不到的专业功能,保留一些基本的实用功能,以加快GPS在民间普及的速度。本次毕业设计,主要是了解GPS的原理,熟悉GPS接收机的工作原理及其各部分工作流程。GPS信号处理模块由SiRFStarII实现,通过SiRFStarII与MCS-51兼容系列单片机相连,配备了所需的外围电路,同时配有液晶显示器,可以显示字符,并详细介绍了该GPS接收机的硬件和软件设计。毕业设计是本科学习阶段一次非常重要的理论与实际相结合的机会,通过本次比较完整的设计,我摆脱了单纯的理论知识学习状态,通过理论和实际相结合,锻炼了我的综合运用所学知识的能力,以及解决实际工程的能力,同时也提高了我查阅文献资料、设计手册、设计规范以及绘图的水平,而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都能使我的能力得到提升,经验得到丰富。顺利如期的完成本次毕业设计给了我很大的信心,让我了解专业知识的同时也对本设计的发展前景充满信心。提高是有限的但也是全面的,正是这一次设计让我积累了无数实际经验,使我的头脑更好地被知识武装起来,让我在未来的工作学习中有更好的应变能力,更强的沟通力和理解力。由于水平有限和时间问题,有许多不足。本设计只是GPS入门级的设计,不能满足现在市场上日益激烈的竞争环境,实用性还有待提高,功能也有待完善。总之,在做这次毕业设计的过程中,既复习了已学的专业知识,又学到了实际经验,是我人生中一次难得的学习经历,更是对自己综合能力的考验和提高。

致谢本课题是在石长华老师的悉心指导下完成的,论文从选题到写作及最后成稿,石长华老师都给予了我精心的指导和极大的帮助。石老师渊博的科学知识、远见卓识的科学创新和严谨的治学态度给了我深远的影响,同时石老师随和的性格更让我感到亲切。在设计阶段,石老师在资料搜集、程序调试、论文写作等方面都给予我严格的要求和关键性的指导,在此衷心感谢几个月来石感谢电子系所有老师在毕业设计期间为我们提供良好的实验环境。此外,我还要对在这次设计中,帮助和支持我的同学,表示感谢!朱建民2013年11月于景德镇学院

参考文献[1]刘基余.GPS卫星导航定位原理与方法[M],北京:科学出版社,2003.[2]刘基余,李征航.全球定位系统原理及其应用[M],北京:测绘出版社,1993.[3]王惠南.GPS导航原理与应用[M],北京:科学出版社,2003.[4]潘永雄.新编单片机原理与应用[M],西安:西安电子科技大学出版社,2003.[5]张鹏.单片机原理及应用[M],成都:电子科技大学出版社,2004.[6]张立科.单片机典型模块设计实例导航[M],北京:人民邮电出版社,2000.[7]余锡存,曹国华.单片机原理及接口技术[M],西安:西安电子科技大学出版社,2010.[8]刘晓,伍小东,姚军光,等.基于单片机采集GPS数据系统的设计[J],青岛科技大学学报,2006,27(2):172-175.[9]姚敏,郭庆.基于MCS-51系列单片机的GPS独立定位设备的研究[J],计算机与信息技术,2006,2(8):79-82.[10]李勇军,杨青,庞树杰,等.基于OEM板的GPS接收机设计[J],农机化研究,2006,5(12):109-111.[11]王丙祥,李建海.基于89C52的GPS板电路设计与实现[J],西安文理学院学报:自然科学版,2007,10(3):98-101.[12]AnnaM.Murphy,ShinichiTsutsumi,PererGaussen.ALow-Power,Low-CostBipolarGPSReceiverChip[J],IEEEJOURNALOFSOLID-STATECIRCUITS.1997,4(4):587-591.[13]李洪涛.GPS应用程序设计[M],北京:科学出版社,1999.[14]许进,周宁.GPS接收机的单片机通讯接口[J],电子器件,1999,22(3):23-26.[15]索明何,饶运涛,邢海霞,等.基于单片机的液晶显示系统设计[J],科技广场,2008,7(2):22-24.

附录主程序//定义头文件,函数和变量#include<reg52.h>#include<stdio.h>#include<string.h>#include"GPS.h"#include"oled.h"#include"display.h"#defineucharunsignedchar#defineuintunsignedintsbitled1=P2^0;//接收数据指示灯sbitled2=P2^1;//GPRMC数据有效指示灯sbitled3=P2^2;//GPGGA数据有效指示灯#defineRev_LED_YESled1=0#defineRev_LED_NOled1=1#defineRMC_LED_YESled2=0#defineRMC_LED_NOled2=1#defineGGA_LED_YESled3=0#defineGGA_LED_NOled3=1#defineBUF_MAX_LEN200//GPS处理函数GPSCmdSnapshot要用参数/****************************************************串口接收及显示要用变量定义(6个)****************************************************/charxdataUart_Rev_Buf[80];//串口接收数据暂存ucharxdataUart_Rev_start=0;//接收开始标志ucharxdataUart_Rev_stop=0;//接收停止标志ucharxdatagps_flag=0;//GPS处理标志ucharxdatachange_page=0;//换页显示标志ucharxdatanum=0;//Uart_Rev_Buf2[]={"???EEed$GPRMC,021150.833,V,2916.9237,N,11710.4961,E,,0.00,261113,,,N*6E"}; voidUart_Init(void){ TMOD=0x21; //00100001同时使用两个定时器T1方式2T0方式1 PCON=0X00; TH0=0x3c; TL0=0xb0; TH1=0xfa; // TL1=0xfa; // TR1=1;//开启定时器1 REN=1;//允许接收数据 SM0=0; SM1=1; TI=0; RI=0; EA=1;//开总中断 ES=1;//串口1中断允许 ET0=1;//定时器1中断允许}/****************************************主函数 /****************************************/voidmain(void){ ucharerror_num=0; Uart_Init();//初始化串口 OLED_Init();//初始化OLED MAIN_OLED_Display();//每次开机先用汉字显示设计者信息 while(1) { if(Uart_Rev_stop)//如果接收完一行 { TR0=1;//开启定时器 Rev_LED_YES; //change_page=1;//测试解析GPRMC if(change_page%2==1)//换页 { if(Uart_Rev_Buf[4]=='G')//判断收到的是否是GPGGA语句 { GPSCmdSnapshot(Uart_Rev_Buf,BUF_MAX_LEN,GPGGA,GPSCmdBuf); GPS_GGA_Parse();//解析GPGGA if(LoctionState==1)//判断定位数据是否有效(1有效、0无效) { GGA_LED_YES; GPS_DisplayTwo();//显示第二页信息 error_num=0; gps_flag=0; Uart_Rev_stop=0; //Rev_LED_NO; } else { GGA_LED_NO; GPS_Bad_Signal();//显示GPS信号不正常,定位失败,提示到室外空旷处 error_num=0; gps_flag=0; Uart_Rev_stop=0; } } else { erro

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论