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

下载本文档

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

文档简介

1、毕业论文基于单片机的简易 GPS定位信息显示系统设计声明本人所呈交的基于单片机的简易 GPS 定位信息显示系统设计,是我在指导教师 的指导和查阅相关著作下独立进行分析研究所取得的成果。 除文中已经注明引用的内容 外,本论文不包含其他个人已经发表或撰写过的研究成果。对本文的研究做出重要贡献 的个人和集体,均已在文中作了明确说明并表示谢意。 矚慫润厲钐瘗睞枥庑赖。作者签名:日期:摘要GPS (Global Positioning System )全球定位系统是当今信息时代发展中的重要组 成部分。由于其良好的性能,精度高,适用范围广等特点,被广泛应用于陆地,海洋, 航空航天等领域。本文提出了一种微控

2、制器作为核心控制设备,由 GPS 接收模块、实 时显示模块等功能电路构成的 GPS 实时显示系统。文章从硬件设计和软件设计两个方 面,阐述了 MCS-51 系列单片机如何与 GPS 接收模块实现串行通信,结果显示 GPS 定位信息,并利用 Proteus 仿真软件,对其性能进行了仿真测试。该设计电路简单,成 本低,性能好,具有一定的实用价值。 聞創沟燴鐺險爱氇谴净。【关键词】: GPS;单片机;串行通信;实时显示模块ABSTRACTGPS ( Global Positioning System ) global positioning system in todays information

3、age is the important part in the development of. Because of its good performance, high precision, wide application characteristics, are widely used in terrestrial, marine, aviation, aerospace field. This paper describes the design of a single chip microcomputer as the core control device, received b

4、y GPS module, display module and other functional circuit consisting of GPS real-time display system. This paper from the hardware design and the software design two aspects, elaborated the MCS-51 Series MCU and GPS receiving module to realize serial communication, the results showed that GPS positi

5、oning information, and the use of Proteus simulation software. The performance of the simulation test. The design has the advantages of simple circuit, low cost, good performance, has a certain practical value.残骛楼諍锩瀨濟溆塹籟。【KEYW OR】D: GPS; microcontroller ;Serial communication ;The real-time display m

6、odule 酽锕极額閉镇桧猪訣锥。目录一 概述 1.彈 贸摄尔霁毙攬砖卤庑。(一)系统设计背景及意义 1(二)系统设计主要内容 1二 GPS定位信息显示系统方案设计 1(一)GPS全球定位系统简介 1(二)GPS信号接收方案的解决 2(三)GPS接收模块简介 2(四)总体方案的设计 3三 硬件电路设计 4(一)硬件总体结构框图 4(二)单片机性能概述 5(三)SiRF Star II GPS 信号接收模块 7. 謀荞抟箧飆鐸怼类蒋薔。(四)实时显示模块概述 8(五)电路原理图 10四 软件设计 10(一)软件设计思路 10(二)程序流程图 10(三)模块软件设计 11五 软件调试与仿真测试 1

7、5(一)软件调试 15(二)仿真测试过程 15六 总结 17致 谢 17参考文献 17附录一 电路原理图 18附录二 仿真电路原理图 18附录三 源程序 18一 概述(一)系统设计背景及意义GPS是英文 Global Positioning System 全球定位系统的简称,它提供实时全天候 和全球性的导航服务,并用于情报收集,应急通信和一些其他用途。 厦礴恳蹒骈時盡继價骚。目前已经被广泛用于陆海空三大领域。例如:陆地的 GPS技术应用,它可以应用在 各种车辆的行驶状态监控中;在海洋应用中, GPS技术可以应用于远洋船舶的最佳航线 测定;在航空航天应用, GPS技术可以应用到民用飞机在运输过程

8、中的自主导航。 茕桢广 鳓鯡选块网羈泪。现在的 GPS技术中最关键的就是如何解决 GPS信号是否能被准确接收和调制输出的 的问题。此外,准确显示出当时所在地方的经度和纬度、时间,也直接关系到这种技术 是否具有良好的实用价值。今天,已经有很多基于此类 GPS技术及基本功能的基础上开 发的产品,如 GPS手持机, GPS导航设备等。 GPS技术的确具备功能强大、可扩展性好 等优势,但同时也具有价格昂贵、电路复杂等缺点。本文拟设计一个简单的基于单片机 的 GPS定位信息显示系统,整个系统的构成简单,基本性能齐全,价格便宜,具有一定 的实用价值。 鹅娅尽損鹌惨歷茏鴛賴。(二)系统设计主要内容在学习微控

