单片机控制的GPS定位系统设计毕业设计.docx
- 文档编号:4121275
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:33
- 大小:1.29MB
单片机控制的GPS定位系统设计毕业设计.docx
《单片机控制的GPS定位系统设计毕业设计.docx》由会员分享,可在线阅读,更多相关《单片机控制的GPS定位系统设计毕业设计.docx(33页珍藏版)》请在冰豆网上搜索。
单片机控制的GPS定位系统设计毕业设计
单片机控制的GPS定位系统设计——毕业设计
XXXXXX本科毕业设计(论文)
单片机控制的GPS定位系统设计
TheDesignofGPSPositioningSystemControlLCDBySingle-ChipMicroprocessor
学院(系):
计算机科学与技术系
专业:
通信工程
学生姓名:
XXX
学号:
xxxxxx
指导教师(职称):
XXX(教授)
评阅教师:
完成日期:
2011年3月
XXXXXX
XXXXXX(英文)
单片机控制的GPS定位系统设计
通信工程专业XXX
[摘 要]GPS技术在军事、通讯、气象、勘探、导航、遥感、大地测量、地球动力以及天文等众多学科领域得到极其广泛的应用,推动了科学技术的迅猛发展,也丰富了人类的科学文化生活。
现在,GPS的外型设计已经转向便携式发展,逐步踏入寻常百姓的生活中。
所以,对GPS的研究具有十分重要的意义。
论文主要研究GPS的定位原理与技术,单片机的编程及其应用,液晶屏的功能及其实现方法。
制作了一套设计方案,以软、硬件相结合的方式完成整个GPS数据接收和显示的过程。
完成了一台液晶显示的手持式GPS定位接收设备,并依次显示实时时间及所在地的经纬度。
该定位系统完成后,定位精度能达到15m,所以该装置在测控领域的应用开发中具有一定的实用价值和借鉴价值。
[关键词]AT89C52单片机;GPS;串口通信;LCD显示
TheDesignofGPSPositioningSystemControlLCDBySingle-ChipMicroprocessor
CommunicationEngineeringMajorLIJun-Jian
Abstract:
GlobalPositioningSystemtechnologygetextremelycomprehensiveapplicationatmilitary,communications,meterology,exploration,navigation,remotesensing,earthsurvey,earthmover,astronomyandothernumeroussubjectfield;lettechnologyrapidedevelopment,alsoitmakeshumanscienceculturelifeplentiful。
Now,AssistantGlobalPositioningSystemexteriordesignalreadychangeofdirectiontoportabletype,stepbystepentercommanpeople’sdailylife。
Therefore,researchingAssistantGlobalPositioningSystemhasveryimportantmeaning。
PapermainresearchGPSpositiontheoryandtechnique,programandapplicationofsinglechip,thefunctionandimplementway。
Makeasetofdesignproposal,withsofttolinkhardwareaccomplishwholeGPSinformationacceptanceandevinciveprocess。
AccomplishonehandheldGPSpositionreceivingmachinewithLiquidcrystaldisplay,anddisplayrealtimeperiodandthelocationoflatitudeandlongitudeonebyone。
Withthepositionsystemcomplete,thepositionprecisioncanreachfifteenmeters,sothesysteminmeasurementandcontrolfieldapplicationdevelopmenthavesomepracticalworthandreferenceworth。
Keywords:
AT89C52SCM;GPS;SerialPortCommunication;LCDdisplay
1.2.2数据采集方案2
1前言
1.1GPS前景
由于GPS技术所具有的全天候、高精度和自动测量的特点,作为先进的测量手段和新的生产力,已经融入了国民经济建设、国防建设和社会发展的各个应用领域。
随着冷战结束和全球经济的蓬勃发展,美国政府宣布2000年至2006年期间,在保证美国国家安全不受威胁的前提下,取消SA政策,GPS民用信号精度在全球范围内得到改善,利用C/A码进行单点定位的精度由100米提高到20米,这将进一步推动GPS技术的应用,提高生产力、作业效率、科学水平以及人们的生活质量,刺激GPS市场的增长。
据有关专家预测,在美国,单单是汽车GPS导航系统,2000年后的市场将达到30亿美元,而在我国,汽车导航的市场也将达到50亿元人民币。
可见,GPS技术市场的应用前景非常可观。
1.2GPS概述
广义的GPS,包括美国GPS、欧洲伽利略、俄罗斯GLONASS、中国北斗等全球卫星定位系统,也称GNSS。
狭义的GPS,即指美国的全球定位系统 GlobalPositioningSystem,简称GPS。
公众常称的GPS,通常是指GPS系统的接收设备,如手持式GPS、汽车导航仪等。
即全球定位系统(GlobalPositioningSystem)。
简单地说,这是一个由覆盖全球的24颗卫星组成的卫星系统。
这个系统可以保证在任意时刻,地球上任意一点都可以同时观测到4颗卫星,以保证卫星可以采集到该观测点的经纬度和高度,以便实现导航、定位、授时等功能。
这项技术可以用来引导飞机、船舶、车辆以及个人,安全、准确地沿着选定的路线,准时到达目的地。
全球定位系统(GPS)是20世纪70年代由美国陆海空三军联合研制的新一代空间卫星导航定位系统。
其主要目的是为陆、海、空三大领域提供实时、全天候和全球性的导航服务,并用于情报收集、核爆监测和应急通讯等一些军事目的,是美国独霸全球战略的重要组成。
经过20余年的研究实验,耗资300亿美元,到1994年3月,全球覆盖率高达98%的24颗GPS卫星星座己布设完成。
GPS全球卫星定位系统由三部分组成:
空间部分———GPS星座;地面控制部分———地面监控系统;用户设备部分———GPS信号接收机。
GPS定位技术具有高精度、高效率和低成本的优点,使其在各类大地测量控制网的加强改造和建立以及在公路工程测量和大型构造物的变形测量中得到了较为广泛的应用。
本设计是一个LCD1602电子液晶显示屏显示动画的设计。
整机以ATMEL公司生产的40脚单片机AT89C52为核心,介绍了以它为控制系统的LCD电子液晶显示屏的动态设计和开发过程。
该电子显示屏内部自带了ASCII码识别显示控制电路部分,如果需要显示一个西文字符,只需要让单片机给他输入这个西文字符的ASCII码即可。
文中详细介绍了LCD显示的硬件设计思路、硬件电路各个部分的功能及原理、相应软件的程序设计。
1.2.1控制任务
本设计采用AT89C52单片机为核心控制芯片,控制任务包括两个部分:
数据接受控制和显示控制。
:
数据接收控制:
51单片机内部集成了串行口通信电路,本设计应用这个电路接收外部数据,其数据格式为八位数据+1位停止位。
把接收到的数据存储到数据缓冲区。
:
显示控制:
利用51单片机的I/O端口控制LCD1602液晶显示器显示相应信息;显示之前先从缓冲区取出数据,经过CPU处理过后,送到LCD1620显示需要信息。
1.2.2数据采集方案
为了减少接收出错的问题,采集数据时使用串行口中断数据接收方式。
方案
:
直接接收,不论接收到的数据是什么,先把串行口发送过来的数据接收到数据缓冲区过后,再对数据进行处理。
GPS模块为一种智能模块,它每秒钟会发出几种数据,包括:
$GPGGA、$GPRMC、$PGRMV、$PGRMO、$PGRMC等数据格式。
每个数据为15~36个字节数据,如果把每个数据都接收到单片机的缓冲区,那么单片机就需要很大的数据存储器RAM,这样单片机内部的RAM是不够用的,更何况还有程序处理。
所以这种数据采集的方案是不行的。
方案
:
选择接收,先判断接收到的数据的格式,然后选择需要的格式中的一些数据进行存储。
这样就大大的节余了RAM,解决RAM不够用的问题。
例如:
接收$GPGGA格式数据的时间:
前五次数据接收的时候先判断数句格式(依次判断接收到的数据是否先后为’$’、’G’、’P’、’G’、’G’、’A’),如果是,然后判断接下来的逗号(’,’)是第几个逗号。
如果是第一个,说明接下来的数据是时间,如果是第二个,说明接下来的数据是纬度,依此类推。
本设计采用这种方案接收数据。
方案比较:
前者数据接收的方案虽然接收的方法简单,接收程序编写很容易,但是学要很大的RAM空间,设计时需要外加存储器,程序编写时就得多写上数据存储处理程序。
这样就大大的增加了开发的诸多问题,包括成本,开发时间,试调难度等。
后者数据接收方案比起前者来说节约了不少的RAM,而且再数据接收前只需要先简单判断接收到的数据格式即可;而且减少了中断处理的时间,让给其它进程工作。
减少了开发的成本和开发时间,以及电路的复杂程度。
所以本设计采用第二种数据接收的方案。
2硬件设计
系统硬件部分电路大致上可以分成稳压电源、单片机小系统及外围电路和LCD显示屏电路三部分。
电路为单片机89C52控制的GPS器件,实现定位系统数据的采集和现实。
其中所使用的器件主要是3个,打片机89C52、GPS模块GARMINGPS25以及LCD显示模块MGLS-12032A。
在这里仅列出单片机和LCD接口部分电路的器件名称和相关的主要功能。
●89C52:
LCD的控制器,控制字符的发送和点阵显示的时序。
●MAX202:
TTL电平和RS-232电平的转换芯片。
●LCD:
液晶显示模块。
在单片机的控制下,按照要求的格式显示接受到的数据。
2.1整版设计
设计原理图:
电源
以单片机为核心将GPS数据发送模块,LCD1602显示模块系统的结合在一起形成一个整体,实现特定功能。
2.2电源模块设计
各个模块的电源供电电压均为5V,所以只需要设计5V单电源供电即可。
设计采用稳压芯片LM7805做电源稳压核心。
电路图如下所示,输入电压为220v交流电,经过变压器降压为9V交流电,再运用二极管的单向导电性对9V交流电整流,使用二级管连接成整流槽,使电压负电压整流成正电压。
电容C1为滤波电容,让电压波纹幅度减小,然后由LM7805集成稳压芯片将输入电压整流为5V稳压源。
小电容C3,、C4为高频信号滤除电容,改善负载的瞬态响应。
图2-1电源模块电路图
2.3显示模块设计
由与本设计显示需要显示相应的数据信息,包括相应的西文字符,所以不采用数码管显示,采用带西文字库的LCD1602做显示器,显示电路如下
图2-2液晶显示电路图
电路中的可变电阻RV2最大阻值为1K,其作用为调节VEE输入引脚的电压,实现对LCD1602对比度的调节。
LCD的数据端口的工作方式有两种,一种为8数据线工作方式,另一种为4数据线工作方式。
为了节余端口,本设计采用4数据线工作方式。
每次向LCD写8为数据分两次写,先高位后低位。
2.4GPS数据模块
GPS数据模块不需要自己设计,采用成品电路模块做数据传送。
我们只需要设计GPS数据通行部分即可。
GPGGA数据格式:
$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*xx
$GPGGA:
起始引导符及语句格式说明(本句为GPS定位数据);
<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米;
M:
指单位米
<11>:
差分GPS数据期限(RTCMSC-104),最后设立RTCM传送的秒数量;
<12>:
差分参考基站标号,从0000到1023(首位0也将传送)。
*:
语句结束标志符。
xx:
从$开始到*之间的所有ASCII码的异或校验和。
回车。
换行。
GPS数据通信为232串口通信,在通信过程中就需要数据电平转换,应用到232通信电平转换芯片MAX232,电路如下:
图2-3MAX232电路
在单片机串口收到信息后,先判别是否为语句引导头“$”,然后再接收信息内容,在收到“*”字符ASCⅡ码后再接收二个字节结束接收,然后根据语句标识区分出信息类别以对收到ASCⅡ码进行处理显示。
注意在处理北京时间时应在UTC时间上加上8小时才是准确的北京时,在超出24小时时应作减24小时处理。
3软件设计
本设计的主要功能是接收GPS模块传送的数据,并显示出相应的数据信息,包括当地时间、纬度、经度以及高度。
数据接收部分,采用串行口中断接收数据。
显示部分就采用一个I/O口控制LCD1602显示相应的信息。
3.1主程序设计
系统主程序的总体结构如图3-1所示。
系统的主程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断,LCD1602初始化;然后LCD显示屏进入开机状态,显示开机信息(LCD_log),转入正常的显示,并接收数据,每次显示两串字符。
接着由于单片机没有停机指令,所以可以设置系统程序不断地循环执行数据信息显示。
系统程序结构属中断方式,绝大多数功能在中断服务子程序中完成。
根据总体结构,可将程序划分为几个功能化模块:
串行口中断服务程序、显示子程序、扫描程序。
各个模块可进行独立设计、调试和查错,最终再连接成一个整体。
图3-1系统主程序的总体结构
系统主程序的总体结构如图3-1所示,首先是系统初始化,然后是显示开机信息,最后根据系统接收到的信息综合处理,得到数据显示到显示屏上。
图3-2数据接收程序流程图
3.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);//延时
3.3硬件连接设置
#defineLCD_DATAP2//LCD的数据口
#defineLCD_BUSYLCD_DATA^7;//LCD忙信号位
sbitLCD_RS=P2^0;//LCD寄存器选择
sbitLCD_RW=P2^1;//LCD读写控制
sbitLCD_EN=P2^2;//LCD使能信号
寄存器选择位RS,当RS=1时选择数据寄存器DDRAM。
当RS=0时选择指令寄存器CDRAM。
读写选择位RW,当RS=1时读数据寄存器。
当RS=0时写数据或指令到寄存器。
读写使能信号EN,当EN=1时读取数据。
当EN为下降沿是为写数据或指令。
检测LCD是否在处理其它数据而处于忙状态时,则读取忙状态信号位,当RS=0,RW=1,E=1时,LCD会输出八位数据,其中最高位DB7为忙状态位(LCD_busy_flag),若为1,表示LCD处于忙状态,为0表示LCD空闲。
3.4LCD显示工作方式
/*******初始化LCD********/
voidLCD_initial(void)
{LCD_write_instruction(LCD_DISPLAY_DOUBLE_LINE);//单行显示,4数据线
LCD_write_instruction(LCD_AC_AUTO_INCREMENT|LCD_MOVE_DISENABLE);
//光标自动+1,关闭自动移动显示
LCD_write_instruction(LCD_DISPLAY_ON|LCD_CURSOR_OFF|LCD_CURSOR_BLINK_OFF);//显示开、光标显示关、光标闪烁关
LCD_cls();//清屏
}
3.5系统主程序
/************************************/
voidmain()
{TMOD=0x20;//初始化串口
TL1=0xfa;
TH1=0xfa;//4800波特率
SCON=0x50;//工作方式1:
八位异步通信,允许接收
PCON=0x00;//波特率加倍关
IE=0x90;//打开总中断EA,和串行口中断ES
TR1=1;//开启启动定时器1
LCD_initial();//LCD1602初始化
LCD_log();//显示开机信息
while
(1)
{
LCD_show();
}//除了数据接收状态,一直处理显示
}
在串口通信中需要设置串口通信的数据传输速度,及波特率,设置定时器的溢出率即可,晶振为11。
0592MHz,当TL1=0xfa;,TH1=0xfa时为4800kbps波特率。
计算公式为:
T0初值X=2
-
TMOD特殊功能寄存器为定时器计数器工作方式寄存器,前四位控制定时器1,后四位控制定时器0;本设计采用定时器1,工作方式2(八位自动重装载,N=8),
SCON为串行口数据通信控制特殊寄存器,高三位为工作方式控制位,本设计采用工作方式1,8位数据异步通信。
D4位为接收允许控制位,本设计要采用串行口中断接收GPGGA数据,所以该为置1。
IE为中断允许控制特殊寄存器,本设计要打开串行口中断和总中断。
3.6数据接收程序
/*****************串行口中断子程序**************************/
RI=0;//软件清除中断标志位,串行口中断需要软件清零,去除中断标志
进入中断过后要先判断接收数据的格式,否则会出现乱接收数据,出现接收到的数据不对的问题,先判断是否接收到GPGGA格式语句的第一个字符“$”,其ASCII码为0x24,收到后,继续判断格式是不是为GPGGA,分五次中断判断,如果是,开始记录数据并设置记录标志(read_start),否则退出数据接收中断,程序设计如下:
if(SBUF=='$')//判断是不是'$'符号
{
flag1=1;//接收到’$’,起始字符
igps=0;//记录纬度数据字符数量的变量
Num_comma=0;//记录逗号数量的变量
}
elseflag1=0;
if((SBUF=='G')&(flag1==1))flag2=1;
elseflag2=0;
if((SBUF=='P')&(flag2==1))flag3=1;
elseflag3=0;
if((SBUF=='G')&(flag3==1))flag4=1;
elseflag4=0;
if((SBUF=='G')&(flag4==1))flag5=1;
elseflag5=0;
if((SBUF=='A')&(flag5==1))read_start=1;//开始接收数据
elseread_start=0
通过上述格式判断后,说明接下来的数据就是所需要的GPGGA格式数据,然后选择所需要的数据接收并存到缓存区,每个数据都是以逗号隔开的,我们只需要判断该逗号是第几个逗号就可以知道后面来的数据是表示说明含义。
程序设计如下
if(read_start==1)//开始接收GPGGA中的数据信息,
{
(SBUF==',')//利用GPRMC数据中的逗号间隔,区分接收到
//的数据表示的信息
{
Num_comma++;
}//记录逗号个数,标志数据的意义
if(Num_comma==1)//接收时间,时分秒格式
{
data_temp[igps]=SBUF;
igps++;
}//接收到的数据个数加1
if(Num_comma==2)//接收接收纬度,ddmm.mmm格式
{
data_temp[igps]=SBUF;
igps++;
}
if(Num_comma==4)//接收经度,ddmm.mmm格式
{
data_temp[igps]=SBUF;
igps++;
}
if(Num_comma==10)//海拔高度:
0—99999.9
{
if(SBUF!
='M')//为节约RAM空间,不接收’M’字符
data_temp[igps]=SBUF;
igps++;
}
判断这一帧数据是否接收完毕,每一个数据格式都是以*符号结束的,当接收到*号时表示这一帧数据已经发送完毕。
程序设计如下:
if(SBUF==’*’)//判断是否收到GPRMC格式语句的字符“*”,
//如果是,则表示接收完毕,开始处理
{
for(i=0;i { data_temp[igps]=dis_temp[igps]; }//数据放到显示缓冲区 //返回初值;标识结束一次接收
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 控制 GPS 定位 系统 设计 毕业设计