1、中国计量学院本科毕业设计论文基于GPS的四轴飞行器的导航系统设计THEDESIGNOFFOURSHAFTAIRCRAFTNAVIGATIONSYSTEMBASEDONGPS学生姓名学号0700107129学生专业机械电子工程班级07机电1班二级学院机电工程学院指导教师中国计量学院2011年6月郑重声明本人呈交的毕业设计论文,是在导师的指导下,独立进行研究工作所取得的成果,所有数据、图片资料真实可靠。尽我所知,除文中已经注明引用的内容外,本学位论文的研究成果不包含他人享有著作权的内容。对本论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确的方式标明。本学位论文的知识产权归属于培养单位
2、。学生签名日期2011年5月29日分类号TP2426密级公开UDC621学校代码10356中国计量学院本科毕业设计论文基于GPS的四轴飞行器的导航系统设计THEDESIGNOFFOURSHAFTAIRCRAFTNAVIGATIONSYSTEMBASEDONGPS作者学号0700107129申请学位工学学士指导教师学科专业机械电子工程培养单位中国计量学院答辩委员会主席评阅人2011年6月致谢随着这篇本科毕业论文的最后落笔,我四年的大学生活也即将划上一个圆满的句号。回忆这四年生活的点点滴滴,从入学时对大学生活的无限憧憬到课堂上对各位老师学术学识的深沉沉湎,从奔波于教室图书馆的来去匆匆到业余生活的五
3、彩缤纷,一切中的一切都是历历在目,让人倍感留恋,倍感珍惜。在此论文撰写过程中,要特别感谢我的导师老师。为人随和热情,治学严谨细心的他,从选题、定题开始,一直到最后论文的反复修改,都始终认真负责地给予我耐心的指导,帮助我开拓研究思路,点拨与鼓励。正是李老师的无私帮助,我的毕业论文才能够得以顺利完成,谢谢李老师。最后我还要感谢机电工程学院和我的母校中国计量学院四年来对我的大力栽培。I基于GPS的四轴飞行器导航系统设计摘要四轴飞行器执行任务就必须人工进行遥控或进行自主巡航。人工遥控只能完成视野内的任务,若要在人类难以到达的地方执行任务,如灾区、极地等,就必须使用自主巡航。用于民用的自主巡航飞行器可执
4、行水灾、火灾、地震等灾情调查救援任务;化工厂等场所有毒气体浓度监测;重要设施连续监控;输油管线和输电线路的巡查;区域性空地、空海通讯中继;农田、林区农药喷洒;当对特定地区进行日常环境监测,也可以使用这种飞行器,自动巡查完后自动返航并自动记录存储数据,大大减少人力成本。本文提出了一种基于GPS的简易四轴飞行器导航系统的设计与实现。该系统能接收并分析出需要的GPS定位信息,与存储的定位坐标进行简易地自主导航,并在显示屏上模拟和显示。同时也可测量飞行距离以及获得准确的卫星时间。详细介绍了GPS系统的组成、定位误差、数据接收和参数提取的方法,并同时研究了点阵液晶显示屏字库的建立与字符的显示,以及I2C
5、总线串口传输技术的实际运用。关键词GPS;四轴飞行器;自主导航中图分类号TP2426IITHEDESIGNOFFOURSHAFTAIRCRAFTNAVIGATIONSYSTEMBASEDONGPSABSTRACTTOPERFORMTASKS,FOURSHAFTAIRCRAFTMUSTBEREMOTEARTIFICIALLYFORCONTROLORCRUISEINDEPENDENTLYARTIFICIALLYREMOTECONTROLCANONLYCOMPLETETHETASKWITHINSIGHT,IFWANTTOPERFORMTASKSINTHEPLACETHATHUMANINACCESSI
6、BLE,SUCHASDISASTERAREA,POLAR,ETC,YOUMUSTUSEINDEPENDENTCRUISEFORCIVILIANUSEINDEPENDENTCRUISEVEHICLEEXECUTABLETOTHEDISASTERINVESTIGATIONRESCUEMISSIONSUCHASFLOOD,FIREOREARTHQUAKEPOISONOUSGASESCONCENTRATIONMONITORINGINCHEMICALFACTORIESIMPORTANTFACILITIESCONTINUOUSMONITORINGOILPIPELINESANDTRANSMISSIONLIN
7、ESEARCHREGIONALAIRTOGROUND,AIRTOMARINECOMMUNICATIONRELAYTHEFARMLANDANDFORESTPESTICIDESPRAYSIFWENEEDGETTOSPECIFICAREASFORDAILYENVIRONMENTMONITORING,ALSOCANUSETHISAIRCRAFTAUTOMATICRETURNAFTERBEAUTOMATICSEARCHANDAUTOMATICRECORDSTOREDATA,GREATLYREDUCETHEMANPOWERCOSTTHISPAPERPUTSFORWARDAMETHODOFSIMPLEFOU
8、RSHAFTVEHICLENAVIGATIONSYSTEMDESIGNANDIMPLEMENTATIONWHICHBASEDONGPSTHESYSTEMCANRECEIVEANDANALYZEGPSPOSITIONINGINFORMATIONTHATWENEED,ANDSTORAGEPOSITIONINGCOORDINATEEASILY,ANDAUTONOMOUSNAVIGATION,SIMULATEANDTHENDISPLAYONTHESCREENITALSOCANMEASURABLEFLIGHTDISTANCEANDGETACCURATESATELLITETIMEINTRODUCESTHE
9、COMPOSITION,POSITIONINGERROR,DATARECEIVINGOFGPSSYSTEM,ANDMETHODOFPARAMETEREXTRACTION,ANDTHEESTABLISHMENTOFTHELCDSCREENFONTS,ANDTHEAPPLICATIONOFCHARACTERSI2CBUSPRACTICALTHESERIALTRANSMISSIONTECHNOLOGYKEYWORDSGPSFOURSHAFTVEHICLEAUTONOMOUSNAVIGATIONCLASSIFICATIONTP2426III目录摘要错误未定义书签。目录III1绪论111研究背景112国
10、内外四轴飞行器自主导航系统发展现状1121国内外飞行器的发展和应用1122全球定位系统GPS发展概述313系统简介4131系统功能简介4132系统设计简介42硬件设计521硬件总体设计522处理器的选择522189C51系列单片机简介5222单片机管脚说明823GPS模块10231GPS硬件介绍10232GPS卫星信号11233GPS定位误差1124LCD显示模块介绍1225键盘模块1326串口模块143软件设计1531GPS模块程序设计15311GPS数据格式NMEA01831532LCD模块18321汉字字模的建立20322ASCII字库的建立2233键盘模块2334导航软件设计244数据
11、传输2541I2C总线在LCD上的应用26IV411I2C总线简介26412I2C总线特征26413I2C总线相关术语26414I2C总线位传输27415I2C总线数据传输28416在LCD中的实际应用2842GPS的串行I/O口传输29421串行I/O口简介29422串行I/O口工作方式295实物调试3251软硬件测试3252实物照片326总结与展望3461总结3462展望34参考资料35附录A部分单片机程序及注释36附录B系统设计过程中的调试工具55毕业论文数据集5611绪论11研究背景四轴飞行器要完成各种任务就需要人工无线电遥控导航或者自主导航。人工遥控导航飞行只能在视野范围内进行,如果
12、四轴飞行器要执行视野范围外的任务,就必须自主导航。常规飞行器一般用惯性导航设备或多普勒测地速设备,但由于庞大的体积、昂贵的价格等因素,难以应用于轻巧而廉价的四轴飞行器。而现今的全球定位系统GPS,拥有全天候、全球性、连续的精密三维导航与定位能力,并且重量和体积也非常适合无人四轴飞行器,同时价格也相当便宜,一块成品的GPS模块一般也就100人民币左右,因而GPS在航空导航、航海导航以及地面导航等方面应用非常广。装载了GPS自主巡航系统后的飞行器大大拓展了其在民用与军用上的泛用性。用于民用型的自主巡航飞行器可执行灾情调查救援任务如水灾、火灾、地震等;喷洒农田、林区农药;监测化工厂等危险场所的危险气
13、体的浓度;巡查输油管线、输电线路;连续监控重要的设施;区域性空地、空海通讯中继;当对特定地区进行日常环境监测的时候,用这种飞行器来执行也很方便和高效,自主巡查完后可以自动返回目的地并自动记录下存储的数据,大大减少了人力成本。据报道自2010年9月起,为了提高输电线路的巡检水平,江西省电力公司采用了无人机航巡输电线路,对输电线路本体缺陷、通道隐患进行快速探测,在各种地形复杂、气候恶劣的不利条件下,在第一时间里准确、及时、高效地取得现场资料。本文讨论了一种简单的基于GPS的无人飞行器自主导航系统的实现。12国内外四轴飞行器自主导航系统发展现状121国内外飞行器的发展和应用2009年5月21日,一台
14、叫做“旋翼飞行机器人”的空中多功能自主飞行机器人在中国中科院沈阳自动化研究所研制成功,并在灾害搜救的实际测试中取得很好的效果,并已经小批量地投入生产。据相关人员介绍,较大的四轴飞行器最长可在4小时中持续执行任务,并且速度可以达到每小时100公里,起飞时的自身重量为120公斤,并负担有效载荷40公斤;而较小一点的飞行器拥有最长2小时的续航时间,最大巡2航速度可达每小时70公里,起飞是的自身重量仅仅40公斤,同时负担14公斤的有效载荷。在灾害搜救实际测试中,无人四轴飞行器很好地完成了从自主起飞,然后根据预设的航迹点进行自主巡航飞行,悬停在空中或超低空来获取需要的数据或拍摄照片或视频,最后进行自主降
15、落等一系列科目,非常完美地执行了测试内容。该四轴飞行机器人由机器人学国家重点实验室历经近4年的时间自主研发成功,技术水平已经达到国际同期先进水平。中国中科院沈阳自动化研究所机器人学国家重点实验室是在2007年成立的,此前作为中国科学院机器人学的重点实验室。目前,实验室已经取得了防爆排险机器人、工业制造机器人、蛇形仿生机器人、深水机器人、网络机器人等多项重要研究成果。在德国,已研发了一种叫做MICRODRONESGMBHMD4200垂直起降的微型无人飞行器。如图11图11德国MD4200飞行器机体采用碳塑材料,因而它兼具轻巧和高强度的特点,同时该材料也使MD4200可以抗电磁干扰。其AAHRS高
16、度、姿态和航向参考系统使用了如下几种传感器加速计、陀螺仪、磁力计、气压计、湿度计、温度计。通过使用4个同步无刷直驱电马达,飞行器的噪音非常小当转速小于2000转/分钟,在3米处噪音小于63分贝。选配的GPS系统能够实现空间位置锁定与自动航点导航功能,还可以选择以MICROSD卡作为记录器的飞行记录仪来实时记录和分析飞行数据,所有重要的飞行数据都可以下载到数据中心,包括电池状态、高度、姿态、位置、飞行时间等。MD4200还具有安全保护措施以避免坠毁,它能够在电量不足和失去控制信号时自主降落。目前MD4200可以完成一次充电不低于20分钟的飞行时间。2006年4月在德国上市以来,短短的16个月里,
17、在欧洲已经销售了超过250套MD4200四旋翼飞行器系统,它们被用于许多不同领域航空摄影、空中考古、空中监视、植被调查、消防救灾、边境控制、警察、特种部队和军队等等。3122全球定位系统GPS发展概述简称GPS的全球定位系统GLOBALPOSITIONINGSYSTEM是随着现代化科学技术的发展而建立起来的新一代精密卫星定位系统。GPS系统主要由三大部分组成,即用户设备部分以及空间星座部分和地面监控部分组成。1958年12月,美国为了给在北极的核潜艇提供精确的导航定位,美国海军联合詹姆斯普金斯JOHNSHOPKINS大学物理实验室来研究和发展卫星定位导航系统,称为美国海军导航卫星系统,简称NN
18、SSNAVYNAVIGATIONSATELLITESYSTEM系统。同时也被称为“子午卫星系统”,因为NNSS中的卫星轨道穿过了地极。1959年9月,一颗实验性卫星在美国发射,5年的研究与测试后,即1964年,建成了NNSS系统。而在1967年,美国政府解锁并开放了该系统,允许民间使用。为了给民间组织和军事部门提供实时的三维定位导航,在1973年,美国国防部就开始着手研究和建立新一代卫星导航系统,也就是目前应用非常广泛的“授时与测距导航系统或称全球定位系统”NAVIGATIONSYSTEMTIMINGANDRANGING/GLOBALPOSITIONINGSYSTEMNAVSTAR/GPS,通
19、常简称为全球定位系统GPS。由于该系统卫星数目不多,工作卫星只有6颗,同时只有平均约为1000KM的运行高度,而从地面站观测到卫星的时间的间隔也非常长,平均约15个小时。虽然GPS系统对导航定位技术的发展是具有非常重大的意义,却不能满足军事上高精度高稳定性的苛刻要求。而且从大地测量学来看,由于它的定位速度慢,测站平均观测2天,精度较低,只有35米的单点定位精度和约为1米相对定位精度,所以,该系统很难运作在大地测量学和地球动力学研究方面。然而在耗掉200多亿美元与20多年的时间后,终于在1994年全面建设完成了GPS系统。GPS的建成历经了三个阶段第一阶段完成方案的论证和初步设计。1973年到1
20、979年间,美国政府一共发射了4颗试验型卫星。研发了地面接收机,同时建成地面的卫星接收网络系统,在硬件和软件上进行了全方面的试验。第二阶段全方面研制以及试验。1979年到1984年间,美国政府又陆续将7颗试验型的卫星送人轨道,同时也研发了各种用途的卫星信号地面接收机。在实际测试中,GPS的定位精度甚至远超乎设计者的预想。第三阶段实用组网。1989年2月4日,第一颗GPS工作卫星被送人轨道,GPS系统的建成进入最后的阶段。1993年底,24星座GPS系统终于全面建成。413系统简介131系统功能简介在机载单片机上输入一系列GPS坐标点,自动生成相应航线,同时从机载GPS系统中读取定位数据,并与存
21、储的定位坐标做实时比对,实时修正航线,并将定位坐标显示在液晶显示屏上,处理并显示当前位置。132系统设计简介图14系统设计框图系统采用STC89C52RC单片机作为控制器,进行收集经纬度定位坐标和卫星时间,并通过与记录的目的地坐标点进行比较而进行简单的导航。显示界面采用11264点阵液晶显示屏显示GPS芯片接收到的定位数据、时间数据以及单片机发出的导航数据,它是112行64列点阵型液晶显示模块。GPS模块型号为HOLUXM89,使用联发科技公司MTK所设计的低耗电量芯片MT3318。该模块的优势是对漂移的处理,功耗在30毫安,通讯方式是RS232波特率4800,具有并行12通道,可同步跟踪12
22、颗卫星。与PC机的通信,采用的是串行异步通信方式,从单片机TXD和RXD端的TTL电平到PC机的标准RS232电平的转换,系统采用美信公司的MAX232芯片。设置两个按键,用以切换不同界面以及设置目的地坐标。52硬件设计21硬件总体设计硬件总体设计框架如图21所示,主要由以下模块组成189C52RC单片机,2GPS模块311264点阵液晶LCD模块4电平转换模块。图21硬件原理图22处理器的选择22189C51系列单片机简介嵌入式处理器是嵌入式硬件系统中最核心,也是最关键的部分,应根据系统应用的要求、体积、成本等因素选择合适的处理器。89C51系列单片机带有非易失性的FLASH程序存储器,支持
23、12时钟和6时钟操作,并由先进CMOS工艺制造。P89C51X2具有128字节的数据存储器,P89C52X2/58X2具有256字节数据存储器,都具有片内振荡器和时钟电路,以及32条I/O口,可用于多机通信、I/O扩展或全双工UART,此外,由于器件采用了静态设计的方案,时钟停止但用户数据不会丢失,也可从时钟停止处恢复。同时频率可降至0,具有极宽的操作频率范围。该系列单片机拥有6由软件选择的三个模式,分别为空闲模式,节电模式以及掉电模式。在选择空闲模式时会将CPU冻结,但是数据存储器、定时器以及中断系统和串口却仍然在工作。掉电模式则会保存数据存储器的内容,但是会将振荡器冻结,这会导致所有的其它
24、片内功能将停止工作。1存储器寻址范围64字节数据存储器以及64K字节程序存储器2电源控制模式空闲模式掉电模式时钟可停止和恢复3两个工作频率范围12时钟模式时为033MZH6时钟模式时为020MHZ412时钟操作,也可通过软件或并行编程器选择6时钟时钟操作589C51核心处理单元全静态操作布尔处理器89C51X2具有4K字节的FLASH89C52X2具有8K字节的FLASH89C54X2具有16K字节的FLASH89C58X2具有32K字节的FLASH89C51X2具有128K字节的RAM89C52X2/54X2/58X2具有256K字节的RAM6异步端口复位73个加密位84个8位I/O口9LQ
25、FP,PLCC,以及DIP封装1016位定时/计数器T1和T080C51标准,T2比较和捕获是增加的11温度范围扩展12增强型收发全双工UART识别自动地址检测帧数的错误13低RMI禁止ALE以及6时钟模式14双数据指针15可通过外部中断来唤醒掉电模式716中断优先级4个17中断源6个18可编程时钟输出图2251单片机结构图8图23单片机管脚图222单片机管脚说明VCC供电电压5V。GND接地。P0口P0口每脚都可以吸收TTL门电流,是一个8位的漏级开路双向I/O口。在校验FIASH时,P0作为原码输出口,此时P0必须通过外部被拉高,也就是说要外接上拉电阻。当编程FIASH时,P0口输入为原码
26、。当P0口的管脚第一次写1时,就会被定义为高阻输入。外部的程序存储器和数据存储器也能使用P0口,同时P0口也可以作为成数据的低八位地址。P1口输出的4个TTL门电流能被P1口的缓冲器接收。P1口是8位的并且自身能提供上拉电阻的双向I/O口,在编程和校验FLASH时,P1口作为低八位地址接收。P1口管脚写入1后,被自身上拉为高电平,可用为输入,由于内部上拉的缘故,外部将P1口下拉为低电平时,将输出电流。P2口P2口缓冲器可以输出并接收4个TTL门电流。P2口为一个8位的自身提供上拉电阻的双向I/O口。当P2口被写1时,其管脚被自身的上拉电阻拉为高电9平,且作为输入。并因此作为输入时,由于内部上拉
27、的缘故,当外部将P2口的管脚拉至低电平,将输出电流。在给出地址“1”时,由于自身提供上拉电阻,在对八位外部地址数据存储器进行写或读的操作时,P2口输出的为它的SFR里的内容。在校验和编程FLASH时P2口接收地址信号和控制信号的高八位。当利用外部ROM或16位地址外部RAM进行存取数据时,P2口输出的是地址的高八位。P3口4个TTL门电流可由P3口的管脚输出并接收,P3口有8个自身提供上拉电阻的双向I/O口。作为输入,由于外部下拉为低电平。当P3口写“1”时,因为自身能提供上拉电阻,P3口将输出电流ILL,它们被自身上拉成高电平,这是可作为输入。P3口也是AT89C51的一些特殊功能口,如下面
28、所示P3口管脚备选功能1P37/RD外部数据存储器读选通2P36/WR外部数据存储器写选通3P35T1T1外部输入4P34T0T0外部输入5P33/INT1外部中断INT16P32/INT0外部中断INT07P31TXD串行发送口8P30RXD串行接收口P3口在闪烁编程和编程校验时可以接收一些控制信号。/EA/VPP当/EA保持低电平时,则在此期间外部程序存储器0000HFFFFH,不管是否有内部程序存储器,在FLASH编程期间,此引脚也用于施加12V编程电源VPP。在加密方式为1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。XTAL1和XTAL2反向振荡放大器
29、的输入输出引脚及内部时钟工作电路的输入输出引脚。RST复位脚。将RST脚间保持两个机器周期的高电平时间,单片机将被复位。ALE/PROG在平时,ALE端输出1/6的振荡器频率的正脉冲信号,频率周期不改变,因此它可用作对外定时器或脉冲输出。然而用于外部RAM时,将会跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置低电平。这个时候,ALE只有在执行MOVC和MOVX指令时才能起到一定的作用。另外,略微拉高该引脚时,如果微处理器在执行ALE外部状态禁止,则置位无效。/PSEN外部ROM的选通信号。在读取外部程序存储器指令的期间,/PSEN选通两次外部程序存储器,也就是出现2次选通信号
30、。但在访问外部数据存储器的时候,将不会出现这样的有效/PSEN信号。1023GPS模块231GPS硬件介绍HOLUXM89GPS模块是一款采用MTK芯片方案的GPS模块。该模块采用联发科技公司MTK所设计的低耗电量芯片MT3318。该模块的优势是对漂移的处理,功耗在30毫安,性价比等多方面都优于SIRF3芯片。该模块通讯方式是RS232波特率4800,具有并行12通道,可同步跟踪12颗卫星,定位精度高,体积小,功耗低。以下是它的一些参数L1157542MHZ接收频率;工作温度40至85;输出资料格式NMEA0183V31;启动时间TTFF热启动1秒;温启动33秒;冷启动36秒;敏感性159DB
31、M工作电压33至5V;功耗跟踪模式33V电压下小于35MA;更新接收每秒钟1PPS;外形体积尺寸2542543MM;重量3G;图24GPS模块实物11232GPS卫星信号GPS卫星发射的导航电文是通过两个载波频L1为157542MHZ,L2为1227MHZ向地面发射带宽F50HZ,传递速率是50BIT/S的基带信号,即一组不归零制二进制编码脉冲DT。采用了伪码扩频技术将基带信号的频带从50HZ扩展到1023MHZ以将这种低码率的导航文有效地发送给用户。采用正交方式调制,在载波L1上调制了两种码P码和C/A码,而在载波L2上只调制了一种伪码P码。总之,GPS卫星发射的信号是电文DT经过两级调制后
32、的信号。第一级是将DT,码调制C/A码和P码,实现对DT的伪随机码扩频。第二级是将它们的组合码分别调制在L1和L2载波频率上。233GPS定位误差在我们利用GPS进行卫星定位和导航的时候,会受到很多干扰。这些影响GPS定位精度的因素可分为以下四大类1SA误差是影响GPS定位误差的最主要因素。SA干扰误差是美国国防部为之国家安全而防止非特许用户利用GPS进行高精度定点点定位而采用的降低GPS系统精度的一系列政策,简称为SA政策,它包括降低广播星历精度和在卫星基本频率上附加一随机抖动使钟的频率产生快慢变化,导致测距精度大卫降低。虽然美国在2000年取消了SA,但是战时或必要时,美国可能会恢复或采取
33、类似的卫星定位精度干扰技术。2星历误差是GPS测量误差的重要来源,卫星星历误差卫星星历误差是指卫星星历给出的卫星空间位置与卫星实际位置间的偏差。又可以称为卫星的轨道误差,因为它是由于卫星的空间三维位置是通过地面的监控系统接收卫星测轨数据来计算得出的。它是一种起始的数据误差,其误差大小由观测值卫星跟踪站数量、空间分布的数量以及精度、轨道计算时所用的轨道模型及定轨软件的完善程度等决定。3相对论效应导致于卫星钟和接收机所处的运动速度和重力位不同,从而引起的接收机钟与卫星钟之间产生相对误差。4卫星钟差卫星钟差是指GPS标准时间与GPS卫星时钟的差别。为了保证卫星时钟精度,GPS卫星均采用高精度原子钟,
34、但误差总是存在的,它们和GPS标准时之间的偏差和漂移和漂移总量在1MS01MS以内,由此引起的等效误差将达到300KM30KM。1224LCD显示模块介绍LCD11264是一种图形点阵液晶串口显示屏,点阵数11264,可以显示47行1616的汉字。主要技术参数和性能1电源5V2显示内容112列X64行点;3全屏幕点阵;4工作温度10至60,存储温度20至70。图25屏幕机械图13LCD显示屏引脚介绍图37LCD引脚图从左到右为LCD的1到8脚1脚GND为接地2脚VCC接工作电压3脚CS为片选端4脚A0为地址选择,接低电平为写命令,接高电平为写数据5脚SCLK为时钟信号线6脚SI为数据线7脚RS
35、T为复位端8脚BL_SW为背光灯25键盘模块设计2个按键,直接采用I/O口控制,采用软件去消除抖动的影响,如图28所示。14图26按键电路图26串口模块89C51输出的是TTL电平,而RS232C采用的是负逻辑“0”5V15V;逻辑“1”5V15V,若直接与TTL电平相连,将会烧坏TTL电路。为了匹配89C51的TTL电平和GPS模块的RS232C标准接口,采用MAX232进行电平转换,如下图所示图27串口硬件图153软件设计31GPS模块程序设计该模块主要负责接收GPS发送过来的导航定位信息,并对这些信息进行提取和解析,保存在相应的全局数组中,以供调用。定义如下UNSIGNEDCHARGPS
36、_LATITUDE15/纬度数据UNSIGNEDCHARGPS_LONGITUDE15/经度数据UNSIGNEDCHARGPS_LATITUDE_DIR3/纬度方向UNSIGNEDCHARGPS_LONGITUDE_DIR3/经度方向UNSIGNEDCHARGPS_SPEED_DIR8/速度方位数据UNSIGNEDCHARGPS_SPEED8/速度数据UNSIGNEDCHARGPS_DATA_OK_FLAG/数据已经获得的标志UNSIGNEDCHARGPS_HEIGHT10/海拔高度UNSIGNEDCHARGPS_TIME112/时间数据1UNSIGNEDCHARGPS_TIME210/时间数
37、据2UNSIGNEDCHARGPS_MODE3/模式数据311GPS数据格式NMEA0183例如GPRMC,024813640,A,31584608,N,118483737,E,1005,32427,150706,A50其中各参数的意义字段0GPRMC,语句ID,表明该语句为RECOMMENDEDMINIMUMSPECIFICGPS/TRANSITDATARMC推荐最小定位信息字段1UTC格林威治时间,格式是HHMMSSSSS字段2状态,A代表定位,V代表未定位字段3纬度,格式为DDMMMMMM,度分格式位数不足就补上0字段4纬度S即南纬,纬度N即北纬字段5经度,格式为DDDMMMMMM,度分
38、格式位数不足是就补上0字段6经度E即东经,经度W即西经字段7速度,节,KNOTS字段8方位角,单位为度16字段9UTC格林威治日期,格式为DDMMYY字段10磁偏角,000180度,位数不足就补上0字段11磁偏角方向,W代表西E,代表东字段12数据校验值GPS接收机只要上电并处于工作状态,就会循环不停地把接收并计算GPS导航定位信息,并由串行接口传送给单片机。GPS模块处理后并发送的数据主要由帧头,帧尾以及帧内数据组成。根据帧头不同,采集需要的帧数据,帧头主要有GPGGA、GPGSA、GPGSV以及GPRMC,这些帧头表示后续帧内数据的内容,每一帧数据都用回车符和换行符作为帧尾来表示一帧数据内
39、容的结束。这些发送出到的数据要在分类提取后才能加以利用。可以通过SWITCHCASE语句按次序将各个帧数据信息从提取出来存入建立的数组中,将其转换成有需要的、并可使用的定位信息数据。一般来说,我们常用的定位数据如经纬度、速度以及时间等都可以从GPGGA帧中获得。而对于时间信息,因为从GPS接收机中获得的时间信息为格林威治时间,还要在获取时间上加上8小时才能得到准确的北京时间。数据和数据处理流程图如下图所示17图31GPS数据读取流程图1832LCD模块11264点阵液晶LCD显示原理在数字电路中所有的数据都是通过二进制的0和1保存。对于显示ACSII码字符显示的操作,由于ACSII码字符种类很
40、少,只需要8位就可以表示。而对于中文来说,常用就有6000个字以上,于是就有DOS程序员将ASCII表里很少用到的的高128位以两个为一组来表示汉字,这就是所说的汉字内码。而剩下的低128位用来显示英文字符,即英文内码。当然,只得到汉字和英文字符的内码还不能将这些字符显示在液晶屏幕上,这涉及到字符字模的建立,字模虽然也是一组数字,但是它的意义却与数字的意义有根本的不同,它是用数字的各个位的信息来表示英文字符或中文字符的形状,如英文的A在字模的记载方式如图1所示图32英文字符显示而中文“你”在字模中的记载如下图所示19图33汉字显示11264的内部器件和相关功能如下1DFF,即显示控制触发器此触
41、发器是用于控制模块屏幕显示的开关。DFF置高时为显示打开,命令为DISPLAYON,DDRAM的内容可以在屏幕上显示;DFF置低时为显示关闭,命令为DISPLAYOFF。DDF的状态由指令DISPLAYON和DISPLAYOFF以及RST复位信号控制的。2忙标志BFBF标志表示内部的工作情况。BF为高电平时表示模块正在进行内部数据操作,此时模块在忙状态,不会被接受外部指令和数据所影响。BF为低电平时,模块为待机状态,随时可接受外部指令和数据控制。3显示数据存储器,即DDRAMDDRAM置高电平时是代表显示是选择的,DDRAM置低电平时代表显示是非选择的。同时,DDRAM也可以用来存储一些图片的
42、点阵模。4Z地址计数器这是一个用指令DISPLAYSTARTLINE预置的6位地址计数器。此计数器可以循环记数,用于显示行扫描同步。当完成一行扫描时,这个地址计数器将加上一,这是指针将指向加一后的地址,也就是下一行地址。RST复位时Z地址计数器将会被清0。所以,DISPLAYSTARTLINERST指令将控制显示屏幕的起始行显示,也就是DDRAM里的显示数据从哪一行开始在屏幕的第一列进行显示输出。这个11264LCD液晶模块的DDRAM一共有64行,也就是说屏幕有64行可以显示液晶点。5XY地址计数器X地址计数器是一个9位计数器,不能计数,只有Y地址计数器可以循环记数。只能用指令设置X地址计数
43、器是高3位,Y地址计数器是低6位。XY地址计数器其实也就是DDRAM的地址指针,X地址计数器是DDRAM的指针X,Y地址计数器是DDRAM的地址指针Y。各显示数据输入LCD后,Y地址自加1,Y地址指针从0加到63。20321汉字字模的建立因为我们现在需要的汉字量很少,所以可以使用一些字模提取软件自己制作所需的字模。如下图图34汉字字模建立在选项中选择C51格式,阴码以及逆向列行式图35字模设置并将建立的汉字字模以数组的形式存放字库头文件中CODEUNSIGNEDCHARCHAR_DATA_1210X10,0X60,0X02,0X0C,0XC0,0X04,0X04,0X04,0X04,0XFC,
44、0X04,0X04,0X04,0X04,0X00,0X00,0X04,0X04,0X7C,0X03,0X20,0X20,0X20,0X20,0X20,0X3F,0X20,0X20,0X20,0X20,0X20,0X00,/“江“,0/0X04,0X04,0XE4,0X24,0X24,0X24,0X24,0X3F,0X24,0X24,0X24,0X24,0XE4,0X04,0X04,0X00,0X80,0X80,0X43,0X22,0X12,0X0E,0X02,0X02,0X02,0X7E,0X82,0X82,0X83,0X80,0XE0,0X00,/“克“,1/0X10,0X10,0XD0,0
45、XFF,0X90,0X10,0XE4,0X24,0X64,0XA4,0X3F,0XA4,0X64,0X24,0XE4,0X00,0X04,0X03,0X00,0XFF,0X00,0X01,0XFF,0X00,0X09,0X09,0X7F,0X09,0X49,0X80,0X7F,0X00/“楠“,2/在主函数中定义一个指针P,指向头文件中的数组,即PCHAR_DATA_1。再调用如下子程序输出汉字VOIDDISP_CHAR_CHINESEUNSIGNEDCHARY,UNSIGNEDCHARX,UNSIGNEDCHARPTR,UNSIGNEDCHARCHAR_COUNTUNSIGNEDCHARCL
46、_ADDR,I,NCL_ADDRX8FORN0N4/输入列地址WRITE_LCD_CMD0X04CL_ADDRWRITE_LCD_CMD0XB0Y2/写入低8位部分数据FORI0I4/输入列地址WRITE_LCD_CMD0X04CL_ADDRWRITE_LCD_CMD0XB0Y21/写入高8位部分数据FORI0I4/输入列地址WRITE_LCD_CMD0X04CL_ADDRWRITE_LCD_CMD0XB0Y2/写入低8位部分数据FORI0I4/输入列地址WRITE_LCD_CMD0X04CL_ADDRWRITE_LCD_CMD0XB0Y21/写入高8位部分数据FORI0IINCLUDE“DE
47、LAYH“INCLUDE“GPSH“INCLUDE“SYSTEMH“INCLUDEINCLUDE“LCD11264_DRVH“INCLUDE“DISP_DATAH“INCLUDESBITKEY1P25SBITKEY2P27CHARFLAG0,P0,FLAG10,OK0,DH0,OK10,N40INTTEMP30LONGINTTEMPA10,TEMPA20,TEMPB10,TEMPB20,DIS0IDATAUNSIGNEDCHARGPS_TIME112UNSIGNEDCHARGPS_MODE3IDATAUNSIGNEDCHARGPS_LONGITUDE15UNSIGNEDCHARGPS_LONG
48、ITUDE_DIR3IDATAUNSIGNEDCHARGPS_LATITUDE15UNSIGNEDCHARGPS_LATITUDE_DIR3UNSIGNEDCHARGPS_SPEED8UNSIGNEDCHARGPS_SPEED_DIR8UNSIGNEDCHARGPS_TIME210UNSIGNEDCHARGPS_DATA_OK_FLAGUNSIGNEDCHARGPS_HEIGHT10UNSIGNEDCHARRX_HEIGHT_MODE37UNSIGNEDCHARRX_HEIGHT_COUNTDEFINEMAX_RX_BUF12UNSIGNEDCHARGPS_RX_MODEUNSIGNEDCHA
49、RRX_POINTERUNSIGNEDCHARCOM_RX_BUFMAX_RX_BUF1/硬件连接定义SBITLCD_RSTP11SBITLCD_DATP12/D7SBITLCD_CLKP13/D6SBITLCD_A0P14SBITLCD_CSP36SBITLCD_BLK_SWP10SBITLCDP15/硬件电平宏定义DEFINELCD_CLK_LLCD_CLK0DEFINELCD_CLK_HLCD_CLK1DEFINELCD_DAT_LLCD_DAT0DEFINELCD_DAT_HLCD_DAT1DEFINELCD_BK_ONLCD_BLK_SW1DEFINELCD_BK_OFFLCD_BLK_SW0/函数名DELAY_MS函数功能延时程序/VOIDDELAY_MSUNSIGNEDCHARTUNSIGNEDCHARIUNSIGNEDSHORTNFORI0I4/输入列地址WRITE_LCD_CMD0X04CL_ADDRWRITE_LCD_CMD0XB0Y2/写入低8位部分数据FORI0I4/输入列地址WRITE_LCD_CMD0X04CL_ADDRWRITE_LCD_CMD0XB0Y21/写入高8位部分数据FORI0I4/输入列地址WRITE_LCD_CMD0X04CL_ADDRWRIT