9、制器和 GPS的理论知识基础上,选择合适的微控制器和 GPS接收模块, 通过 GPS接收并提取卫星信息。以单片机为核心组成部分,对所提取的信息进行分析, 处理,利用液晶显示器构成显示电路,实时准确地显示所需的数据。设计完成后利用 Proteus 软件仿真测试其性能 。 籟丛妈羥为贍偾蛏练淨。二 GPS 定位信息显示系统方案设计(一) GPS 全球定位系统简介GPS是新一代空间卫星导航定位系统 Global Positioning System的简称,由美国在 21世纪 70年代研制开发。 GPS技术在研究的初始阶段其主要的目的是为收集情 报。此外,包括实时监测核武器动向,对地、海、空三大领域进

10、行全天候的、实时的无 漏洞的导航服务也是其主要目的之一。目前, GPS技术还被广泛地应用与应急通信和其 他一些军事目的、经济领域。 預頌圣鉉儐歲龈讶骅籴。GPS技术整体比较复杂,但从不同的技术领域来分,可以分为以下三个主要部分:第一, 地面控制部分。主要包括主控站、地面天线以及电台和通讯辅助系统;第二, 空间控制部分。目前全球一共有 24 颗卫星分布在 6 个不同的轨道平面上, 为 GPS技术的信息获取提供主要来源; 渗釤呛俨匀谔鱉调硯錦。第三, 用户装置部分。该部分主要包括卫星天线以及 GPS接收机两个模块。 这三部分的关系图如图 1 所示。图 1 GPS 全球定位系统组成其主要工作原理是由

11、地面监控部分来计算从卫星发出的信号到达GPS接收机,即用户装置部分的时间间隔,利用公式计算出用户装置到基准卫星的距离。在此过程中共需 要接收天空中大于 3 颗的卫星信号所发的信息。然后在三维坐标系中,利用距离的计算 工式,求解出观测点的位置坐标。此外,由于来自卫星的时钟信号与地面用户装置的时 钟信号之间难免存在误差现象,还需要考虑该时间差所造成的距离偏差问题。 铙誅卧泻噦圣 骋贶頂廡。二) GPS 信号接收方案的关键问题为了能够实现在液晶显示器上准确、实时的显示出所接收到的GPS数据信息,核心问题就是如何处理来自卫星的信号与 GPS接收器芯片之间的数据通信。 本设计的难点就 是如何进行软件程序

12、的编写实现 GPS模块信息的接收。此外,还应该根据核心芯片的设 计标准,对整个外围电路、天线模块等进行设计,进而保证在GPS完成卫星信息的接收之后,能够准确计算出观测点的经度、纬度以及高度,并将结果通过定位模块的输出, 在显示电路模块显示出来。 擁締凤袜备訊顎轮烂蔷。(三)GPS 接收模块简介GPS接收机是整个系统的关键构成模块。 目前,市场上的 GPS接收模块的型号很多,不同型号的接收模块在结构、功能、价格上也存在差异。但其基本构成往往由天线、前当 GPS接收器捕获到来自卫星的信号之后,将对该信号进行跟踪,保证能够进行一 系列连续测距。然后将对所测信号进行解调,将该信号转换为导航电文。在该过

13、程中还 要考虑到载波相位的计算、测量伪距的处理等一些列过程,最后计算出定位点的相关坐 标信息。在整个过程中,为保证信息获取的实时性,要求用户能够通过输入和输出接口 很方便的实现与 GPS接收模块的信息交换,也就是系统应该具有友好的人机交互界面。 坛摶乡囂忏蒌鍥铃氈淚。(四)总体方案的设计根据系统的设计要求,要求能够以单片机为核心控制器件,实现 GPS设备的定位信 息的显示系统。目前市面上单片机的种类繁多,功能各异。综合考虑单片机的功能、通 用性、可扩展性以及性价比,本设计将采用常见的 MCS-51单片机作为处理器。在 GPS 信号的接收部分,将采用 SiRF Star II GPS 信号接收模

