关于单片机的GPS定位系统Word格式文档下载.docx
《关于单片机的GPS定位系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《关于单片机的GPS定位系统Word格式文档下载.docx(25页珍藏版)》请在冰豆网上搜索。
0Hz~33Hz
★三级加密程序存储器
★32个可编程I/O口线
★三个16位定时器/计数器
★八个中断源
★全双工UART串行通道
★低功耗空闲和掉电模式
★掉电后中断可唤醒
★看门狗定时器
★双数据指针
★掉电标识符
2.1.2复位控制电路原理
复位是单片机的初始化操作,单片机在上电启动运行时,都需要先复位。
其作用是使单片机和其他部件都处于一个确定的初始化状态,并从这个工作状态开始工作。
但是单片机自身不能自动进行复位,必须使用外部复位电路来实现单片机的复位。
单片机的外部复位电路有上电自动复位电路和按键手动复位电路两种。
我们采用的是按键手动复位,当复位按键按下后,复位端与VCC电源接通,电容迅速放电,使REST引脚为高电平;
当复位键弹起后,VCC电源通过10K欧姆电阻对22uf电容重新充电,REST引脚端出现复位正脉冲。
其持续时间取决于RC电路时间常数。
复位控制电路图如图3所示:
图3复位控制电路图
2.1.3时钟控制电路原理
单片机的工作是在统一的时钟脉冲控制下进行的,这个时钟脉冲由单片机时钟电路发出,单片机的时钟产生有内部时钟和外部时钟两种,我们采用的是内部时钟方式。
此方式是利用芯片内部的振荡器,然后在引脚XTAL1和XTAL2两端接晶体振荡器,就构成了自激的振荡器,发出的脉冲直接送入内部时钟电路。
外接晶振时,C4和C5的值通常选择为15PF—33PF之间,电容对频率有微调作用。
时钟控制电路图如图4所示:
图4时钟控制电路图
2.2GPS结构组成
全球定位系统(GlobalPositioningSystem)GPS是美国第二代卫星导航系统,是在子午仪卫星导航系统的基础上发展起来的,它采纳了子午仪系统的成功经验,和子午仪系统一样,全球定位系统由空间部分、地面控制部分和用户设备三大部分组成。
GPS结构组成图如图5所示:
图5GPS结构组成图
2.2.1空间部分
GPS的空间部分由21颗工作卫星和3颗备用卫星组成,它们位于距离地球表面20200Km的高空中。
平均分配在6个轨道平面上(每个平面4颗),轨道倾斜角为55°
,各轨道平面升交点的赤径相差60度。
此外,还有4颗有源备份卫星在轨运行。
卫星的分布使得在全球任何地方、任何时间都可观测到4颗以上的卫星,并能保持良好定位解算精度的几何图象,这就提供了在时间上连续的全球导航能力。
GPS卫星产生两组电码,一组称为C/A码(Coarse/AcquisitionCode11023MHz);
一组称为P码(PreciseCode10123MHz),P码因频率较高,不易受干扰,定位精度高,因此受美国军方管制,并设有密码,一般民间无法解读,主要为美国军方服务。
C/A码人为采取措施而刻意降低精度后,主要开放给民间使用。
GPS卫星有如下基本功能:
★接受和存储有地面监控站发来的导航信息,接受并执行监控站的控制命令。
★借组与卫星上设有的微处理机进行必要的数据处理工作。
★通过星载的高精度铯原子钟和铷原子钟提供精密的时间标准。
★向用户发送定位信息。
★在地面监控站的指令下,通过推进器调整卫星的姿态和启用备用卫星。
2.2.2地面控制部分
地面控制部分由1个主控站、5个监测站和3个地面控制站组成。
检测站是主控站直接控制下的数据自动采集中心,站内配有双频的GPS接收机和高精度原子钟。
检测站将卫星观测数据,包括电离层和气象数据,经过初步处理后,传送到主控站。
主控站从各监测站收集跟踪数据,计算出卫星的轨道和时钟参数,然后将结果送到3个地面控制站。
地面控制站在每颗卫星运行至上空时,把这些导航数据及主控站指令注入到卫星。
这种注入对每颗GPS卫星每天一次,并在卫星离开注入站作用范围之前进行最后的注入。
如果某地面站发生故障,那么在卫星中预存的导航信息还可用一段时间,但导航精度会逐渐降低。
2.2.3用户设备部分
用户设备即为GPS接收机本设计主要是设计该部分,其主要功能是能够捕获一定卫星截止角所选择的待测卫星,并跟踪这些卫星。
利用已经设计好的GPS接收模块接收卫星发送的定位信息,通过MCU处理采集到的数据,并将数据转换成字符,显示定位信息。
GPS接收机的硬件,一般包括主机(包括GPS数据采集芯片)、天线和电源,接收机中的微处理机算机是用户设备的核心部分,它可以按照定位解算方法进行定位计算,计算出用户所在位置的经度、纬度、海拔高度、速度和日期时间信息。
2.3GPS工作原理
GPS定位的基本原理是根据高速运动的卫星瞬间位置作为已知的起算数据,采用空间距离后方交会的方法,确定待测点的位置。
本设计采用GPS绝对定位原理,参照坐标系为WGS—84坐标系。
假设t时间在地面安置GPS接收机,测得GPS信号到达GPS接收机的时间为△t,再根据GPS接收机上接收到的从GPS卫星发射回来的星历信息。
测伪距观测方程图如图6所6示:
图6测伪距观测方程图
上述四个方程式中待测点坐标X、Y、Z和Vt0为未知参数,其中di=C△ti(i=1、2、3、4)。
di(i=1、2、3、4)分别为卫星1、卫星2、卫星3、卫星4到接收机之间的距离。
△ti(i=1、2、3、4)分别为卫星1、卫星2、卫星3、卫星4的信号到达接收机所经历的时间。
C为GPS信号的传播速度(即光速)。
四个方程式中各个参数意义如下:
X、Y、Z为待测点坐标的空间直角坐标。
Xi、Yi、Zi(i=1、2、3、4)分别为卫星1、卫星2、卫星3、卫星4在t时刻的空间直角坐标,可由卫星导航电文求得。
Vti(i=1、2、3、4)分别为卫星1、卫星2、卫星3、卫星4的卫星时钟差它由卫星星历提供。
Vt0为接收机的时钟差。
由以上四个方程即可解算出待测点的坐标X、Y、Z和接收机的时钟差Vt0。
2.4GPS数据解析
本设计的GPS接收机根据NMEA-0183协议的标准规范,将位置、速度等信息通过串口传送到单片机系统。
NMEA-0183协议是GPS接收机应当遵守的标准协议,也是目前GPS接收机上使用最广泛的协议,大多数常见的GPS接收机、GPS数据处理软件、导航软件都遵守或者至少兼容这个协议。
NMEA通讯协议所规定的通讯语句都已是以ASCII码为基础的,NMEA-0183协议语句的数据格式如下:
“$”为语句起始标志;
“,”为域分隔符;
“*”为校验和识别符,其后面的两位数为校验和,代表了“$”和“*”之间所有字符的按位异或值(不包括这两个字符);
“<
CR>
/<
LF>
”为终止符,所有的语句必须以“<
”或“<
”来结束,也就是ASCII字符的“回车”(十六进制的0D)和“换行”(十六进制的0A)。
所有的信息由‘$’开始,以换行结束,紧跟着‘$’后的五个字符解释了信息的基本类型,多个参数之间用逗号隔开。
NMEA-0183协议定义的语句非常多,但是常用的或者兼容性最广的语句有$GPGGA、$GPGSA、$GPGSV、$GPRMC、$GPVTG、$GPGLL等。
在设计中我们只对GPRMC数据和GPRMC数据进行了解析。
2.4.1GPRMC数据详解
$GPRMC,<
1>
<
2>
3>
4>
5>
6>
7>
8>
9>
10>
11>
12>
*hh
<
UTC时间,hhmmss(时分秒)格式
定位状态,‘A’=有效定位,‘V’=无效定位
纬度ddmm.mmmm(度分)格式(前面的0也将被传输)
纬度半球N(北半球)或S(南半球)
经度dddmm.mmmm(度分)格式(前面的0也将被传输)
经度半球E(东经)或W(西经)
地面速率(000.0—999.9节,前面的0也将被传输)
地面航向(000.0—359.9度,以真北为参考基准,前面的0也将被传输)
UTC日期,ddmmyy(日月年)格式
磁偏角(000.0—180.0度,前面的0也将被传输)
磁偏角方向,E(东)或W(西)
模式指示(仅NMEA01833.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)
★解析内容:
1.时间,这个是格林威治时间,是世界时间(UTC),我们需要把它转换成北京时间(BTC),BTC和UTC差了8个小时,要在这个时间基础上加8个小时。
2.定位状态,在接收到有效数据前,这个位是‘V’,后面的数据都为空,接到有效数据后,这个位是‘A’,后面才开始有数据。
3.纬度,我们需要把它转换成度分秒的格式,计算方法:
如接收到的纬度是:
4546.40891
4546.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.日期,这个日期是准确的,不需要转换
2.4.2GPGGA数据详解
$GPGGA,<
M,<
*xx<
$GPGGA:
起始引导符及语句格式说明(本句为GPS定位数据)
UTC时间,格式为hhmmss.sss
纬度,格式为ddmm.mmmm(第一位是零也将传送)
纬度半球,N或S(北纬或南纬)
经度,格式为dddmm.mmmm(第一位零也将传送)
经度半球,E或W(东经或西经)
定位质量指示,0=定位无效,1=定位有效
使用卫星数量,从00到12(第一个零也将传送)
水平精确度,0.5到99.9
天线离海平面的高度,-9999.9到9999.9米M指单位米
大地水准面高度,-9999.9到9999.9米M指单位米
差分GPS数据期限(RTCMSC-104),最后设立RTCM传送的秒数量
差分参考基站标号,从0000到1023(首位0也将传送)
2.5LCD12864液晶显示原理
LCD12864是一种具有4/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块,其显示分辨率为128×
64,内置8192个16*16点汉字和128个16*8点ASCII字符集。
利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8×
4行16×
16点阵的汉字。
也可完成图形显示,低电压低功耗是它的又一显著特点。
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不但硬件电路结构和显示程序简单,该模块的价格也略低于相同点阵的图形液晶模块。
2.5.1LCD12864的基本特性
★低电源电压(VDD:
+3.0—+5.5V)
★显示分辨率:
128×
64点
★内置汉字字库,提供8192个16×
16点阵汉字(简繁体可选)
★内置128个16×
8点阵字符
★2MHZ时钟频率
★显示方式:
STN、半透、正显
★驱动方式:
1/32DUTY,1/5BIAS
★背光方式:
侧部高亮白色LED,功耗仅为普通LED的1/5—1/10
★通讯方式:
串行、并口可选
★内置DC-DC转换电路,无需外加负压
★无需片选信号,简化软件设计
★工作温度:
0℃—+55℃,存储温度:
-20℃—+60℃
表1LCDD12864并行接口表
管脚号
管脚名称
电平
管脚功能描述
1
VSS
0V
电源地
2
VCC
3.0+5V
电源正
3
V0
-
对比度(亮度)调整
4
RS(CS)
H/L
RS=“H”,表示DB7——DB0为显示数据
RS=“L”,表示DB7——DB0为显示指令数据
5
R/W(SID)
R/W=“H”,E=“H”,数据被读到DB7——DB0
R/W=“L”,E=“H→L”,DB7——DB0的数据被写到IR或DR
6
E(SCLK)
使能信号
7
DB0
三态数据线
8
DB1
9
DB2
10
DB3
11
DB4
12
DB5
13
DB6
14
DB7
15
PSB
H:
8位或4位并口方式,L:
串口方式(见注释1)
16
NC
空脚
17
/RESET
复位端,低电平有效(见注释2)
18
VOUT
LCD驱动电压输出端
19
A
VDD
背光源正端(+5V)(见注释3)
20
K
背光源负端(见注释3)
注释1:
如在实际应用中仅使用并口通讯模式,可将PSB接固定高电平,也可以将模块上的J8和“VCC”用焊锡短接。
注释2:
模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。
注释3:
如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。
3.模块电路设计
3.1单片机最小系统
单片机最小系统由复位电路、时钟电路、P0口加上拉电阻组成。
时钟电路我们采用的是内部时钟方式。
此方式是利用芯片内部的振荡器,然后在引脚XTAL1和XTAL2两端接晶体振荡器,就够成了自激的振荡器,发出的脉冲直接送入内部时钟电路。
最小系统电路图如图7所示:
图7最小系统电路图
3.2电源电路
本设计电源电路由三个部分组成:
包括整流电路、滤波电路、稳压电路。
U5为整流桥它将交流电转化直流电。
常见的整流电路有单相半波、全波、桥式、和倍压整流电路。
滤波电路用于滤去整流输出电压中的纹波,常见的滤波电路有电容滤波、电感滤波和混合滤波电路,设计中采用的是电容滤波。
本设计的稳压电路采用的是三端稳压器。
电源电路图如图8所示:
图8电源电路图
3.3串口通信电路
对于单片机来说,为了进行串行数据的数据通信,单片机有一个全双工的串行通信接口,包含串行口接收和发送缓冲寄存器等。
本设计中考虑到GPS定位接收模块与单片机之间进行数据通信。
由于GPS接收模块需要的是TTL或CMOS电平,可以通过MAX232进行电平转化,单片机输出的电平就是TTL电平。
为什么要在加一个MAX232串口电路呢,就是为了方便在PC机上应用GPSViewer软件观察GPS模块是否接收到GPS卫星传回的数据信息。
串口通信电路图如图9所示:
图9串口通信电路图
3.4LCD12864显示电路
LCD12864是20个引脚SIP封装的集成接口器件。
在设计中我们将2脚外接电源,3脚接10K的电位器,可实现对其背光调节。
4、5、6脚是控制端口,7-14脚是数据输出端口,接单片机P0端口。
LCD12864显示电路图如图10所示:
图10LCD12864显示电路图
3.5HOLUXGR-87GPS模块
HOLUXGR-87GPS是一种高性能,低功耗,体积小,很容易集成GPS引擎板为一种广谱的设计OEM系统应用。
该产品是基于成熟的技术在其他HOLUX12通道GPS接收机和SiRFstarII/LP芯片组解决方案。
该GPS引擎板将跟踪多达12颗卫星在同一时间,而提供快速的时间,首次定位和一秒钟的导航更新。
其远达能力满足汽车导航的灵敏度的要求,以及其他基于位置的应用程序。
因此,HOLUXGR-87引擎板是非常适合的客户的AVL系统集成和基于位置的服务。
而GR-87的设计采用了最新的表面贴装技术(BGA)和高水平的电路集成,实现卓越的性能,同时最大限度地减少空间和功率的要求。
这种硬件功能结合智能软件使引擎板更容易被集成在各种导航应用产品上。
应用系统可通过两个RS232兼容设置与CMOS/TTL电平的双向沟通渠道进行数据通信。
HOLUXGR-87GPS模块主要特点:
★平均冷启动时间在45秒
★低功耗、12通道“全在查看”跟踪
★集成ARM7TDMICPU和软件工程服务
★嵌入式客户定义的应用程序
★在1Mb的SRAM芯片
★双TTL电平的串行端口,一个用于GPS接收器命令消息
★接口,另一个为RTCM—104DGPS输入之一
★契约理事会尺寸1“×
1”x0.27“(25.4x25.4x7mm),易于集成到手持设备
★重捕时间0.1秒
★支持标准NMEA-0183和SiRF二进制协议
★支持精确的1PPS输出信号与GPS时序对齐
★多路径缓解硬件
★板上RTCMSC—104DGPS和WAAS/EGNOSDemodulator
★内置锂电池进行GPS定位快
表2HOLUXGR-87GPS模块管脚分布表
Pin
PinName
Functiondescription
VCC_5V
+3.5~5.5Vdcpowerinput
TXA
SerialDataoutputportA(TTLLevel:
Voh≧2.4V
Vol≦0.4VIoh=Iol=2mA)
RXA
SerialDatainputportA(TTLLevelVih0.7*VCC
Vil≦0.3*VCC)
RXB
SerialDatainputportB(TTLLevelVih≧0.7*VCC
GND
Powerground
TIMEMARK/
RESET(option)
TIMEMARK:
1PPSTimemarkoutput(Vil≦0.2VPulse
Width10ms)。
RESET:
ResetInput(ActiveLow)(optionfunction)
4.系统软件设计
4.1主程序流程图
主程序是单片机程序执行的主体部分,整个系统软件的功能都在其中完成,本设计的主程序部分主要包括:
串口通信控制程序、LCD12864程序、GPS数据解析程序和显示程序。
主程序中进行了串口初始化、定时器0初始化、LCD12864的初始化和GPS数据的初始化。
定义了GPS的接收开始和停止标志位rev_start和rev_stop、GPS处理标志位gps_falg和换页显示标志位change_page。
进入主程序后首先判断串口是否接收到数据及ch=‘$’和gps_flag=0;
然后rev_start=1,rev_stop=0,开始接收GPS接收机发送的数据,rev_start=0,rev_stop=1接收完成;
开定时器0,对GPRMC和GPGGA进行解析,并显示解析的数据信息。
如果没有接收到‘$’,LCD12864显示初始化信息。
主程序流程图如图11所示:
图11主程序流程图
4.2GPS数据处理流程图
GPS数据的处理包含两个部分:
一部分是对GPRMC数据的解析处理,另一部分是对GPGGA数据的解析处理。
在对GPRMC数据的解析时主要是定义了以个字符型变量ch,并判断接收到的数据的第五个字符,如果第五个字符是‘C’,在判断定位状态status是否等于‘A’,如果等于则就将接收到的经度、纬度、日期和时间信息进行字符转换,及单片机将GPS接收机发送来的数据通过软件程序控制转换成字符型数据。
在对GPGGA数据的解析是也是定义了一个字符型变量ch,判断接收到的数据的第四个字符,如果第四