范文一:共享单车的定位系统 关于单片机的GPS定位系统
四川师范大学成都学院电子工程系课程设计报告
前 言
随着时代的发展,先进的科学技术给人们的生活带来了翻天覆地的变化。各种各样的智能化产品层出不穷,推动着社会的进步。全球定位系统GPS是美国从20世纪70年代开始研制,在1994年建成,以接收导航卫星信号为基础的非自主式导航与定位系统,它以全球性、全能性、全天候性、连续实时高精度的实时时间、三维位置、三维速度为人们的生活带来了方便。随着全球定位技术的不断改进和完善,它的应用领域将会不断地扩大,必将成为信息时代不可缺少的一部分。在我们的生活中GPS定位系统给我们带来了便利,如车载GPS导航仪、GPS手持设备、GPS/GPRS远程终端控制设备等,但是他们的价格比较昂贵。本设计使用低功耗的AT89S52单片机、GPS卫星定位模块和LCD12864液晶显示模块来实现对GPS定位信息的计算和显示。GPS信息
1
主要有GPGSV(可见卫星信息)、GPGLL(地理定位信息)、GPRMC(推荐最小定位信息)、GPVTG(地面速度信息)、GPGGA(GPS定位信息)和GPGSA(当前卫星信息)。在设计中我用软件只对GPRMC(最小定位信息)和GPGGA(GPS定位信息)进行了解析,并将解析后的数据转换成字符,通过LCD12864显示日期、时间、经度、纬度、航向、速度和海拔高度等卫星信息。本设计思路清晰、结构简易、性价比高,对研究GPS定位系统二次开发有重要作用。
1
四川师范大学成都学院电子工程系课程设计报告
1.总体设计方案
1.1系统设计框图
本设计主要由电源电路、复位电路、时钟电路、串口通信电路、GPS接收模块、LCD12864显示电路组成。电源电路为系统提供电源,复位电路用于单片机的初始化操作,时钟电路用于是单片机工作在统一的时钟脉冲。GPS接收模块由GPS接收电路和GPS接收天线组成。GPS接收机用于接收GPS卫星信号,并将接收到的信息通过串口通信方式发送到单片机中。单片机通过软件程序对接收到的GPS定位信息进行计算解析,并将解析的结果通过LCD12864显示。系统
2
设计框图如图1所示:
复位电路LCD12864显示模块电路GPS接收模块串口通信电路AT89S52时钟电路图1 系统设计框图
电源电路 2.设计原理
2.1 AT89S52单片机结构和原理
2.1.1 AT89S52单片机功能特性
AT89S52单片机是一种低功耗、高性能COMS8位控制器,具有8K可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,适宜于常规编程。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32 位 I/O 口线,看门狗定时器,2 个数据指针,三个 16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至 0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个
2
J?四川师范大学成都学院电子工程系课程设计报告 中断或硬件复位为止。AT89S52引脚分布图如图2所示:
3
1402P1.0(T2)VCC393P1.1(T2EX)P0.0(AD0)384P1.2P0.1(AD1)375P1.3P0.2(AD2)366P1.4P0.3(AD3)357P1.5(MOSI)P0.4(AD4)348P1.6(MISO)P0.5(AD5)339P1.7(SCK)P0.6(AD6)3210RSTP0.7(AD7)3111P3.0(RXD)EA(VPP)3012P3.1(TXD)ALE(PROG)2913P3.2(INT0)PSEN2814P3.3(INT1)P2.7(A15)2715P3.4(T0)P2.6(A14)2616P3.5(T1)P2.5(A13)2517P3.6(WR)P2.4(A12)2418P3.7(RO)P2.3(A11)19XTAL2P2.2(A10)2320XTAL1P2.1(A9)22GNDP2.0(A8)21 图2 AT89S52引脚分布图
AT89S52主要性能: ? 与MCS-51单片机产品兼容 89S52
? 8K字节在系统可编程Flash存储器 ? 1000次擦写周
期 ? 全静态操作:0Hz,33Hz ? 三级加密程序存储器
? 32个可编程I/O口线 ? 三个16位定时器/计数器 ?
八个中断源 ? 全双工UART串行通道 ? 低功耗空闲
和掉电模式 ? 掉电后中断可唤醒 ? 看门狗定时器
? 双数据指针1 2? 掉电标识符
3
CBA四川师范大学成都学院电子工程系课程设计报告
2.1.2 复位控制电路原理
复位是单片机的初始化操作,单片机在上电启动运行时,
都需要先复位。其作用是使单片机和其他部件都处于一个确
定的初始化状态,并从这个工作状态开始工作。但是单片机
4
自身不能自动进行复位,必须使用外部复位电路来实现单片机的复位。单片机的
1外部复位电路有上电自动复位电路和按键手动复位电路两种。我们采用的是按键手动复位,当复位按键按下后,复位端与VCC电源接通,电容迅速放电,使REST引脚为高电平;当复位键弹起后,VCC电源通过10K欧姆电阻对22uf电容重新充电,REST引脚端出现复位正脉冲。其持续时间取决于RC电路时间常数。复位控制电路图如图3所示: VCC21S1SW-PB2C122ufR1200R310KREST 图3 复位控制电路图 2.1.3 时钟控制电路原理 单片机的工作是在统一的时钟脉冲控制下进行的,这个时钟脉冲由单片机时钟电路发出,单片机的时钟产生有内部时钟和外部时钟两种,我们采用的是内部时钟方式。此方式是利用芯片内部的振荡器,然后在引脚XTAL1和XTAL2两端接晶体振荡器,就构成了自激的振荡器,发出的脉冲直接送入内部时钟电路。外接晶振时,C4和C5的值通常选择为15PF—33PF之间,电容对频率有微调作用。时钟控制电路图如图4所示: C4X130pY211.0592MC5X230p 图4 时钟控制电路图 4 四川师范大学成都学院电子工程系课程设计报告
2.2 GPS结构组成
全球定位系统(Global Positioning System)GPS是美国第二代卫星导航系统,是在子午仪卫星导航系统的基础上发展
5
起来的,它采纳了子午仪系统的成功经验,和子午仪系统一样,全球定位系统由空间部分、地面控制部分和用户设备三大部分组成。GPS结构组成图如图5所示:
图5 GPS结构组成图
2.2.1 空间部分
GPS的空间部分由21颗工作卫星和3颗备用卫星组成,它们位于距离地球表面20200Km的高空中。平均分配在6个轨道平面上(每个平面4颗),轨道倾斜角为55?,各轨道平面升交点的赤径相差60度。此外,还有4颗有源备份卫星在轨运行。卫星的分布使得在全球任何地方、任何时间都可观测到4颗以上的卫星,并能保持良好定位解算精度的几何图象,这就提供了在时间上连续的全球导航能力。GPS卫星产生两组电码, 一组称为C/A 码( Coarse/Acquisition
Code11023MHz) ;一组称为P 码(Precise Code
10123MHz),P 码因频率较高,不易受干扰,定位精度高,因此受美国军方管制,并设有密码,一般民间无法解读,主要为美国军方服务。C/A 码人为采取措施而刻意降低精度后,主要开放给民间使用。
GPS卫星有如下基本功能:
? 接受和存储有地面监控站发来的导航信息,接受并执行监控站的控制命令。 ? 借组与卫星上设有的微处理机进行
6
必要的数据处理工作。
5
百度搜索“就爱阅读”,专业资料、生活学习,尽在就爱阅读网
92to.com,您的在线图书馆!
7
范文二:基于GPS的定位系统
课程论文
题 目: 基于stm32的GPS 定位
学生姓名: 杨舒 学生学号: 1114020142
系 别: 电气信息工程学院 年 级: 2011级 任课教师: 马立宪
电气信息工程学院制
2014年6月
专 业: 电子信息工程
目录
1引言 .................................................................. 2 2 任务与要求 ........................................................... 2
2.1 GPS定位系统特点简介 ............................................ 2 2.2 stm32处理器的介绍 .............................................. 3 2.3 方案论证 ........................................................ 3 3 GPS定位的基本原理 .................................................... 4
3.1 GPS定位的基本概念 .............................................. 4 3.2 GPS模块电路图 .................................................. 4 4 电子电路的设计方法 .................................................. 5
4.1 设计流程图 ...................................................... 5 4.2 GPS定位系统实物图 .............................................. 6 5 总结 ................................................................. 7
5.1设计小结 ........................................................ 7 5.2 收获体会 ........................................................ 7 6参考文献 .............................................................. 7 7附录 .................................................................. 7
7.1程序代码 ........................................................ 7 7.2 器件清单 ...................................................... 11
基于stm32的GPS 定位系统
学生:杨舒 任课教师:马立宪
电气信息工程学院 电子信息工程专业
摘 要:全球定位系统(英语:Global Positioning System,通常简称GPS ),又称全球卫星定位系统,是一个中距离圆型轨道卫星导航系统。它可以为地球表面绝大部分地区(98%)提供准确的定位、测速和高精度的时间标准。系统由美国国防部研制和维护,可满足位于全球任何地方或近地空间的军事用户连续精确的确定三维位置、三维运动和时间的需要。该系统包括太空中的24颗GPS 卫星;地面上1个主控站、3个数据注入站和5个监测站及作为用户端的GPS 接收机。最少只需其中3颗卫星,就能迅速确定用户端在地球上所处的位置及海拔高度;所能收联接到的卫星数越多,解码出来的位置就越精确。
关键词:GPS定位 卫星 精确度 1引言
GPS 系统的前身为美军研制的一种子午仪卫星定位系统,1958年研制,1964年正式投入使用。该系统用5到6颗卫星组成的星网工作,每天最多绕过地球13次,并且无法给出高度信息,在定位精度方面也不尽如人意。然而,子午仪系统使得研发部门对卫星定位取得了初步的经验,并验证了由卫星系统进行定位的可行性,为GPS 系统的研制埋下了铺垫。由于卫星定位显示出在导航方面的巨大优越性及子午仪系统存在对潜艇和舰船导航方面的巨大缺陷。美国海陆空三军及民用部门都感到迫切需要一种新的卫星导航系统。为此,美国海军研究实验室提出了名为Tinmation 的用12到18颗卫星组成10000公里高度的全球定位网计划,并于67年、69年和74年各发射了一颗试验卫星,在这些卫星上初步试验了原子钟计时系统,这是GPS 系统精确定位的基础。 2 任务与要求
2.1 GPS定位系统特点简介
全天候,不易受任何天气的影响,全球覆盖(高达98%),三维定点定速定时高精度,测站间无需通视,快速、省时、高效率,应用广泛、多功能,可移动定位。 2.2 stm32处理器的介绍
STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。按性能分成两个不同的系列:STM32F103“增强型”系列和STM32F101“基本型”系列。增强型系列时钟频率达到72MHz ,是同类产品中性能最高的产品;基本型时钟频率为36MHz ,以16位产品的价格得到比16位产品大幅提升的性能,是16位产品用户的最佳选择。两个系列都内置32K 到128K 的闪存,不同的是SRAM 的最大容量和外设接口的组合。时钟频率72MHz 时,从闪存执行代码,STM32功耗36mA ,是32位市场上功耗最低的产品,相当于0.5mA/MHz。 2.3 方案论证
目前利用ZigBee 技术实现定位功能有基于测距技术和非测距技术,基于非测距技术的定位算法主要有:质心法,凸规划定位算法;距离矢量跳数的算法;基于测距技术的定位算法主要有TOA 、AOA 、TDOA 和RSSI 。
RSSI(reeeive signalstrength indieator) 表示信号强度指示,是真实的接收信号强度与最优接收功率等级间的差值。LQI(1ink quality indieator)是链路质量指示, 表征接收数据帧的能量与质量。LQI 值越大说明链路质量越好。RSSI 值和LQI 值在zigbee 收发模块每接收一个数据帧时都可以得到。及时反映信号强度变化和受到干扰变化 LQI的动态范围比RSSI 大, 有更高的分辨率。
无线信号传输中普遍采用的理论模型-Shadowing 模型,如式(1):
[Pr(d)]dBm =[Pr(d0)]dBm -10nlg(d/d0)+XdBm (1)
在本系统实际的应用中,使用简化了的Shadowing 模型,如式(2):
(2)
n: 信号传播常量,也称作信号传播系数,单位:dBm/m d: 到信号源的距离 ,单位:m
A: 距离信号源1m 处接收信号强度,单位:dBm
但是zigbee 定位无法知道如经度、纬度、海拔高度、及运行的速度,所得到的信息量远远小于GPS 定位所得到的信息。在海上和太空中作业,zigbee 定位将无法实现,而GPS 定位可以精准的知道目标的位置,因此GPS 定位在这一方面有很大的优
势。
3 GPS定位的基本原理 3.1 GPS定位的基本概念
24颗GPS 卫星在离地面1万2千公里的高空上,以12小时的周期环绕地球运行,使得在任意时刻,在地面上的任意一点都可以同时观测到4颗以上的卫星。
由于卫星的位置精确可知,在GPS 观测中,我们可得到卫星到接收机的距离,利用三维坐标中的距离公式,利用3颗卫星,就可以组成3个方程式,解出观测点的位置(X,Y,Z)。考虑到卫星
的时钟与接收机时钟之间的误差,实际上有4个未知数,X 、Y 、Z 和钟差,因而需要引入第4颗卫星,形成4个方程式进行求解,从而得到观测点的经纬度和高程。
事实上,接收机往往可以锁住4颗以上的卫星,这时,接收机可按卫星的星座分布分成若干组,每组4颗,然后通过算法挑选出误差最小的一组用作定位,从而提高精度。由于卫星运行轨道、卫星时钟存在误差,大气对流层、电离层对信号的影响,以及人为的SA 保护政策,使得民用GPS 的定位精度只有100米。为提高定位精度,普遍采用差分GPS(DGPS)技术,建立基准站(差分台) 进行GPS 观测,利用已知的基准站精确坐标,与观测值进行比较,从而得出一修正数,并对外发布。接收机收到该修正数后,与自身的观测值进行比较,消去大部分误差,得到一个比较准确的位置。实验表明,利用差分GPS ,定位精度可提高到5米。 3.2 GPS模块电路图
图1 GPS模块电路图
4 电子电路的设计方法 4.1 设计流程图
图2 设计流程图
4.2 GPS定位系统实物图
图3 实物图1
图4 实物图2
5 总结 5.1设计小结
本设计采用的是NMEA-0183美国国家海洋电子协会(National Marine Electronics Association)为海用电子设备制定的标准格式协议,可以实现误差小于10米范围内的定位,同时通过卫星,可以得到目标所在位置的大量信息。 5.2 收获体会
通过本课程设计使我对GPS 定位所采用的NMEA-0183协议有了更一步的认识,同时自己也动手完成了一个GPS 定位的系统,可以在液晶屏LCD12864上显示经度、纬度、海拔高度、UTC 时间等等信息,知道了GPS 如何实现定位的原理及实现方法。
6参考文献
[1].康华光、邹寿彬、秦臻著. 电子技术基础(模拟部分). 高等教育出版社.2005 [2].康华光邹寿彬、秦臻著. 电子技术基础(数字部分). 高等教育出版社.2005 [3].刘基金.GPS 卫星导航定位原理与方法. 北京:科学出版社.2003 [4].王惠南.GPS 导航原理与应用. 北京:科学出版社.2003
[5].潘永雄. 新编单片机原理与应用. 西安:西安电子科技大学出版社.2003
7附录 7.1程序代码 #include "sys.h" #include "usart.h"
#include "usart2.h" #include "delay.h"
#include "led.h" #include "key.h" #include "lcd.h"
#include "usmart.h" #include "string.h" #include "gps.h" #include "12864.H" int flag;
u8 USART1_TX_BUF[USART2_MAX_RECV_LEN]; nmea_msg gpsx;
__align(4) u8 dtbuf[50];
const u8*fixmode_tbl[4]={"Fail","Fail"," 2D "," 3D "}; void Gps_Msg_Show1(void) {
if(gpsx.fixmode<=3)>=3)>
sprintf((char *)dtbuf,"Fix Mode:%s",fixmode_tbl[gpsx.fixmode]); LCD_ShowString(30,210,200,16,16,dtbuf); }
sprintf((char *)dtbuf,:%02d",gpsx.posslnum);
lcd_wdat_ch(0,1,dtbuf);
sprintf((char *)dtbuf,:%02d",gpsx.svnum%100);
lcd_wdat_ch(0,3,dtbuf);
sprintf((char
*)dtbuf,"UTC:%04d/%02d/%02d
",gpsx.utc.year,gpsx.utc.month,gpsx.utc.date);
lcd_wdat_ch(0,0,dtbuf); sprintf((char
*)dtbuf,"UTC:%02d:%02d:%02d
",gpsx.utc.hour,gpsx.utc.min,gpsx.utc.sec); lcd_wdat_ch(0,2,dtbuf); }
void Gps_Msg_Show(void) {
float tp;
tp=gpsx.longitude;
sprintf((char *)dtbuf, ,tp/=100000,gpsx.ewhemi); lcd_wdat_ch(0,2,dtbuf); tp=gpsx.latitude;
sprintf((char *)dtbuf, tp/=100000,gpsx.nshemi);
lcd_wdat_ch(0,1,dtbuf);
tp=gpsx.altitude;
sprintf((char *)dtbuf,:%.1fm ",tp/=10);
lcd_wdat_ch(0,3,dtbuf);
}
int main(void) { u16 i,rxlen; u16 lenx;
u8 upload=0;
Stm32_Clock_Init(9); delay_init(72);
uart_init(72,38400);
USART2_Init(36,38400); LED_Init(); KEY_Init();
LCD_init(); lcd_init(); lcd_clear();
usmart_dev.init(72);
while(1) { KEY1=1; KEY2=1;
if(KEY1==0)
{
if(KEY1==0)
{ flag=0; while(!KEY1); } lcd_clear(); } if(KEY2==0) { delay_ms(10); if(KEY2==0) { flag=1; while(!KEY2); } lcd_clear(); } delay_ms(1); if(flag==0) { lcd_wdat_ch(2,0,"GPS 定位"); if(USART2_RX_STA&0X8000)
{
rxlen=USART2_RX_STA&0X7FFF; for(i=0;i
if(upload)printf("\r\n%s\r\n",USART1_TX_BUF);
}
}
if(flag==1) { if(USART2_RX_STA&0X8000)
{
} rxlen=USART2_RX_STA&0X7FFF; for(i=0;i
}
if((lenx%500)==0)LED0=!LED0; lenx++; }
}
7.2 器件清单
范文三:GPS定位系统的设计
1 绪论
自从 GPS 定位体系诞生以后, 便在定位等领域取得了快速的发展, 同时也吸引了 世界各地投资者的眼球。 GPS 定位系统的定位效率与精度都比较高,能够全天候的对 全球进行定位的覆盖,该系统有较多的功能,且操作方式也较为简单。 GPS 定位系统 广泛的用于车辆跟踪定位与城市交通管理方面。
1.1 课题背景及意义
众所周知, 自人造卫星出现以来, 立即就引起了各个国家的军事集团极度的重视。 美国海军武器实验室于 1958年底开始建立为美国的军用舰艇提供定位的系统, 即 “海 军定位卫星系统” 。该系统中的每颗卫星的运行路径都经过地极,所以又可以称该系 统为“子午(Transit )卫星系统” [1]。此系统建成于 1964年,系统完成后便在开始运 用于美国的军方,在 1967年美国决定解密该系统,并将此系统提供给民众使用。因 为此系统运作时不受气候的影响,并有较高的自动化程度,且定位的精度较高,所以 他的建成同时也引起了地测学家的广大关注。在这个系统提供给大众使用之后,于大 地测量等领域取得了众多令人瞩目的成就。
飞速发展的卫星定位技术的将逐步取代无线电定位、 天文定位与一些较传统的定 位方式。这种定位技术将得到广泛的运用,而且在定位的精度,全天候、实时性方面 都取得了很大的进步。现在该系统不但运用于大地勘测,电离层勘测与航天器的定位 等众多民用领域,在军事的方面更是得到了广泛的使用,卫星定位的技术在导弹制导 领域、野外作战指挥、弹道的精确测量以及军事地图的快速绘测等领域也都得到了大 量的应用。 GPS 可以在海、陆、空三个方面进行定位,为导弹能够精确的打击目标对 其进行制导,为大地测量和工程测量进行精密定位,同时还能够进行精确的显示当时 当地的时间与行驶或航行速度的测量等,对于测绘领域,在全国内建立精密度高的大 地测量控制网也需要使用到 GPS 卫星定位技术。 由于卫星定位定位技术在明用与军事 等领域的重要作用,使其备受众多国家的重视。
未来的 GPS 定位系统会像现在的无线通信、汽车等进行产业化。在近期的几年, 广大消费者众能购买得起的 GPS 越来越多了。 随着科技的进步, 这些设备的功能越来 越多,几乎每个月都会出现新的功能,但价格在下跌,设备的尺寸也越来越小了。在 两三年前, GPS 设备还像奢侈品一样令人望而止步, 而现在大众终于能用上一款 GPS 设备了,并带有许多先进的功能。
1.2 GPS定位系统的发展趋势
在全球范围内都可以通过 GPS 定位系统接收 GPS 卫星信号并经过处理对用户进 行实时的定位跟踪,该系统广泛应用于中国的水利,电力,交通,资源勘探,工程测 量,大地测量和定位等方面。
目前,全球八大无线工业中 GPS 产业便是其中之一,该产业的发展速度也极快, 这片市场也被世界各国所看好。 与此同时, 我国也加快了 GPS 产业化的发展脚步, 并 已经自主研发出了我国独有的 “ 北斗 ” 卫星定位系统。
近几年来,我国的汽车工业发展越来越快,私家车也已经开始进入每家每户,同 时也带动了我国 GPS 行业的发展。到目前为止,我国估计的汽车所有量可能已达到 8000万以上,数据仅次于美国。在未来,中国的汽车产业还会有巨大的发展,专家估 计在未来我国的汽车数量可能会达到 4.9亿量以上。 GPS 定位系统能够通过接收的 GPS 卫星信号在市内道路、高速公路,甚至在荒无人烟的沙漠与戈壁滩上为汽车提供 定位,司机可以通过定位信息找到到达目的地的正确路线。 GPS 定位系统这一市场也 因汽车产业的发达得到快速的发展。 因此, 我国的 GPS 市场将会巨大的发展, 在未来 的几年,我国有望成为全世界最大的 GPS 市场,定位设备将被更多的消费者所接受, 设备的价格也将逐步下跌。
1.3 GPS全球定位系统的组成
GPS 系统的三大要素是由 GPS 卫星星座组成空间部分,地面监控系统组成的地 面控制部分与 GPS 信号接收机组成的用户设备部分构成的。
(1) GPS 卫星星座
由 21颗常用卫星与 3个常备卫星组成了 GPS 卫星星座 [2]。 GPS 卫星向地面发送 两个 157.42MHz 与 1227.60MHz 波段的载波信号, 分别被称为 L1波段与 L2波段, 为 了确保稳定的频率,人们将具有很高精度的原子钟安装在卫星上,能够为全球范围内 的用户提供全天候的连续高精度的实时三维定位、测速与授时的服务。
(2)地面监控系统
由设在美国本土以及分布于全球范围内的 5个监控站组成的 GPS 地面控制系统, 不间断的监测 GPS 卫星的信息, 并将预报和计算的数据由注入站更新卫星的信息。 主 控站坐落在美国科罗拉多州的斯平士 [3]。
GPS 卫星定位系统的地面监控系统一共分为三个部分,分别是 1个主控站, 3个
信息注入站与 5个卫星监控站。 地面监控系统的三大部分均匀的分布在美国国内与海 外的美军基地上。
监测站:每一刻卫星的伪距与距离差都可以用 GPS 接收系统来测得, 可以对气象 数据进行采集,主控站可以接收到接收系统所采集到的数据
主控站:主控站主要功能是收取每个监测站的 GPS 卫星所采集到的数据、 卫星实 时的工作状态信息、 每个监测站和注入站的工作状态信息。 根据上述得到的各类数据, 及时编算各卫星的定位数据传送到注入站, 在监测站之间与注入站之间做控制和协调 的工作,诊断卫星的实时工作情况,完成各种相关的工作。
注入站:各个卫星的定位电文由主控站发出并将其注入到当时航行在其上空的 每颗卫星。
1.4 GPS系统的工作流程
(1)搜寻到可被使用的卫星并接收该卫星的信号,同时与接收到的卫星信号进 行同步,得到有关于定位的信息。
(2)计算位置所需要的信息可从定位电文中取得,时钟信息与星历信息都包含 在这些信息内。
(3)计算出卫星位置的正确信息,这些信息中包含卫星目前的高度与方位角, 从而对对流层进行必要的校正。
(4)算出伪距,校正电离层等。
(5)重复以上过程,对可用卫星进行相应计算。
(6)对其他必要的项目进行校正,例如 GPS 接收机接收到卫星信号的时间,校 正因地球旋转造成的卫星位置的偏差。
(7)根据定位原理,计算出接收机所在的初始位置的信息,并将该信息进行转 换,显示出所需的坐标格式。
(8)加入闰秒与 UTC 时间补偿计算出当前正确的时间。
(9)将可用卫星的数据进行解析。计算出最为合适的 DOP ,选择卫星,计算出 GPS 接收机的位置并对其进行校正,显示出 GPS 的三维坐标和准确时间的信息。 1.5 本设计的主要工作
本次课题主要是根据 GPS 定位原理与单片机的原理与功能, 选用单片机 AT89C51处理 GPS 接收模块接收到数据并由处理完成的数据显示在 LCD12864液晶模块上。
在此设计过程中,首先要了解 GPS 接收模块的各项性能指标,学习 NMEA 封包 并要了解如何使用 NMEA 输出命令,与单片机串行通信的知识相结合,提取并处理 GPS 接收模块所接收到的卫星定位数据, 并将这些数据选择性的显示在 LCD12864模 块上。
2 总体方案论证
目前, 人们对 GPS 设备的要求是要体积小可手持, 还要有相当低的功耗, 能够长 时间持续使用,而且操作起来也要相对的简便,对画面的要求也要提高,追求美观。 本次的设计所涉及的内容包括单片机部分, 显示部分, GPS 接收部分与电源部分, 可在这些方面选择论证。
2.1 GPS定位系统的主要功能
本设计 GPS 定位系统的主要功能如下。
(1)移动目标相关信息显示。在状态栏不断的显示出所在位置的相关信息,比 如速度,方向时间等。
(2)实时信息的显示。将获取到的定位信息显示在屏幕上。
(3) GPS 启动 /停止功能。
(4)接收 GPS 卫星发出的 GPS 定位数据。
(5)追踪功能。
2.2 系统方案
由 GPS 模块、液晶显示器、 AT89C51、上电复位电路与电源部分构成 GPS 定位 系统的硬件电路。将 GPS 模块接收到的定位数据送至单片机经过处理后,送至 LCD 液晶显示器。 LCD 液晶显示器会每隔一秒钟定时进行一次更新。 上电复位电路为单片 机提供上电复位功能。 电源电路为各个电路提供稳定的 +5V电源。 GPS 定位系统整体 构架如图 2.1所示。
图 2.1 GPS 定位系统框图
2.3 设计方案论证
本课题主要是根据 GPS 处理模块的选择以及液晶显示屏的选择两个方面来解析 论证。
2.3.1 GPS接收机的选择
GPS 模块具有写一下几种性能指标。
(1)卫星轨迹
全球 GPS 卫星有 24颗,分别沿着 6条轨道环绕地球飞行(每一组有 4颗卫星) , 根据所接收到的信息, GPS 模块开始相对应的定位。处在地球同一侧的一般不会超过 12颗卫星,所以一般选取的设备只要能够跟踪 12颗卫星以下即可。当然,设备能跟 踪到的卫星数量越多,就代表其有越好性能。大部分的 GPS 设备能够追踪 8到 12颗 卫星。最少需要 3颗卫星来计算 LAT/LONG(二维)坐标,三维坐标则需要 4颗卫星 来进行计算。
(2)定位时间
定位时间是指重新启动 GPS 接收模块后确定当前位置所需要的时间。关于 12通 道的接收器,如果所处位置在上一次定位的位置附近,则一般需要 3~5分钟来进行 冷启动定位,热启动则需要 15~30秒,而有的接收机只有 2通道,它们大多需要超 过 15分钟的时间进行冷启动,热启动则需要 2~5分钟。
(3)定位精度
如果 SA 没有开启,则一般的 GPS 模块的水平位置定位精度为 5~10米。 (4) DGPS 功能
GPS 定位卫星信号穿过大气层可能会发生折射,为了将这些因素的影响降到最 低, 有一种设备被叫做 DGPS 发送机。 它是用来接收 GPS 卫星的信号一种固定的 GPS 接收器。 DGPS 可以肯定的得知 GPS 卫星信号理论上传送到的精确时间, 然后比较所 得到的时间与实际传送的时间,并将他们之间的差值计算出来。 DGPS 将这个差值发 送出去,其他的 GPS 模块可以通过这个差值得要一个更为精确的位置数据 (5~10米 甚至更小的误差) 。为了方便用户能免费使用这些功能,大多数的 GPS 接收模块的生 产商在部分地区都配备有 DGPS 发送设备,只有客户的 GPS 设备具有 DGPS 功能才 可以使用。
(5)信号干扰
如果想要得到一个很好的定位信号, GPS 接收机一定要最少能接收 3~5颗卫星 信号。如果在高楼林立的大街上、地势低洼的山谷中或者树木茂密的丛林内都有可能 接收不到足够的卫星定位信号, 没有足够的信号则无法准确的定位或者只能得到二维 的坐标。 如果在一座建筑物内, 也可能无法接收到数据。 还有一些 GPS 接收机带有单 独的天线能够贴在外面,或者用一个外设天线放置于车顶等,这样有助于接收机接收 到更多的卫星数据。本设计采用的 GPS 模块为 G591模块。
2.3.2 显示器的选择
下面分别对以下三种一般嵌入式系统的显示器作出介绍。
(1) VDF 显示器
电子管经过发展与改进得到了另一种显示器,被称为 VDF 显示器。它是由真空 二极管或者三极管改型而产生的。静态 VFD 是由二极管改型所得的,动态 VFD 则是 由三极管转型所得的。阴极与阳极是静态的 VFD 的两个基本电极。而动态 VDF 比静 态多了一个栅极。
VFD 显示器的亮度较高且视角宽, 响应速度迅速以及色彩丰富, 具有优良的显示 效果。采用 CIG 技术后,能够集成 VFD 的驱动电路,它性能可靠且有较长的使用寿 命;但是它的功率消耗却相当的庞大,因为该显示器的功率功耗相对较大,并不适合 使用于手持设备。还需要使用多组不同的电压供电才能驱动该显示器,使用起来并不 是很方便。
(2) LED 显示器
LED 发光二极管经过发展与改进成为 LED 显示器的一类显示模块, 由 LED 发光 二极管改型而来,此类显示器分两类分别是 LED 数码管显示器与 LED 点阵显示器。 它亮度高,视角宽,反应速度快,而且具有较高的可靠性,使用寿命也较长;但 LED 数码管只能显示的有限内容,显示内容比较单调。 LED 点阵可以显示各种的信息,但 是它却有相当大的体积,所以它在广告牌等需要大片显示的地方使用的比较多,而在 手持设备上并不适合使用此类的显示器。
(3) LCD 液晶显示器
LCD 液晶屏利用光的偏振现象来显示。它同样也分为两种,分别为数字型(与 LED 数码管相同,只能显示很少的一些内容)与点阵型;数字型的 LCD 一般适用于 只需显示数字或少数英文字符的地方;点阵型的 LCD 可以显示众多的图形与字符, 所以此类 LCD 显示器应用的较为广泛。 LCD 液晶本身不发光,但它可以通过反射或 透射其他光源来发光,而且它所消耗的功率比较小,具有较高的可靠性且具使用寿命 也比较长。 LCD 液晶模块具有较小的体积,更加适合在移动或掌上设备使用。 本课题中使用的 LCD 液晶显示器为 LCD12864。 此液晶显示模块的驱动编译都相 对简便,且较其他液晶显示器的价格相对较低。
3 系统硬件设计
由 GPS 模块、液晶显示器、 AT89C51、单片机上电复位和电源等部分组成 GPS 定位系统的硬件电路。将 GPS 模块接收到的定位数据送至单片机经过处理后,送至 LCD 液晶显示器。 LCD 液晶显示器会定时进行更新,更新周期约为 1s 。上电复位电 路为单片机提供上电复位功能。电源电路为各个电路提供稳定的 +5V电源。
3.1 单片机
MCS-51系列的单片机开始是由 Intel 公司生产的通用类的单片机。 51子系列以及 52子系列是 MCS-51系列的单片机的两种常见系列 [4]。
51子系列的单片机产品大致有三种机型,与这三种机型相兼容的有 80C31、 80C51、 87C51三类 COMS 器件,且这三种 COMS 器件的功耗都比较低。
3.1.1 AT89C51单片机的结构原理
AT89C51是一种高性能、低电压 CMOS8位处理器并带有 4K 字节 FLASH 存储 器, 俗名单片机。 单片机可以对可擦除只读存储器作反复擦除 1000次的处理 [5]。 该器 件可以兼容工业标准的 MCS-51指令集与输出管脚。由于单个芯片内组合了闪烁存储 器与多功能 8位 CPU , ATMEL 的 AT89C51是一种具有比较高的效率且精简单易操 作的简微控制器 [6]。 很多嵌入式控制系统都采用的是 AT89C51单片机所提供了一种有 较高灵活性且价格低廉的方案,如图 3.1所示的是其引脚排列。
图 3.1 AT89C51引脚图
3.1.2 AT89C51单片机的管脚说明
VCC :单片机电源输入,接入电压为 +5V。
GND :接地端。
P0口:P0口一共有 8位,这 8位 I/O口都是漏极开路双向的,每脚可吸收 8TTL 门电流。对外部数据进行访问时,它是低 8位地址总线和数据总线的复用 [7]。在 P0口输出原码的时候, P0外部一定要为高电平。
P1口:用户可用来作为输入输出的端口。
P2口:8位双向 I/O口, P2口缓冲器可接收,输出 4个 TTL 门电流,当对外部 程序存储器进行访问时它的地址即为高 8位 [8]。当外部不扩散但作单片应用时则当作 一般的双向 I/O口用。
P3口:双向 I/O口, 可接收、 输出 TTL 门电流数与 P2口相同。 P3口的一些特殊 功能管脚信息如表 3.1所示。
表 3.1 P3口管脚功能介绍
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST :复位信号从此端输入,并接高电平,如果芯片需要复位时,只要将这个引 脚接高电平即可,如果单片机要完成系统复位必须持续工作两个机器周期以上。 ALE :访问外部存储器,如果要触发外部的 8位锁存器 ALE 信号就要发生负跳 变, 锁存器中将锁存进 P0口的地址总线 [9]。 若在外部存储器期间, 将以十二分之一震 荡频率输出。
PSEN :对外部程序存储器的选通信号进行访问。在读取外部程序存储器的指令 时,在每个机器周期都会有两次 PSEN 信号产生。在片内程序存储器指令执行的时候, 则 PSEN 信号不会产生;对外部数据进行访问时, PSEN 信号也不会产生。
EA /VPP:当引脚保持低电平时,就选择外部程序代码来读取。对 AT89C51单片 机进行操作时,要使在程序运行时访问内部程序库存储器就要将此引脚接成高电平 [10]。
XTAL1:此引脚如果接地,电路可采用外部振荡器。
XTAL2:来自反向振荡器的输出。
3.1.3 AT89C51单片机的主要特性
(1)能够与 MCS-51兼容。
(2) 4K 字节可编程闪烁存储器。
(3)它的写 /擦循环的寿命为 1000次。
(4)它的数据可以保留时间:10年。
(5)在全静态工作下为 0Hz-24MHz 。
(6)三级程序存储器锁定。
(7)内部 RAM 为 128×8位。
(8)可编程 I/O线有 32线。
(9)两个 16位定时器 /计数器。
(10)单片机的中断源有 5个。
(11)可编程串行通道。
(12)低功耗的闲置和掉电模式。
(13)片内振荡器和时钟电路。
3.2 GPS模块
由 GPS 接收机天线单元、 GPS 接收机主机单元、电源三部分构成了 GPS 接收机 模块。
用户部分就是我们平时生活中常见的 GPS 定位模块, 它能够接收、 解调卫星发出 的广播 C/A码信号 [11]。但 GPS 模块并不能发送信号,只能被动的接收定位信号。通 过计算 GPS 模块与各颗卫星间的伪距离, 点位速度快是它的特点, 但是会有较大误差。 在第一次进行定位时,模块对定位信息进行计算至少需要 4颗卫星,称作 3D 定位, 实现 2D 定位就只要 3颗卫星, 但是其定位的精度却不够高。 这些 NMEA 格式的定位 及辅助信息由 GPS 接收模块源源不断的提供给用户选择应用。
GPS 性能指标主要有接收灵敏度、位置精度、定位时间、时间精度、功耗等。开 机定位的时间不同可能与模块启动模式的不同有关。 冷启动时间是指模块内没有保存 任何对定位有帮助的数据,其中包括星历、时间等数据;温启动时间则指模块内部有 较新的卫星星历,但是时间上的却有很大偏差;热启动时间则需要达到关机不超过二 十分钟,且 RTC 时间误差很小的要求。
可以在静态和动态两种情况下对定位精度进行考察, 并且动态定位比静态定位的 效果要好得多。只有在没有高大阻碍的天空下,能接收到良好卫星信号的情况下才能 测得 GPS 模块的定位数据。 所以在一般情况下要想接收到达到标准的定位精度与定位 时间并不容易。圆概率误差与 2倍水平均方根误差是两种常见的水平定位精度。 有很多方面都能决定 GPS 模块定位的精度, 例如 GPS 系统的轨道差与卫星钟差、 可见 GPS 卫星的数量及其分布、大气层厚度、太阳的辐射等。即使是同一个 GPS 模 块也会因为天线的质量、位置与方向、测试的时间段、空旷的范围及方向、天气等原 因产生不同的定位误差。 就算是同一厂家同一型号的 GPS 模块进行测试时静态漂移量
也会出现误差。
本次采用了 G591模块作为本课题设计的 GPS 模块, 它是一款采用日本原装全新 JRC-G591模块的开发板, JRC 第九代方案是此开发板是基础,能支持多达 210PRN 通道,其中搜索通道有 66个,同步跟踪通道有 22个,具有比较高的灵敏度与跟踪性 能。模块实物如图 3.2所示。
图 3.2 GPS 接收模块
GPS 接收模块天线的作用是将卫星发射的无线电信号转换成 GPS 接收模块元件 能够收取应用的电信号。 陶瓷天线体以及有源放大器两部分组成了本设计所用的 GPS 天线。采用塑料外壳的封装,可以防水防潮材料环保,线材高性能,接收信号的灵敏 度极高,天线的底部带有磁铁可以系在车外,产品小巧,安装与使用较为方便。它的 工作条件是温度在 -40℃~+85℃之间,湿度则在 95%~100%之间。本设计的 GPS 天 线特性如表 3.2所示。
表 3.2 天线特性
3.3 显示部分
在此次的设计中,显示模块也是一个很重要的部分,在 GPS 模块接收到 GPS 定 位卫星传送下来的数据并经过处理后, 将所得的结果要传到显示模块上才能被用户所 得之具体的定位信息。此次设计所用的液晶模块是常见的 LCD12864液晶显示器。 3.3.1 LCD12864概述
LCD12864是一种多接口方式的图形点阵液晶显示模块,国标一级、二级简体中 文字库都配置在其内部;它能够显示 128×64的分辨率,内部 16×16点的汉字有 8192个, 16×8点 ASCII 字符集有 128个,该模块有灵活的接口方式,还具有简单且方便 的操作指令,能够构成全中文人机交互图形界面 [12]。 8×4, 16×16点阵的中文汉字都 能够实现,同时图形显示的功能也能完成。而且该 LCD 液晶显示器的所需电压和功 耗都较低。 ,该模块构成的液晶显示过程比起同一种类的图形点阵液晶显示模块来, 不论是其硬件模块还是实现程序都要更为的简洁, 且该液晶显示模块的价格要相对较 低与一些相同的图形点阵液晶模块。液晶模块的基本特性如表 3.3所示。
表 3.3 LCD12864模块的基本特性
LCD12864显示模块具有 20个管脚, 每个管脚对应着各自的功能, 要实现某个功 能就必须要先了解该模块各个管脚的功能。其各个管脚的功能介绍如表 3.4所示。
表 3.4 LCD12864各管脚的介绍说明
如果串口通信模式在实际操作中使用, 可以令 PSB 与固定的低电平相接, 也可以 把模块上的 J8与地短接;电复位的电路也连接在模块内部,因此如果在不需经常复 位的情况下可以将 17脚悬空; 若背光与模块同用一个电源,可将该液晶的 JA 、 JK 短 接。 LCD12864引脚图如图 3.3所示。
图 3.3 LCD12864管脚图
4 系统软件设计
在电路硬件设计完成后开始对软件进行设计,开始编写关于 GPS 定位的程序与 LCD12864显示模块的程序。编写完成后对其检错与修改。
4.1 系统软件概述
由初始化模块与数据接收处理模块组成了系统软件。系统流程如图 4.1所示。
图 4.1 系统程序流程图
4.2 软件程序的编写
4.2.1 GPS接收处理模块
从 GPS 上接收到的数据是由数据接收处理模块负责处理的。 当要接收的信息在单 片机的串口后,要先判别是否为语句引导头“ $”才能接收信息的内容,要对收到的 ASCII 码进行处理显示就必须区分出信息的类别,其方法就为根据语句标识来区分。 如果整个数据是正确的,就开始对数据进行处理;如果接收的数据不正确,就要重新 接收数据。在此次的设计中,主要是接收并存储下面这些数据内容:当前的日期、时 间、 经度、 纬度与定位状态。 还有要特别注意的是 GPS 所显示的时间是世界统一时间,
这与我国的时区相差了八个小时,所以就必须转换接收模块所得的时间。北京时间是 在 UTC 时间上面加 8个小时才成为准确的北京时间,如果超过 24小时要作减 24小 时处理 [13]。在转换时间的时候要注意年月日的变更。数据每一秒进行一次更新, GPS 模块会在系统工作时不断的收到新的数据,单片机刷新 RAM ,液晶屏显示出的将事 处理后的数据。数据的接收与处理程序的流程图如下 4.2所示。
图 4.2 数据接收处理程序流程图
4.2.2 GPS定位信息显示的程序设计
在此次课题中设计的程序不考虑将 GPS 接收器输出的经纬度等信息与地图数据 库连接实现定位功能,而是仅对 GPS 接收模块所输出的信息进行解析,然后将经度、 纬度、速度与时间信息实时刷新显示在液晶屏上。
以带串口输出的 GPS 模块 Gstar-GS-87为例, 它遵守是目前 GPS 接收机使用最广
泛的协议 — NMEA-0183协议,它是美国国家海洋电子协会制定的标准格式,专为海 用电子设备使用, 目前 RTCM 标准协议已经成了 GPS 定位设备统一协议。 NEMA-0183 协议定义的语句非常多,其中最常见的如表 4.1所示。
表 4.1 常见的 NMEA-0183语句及字段
所设计的主程序将过滤多种协议数据,仅仅解析“ GPRMC ”协议语句,例如, “ $GPRMC, 161229.487, A , 3723.247500, N , 12149.342100, W , 0.15, , 309.58,118 589, *10” ,程序设计目标就是要参考表 4.2给出的“ $GPRMC”协议语句各字段的详 细说明,从这一字符串中解析出经纬度与速度、时间信息。
本科毕业设计说明书 (论文) 第 20 页 共 37 页 表 4.2 $GPRMC数据格式
解析“ GPRMC ”协议语句的完整代码由中断函数 void Serial_INT() interrupt4提 供,它首先将接收的字符与字符串“ GPRMC ”中的字符逐一进行比对,该消息 ID 定 义在程序最前面,即 const char p[]=“ $GPRMC” ,如果所接收到的信息头部为 “ $GPRMC” ,则继续后面的解析操作,否则忽略本次解析,等待下一“ $GPRMC” 消息头部的到来 [14]。
4.2.3 LCD12864程序设计
(1)显示定位对照表 4.3所示的 LCD12864(KS0108)显示液晶命令集可知,设 置 X 地址既页地址,在设置完页地址以后还要设置列地址(Y ) ,若不从该页的第 0行开始显示,则还需设置行地址。根据表 4.3,在 LCD12864.c 的开始部分定义以下 3条常用命令:
#define LCD_START_ROW 0xC0 //起始行
#define LCD_PAGE 0xB8 //页指令
#define LCD_COL 0x40 //列指令
(2)通用显示函数 Common_Show的编写
由 64×64构成的 LCD12864的左半屏, 通过设置 CS1与 CS2为 10与 01, 可分别
本科毕业设计说明书 (论文) 第 21 页 共 37 页 选择左半屏显示或右半屏显示的操作。通用显示函数的参数为 P 、 L 、 W 、 *r,它们代 表了从第 P (X 地址)页起始, 在左边距为 L 的位置开始显示 W 字节,字节的缓冲地 址为 r 。
LCD12864液晶显示模块命令表如表 4.3所示。
表 4.3 LCD12864(KS0108)液晶显示模块命令表
在以上的参数内, P 的取值只能从 0~7, L 的取值能从 0~127,在函数内部须将 0~127分成左右半屏进行分别控制,该函数在内部给出了完整的说明。
另外,液晶显示器的数据 /命令管脚 DI 用于选择发送命令字节还是读 /写数据字 节, DI=0时选择命令寄存器,当 DI=1时则选择数据寄存器,该管脚与 1602液晶显 示中的 RS 管脚相类似, RS 管脚为寄存器选择管脚 [15]。
本科毕业设计说明书 (论文) 第 22 页 共 37 页 5 系统调试
将本课题所需要的元器件按所画的电路原理图依次进行连接, 每个管脚都需与相 对应的功能管脚相连接,电路接完以后不要急于通电,还需用万用表查看所接电路的 准确性,将万用表调至电阻档,对所接管脚测量看其是否短路,同时还要核对每个器 件的型号、所需参数的大小是否都符合规格。特别要注意的是所接电源的正负极有没 有接反或出现短路现象, 并要重点查看其他的信号线和单片机的各个总线之间有没有 出现短路现象或各个总线有没有短路。
检查完成后接好电源给电路通电,继续使用万用表测量各个接点的电压是否正 常,尤为要注重对单片机各个点的测量,若出现高压情况要及时处理,否则将可能损 坏单片机。
5.1 GPS软件调试
5.1.1 软件调试平台 Keil 软件简介
美国 Keil Software集团为了 51系列兼容单片机 C 语言程序开发而设计了一个软 件,名为 Keil C51, C 语言相比于汇编它的功能,可读性、结构性与可维护性有显而 易见优势, 所以 C 语言更方便学习与使用。 如果使用过汇编语言后再来使用 C 语言的 编程,感觉会更深刻。该软件会以很高的效率生成目标代码,生成的代码很容易被读 懂。尤其是在大型软件的开发上更能突出高级语言的优势。
5.1.2 GPS定位系统的调试
在接收到 GPS 卫星信号后对其进行处理时, 遇到的主要问题在于将接收到的时间 数据转换成正确的时间数据源。 UTC 时间是直接由卫星信号中提取出来的数据, 而加 八个小时的 UTC 时间才是正确的北京时间,而且超过 24小时时还要作一定的处理, 就是减 24小时。
在调试的过程中出现了一个时间错误的现象, 经过处理后的时间数据并不是完全 正确的,显示时间的高位与北京时间一致而低位的时间数据却依然是 UTC 时间的数 据。通过对 UTC 时间作加 9运算或直接确定一个值给六位时间等尝试,得知可能因 GPS 接收机不断的接收数据并将数据传送到单片机进行处理, 在处理的过程中大约一 秒一次对定位的信息不断的更新, 在主函数处理刚收到的时间信息时有可能在没有处 理完该信息数据就又收到了下一帧的信息, 所以就有可能出现高位信息处理完成但低 位的信息却未经处理就进入了中断, 在液晶模块上就会显示处理完成后的北京时间与
本科毕业设计说明书 (论文) 第 23 页 共 37 页 未经处理的 UTC 时间。针对这一问题,我们将原先放在主函数内的时间转换程序转 到中断时一旦收到 UTC 时间就立马对该数据进行转换。经过试验,可在液晶显示模 块上显示出正确的北京时间。
5.2 系统测试结果
2014年 4月 20日晚上 7点 02分左右于南京理工大学泰州科技学院第二食堂桥边 进行测试,接收天线在户外,周围无高大建筑物,接入 +9V电源后,启动 GPS 定位 系统,液晶显示如下图 5.1。
图 5.1 GPS 接收模块测得经纬度数据
上图中的数据 N32.27.80表示当前位置的纬度为 32度 27.80分, E119.56.80表示 当前位置的经度为 119度 56.80分。
图 5.2 GPS 接收模块测得时间速度数据
上图中的数据表示了当前的时间为 2014年 4月 20日 19点 02分 14秒,由于是 静止测量所以速度为 0。
结束语
时光飞转,转眼四个月的毕业设计课程即将结束,在这四个月中我所设计的课题 名称为基于 51单片机的 GPS 定位系统设计,在进行这一设计工作之前,我们必须要 先了解 GPS 定位系统的原理以及 GPS 接收模块的工作流程;同时还要了解除接收模 块以外,其它的外接电路的作用。这个过程需要积极的去图书馆以及网络翻阅资料并 请教指导老师。
目前, GPS 的使用越来越广泛,此类产品已开始进入千家万户,我所设计的 GPS 定位系统只是此类产品中最为基础的, 如果要在实际生活中运用这些系统还需进一步 的进行开发与改进,针对特殊的情况对产品进行处理与设计。
在此次设计我主要是完成基于 51单片机的 GPS 系统设计,在这过程中要解决系 统的软件设计与硬件的焊接,在焊接的过程中许多管脚比较密集,焊接时要注意不要 连焊或漏焊导致的短路与断路, 软件设计则要注意时间转换程序与液晶显示程序的设 计,可能会导致时间显示的错误。
经过此次毕业设计,我了解了 GPS 的原理并熟练掌握了 GPS 接收模块的使用原 理。 GPS 能够为我们提供经纬度、海拔、速度、时间、行驶路线、卫星个数及其编号 等信息。在此次设计中只提取了个别的功能来进行实现。同时也加深了我对单片机应 用的理解,增长了关于单片机硬件与软件设计的经验与能力,对我以后的工作需要提 供了很大的帮助。
在此次的设计中由于对此类知识了解有限,所以在设计方面有许多的不足,可能 导致定位所得的数据出现些许误差,还有待进一步的提高。
致 谢
感谢我的导师朱红副教授,她严谨细致、一丝不苟的作风一直是我工作、学习中 的榜样;她循循善诱的教导和不拘一格的思路给予我无尽的启迪。
感谢我的孔老师, 这篇论文的每个实验细节和每个数据, 都离不开你的细心指导。 而你开朗的个性和宽容的态度,帮助我能够很快的融入我们这个新的实验团队。 感谢我的室友们,从遥远的家来到这个陌生的城市里,是你们和我共同维系着彼 此之间兄弟般的感情,维系着寝室那份家的融洽。两年了,仿佛就在昨天。两年里, 我们没有红过脸,没有吵过嘴,没有发生上大学前所担心的任何不开心的事情。而不 久以后,大家就要各奔前程,请珍重。也愿离开我们寝室的开开心心,我们一起度过 的日子,我会记一辈子的。
感谢我的爸爸妈妈,焉得谖草,言树之背,养育之恩,无以回报,你们永远健康 快乐是我最大的心愿。
在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成, 有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意。
参 考 文 献
[1] 何立民 . 单片机应用技术选编 [M]. 北京:北京航空航天大学出版社, 2000. [2] 沈德金,陈粤初 . 单片机接口电路与应用程序设计 [M]. 北京:北京航空航 天大学出版社, 1990.
[3] 楼然苗 . 51系列单片机设计实例 [M]. 北京:北京航空航天大学出版社, 2003.
[4] 刘玉宾,朱焕立 . 单片机与接口技术 [M]. 北京:机械工业出版社, 2004. [5] 马忠梅,等 . 单片机的 C 语言应用程序设计 [M]. 北京:北京航空航天大学 出版社, 2003.
[6] 张毅刚,等 . MCS-51单片机应用设计 [M]. 哈尔滨:哈尔滨工业大学出版社, 2004.
[7] 梅丽凤,王艳秋,张军,等 . 单片机原理及接口技术 [M]. 北京:清华大学 出版社, 2004.
[8] 石建华 . 单片机原理与应用技术 [M]. 北京:北京邮电大学出版社, 2008. [9] 李远,胡修林 . 基于 GPS-OEM 板和单片机的定位终端开发 [J]. 湖北:湖北 邮电技术, 2004, 06:29~32.
[10] 龚运新 . 单片机接口 C 语言开发技术 [M]. 北京:清华大学出版社, 2001. [11] 王建校,杨建国,宁改娣,等 . 51系列单片机及 C51程序设计 [M]. 北京:科学出版社, 2002.
[12] 林志琦,等 . 基于 PROTEUS 的单片机可视化软硬件仿真 [M]. 北京:北京航 空航天大学出版社, 2006.
[13] 李泉溪 . 单片机原理与应用实例仿真 [M]. 北京:北京航空航天大学出版 社, 2009.
[14] 夏继强, 等 . 单片机实验与实践程序 [M]. 北京:北京航空航天大学出版社, 2006.
[15] 肖远亮 . NMEA-0183数据标准在 GPS 技术中的应用 [J]. 河北:物探装备, 2003, 02:127~133.
附录 A 系统整体电路图
附录 B 程序清单
LCD12864程序
#include
//宏定义 ---------------------------------------------------------------------
#define Busy 0x80 //用于检测 LCD 状态字中的 Busy 标识
//函数声明 -------------------------------------------------------------------
void WriteDataLCD(unsigned char WDLCD);
void WriteCommandLCD(unsigned char WCLCD,unsigned char BuysC);
unsigned char ReadDataLCD(void);
unsigned char ReadStatusLCD(void);
void LCDInit(void);
void LCDClear(void);
void LCDFlash(void);
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char *DData);
void Delay5Ms(void);
void Delay400Ms(void);
void delayLCD(unsigned char time);
/***********************************
函数功能:向 LCD12864写数据
参数:数据
返回值:无
************************************/
void WriteDataLCD(unsigned char WDLCD)
{
delayLCD(20);//ReadStatusLCD(); //检测忙
LCD_RS = 1;
LCD_RW = 0;
LCD_Data = WDLCD;
LCD_E = 1;
LCD_E = 1;
LCD_E = 1;
LCD_E = 0;
}
/************************************
函数功能:向 LCD12864写指令
参数:LCD12864的指令、 BuysC
返回值:无
************************************/
void WriteCommandLCD(unsigned char WCLCD,unsigned char BuysC) //BuysC为 0时忽 略忙检测
{
delayLCD(20);//if (BuysC) ReadStatusLCD(); //根据需要检测忙
LCD_RS = 0;
LCD_RW = 0;
LCD_Data = WCLCD;
LCD_E = 1;
LCD_E = 1;
LCD_E = 1;
LCD_E = 0;
}
/*************************************
函数功能:读 LCD12864的数据
参数:无
返回值:无
*************************************/
unsigned char ReadDataLCD(void)
{
LCD_RS = 1;
LCD_RW = 1;
LCD_E = 0;
LCD_E = 0;
LCD_E = 1;
return(LCD_Data);
}
/**************************************
函数功能:读 LCD12864的状态
参数:无
返回值:LCD12864的状态
**************************************/
unsigned char ReadStatusLCD(void)
{
LCD_Data = 0xFF;
LCD_RS = 0;
LCD_RW = 1;
LCD_E = 1;
delayLCD(20);//while (LCD_Data & Busy); //检测忙信号 LCD_E = 0;
return(LCD_Data);
}
/***************************************
函数功能: LCD12864初始化
参数:无
返回值:无
本科毕业设计说明书 (论文) 第 30 页 共 37 页 ****************************************/
void LCDInit(void)
{
Delay400Ms(); //启动等待,等 LCD 讲入工作状态 WriteCommandLCD(0x30,1); //显示模式设置 , 开始要求每次检测忙信号 WriteCommandLCD(0x01,1); //显示清屏
WriteCommandLCD(0x06,1); // 显示光标移动设置
WriteCommandLCD(0x0C,1); // 显示开及光标设置
}
/***************************************
函数功能:清屏
参数:无
返回值:无
****************************************/
void LCDClear(void)
{
WriteCommandLCD(0x01,1); //显示清屏
WriteCommandLCD(0x34,1); // 显示光标移动设置
WriteCommandLCD(0x30,1); // 显示开及光标设置
}
/***************************************
函数功能:闪烁效果
参数:无
返回值:无
****************************************/
void LCDFlash(void)
{
WriteCommandLCD(0x08,1); //显示清屏
Delay400Ms();
WriteCommandLCD(0x0c,1); // 显示开及光标设置
Delay400Ms();
WriteCommandLCD(0x08,1); //显示清屏
Delay400Ms();
WriteCommandLCD(0x0c,1); // 显示开及光标设置
Delay400Ms();
WriteCommandLCD(0x08,1); //显示清屏
Delay400Ms();
}
/**************************************
函数功能:按指定位置显示一个字符
参数:坐标、显示字符
返回值:无
本科毕业设计说明书 (论文) 第 31 页 共 37 页 ***************************************/
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
if(Y<>
Y=1;
if(Y>4)
Y=4;
X &= 0x0F; //限制 X 不能大于 16, Y 不能大于 1
switch(Y){
case 1:X|=0X80;break;
case 2:X|=0X90;break;
case 3:X|=0X88;break;
case 4:X|=0X98;break;
}
WriteCommandLCD(X, 0); //这里不检测忙信号,发送地址码 WriteDataLCD(DData);
}
/****************************************
函数功能:按指定位置显示一串字符
参数:坐标、显示的字符串
返回值:无
****************************************/
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char *DData)
{
unsigned char ListLength,X2;
ListLength = 0;
X2=X;
if(Y<>
Y=1;
if(Y>4)
Y=4;
X &= 0x0F; //限制 X 不能大于 16, Y 在 1-4之内
switch(Y){
case 1:X2|=0X80;break; //根据行数来选择相应地址
case 2:X2|=0X90;break;
case 3:X2|=0X88;break;
case 4:X2|=0X98;break;
}
WriteCommandLCD(X2, 1); //发送地址码
while (DData[ListLength]>=0x20) //若到达字串尾则退出
{
if (X <= 0x0f)="" x坐标应小于="">=>
{
WriteDataLCD(DData[ListLength]);
本科毕业设计说明书 (论文) 第 32 页 共 37 页 ListLength++;
X++;
Delay5Ms();
}
}
}
/*******************************
函数功能:延时 5ms
参数:无
返回值:无
*******************************/
void Delay5Ms(void)
{
unsigned int TempCyc = 1000;//5552;
while(TempCyc--);
}
/********************************
函数功能:延时 400ms
参数:无
返回值:无
********************************/
void Delay400Ms(void)
{
unsigned char TempCycA = 5;
unsigned int TempCycB;
while(TempCycA--)
{
TempCycB=7269;
while(TempCycB--);
}
}
/********************************
函数功能:短暂延时
参数:无
返回值:无
备注:该延时函数用于代替检测盲信号,必须大于一定的时间
********************************/
void delayLCD(unsigned char time)
{
unsigned char x,y;
for(x=time;x>0;x--)
for(y=50;y>0;y--);
串口程序
#include #include unsigned char i=0; xdata unsigned char RX_data[57]={0};//串口接收的数据 unsigned char rx_flag=0; //串口初始化函数 -------------------------- void init_USART(void) { SCON|=0x40; //选择串口工作方式 TMOD|=0x20; //设置 T1工作模式 , 即波特率 TH1=253; //波特率设为 9600 TL1=253; TR1=1; //开启 T1计数 IE|=0x10;//开启串口中断 EA=1;//开启总中断 SCON|=0x10;//允许串行接收 } //串口发送一字节数据 ---------------------- void send_char(unsigned char date) { SBUF=date; //将发送的数据送给发送寄存器 while(TI==0); //等待发送完成 TI=0; //清零发送完毕标志位 } //串口接收终断服务程序 -------------------- void USART_INT() interrupt 4 { if(SBUF!=',') RX_data[i++]=SBUF; if(RX_data[0]=='$') { if(i>=6) { if(RX_data[1]=='G'&&RX_data[2]=='P'&&RX_data[3]=='R'&&RX_data[4]=='M'&& RX_data[5]=='C') { if(SBUF=='$') { rx_flag=1; i=0; //SCON&=~0x10;//不允许串行接收 } } else i=0; } } else i=0; RI=0; TI=0; GPS 协议解析 #include #include /******************************** **$GPRMC字段解析 */ unsigned char GPRMC_Date[12]={' ','2','0',0,0,'.',0,0,'.',0,0,0};//年月日 unsigned char GPRMC_Time[9]={0,0,':',0,0,':',0,0,0};//时分秒 unsigned char GPRMC_Latitude[10]={0,0,0,':',0,0,':',0,0,0};//度分秒纬度 unsigned char GPRMC_longitude[11]={0,0,0,0,':',0,0,':',0,0,0};//度分秒经度 unsigned char GPRMC_speed[8]={0,0,0,' ','m','/','s',0};//速度 :m/s unsigned char GPS_GPRMC(void) { unsigned char h=0; unsigned int temp=0; //时间解码 h=((RX_data[6]-48)*10+RX_data[7]-48)+8; GPRMC_Time[0]=h/10+48; GPRMC_Time[1]=h%10+48; GPRMC_Time[3]=RX_data[8]; GPRMC_Time[4]=RX_data[9]; GPRMC_Time[6]=RX_data[10]; GPRMC_Time[7]=RX_data[11]; //纬度解码 GPRMC_Latitude[0]=RX_data[26];//南北半球 GPRMC_Latitude[1]=RX_data[17]; GPRMC_Latitude[2]=RX_data[18]; GPRMC_Latitude[4]=RX_data[19]; GPRMC_Latitude[5]=RX_data[20]; temp=((RX_data[22]-48)*100+(RX_data[23]-48)*10+RX_data[24]-48)*60; GPRMC_Latitude[7]=temp%100/10+48; GPRMC_Latitude[8]=temp%10+48; //经度解码 GPRMC_longitude[0]=RX_data[37];//东西半球 GPRMC_longitude[1]=RX_data[27]; GPRMC_longitude[2]=RX_data[28]; GPRMC_longitude[3]=RX_data[29]; GPRMC_longitude[5]=RX_data[30]; GPRMC_longitude[6]=RX_data[31]; temp=((RX_data[33]-48)*100+(RX_data[34]-48)*10+RX_data[35]-48)*60; GPRMC_longitude[8]=temp%100/10+48; GPRMC_longitude[9]=temp%10+48; //速度解码 temp=(((RX_data[38]-48)*100+(RX_data[40]-48)*10+RX_data[41]-48)*18.5)/3600; GPRMC_speed[0]=temp%1000/100+48; GPRMC_speed[1]=temp%100/10+48; GPRMC_speed[2]=temp%10+48; //日期解码 GPRMC_Date[3]=RX_data[50];//年 GPRMC_Date[4]=RX_data[51];//年 GPRMC_Date[6]=RX_data[48];//月 GPRMC_Date[7]=RX_data[49];//月 GPRMC_Date[9]=RX_data[46];//日 GPRMC_Date[10]=RX_data[47];//日 if(RX_data[16]=='A') return 1; else if(RX_data[16]=='V') return 0; else return 0; } 显示端程序 #include #include #include #include #include unsigned char state; #define S0 1 #define S1 2 #define S2 3 #define S3 4 void delay(unsigned int time) { unsigned int x,y; for(x=time;x>0;x--) for(y=100;y>0;y--); } unsigned char Key(void) { if(!(P3&0x10)) { delay(10); if(!(P3&0x10)) while(!(P3&0x10)); return 1; } else return 0; } else return 0; } void main(void) { LCDInit(); init_USART(); state=S0; while(1) { switch(state) { case S0: LCDClear(); DisplayListChar(1,1, state=S1; break; case S1: if(RX_data[0]=='$') { state=S2; LCDClear(); DisplayListChar(1,1, if(RX_data[16]=='A') DisplayListChar(0,4, }else { DisplayListChar(0,3, } break; case S2: if(rx_flag==1) { rx_flag=0; if(GPS_GPRMC()==1) DisplayListChar(0,4, DisplayListChar(0,2, DisplayListChar(0,3, DisplayListChar(3,3,GPRMC_longitude); } if(Key()==1) { LCDClear(); DisplayListChar(1,1, DisplayListChar(0,4, state=S3; } break; case S3: if(rx_flag==1) { rx_flag=0; GPS_GPRMC(); DisplayListChar(1,2,GPRMC_Date); DisplayListChar(3,3,GPRMC_Time); DisplayListChar(3,4,GPRMC_speed); } if(Key()==1) { LCDClear(); DisplayListChar(1,1, } break; default: break; } } } 基于 RFID 的定位系统的设计与实现 一、课题背景及意义 随着无线技术、 移动计算器件的快速发展, 人们对位置信息和定位服务有了 越来越多的需求。 很多应用对定位信息要求更加细致准确。 室外定位渐渐不能满 足应用的需求,室内定位技术在近年来受到研究人员的关注。 RFID 又称射频识别技术,是一种非接触式的自动识别技术。 RFID 标签具有 体积小、读写范围广、寿命长、抗干扰能力强等特点,可支持快速读写、移动识 别、多目标识别、唯一表示等。与 GPS 等成熟的定位技术相比, RFID 更适合应 用于室内定位。 有源 RFID 标签相比无源标签有更远的识别距离和更大的存储容量,与互联 网、 通讯技术相结合, 可实现全球范围内物品的跟踪和信息共享, 极大的扩展了 射频技术的应用领域。基于有源 RFID 的室内定位系统地研究有着重要意义。 首先 RFID 技术的相关研究为定位应用做好了铺垫。 目前 RFID 的研究已经取 得了很多成果。成本上,国内和国外一些工艺已经使得有源 RFID 标签的价格降 低到几十美分,甚至十几美分 ; 标准上,很多国家已经制定了自己的 RFID 标准, 其中由北美 UCC 产品统一编码组织和欧洲 EAN 产品标准组织联合成立的 EPCGlobal 标准是市场占有量最大的一个。 标准的制定在电子标签与读写器之间 的空气接口、读写器与计算机之间的数据交换协议、 RFID 标签与读写器的性能 等方面做了统一规范, 为减化电子标签芯片功能设计, 降低电子标签成本, 扩大 RFID 应用领域奠定了基础。另外 RFID 安全与隐私降、防碰撞、天线技术队等方 面也有了很多研究成果。 其次有源 RFID 定位有着广泛的应用需求。在实际中依靠目标检测实现的应 用很多,比如 RFID 定位应用于制造、物流等行业,能够实现对仓库存货的位置 检测和对生产流的监控,从而极大的提高生产和管理效率 ; 应用于煤矿等企业的 人员定位能极大地提高安全管理力度 ; 应用于医院能实时定位设备,能更好的协 调设备和人员分配。 因此基于有源 RFID 的定位系统是一个很有研究价值的领域。 二、射频识别技术 2.1 RFID工作原理 标签与读写器之间通过藕合元件 (天线,线圈等 ) 实现射频信号的空间 (无接 触 ) 祸合,在藕合通道内,根据时序关系,实现能量的传递、数据交换等。对于 无源 RFID 系统来说,标签通常需要贴近读卡器。读卡器通过天线发射一定频率 的射频信号, 这些电磁波激活标签电路, 标签的能量检测电路将一部分射频信号 转换成直流信号能量供其工作, 标签获得能量被激活后, 将自身的序列号等信息 调制到射频信号上后通过标签天线发送出去, 读写器接收到标签返回的射频信号 后, 对该信号进行解调和解码, 然后送到后台计算机进行进一步处理, 后台计算 机会根据系统功能做出相应的处理和控制。 由于读写器的能量必须来回穿过障碍 物两次,因此要求读写器有较大的发射功率。 对于有源系统来讲,由标签自身内嵌的电池为芯片供电,利用自身的射频 能量主动发送数据给读写器,调制方式可以为调幅、调频或调相。标签进入读 写器的作用区域后, 标签将自身的序列号等信息的发送给读写器。 读写器的处理 方式同对无源标签基本一致。 此外读写器上还可以附加通信网络模块 (CAN总线, 工业以太网, RS485等 ) , 将读出的标签信息通过通信网络模块传输给后台计算机, 以实现对识别信息的采 集、 处理及远程传送等数据管理功能。 后台计算机也可以通过通信网络将各个读 写器连接起来,构成总控制信息平台,根据不同的需求实现不同的应用功能。 三、系统设计 3.1 定位系统架构 基于 RFID 的定位系统的架构如图 1: 图 1 基于有源 RFID 的定位系统的架构 定位系统由后台 PC 计算机、参考节点和未知节点组成,后台计算机与参考 节点之间通过串口连接,参考节点和未知节点之间以 ZigBee 的方式通信。 此架构下, 未知节点得到作用范围内的参考节点的信号强度后, 可以通过串 口汇报给后台计算机 ; 后台计算机执行定位算法,并实时显示出未知节点位置。 3.2 节点的设计 3.2.1 CC2530芯片介绍 CC2530是 Chipcon 公司(现被 TI 收购)推出的针对 IEEE 802.15.4/ZigBee应用的片上系统,其内部集成了工作在 2.4 GHz的射频收发器,拥有低功耗的 8051 MCU 内核、 32/64/128/256 KB 四个不同大小可编程 Flash ROM 和 8 KB RAM , 还有 A/D转换器、定时器等。另外, CC2530片上系统由 CC2430加上 Motorola 公司基于 IEEE 802.15.4标准的无线定位引擎组成。 其定位引擎支持 3~l6个参 考节点的定位运算,最高精度可达 0.5 m ;定位时间少于 40μs ,定位区域为 64 m ×64 m,定位误差为 3~5 m,与一般软件定位相比,具有定位速度快、定位准 确度高、消耗 CPU 资源少的特点。 3.2.2 节点的构成成及实现 参考节点与未知节点均采用 CC2530 ZigBee 模块作为主控模块。每个参考节 点有自己固定的 ID 号和位置坐标, 并不断的向外界发送 ID 号和位置坐标。 当未 知节点进入某个参考节点的射频范围内时,就可以接收到该参考节点的信息和 RSSI 值,当接收次数达到某个阈值时就取平均值并将该值以及参考节点的信息 通过串口发给后台 PC 端,由 PC 端进行定位算法的处理。 图 2 ZigBee 定位网络控制界面 由若干参考节点和未知节点构成的 ZigBee 网络图如图 2所示。如图 2中周 边的 4个圆圈代表参考节点,地址分别为 0x143E 、 0x0001、 0x3CB8、 0x287B 。 这 4个节点坐标已知,中间的圆圈(地址 0x0002)为未知节点。未知节点可以 根据接收信号强度, 选取其中 3个信号强度比较强的参考节点, 采用三边测量法 估算出未知节点的坐标位置。如图 2所示,未知节点实时显示的坐标为 (6.25 m,5.75 m)。 图 3 位定位算法的流程图,包括后台计算端的定位计算处理。 图 3 CC2530定位引擎的定位流程 3.4 定位计算机端设计 3.3.1 RSSI 测距的实现原理 基于 RSSI 的测距技术是利用无线电信号随距离增大而有规律地衰减的原理 来测量节点间的距离的。接收信号强度 RSSI 与传输距离 d 的关系如下所示: RSSI=-(10×n ×lgd+A) (1)式中, n 表示信号传播常数,也叫传播系数; d 表示 与发送者的距离; A 表示距发送者 1m 时的信号强度。 测距精度的高低受到 n 与 A 实际取值大小的影响较大。 A 是一个经验参数,可以通过测量距离发送者 1 m 处 的 RSSI 值得到。 n 是用来描述信号强度随距离增加而递减的参量 ,n 的大小依赖 具体的环境。 为了得到最优的 n 值, 可以先放置好所有的参考节点, 然后尝试用 不同的 n_index值找到最适合这个具体环境的 n 值。 3.3.2RSSI 测距定位算法实现流程 图 4 RSSI测距定位算法实现流程图 3.3.3 最小二乘法修正距离 从式 (1)可以看出, 如果知道参考节点与未知节点之间的 RSSI 值, 则可以估 算出两个节点之间的距离。 然而不同的环境下可能存在不同的信号干扰, 采用节 点之间的 RSSI 值估算距离必然存在一定的误差。这时可以根据特定的环境对测 量到的距离采用传统的最小二乘法进行修正 [7]。得到修正后的距离,从而可以 更加精确地估算出未知节点的坐标。具体步骤如下: ① 根据实际情况布置好节点,参考节点 (Mi,Ni)与未知节点 (Mj,Nj)的位置坐标 均已知。可以根据 xi=(Mi-Mj)2+(Ni-Nj)2得到实际节点之间的距离。 ② 根据式(1)估算出未知节点与各个参考节点之间的距离 yi 。 ③ 采用最小二乘法拟合实际距离 xi 与估计距离 yi 的关系。假设两者之间的关 系 为 yi=axi+b,为 了 使 所 有 数 据 偏 差 的 平 方 和 很 小 , 假 设 R2=∑ mi=1(yi-axi-b)2。可以把 R2看作自变量 a 和 b 的二元函数,要使得 R2最小, 分别对自变量求导,令其等于零。 根据得到的 a 与 b 的值可以拟合出修正距离与估计距离的关系 Y 修 =a×X 估 +b, 结合式 (1)可以得到: ④ 布置未知节点,通过式(1)估计未知节点与参考节点之间的距离 x ,通过第 3步拟合好的修正距离与估计距离之间的关系修正估计距离,得到修正的距离 Y 修。 3.3.4 未知节点坐标估计 选择 3个接收信号强度最强的参考节点, 采用三边测量法估计出未知节点坐 标值 [8]。 假设 3个参考节点 A 、 B 、 C 的坐标分别为 (ma,na)、 (mb,nb)、 (mc,nc), 未知节点 E 的坐标 (m,n)未知。通过 2.3节 4个步骤得到未知节点与 3个参考节 点的修正距离分别为 da 、 db 、 dc 。则根据两点之间的距离公式可以得到式 (5): 展开并化简,可得到未知节点 E 的坐标 (m,n),如式 (6)所示: 3.4 定位计算机端的实现 四、结束语 [gps卫星定位系统]北斗卫星定位系统与 GPS定位系统的区别 北斗卫星定位系统与GPS定位系统的区别 1、覆盖范围:北斗定位系统是覆盖中国本土的区域导航系统。覆盖范围东经约70?一140?,北纬5?一55?。GPS是覆盖全球的全天候定位系统。能够确保地球上任何地点、任何时间能同时观测到6-9颗卫星(实际上最多能观测到11颗)。 2、卫星数量和轨道特性:北斗定位系统是在地球赤道平面上设置2颗地球同步卫星颗卫星的赤道角距约60?。GPS是在6个轨道平面上设置24颗卫星,轨道赤道倾角55?,轨道面赤道角距60?。航卫星为准同步轨道,绕地球一周11小时58分。 3、定位原理:北斗定位系统是主动式双向测距二维导航。地面中心控制系统解算,供用户三维定位数据。GPS定位系统是被动式伪码单向测距三维导航。由用户设备独立解算自己三维定位数据。“北斗”的这种工作原理带来两个方面的问题,一是用户定位的同时失去了无线电隐蔽性,这在军事上相当不利,另一方面由于设备必须包含发射机,因此在体积、重量上、价格和功耗方面处于不利的地位。 4、定位精度:北斗定位系统三维定位精度约几十米,授时精度约100ns。GPS三维定位精度P码目前己由16m提高到6m,C/A码目前己由25-100m提高到12m,授时精度日前约20ns。 5、用户容量:北斗定位系统由于是主动双向测距的询问--应答系统,用户设备与地球同步卫星之间不仅要接收地面中心控制系统的询问信号,还要求用户设备向同步卫星发射应答信号,这样,系统的用户容量取决于用户允许的信道阻塞率、询问信号速率和用户的响应频率。因此,北斗定位系统的用户设备容量是有限的。GPS 是单向测距系统,用户设备只要接收导航卫星发出的导航电文即可进行测距定位,因此GPS定位的用户设备容量是无限的。 6、生存能力:和所有定位卫星系统一样,“北斗”基于中心控制系统和卫星的工作,但是“北斗”对中心控制系统的依赖性明显要大很多,因为定位解算在那里而不是由用户设备完成的。为了弥补这种系统易损性,GPS正在发展星际横向数据链技术,使万一主控站被毁后GPS卫星可以独立运行。而“北斗” 系统从原理上排除了这种可能性,一旦中心控制系统受损,系统就不能继续工作了。 7、实时性:“北斗”用户的定位申请要送回中心控制系统,中心控制系统解算出用户的三维位置数据之后再发回用户,其间要经过地球静止卫星走一个来回,再加上卫星转发,中心控制系统的处理,时间延迟就更长了,因此对于高速运动体,就加大了定位的误差 转载请注明出处范文大全网 » 共享单车的定位系统关于单片机范文四:基于RFID的定位系统
范文五:[gps卫星定位系统]北斗卫星定位系统与GPS定位系统的区别