14、块与 MCS-51单片机串行接口相 连实现数据信号的输出。通过软件的设计,对接收机信号进行筛选、计算、输出,获取 定位数据信息。最终的计算结果将通过 MCU并行接口模块输出,利用液晶显示器( LCD) 构成的显示电路显示出结果。 整个 GPS定位信息显示系统的硬件构成主要包括以下几 部分: 蜡變黲癟報伥铉锚鈰赘。第一,接收模块电路。主要包括以 SiRF Star II GPS接收模块作为核心构成的 GPS 接收机,主要负责将锁定卫星,并将捕获码的最大相关输出,然后利用同步技术,通过 对伪距、载波相位的估计,计算出用户位置、速度和时间等数据信息; 買鲷鴯譖昙膚遙闫撷凄。第二,控制电路模块。主要包

15、括由 51 单片机构成的核心电路,主要负责控制 GPS 数据读取和传输的过程,并将数据进行滤波等处理,并发送至显示电路; 綾镝鯛駕櫬鹕踪韦辚 糴。第三,显示电路部分。主要包括由 LCD构成的显示电路,通过与微控制器接口的正 确连接实现定位数据的实时显示; 驅踬髏彦浃绥譎饴憂锦。第四,电源部分。为整个系统提供动力来源,保证系统的正常工作。设计中还包括一些外围电路, 主要负责在接收天线获取卫星信号后, 在信号的变换、 放大、滤波等一系列处理过程中起到相应辅助作用,与主控电路与接收模块协同工作, 锁紧、定位、测量并输出显示结果。 猫虿驢绘燈鮒诛髅貺庑。此外,在控制电路完成信息的捕获、跟踪和计算的过程

16、中,无论是卫星导航参数的 测量,还是伪距及伪距变化率的测量,以及最终位置信息的计算及经纬度的变换显示, 输入输出端口的管理等,都必须通过软件指令进行控制。所以软件设计也是整体方案的 重要组成部分。 锹籁饗迳琐筆襖鸥娅薔。综上,本文将从硬件电路与软件设计两部分开展具体论述。三 硬件电路设计一)硬件总体结构框图硬件总体结构框图如图 3 所示:图3 硬件总体结构框图(二)单片机性能概述1.STC89C52引脚功能本设计中所选择的单片机型号为 STC89C5,2 是由中国深圳宏晶科技有限公司生产。 该单片机采用 40 引脚双列直插封装方式,是采用 ATMEL高密度非易失存储器制造技术 生产的。 STC

17、89C52能够与工业标准的 MCS-51指令集和输出管脚直接兼容。 構氽頑黉碩饨荠龈 话骛。STC89C52引脚如图 4 所示图 4 STC89C52引脚图其引脚说明如下 :1)主电源引脚( 2 根):VCC(Pin40) :电源输入端口,通常接 +5V 电源; GND(Pin20) :接地端口。2)外接晶振引脚( 2 根):XTAL1(Pin19) :芯片内部振荡电路的输入端口;XTAL2(Pin18) :芯片内部振荡电路的输出端口。3)控制引脚( 2 根): ALE/PROG(Pin30):用来控制地址锁存允许信号; PSEN(Pin29):用来控制外部存储器读选通信号;4)可编程输入输出

18、引脚( 32 根):STC89C52单片机有 4 组 8 位的可编程输入 输出端口,分别为 P0口、 P1 口、P2 口以及 P3口。每个端口都 8 根引脚,一共 32 根,其各端口功能详见表 1:輒峄陽檉簖疖網儂號泶。表 1 IO 端口功能综上,整个 STC89C52的主要功能如表 2 所示:表 2 STC89C52 主要功能2. 时钟电路时钟电路的一共有内部产生或者外部产生的两种模式可供选择。 本设计采用内部时 钟电路模式。其中外接定时元件与 X1和 X2脚相联,由内部振荡器产生自激振荡。外接 的定时元件具体是由石英晶体以及一个电容并联构成谐振电路。 为了保证最好的定时效 果,产生所需要的

19、时钟信号,在本电路中,拟选择大小约为在 5? 30pF 的电容,用以产 生 1.2? 12 兆赫兹的晶体振荡频率,发挥最佳定时效果。 尧侧閆繭絳闕绚勵蜆贅。时钟电路如图 5 所示。图 5 时钟电路图3. 复位电路复位信号从 RESET引脚输入, 整个电路主要包括由施密特触发器构成的外部电路以 及内部电路。在单片机上电瞬间, RESET引脚将出现正脉冲,只要能够在 RESET端保证 一定幅度大小的高电平,就能够使单片机有效地复位。值得注意的是,复位脉冲的高电 平时间间隔必须要大于 2 个机器周期。例如,如果在整个设计中采用 6MHz的晶振,那 么一个机器周期自然为 2 微秒,也就是说复位信号的周

