基于单片机的GPS信息显示系统设计.docx
《基于单片机的GPS信息显示系统设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的GPS信息显示系统设计.docx(33页珍藏版)》请在冰豆网上搜索。
![基于单片机的GPS信息显示系统设计.docx](https://file1.bdocx.com/fileroot1/2022-11/26/4a685523-0d35-4968-85d1-77aee36a9c4a/4a685523-0d35-4968-85d1-77aee36a9c4a1.gif)
基于单片机的GPS信息显示系统设计
基于单片机的GPS信息显示系统设计
关键词:
GPS接收机单片机串行通信
第一颗GPS试验卫星是人类在1978年2月22日的时候成功向太空中发射的,从此以GPS导航定位卫星系统为运动的已知点向地面发射无线电方式的导航定位系统迎来了崭新的时代。
随着时代的发展,科学技术一直的更新完善,GPS卫星导航定位系统有了长远的发展,如今已经被广泛地应用于大地测量学、地球动力学、等科学技术领域中。
本课题首先论述了GPS导航定位系统的历史背景和发展过程,同时介绍了关于GPS导航定位系统的现状和发展的趋势。
此次设计的最终目的是能够将接收到的GPS定位数据信息显示在LCD1602液晶显示器上。
要想完成这项设计,第一需要熟悉GPS和单片机的基础知识理论。
第二需要设计出硬件电路并选择适合的单片机和GPS信息接收模块、液晶显示器,还需要了解选择的器材的用途。
第三需要熟悉一些基本的软件知识,例如要研究NMEA的封包而且熟悉和如何利用NMEA输出命令。
设计出软件程序。
最后将程序导入单片机检测是否能够实提取从GPS定位接收模块中接收到的卫星定位信息,且能否在液晶显示屏上呈现出需要的卫星定位数据。
本课题所涉及的技术方面比较的多,其中包括对单片机,GPS接收模块等的了解,还要有一定的编写程序的能力,这对于我来说是一项巨大的挑战,希望能够在借助已有知识和查阅相关书籍资料的情况下完成这一项设计,并获得宝贵的实践经验。
1课题的背景和目的
1.1定位和导航业务需求发展的趋势
从古至今,对于空间定位技术和导航技术的研究一直都没有被人类放弃过。
人类最初是通过观察星座星辰的位置变化判断自己所处的方位;中国古代的四大发明之一指南针被认为是人类历史上最早的导航仪,随着时代的推进,它被不断的改进,并且一直广泛地运用于人类生活中;历史上第一个航海表是由一位叫做约翰·哈里森的英国人发明。
随着之后的技术的推动与发展,人们已经粗略的学会了如何将以前的各种方法共同利用起来[1]。
进入近代以后,随着科学技术水平高速推动,越来越多的新的导航和定位方法被广泛运用于各个方面。
但是人类并没有放弃对新方法的探索,随着电磁场理论和电子技术的不断进步,有了这些理论和技术的支持,人类的思维变得更有有想象力了。
以前只是单纯的利用宇宙中现实存在的参照物开发导航定位系统,现在学会了主动去建立人为的参照物进行导航定位。
地面无线电导航系统(电子导航系统)是历史性的一刻,该系统的创造代表着电子导航进入了崭新的历程。
首先要在全球相宜地点建创设无线电参考系统,这些无线电参考系统就形成了基本的地基导航系统。
这些无线电参考站发射出无线电电波给接收机,由此计算出两者之间的距离,然后确定自己的位置。
在第二次世界大战的时候这一项技术就已经被使用于战争中,在战争结束之后,它变得多样化,如今大概有一百多种不一样种类的地面无线电导航定位系统在运转工作,其中最著名的有LoranC/D、Omega、VOR/DMETacan等,它们的导航原理相似,只是所用的电波波段和适用地域不同而已[2]。
然而这项技术还存在着必然缺陷,仅仅可以用来定位海平面地平面非静止物体的水平位置,到时这个缺陷的主要原因是因为地面无线电导航定位系统中的无线电发射参考系统全部建造在地表,不能够进行三维立体的定位。
为了完成对空间飞行器的定位,暨必须确定飞行器所处的水平位置和高度,由于地基导航系统所存在的缺陷,显然不能够完成这项定位,因此人类便开始猜测无线电发射参考系统能不能建造在天空中,这样就能够完成对飞行器的定位。
人类历史上最早的人造地球卫星是在1957年10月被发射成功的。
这也令当时的猜想成为可以实现的现实,从此空间科学走向了一个辉煌的时期,也标志着电子导航技术迈向全新的时代。
从此无线电导航定位系统基于空间(电子导航系统)出现在了世人的面前。
空基电子导航系统统称为卫星电子导航系统,第一代卫星电子导航系统的代表是美国海军武器实验室委托霍普金斯大学应用物理实验室研制的海军导航卫星系统(NavyNavigationSatelliteSystem——NNSS)和前苏联的CICADA卫星导航系统)。
NNSS也被称为子午仪卫星系统,这是因为该系统的所有卫星的轨道全部都通过地级[3]。
通过不断的实践表明,只要子午仪系统中的卫星在视界内,就可以在任何地方进行定位,从而获得观测点的坐标。
NNSS拥有许多的好处,如何不会因为时间和天气受到影响,准确性良好。
虽然这些的长处是从前的导航定位系统没有办法相提并论的,然而NNSS依然有着少许的弊端,大多是因为NNSS中导航定位系统中卫星的个数不多,运行的高度相对低。
从地球表面观测到子午仪卫星定位系统中的卫星所需的时间间隔比较长,因此会导致没有办法一口气的供给准确地及时的立体信息,不能够充沛的使用户得到满意。
最早的卫星导航定位系统定位准确性比较短,正常来说都是在0.5m上下,而且这个定位系统存在着重要的局限性,主要表现在:
(1)该卫星导航定位系统中存在的卫星比较少,不能准确地进行实时定位。
(2)该卫星定位系统的轨道比较低,难以达到精密的定位。
(3)该卫星导航定位系统所使用的频率不是很高,非常难补充电离层效应对该卫星导航定位系统的影响。
为了可以冲破第一代的卫星导航定位系统的局限性,可以精确的完成及时不停的卫星导航定位,第二代的卫星导航定位系统就诞生了主要包括美国GPS卫星定位系统、俄罗斯GlonaSS卫星定位系统、欧洲伽利略NAVSAT卫星系统和中国“北斗一号”系统[4]。
卫星导航定位系统技术也从此发展到了一个崭新的时代,该系统也为我们展现其极其广泛的应用前景。
为了战胜子午仪卫星定位系统所存在的缺陷,达到实时、准确和全球性的连续导航与定位。
美国国防部在1973年批准的陆地,海上和空中力量共同开发第二代卫星导航定位系统的授时与测距导航系统/全球定位系统(定时和测距全球定位系统导航/GPS导航系统),简称全球定位系统(GPS)。
全球卫星导航系统最重要的是应用于军事范畴,它主要是由24颗卫星构成的。
和美国的GPS系统相比,苏联所建设的这个系统有许多的优点,主要体现在:
这个系统采用了不一样的频率,卫星发出的信号轨道更加注重覆盖一些纬度比较高的地方,还拥有较强的抗干扰能力。
前苏联解体后,俄罗斯继承了这个系统,然而在一段时期内因为经济危机的原因,没有能力发射新的卫星去代替系统中一些无法正常工作的卫星,以至于系统中还在轨道中运行的卫星数目骤然下降,从而导致系统无法继续正常工作。
24颗卫星构成的星座(其中有3颗卫星是被视为备用卫星使用的)组成了GlonaSS系统中的空间部分。
每一个导航定位卫星的距离地表高度大概是一万九千一百公里,每环绕一周的时间是十一个小时十五分钟。
这24颗卫星散布在三个间距相等的椭圆形轨道上面,轨道的倾角是64.8度,轨道的面夹角度数是120度。
每一条轨道上都散布着8颗卫星,地面轨迹每重复一次的时间是8天。
每个卫星设计出来后的使用寿命最高都是15年。
欧洲伽利略NAVSAT卫星系统空间部分包括由十八颗卫星组成的星座,其中6颗为地球同步卫星,12颗为高轨道椭球卫星,分布在互相对称的6个轨道上。
卫星高度为20178公里,运行周期11小时58分。
轨道倾角为63.45度[5]。
中国也建设了一叫做“北斗”的定位系统,可以覆盖整个地球。
开放服务是在服务区内无偿的提供定位、测速和授时服务,定位精度为10米,授时精度为50纳秒,测速精度0.2米/秒。
授权服务是提供一种更安全的位置,以授权用户,速度,时间和通信服务和系统完整性的信息。
根据规划,中国预计会在2007年先发射两颗静止的轨道导航卫星,2008年末发射第一颗运动的轨道卫星,逐步将该系统完善,将该系统的服务区域逐渐全球化[2]。
“北斗”全球卫星导航系统完成了后,中国部队也将拥有独立的全球卫星导航工具,车辆,人,船,甚至快速移动的飞机和导弹都可以应用。
可以预计,“北斗”将具有极大的战略意义达到事半功倍的实力。
1.2卫星定位和导航的作用
由于卫星定位系统在军事上的战略意义,各个国家正在建立自己的卫星定位系统。
同时,卫星定位系统在民用生活方面上也取得了浩瀚的市场,人们在日常生活和生产也越来越与卫星定位系统密不可分。
(1)对于船舰来说,卫星定位导航系统可以帮助它在海面上协同作战,可以在很多方面做出应有的贡献,例如:
海洋管道铺设,定位暗礁,勘测石油,渔业等。
(2)对飞机来说,它可以在飞机进场、着陆,中途导航,飞机会合和空中加油,准确的投掷武器及空中交通管制等方面进行服务。
(3)在陆地上,可用于各种车辆、坦克、陆军部队、炮兵、空降兵和步兵等的定位,还可用于大地测量、摄影测量、野外调查和勘探的定位,甚至可以深入到每个人的生活中去,如用于汽车、旅行、探险、狩猎等方面。
(4)在空间技术方面,可以用于弹道导弹的引航和定位,空间飞行器的导航和定位等。
总之,技术已发展成多领域(陆地、海洋、航空航天)、多模式(GPS、DGPS、LADGPS、WADGPS、)、多用途(在途导航、精密定位、精确定时、卫星定轨、灾害监测、资源调查、工程建设、市政规划、海洋开发、交通管制等)、多机型(测地型、定时型、手持型、集成型、车载式、船载式、机载式、星载式、弹载式等)的高新技术国际性产业[6]。
GPS的应用领域,上至航空航天器,下至捕鱼、导游和农业生产,已经无所不在了,正如人们所说的“GPS的应用,仅受人类想象力的制约”。
2开发系统及工具的选择
2.151单片机简介
单片机就是把一些计算机的中央处理器CPU(中央处理单元),存储器(存储器),定时器,I/O(输入/输出)接口电路等功能部件集成在单个集成电路芯片上的微型计算机[7]。
从单片机的构成和实现功能上看,它已经属于了微型计算机,尽管它仅仅只是一个芯片。
“SingleChipMicrocomputer”就直接被翻译成“单片机”。
单片机的内部结构如图2-1所示。
图2-1单片机内部结构
系统内的主要部分集成在一块芯片上,大大降低了信号传输之间的距离的系统内,从而提高了系统的可靠性和速度。
因此,在工业测量与控制领域内,单片机系统是首选的控制系统。
因此,单片机是一个规范的嵌入式系统,最好的选择低端嵌入式系统的应用。
在1980年美国的INTE公司推出了MCS-51单片机,典型的产品:
8031(无内部程序存储器,曾经在市场上被广泛运用)、8051(选用的是HMOS芯片,630mW的功率消耗,是5倍的89C51的消耗,市场中已经没有被使用)和8751等常见的产物,至今,应用的主流产品还是51系列单片机,大学和职业学校所用的教学材料依然将51单片机当成是学习的理论基础的范例。
很多的公司都推出了兼容系列的单片机,这是因为MCS-51单片机的影响极其深远。
其他的公司的51单片机产品都是和MCS-51内核兼容的产品而以。
该程序的相同部分,在每个设备上运行的结果,硬件制造商是相同的,和我们以前的曾经非常流行的51单片机,也基于原始增强许多功能,如时钟,通过Flash更好的(至少在程序存储器的内容可以重写1000次)和原内存ROM(书面),AT89C518051表现已经算是很出色的。
通过Flash更好的(至少在程序存储器的内容可以重写1000次)和原内存ROM(书面),AT89C518051表现已经算是很出色的。
在此选择AT89S51单片机的升级版性能更好的AT89C52单片机。
2.2proteus开发工具介绍
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)[3][8]。
当前不能找到比它更好的仿真单片机和外围器件的东西了。
虽然国内的推广仅仅起步,但是许多单片机爱好者、教师和科技工作者都很看好它发展的前景。
Proteus作为世界上有名的仿真软件,从概念到产品上实现了真正的完整的设计规范,从原理图设计,调试和单片机外围电路协同仿真,是唯一一个将电路仿真软件,PCB设计软件和仿真软件三重虚拟模型的设计平台,在编制方面,它也支持IAR,Keil和MPLAB其他编译器。
2.3KeiluVision3
KEILuVision3美国的Keil软件公司生产的51系列兼容单片机C语言软件开发系统,与汇编程序,C语言在功能上相比,对结构性,可读性,可维护性有着明显的优势,因而易于使用[9]。
KEILuVision3软件为我们提供了丰富的库函数和功能强大的集成开发和调试工具,一个完整的Windows界面。
编译后的汇编代码的效率是非常高的,大多数语句生成的汇编代码是结构紧凑,易于理解。
在大型软件的开发,以更好地体现高级语言的优势。
3系统设计
本设计是一个LCD1602电子液晶显示屏显示动画的设计。
整机以ATMEL公司生产的40脚单片机AT89C52为核心,介绍了以它为控制系统的LCD电子液晶显示屏的动态设计和开发过程。
该电子显示屏内部自带了ASCII码识别显示控制电路部分,如果需要显示一个西文字符,只需要让单片机给他输入这个西文字符的ASCII码即可。
文中详细介绍了LCD显示的硬件设计思路、硬件电路各个部分的功能及原理、相应软件的程序设计。
3.1系统结构
系统硬件电路一般可分为三个部分:
稳压电源,单片机及外围电路、LCD1602液晶显示电路。
该系统硬件电路中控制GPS的器件主要是89C52单片机,用于完成对定位系统数据的收集和实现。
其中主要使用的三个器件分别是89C52单片机、GPS接收模块SIRFII以及LCD显示模块MGLS-12032A。
下面列出了89C52单片机和LCD接口部分电路的器件名称和主要的功能。
●89C52:
是LCD液晶显示器的控制器,控制着系统中每一个字符的传输和每一个点阵显示的时序。
●MAX202:
TTL电平和RS-232电平的转换芯片。
●LCD1602:
系统硬件电路中的液晶显示模块。
在89C52单片机的操控下,会按照需求所规定的格式显示接受到数据。
图3-1系统结构原理图
整个系统是以89C52单片机作为中枢,先从GPS接收模块中接收到GPS数据,然后将GPS数据发送到LCD1602液晶显示模块,这些组合在一起构成了一个完整的系统,实现设计的功能。
3.2电源模块设计
每一个模块要能够正常工作,需要一个大约5V的电压电源。
因此需要设计出一个5V的电源对每一个模块进行供电便可。
设计电源稳压中枢选用的是一个叫做LM7805的稳压芯片。
下面所示电路图中,输入电压是通过降压变压器将输入的220V交流电转换成9V的交流电源,然后使用二极管的单向导电性,以9V交流电源使用连接到插槽整流二极管进行整流,从而使负的电压电压被整流成正电压。
滤波电容器的电容C1,主要作用是使电压波动幅度减小,然后用集成芯片的输入电压为5V的电压源到电压稳压器LM7805。
C3、C4是小电容,是高频信号的滤波电容,可以提高负载瞬态响应。
图3-2电源模块电路图
3.3GPS数据模块
3.3.1数据采集方案
为了降低系统在接收数据的过程中可能出现错误的问题,收集的时候一般采用串口中断接收数据时的数据。
方案1:
直接接收,不管数据的接收,首先通过串口发送数据缓冲区后,接收到的数据,然后数据处理。
GPS模块是一种智能模块,它在不同的时间内会发出不同的数据格式,主要包括:
$GPGGA、$GPRMC、$PGRMV、$PGRMO、$PGRMC等数据格式。
每一种的数据格式都是由大约15~36个字节的数据单元组成的,如果数据被接收到的每一个的单片机缓冲器中,单片机需要大量数据存储器RAM,所以单片机的内部存储RAM是不够的,更何况还有程序处理。
所以这种数据采集的方案是不行的。
方案2:
选择接收,首先将接收到的数据进行收集,然后选择存储一些满足格式要求的数据。
如此将大大节省内存,就能够解决内存问题。
例如:
接收$GPGGA数据格式时,数据前五次收到时,首先确定句子的格式数(以判断接收到的数据依次为“$”,“G”,“p”,“G”,“G”,“”),如果是真的,然后确定下一个逗号(',')是第几个逗号。
如果第一个是未来数据的时间。
如果是第二,下一个数据是纬度,根据这个类比。
本次设计所选用的就是这种方案来接收数据。
方案比较:
第一种直接接收的方案尽管接收起来比较简单,也可以很轻易的编写出接收程序的模块,但是会占用很多的内存空间,所以在设计的时候必须添加额外的内存空间,同样的编写程序的时候也需要附加上数据存储时处理的程序。
这样的话,在系统开发的过程中就会遇到许多的问题,包括开发所需要的成本,开发时间,调试的过程中遇到问题。
后者所使用的选择接收的接收方案相对于前者节省了很多的内存空间,数据接收前只需要确定接收的数据格式是否正确就可以了。
为了降低开发成本和时间,和电路复杂度。
因此本次设计所选用的数据接收方法是第二种选择接收的方法。
3.3.2数据接收和处理
该系统中的GPS数据接收模块不用自己去完成设计,直接运用已经完成好的电路模块进行数据传输就可以了。
仅仅只用设计如何能够使GPS数据完成通行的部分就可以了。
GPGGA的数据格式如下所示[10]:
$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*xx
$GPGGA:
起始引导符及语句格式说明;
<1>:
UTC时间,格式为hhmmss.ss;
<2>:
纬度,格式为ddmm.mmm(第一位是零也将传送);
<3>:
纬度半球,N或S(北纬或南纬)
<4>:
经度,格式为dddmm.mmm(第一位零也将传送);
<5>:
经度半球,E或W(东经或西经);
<6>:
定位质量指示,A为有效位置,V为非有效接收警告,即当前天线视野上方的卫星个数少于3颗;
<7>:
使用卫星数量,从00到12(第一个零也将传送);
<8>:
水平精确度,0.0到99.9;
<9>:
天线离海平面的高度,-9999.9到9999.9米;
M:
指单位米
<10>:
大地水准面高度,-9999.9到9999.9米;
<11>:
差分GPS数据期限(RTCMSC-104),最后设立RTCM传送的秒数量;
<12>:
差分参考基站标号,从0000到1023(首位0也将传送)。
*:
语句结束标志符。
xx:
从$开始到*之间的所有ASCII码的异或校验和。
:
回车。
:
换行。
GPS数据通信为232串口通信,在通信过程中就需要数据电平转换,应用到232通信电平转换芯片MAX232,电路如下:
图3-3MAX232电路
单片机串口的接收信息,首先确定如果语句引导头是"$”,然后就会选择接收信息内容,收到“*”字符的ASCⅡ码获得两个字节的接收端,然后根据句子识别区分信息类别接受物理显示ASCⅡ码。
3.4控制模块
本次课题设计中的中枢操控芯片是选用的AT89C52单片机,操控的职责是由接收数据的控制和显示控制两个主要的部分组成的。
(1)控制数据接收:
51单片机内部的串行通信端口的集成电路,在这个设计中,该通信电路被用于接收外部的数据,这个数据是以八位数据+1位为停止位的数据格式,数据缓冲区被用于存储接收到的数据。
(2)显示控制:
利用51单片机的I/O口控制LCD1602液晶显示相应的信息;在显示缓冲区中检索数据,该CPU处理后,送往LCD1602显示信息。
3.5显示模块设计
本次设计的最终目的是能够在显示器上显示出所需要数据的信息,由于这些信息中存在相应的ASCII字符,因此不能够选用数码管来做显示器,需要选用能够显示ASCII字符的LCD1602液晶显示器作为系统中的显示器,显示电路如图所示:
图3-4液晶显示电路图
这个电路中存在着一个最大阻值为1K的可变电阻RV2,调整VEE的输入引脚电压的时候会运用到这个可变电阻,完成调节LCD1602液晶显示器的对比度的任务。
LCD的数据端口分为4数据线和8数据线两种工作方式。
在本设计中,为了节省端口,所以选用的工作方式是4数据线的工作方式。
每一次都必须按照先高位然后再地位的顺序将8位数据按2次写入到LCD。
4软件设计
这个设计要实现完成的功能是将从GPS接收模块中传输出来的数据传输到89C52单片机中,然后选择一些需要的格式传输到LCD显示器上,并且能够显示出实时的经纬度信息。
接收数据的时候,选用的是中断串行口的方式来接收数据。
显示的部分采用I/O端口操LCD1602液晶显示器显示相应的信息。
4.1主程序设计
该系统的主程序的整体布局如图4-1所示。
系统的主程序开始运行之后,第一个是要初始化系统的环境,主要是设置串口、定时器、中断、LCD1602液晶显示器初始化;第二步是确保液晶显示屏在开机状态下,LOGO显示(LCD)的日志信息,为正常显示,并接收数据,每个显示两串字符。
最后因为单片机中无终止命令的指令,所以可以设置系统一直不间断地按规律执行数据信息显示的指令。
根据总体的系统程序结构,程序可以被划分成串口中断服务程序,显示子程序,扫描程序这三个部分。
这三个部分都能够完成单独的设计调试和检测错误,但是最终还是会连接成整体。
图4-1系统主程序的总体结构图4-2数据接收程序流程图
4.2显示驱动程序
voidLCD_check_busy(void);//忙检查
voidLCD_cls(void);//清屏
voidLCD_write_data(unsignedchar);//写数据
voidLCD_write_instruction(unsignedchar);//写指令
voidLCD_set_position(unsignedchar);//设置光标位置
voidLCD_initial(void);//LCD1602初始化
voidLCD_printc(unsignedchar);//输出单个字符
voidLCD_prints(unsignedchar*);//输出字符串
voidLCD_log(void);//开机信息显示
voidLCD_show(void);//信息显示
voiddelay(unsignedchar);//延时
4.3硬件连接设置
#defineLCD_DATAP2//LCD的数据口
#defineLCD_BUSYLCD_DATA^7;//LCD忙信号位
sbitLCD_RS=P2^0;//LCD寄存器选择
sbitLCD_RW=P2^1;//LCD读写控制
sbitLCD_EN=P2^2;//LCD使能信号
(1)寄存器选择位RS,当RS=1时选择数据寄存器DDRAM。
当RS=0时选择指令寄存器CDRAM。
(2)读写选择位RW,当RS=1时读数据寄存器。
当RS=0时写数据或指令到寄存器。
(3)读写使能信号EN,当EN=1时读取数据。
当EN为下降沿是为写数据或指令。
检测LCD是否在处理其它数据而处于忙状态时,则读取忙状态信号位,当RS=0,RW=1,E=1时,LCD会输出八位数据,其中最高位DB7为忙状态位(LCD_busy_flag),若为1,表示LCD处于忙状态,为0表示LCD空闲[11]。
4.4LCD显示工作方式
/*******初始化LCD********/
voidLCD_initial(void)
{