20、期应该大于等于 4 微秒。识饒鎂錕缢灩筧嚌俨淒。图 6 复位电路图(三)SiRF Star II GPS 信号接收模块设计中以 SiRF Star II GPS 作为 GPS信号接收模块。该模块是由美国瑟孚科技有 限公司生产的 GPS第二代芯片。,它能够并行接收 12 通道,其所接收的信号频段主要位 于民用的 GPS L1频带信号,即 1575.42 兆赫兹。在没有 SelectiveAvailability 干扰 的前提下,改接收模块的平均位置误差仅仅只有 10 m ,动态的速度误差大约在 0.1m/s. SiRF Star II GPS 接收模块的信号灵敏度大约为 -142dBm。在冷启动

21、状态下仅需要约 42 秒的定位时间;而在热启动的情况下,其所需的定位时间仅仅为 38 秒左右;如果是重 新定位,其所花时间仅仅为 8 秒左右。 凍鈹鋨劳臘锴痫婦胫籴。SiRF Star II GPS 接收模块引脚如图 7 所示。7图 7 SiRF Star II 引脚图其引脚说明如下:1 号管脚为 GND端口,用来提供电源的接地端; 3 号管脚为电源的输入端,一般情 况下连接+5V电源; 2 号管脚为 TXD端口,通常与外部振荡器相连。该 GPS信号接收模 块的正常工作电流约为 75 毫安。其正常工作电压约为 2.7 伏至 3.3 伏之间。整个 GPS 接收模块主要由 GRF2i射频集成电路以

22、及 GSP2e数字集成电路构成。 恥諤銪灭萦欢煬鞏鹜錦。在该 GPS信号接收中所采用的天线已经被封装在模块内部了。 该天线是一种可靠性 高,灵敏度高的迷你天线,为整个接收模块的正常工作提供了可靠的保证。 鯊腎鑰诎褳鉀沩 懼統庫。SiRF Star II 主要特征如表 3 示:本设计中的实时显示模块采用LCD液晶显示模块。其内部点阵为16X16,相当于 8192个汉字。该模块同时包括由8X16点阵构成的 128 个字符,以及显示RAM的功能, 其点阵大小为 64X256。整个显示模块能够实现汉字和基本图形的实时显示LCD液晶实时显示模块的引脚分布如图 8 所示。 硕癘鄴颃诌攆檸攜驤蔹。表 3 S

23、iRF Star II主要特征四)实时显示模块概述主要技术参数和显示特性祥见表 4:表 4 实时显示模块技术参数及显示特性实时显示模块引脚如表 5 所示。表 5 实时显示模块引脚分布表 5 引脚说明9(五)电路原理图电路原理图见附录一。四 软件设计(一)软件设计思路本设计的核心问题是如何实现 GPS接收模块与单片机的通讯, 和微控制器接收到的 信息如何筛选编排显示到液晶显示模块的位置。整个软件编程是由C语言完成的。 阌擻輳嬪諫迁择楨秘騖。在软件设计上是用模块化思想。之所以采用模块化设计理念,主要是考虑软件的模 块化具有功能清晰,调试方便的特点。此外,在考虑到软件的更新及功能的扩展,以及 保证软

24、件能够方便的在不同的硬件平台上的移植性等因素, 整个方案的软件主要分为实 时显示模块, GPS数据接收模块,单片机模块三部分开展。 氬嚕躑竄贸恳彈瀘颔澩。(二)程序流程图整个程序流程图如图 9 所示图9 软件程序流程图图9 程序流程图(三)模块软件设计10 所示:1. 实时显示模块在设计中所使用的 LCD液晶显示模块,其流程图如图图 10 实时显示模块流程图部分子程序如下:#include LCD.hvoid clr_screen()Lcd_WriteC md(0x34); delay(5);Lcd_WriteC md(0x30);delay(5);Lcd_WriteC md(0x01); d

25、elay(5);2. GPS数据接收模块GPS接收模块必须先有能够识别的信号发送到微控制器。其流程图如图11 所示:图 11 GPS数据接收模块流程图部分子程序如下:if (GPS_RMC_Parse(rev_buf, & GPS) RMC_YES;GPS_DisplayOne();error_num 0;gps_flag 0;rev_stop 0;elseerror_num ;if (error_num 20) RMC_NO; error_num 20; GPS_Init(); gps_flag 0; rev_stop 0; REV_NO;3. 单片机模块由 GPS模块接收的数据接收到微控制

26、器的数据,分析,处理,将处理后的数据,由 液晶显示器显示。其流程图如图 12 所示: 釷鹆資贏車贖孙滅獅赘。部分程序段代码如下: void main(void) uchar error_num 0;Lcd_Init() ;GPS_Init() ; rev_stop 0;REV_NO; while(1) if (rev_stop) TR0 1;REV_YES;图 12 单片机模块流程图14源程序其它代码详见附录三五 软件调试与仿真测试一) 软件调试软件调试的任务是使用在线仿真调试的开发工具,找出并纠正编程错误,而且还可 以发现硬件故障。检查 GPS 模块步骤程序,了解情况,通过观察 LCD ,G

27、PS 信号的 接收条件。第三步骤中的程序,通过 GPS 模块和液晶显示模块程序,结合在 LCD 显示 器上的信息的 GPS 观测。 怂阐譜鯪迳導嘯畫長凉。二) 仿真测试过程1. 建立一个新工程,如图 13 所示图 13 建立新工程2. 再进入菜单 File/New 生成一个*.C 格式的源文件,然后单击“ Target 1”前面的 +”号,然后在“ Source Group 1”上单击右键,弹出如下图 14 所示界面加入源文件。谚辞調担鈧谄动禪泻類。15图 14 加入源文件界面3. 加入源程序完成后进入菜单 Project/Build target 编译工程,如图 15 所示图 15 生成文件

28、4. Proteus 仿真测试结果图,如图 16 所示。 仿真电路原理图见附录二。图 16 仿真测试结果图GPS卫星信号由 Q1接收,通过 P3.0 口送到单片机分析、处理,同时时钟电路通过XTAL1和 XTAL2接口对单片机进行定时, 复位电路通过 RST和 EA接口对单片机进行复位,单片机整理好的数据再由 P0.0 P0.7 口传送到 LCD1显示器显示。 嘰觐詿缧铴嗫偽純铪锩。16六 总结通过本次毕业设计,主要是学习了 GPS的原理,熟悉 GPS接收机的工作原理及其各 部分工作流程。 GPS信号处理模块由 SiRF Star II 实现,通过 SiRF Star II 与 MCS-51

29、兼容系列单片机相连,配备必要的外围电路,液晶显示的结果和GPS接收机的硬件和软件设计的细节。 熒绐譏钲鏌觶鷹緇機库。毕业设计是一个非常重要的学习阶段,专业理论和实践相结合的机会,通过这种更 完整的设计,我摆脱了纯粹的理论知识状态,我综合运用知识的能力,通过理论与实践 相结合的,并行使解决实际工程能力,也提高了我的访问,文学,设计手册,设计规范 和绘画水平,以及细节的控制,可以使我的能力加强和丰富经验。 鶼渍螻偉阅劍鲰腎邏蘞。总之,做毕业设计的过程中,我们已经学到的专业知识,在我生命中的一个很好的 学习经验和学到的实践经验,也是对自己的综合能力测试和提高。 纣忧蔣氳頑莶驅藥悯骛。致谢本课题是在罗

30、红艳老师的悉心指导下完成的,论文从选题到写作及最后成稿,罗老 师都给予了我精心的指导和极大的帮助。罗老师尽心尽责给了我深刻的影响,而罗老师 随和的个性让我感到温暖。在设计阶段,罗老师在数据收集,程序调试,征文等方面给 了我严格的要求和重要的指导。在此感谢罗老师对我的帮助。 颖刍莖蛺饽亿顿裊赔泷。感谢电子系所有老师在毕业设计期间为我们提供良好的知识基础。此外,我还要对 在这次设计中,帮助和支持我的同学,表示感谢! 濫驂膽閉驟羥闈詔寢賻。参考文献1 刘基余 .GPS卫星导航定位原理与方法 M. 科学出版社 .2003.2 刘基余,李征航 .全球定位系统原理及其应用 M. 测绘出版社 .1993.3

31、 王惠南.GPS导航原理与应用 M. 科学出版社 .2003.4 潘永雄. 新编单片机原理与应用 M. 西安电子科技大学出版社 .2003.5 张鹏. 单片机原理及应用 M. 电子科技大学出版社 .2004.6 张立科. 单片机典型模块设计实例导航 M. 人民邮电出版社 .2000.7 余锡存,曹国华 . 单片机原理及接口技术 M. 西安电子科技大学出版社 .2010.8 蔡美琴 .MCS-51系列单片机系统及其应用 . 北京高等教育出版社 .1992.9 周航慈. 单片机应用程序设计技术 M. 北京航空航天大学出版社 .2002.1710 李洪涛.GPS应用程序设计 M. 科学出版社 .19

32、99.附录一 电路原理图附录二 仿真电路原理图附录三 源程序主程序#include reg52.h#include stdio.h#include string.h#include GPS.h#include LCD.h#include display.h char xdata rev_buf80 ; uchar? xdata rev_start 0; uchar? xdata rev_stop 0; uchar? xdata gps_flag 0; uchar? xdata change_page 0; uchar? xdata num 0;void Uart_Init (void)TMOD

33、 0x21;PCON 0X00;TH0 0x3c;TL0 0xb0;TH1 0xFA; TL1 0xFA;TR1 1; REN 1;SM0 0;SM1 1;TI 0;RI 0;EA 1;ES 1;ET0 1;GPS_Init();rev_stop 0;REV_NO;while(1)if (rev_stop)TR0 1;REV_YES;if (GPS_RMC_Parse(rev_buf, & GPS) RMC_YES;GPS_DisplayOne();error_num 0;gps_flag 0;rev_stop 0;elseerror_num ;if (error_num 20) RMC_NO

34、;error_num 20;GPS_Init();gps_flag 0;rev_stop 0;REV_NO;19void timer0(vo id) interrupt 1 static uchar count 0;TH0 0x3c;TL0 0xb0;count ;if (count 200)count 0;change_page ;if (change_page 10) change_page 0;void Uart_Receive(void) interrupt 2uchar ch;ES 0;if (RI)ch SBUF;if (ch $)& & (gps_flag 0)rev_start

35、 1;rev_stop 0;if (rev_start 1)rev_bufnum ch;if (ch n)rev_bufnum 0;rev_start 0;rev_stop 1; 20gps_flag 1;num 0;RI 0;ES 1;GPS接收模块程序#include GPS.h#include LCD.h#include string.h uchar codeinit1 uchar codeinit3 uchar codeinit4= GPS 显示终端 ; = GPS 初始化 ;= 搜索定位卫星 static uchar GetComma(u char num, char * str);

36、 static double Get_Double _Number(ch ar *s);static float Get_Float_ Number(cha r * s);static void UTC2BTC(D ATE_TIME * GPS);void GPS_Init(v oid)Lcd_DispLi ne(0, 0, init1);Lcd_DispLi ne(1, 0, init3);Lcd_DispLi ne(2, 0, init4);int GPS_RMC_Pa rse(char * line, GPS_INFO GPS)uchar ch, status, tmp;float la

37、ti_cent_ tmp, lati_second_tmp; float long_cent_ tmp, long_second_tmp; char * buf line;ch buf5;status bufGetCom ma(2, buf); if (ch C)if (status A)21GPS NS bufGetCom ma(4, buf);GPS- latitude = Get_Double _Number(&b ufGetComm a(3, buf); GPS- longitude = Get_Double _Number(&b ufGetComm a( 5, buf); GPS-

38、latitude_D egree= (int)GPS- latitude / 100; lati_cent_ tmp = (GPS- latitude - GPS- latitude_D egree* 100); GPS- latitude_C ent = (int)lati_ cent_tmp;lati_second_tmp = (lati_cent _tmp - GPS- latitude_C ent) * 60;GPS- latitude_S econd = (int)lati_ second_tmp;GPS- longitude_ Degree = (int)GPS- longitud

39、e / 100; long_cent_ tmp = (GPS- longitude -GPS- longitude_ Degree* 100); GPS- longitude_ Cent = (int)long_ cent_tmp;long_second_tmp = (long_cent_tmp - GPS- longitude_ Cent) * 60; GPS- longitude_ Second = (int)long_ second_tmp;GPS- D.hour = (buf7 -0)*10+ (buf8 - 0 );GPS- D.minute = (buf9 -0)*10+ (buf

40、10 - 0);GPS- D.second = (buf11 -0)*10 + (buf12 - 0); tmp= GetComma(9, buf);GPS- D.day = (buftmp + 0 - 0) * 10 + (buftmp +1 - 0 );GPS- D.month = (buftmp + 2-0)*10+ (buftmp +3 - 0); GPS- D.year = (buftmp + 4 - 0) * 10 + (buftmp + 5 - 0) + 2000; UTC2BTC(&G PS- D);return 1;return 0;int GPS_GGA_Pa rse(ch

41、ar * line, GPS_INFO *GPS)uchar ch, status; char *buf = line; ch = buf4;status= bufGetCom ma(2, buf);if (ch = G) /$GPGGA if (status!= ,) 22 return 1;return 0;* buf)static float Str_To_Flo at(charfloat rev = 0;float dat;int integer = 1;char * str = buf;int i;w hile(*str ! = 0 )sw itch(*st r)case 0 :da

42、t = 0;break;case 1 :dat = 1; break;case 2 :dat = 2; break;case 3 :dat = 3; break;case 4 :dat = 4; break;case 5 :dat = 5;break;case 6 : 23 dat = 6; break;case7: dat =7; break;case8:dat =8; break;case9:dat =9; break; case.: dat =.; break;if(dat = .)integer =0; i=1;str +; continue;if( integer =1)rev =

43、rev* 10 + dat; else c har buf10;rev =ucrehavr +i;dat / (10* i);s);24i = ifl*oa1t 0;rev;i = GetComma(1 i = i -1;strnc py(bu f, s, i);str +rb+euvf;i = rev =0;Str_To_Float(buf);returnrev;252627GPS- minute+ +;if(GPS- minute 59)GPS- minute= 0;GPS- hour +;GPS- hour = GPS- hour +8;if(GPS- hour 23)GPS- hour

44、 -=24;GPS- day +=1;if(GPS- month =2GPS- month =4GPS- month =6GPS- month =9GPS- month =11)if(GPS- day 30)GPS- day =1;GPS- month+ +;elseif(GPS- day 31)28GPS- day =1;GPS- month +;GPS- day 1;GPS- month ;elseif(GPS- day 28& &GPS- month 2)GPS- day 1;GPS- month ;if(GPS- month 12)GPS- month - 12;GPS- year ;

45、void Int_To_Str(int x, char *Str)int t;char * Ptr,Buf5;int i 0;Ptr Str;if(x 10)* Ptr 0; 29* Ptr x 0x30;t x %10;x x / 10;Bufi t 0x30;i-;for(; i 0;i -)*(Ptr ) Bufi;* Ptr 0;液晶显示模块程序#include LCD.hvoid clr_screen()Lcd_WriteC md(0x34); delay(5);Lcd_WriteCmd(0x30); delay(5);Lcd_WriteCmd(0x01); delay(5);Voi

46、d Lcd_WriteCmd(uchar cmd)LCD_RS 0;LCD_RW 0;30LCD_EN 0;_nop_();_nop_();DelayNOP();LCD_EN 1;DelayNOP();LCD_EN 0;void Lcd_WriteD at(uchar dat)LCD_RS 1;LCD_RW 0;LCD_EN 0;P0 dat;DelayNOP();LCD_EN 1;DelayNOP();LCD_EN 0;void Lcd_Init(v oid)LCD_PSB 1;Lcd_WriteC md(0x34);delay(5);Lcd_WriteC md(0x30);delay(5)

47、;Lcd_WriteC md(0x0C);delay(5);Lcd_WriteC md(0x01);delay(5);void Lcd_SetPos(uchar X, uchar Y)31uchar pos;if (X 0)X 0x80;X 0x88; else if (X 3)X 0x98; pos X Y ;Lcd_WriteC md(pos);void Lcd_DispLi ne(uchar line, uchar pos, uchar *str) int i 0;Lcd_SetPos(line, pos);while (stri ! 0)Lcd_WriteD at(stri) ;i;GPS显示程序#include display.h uchar code beiwei = 北纬; uchar code nanwei = 南纬 ;uchar code nanwei = 东经 ;uchar code xijing = 西经;uchar code date = 年 月 日 ;void Show_Float (

温馨提示

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

评论

0/150

提交评论