基于单片机及GPS器件的定位与测量系统设计

更新时间:2024-06-25 02:55:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于单片机及GPS器件的定位与测量系统设计

目录

中文摘要????????????????????? 英文摘要????????????????????? 1 引言?????????????????????? 2 系统的总体设计????????????????? 3 GPS全球定位系统及其工作原理?????????? 3.1 GPS导航系统???????????????? 3.2GPS导航系统的定位原理???????????? 3.3 GPS OEM板组成结构及原理?????????? 4 GPS25LP系列OEM板的数据格式?????????? 4.1GPS OEM板的窜口通信协议?????????? 4.2 NMEA 0183语句格式?????????????

4.2.1输入语句格式?????????????? 4.2.2输出语句格式????????????? 5 GPS OEM板与MCS-51单片机接口电路设计?????? 5.1单片机控制电路??????????????? 5.2MAX232电平转换电路????????????? 5.3单片机的信息接收和处理???????????

6 数据的控制与显示??????????????? 6.1液晶模块的工作特性????????????? 6.2液晶模块的电源电路设计??????????? 7 系统软件设计?????????????????? 7.1软件设计方案???????????????? 7.2程序设计??????????????????

7.2.1程序功能??????????????? 7.2.2变量说明??????????????? 7.2.3程序代码??????????????? 结束语????????????????????? 参考文献???????????????????? 附录1?????????????????????? 附录2??????????????????????

基于单片机及GPS器件的定位与测量系统设计

摘要: 本文主要介绍了利用单片型微机作为处理器,接收GPS 定位导航系统

信息的原理和方法,以及如何实现控制和显示所采集的信息。GPS

( GlobalPositioning System )全球定位系统,是由美国为高精度导航和定位而研制的全球性被动式无线电卫星系统, 是集无线电导航、定位和定时于一体的多功能系统。GPS系统由空间部分、地面监控部分和地面接收机部分组成。GPS 全球定位系统精度高,可连续导航,抗干扰能力强,加之其全天候,全球覆盖,方便灵活,质优价廉的特点,因而具有广阔的应用前景。将GPS接收机的小型化OEM 板与单片机相结合, 配置相应的外围设备,即可开发GPS 应用系统。

在这里我们以MCS-51 单片机作为控制模块,接收由GPS 接收机发送的数据,进行定位信息的计算处理后,控制显示模块将当前时间、经度、纬度等定位信息用液晶显示器显示出来。借助该系统,只许按几次键,便可以清楚的知道自己的方位。本文以Garmin 公司生产的GPS 25 LP型OEM 板为例,介绍了全球定位系统( GPS ) 的基本工作原理,讨论了GPS - OEM 板的组成和特点,分析了满足NMEA – 0183 通信协议语句的数据格式及信息组成,并结合其硬件特点,着重讲述了MCS - 51 单片机与GPS OEM 板的串行通信问题,讨论了GPS 应用系统的软硬件配置问题,并给出了单片机读取和现实导航数据的有关汇编语言程序。

关键字:全球定位系统,单片机,OEM 板,串行通讯,液晶显示器

Positioning and measurement systembased on SCM and GPS device

Abstract: This paper mainly introduced the theory and method of

using microcontrolleras microprocessors to receive information from GPS navigation system , Andthe control and display of the collection of information. GPS Namely globalpositioning system is built for precision global satellite system and passiveradio by America's navigation and positioning,which is a multifunctionalsystem of

collection of radio navigation, location and time. GPS systemconsists of space, ground monitoring and ground receivers parts. GPS hashigh precision, strong anti-jamming capability, together with its all-weather, global coverage, convenient and flexible, inexpensive, and

thus has the broadapplication prospect. The miniaturization of GPS receiver will be combinedwith MCU OEM board, configure corresponding peripherals, we can developthe GPS system application.

To combine GPS receivers of miniaturization OEM plate with

SCM( singlechip microcomputer) as control module to receive the data sent GPS receiver, and corresponding peripherals ,we can develop the GPS system application. Using SCM as Microprocessor module to receive the data from GPS receiverand calculate the Positioning information , Then send the current time, latitude, longitude etc positioning

information to LCD to display. Here, wetake the GPS25LP OEM board of Garmin company as an example, Introduces the basic principle of GPS device and data formats, discusses theGPS - OEM plate with MCS - 51 SCM serial communication interface andliquid crystal display circuit connection method, And present the reading, control and display of GPS navigation information assembler language program.

Keywords: global position system (GPS),single chip

microcomputer(SCM), OEM board ;Serial communication;LCD

1 引言

从事林业、石油、地质、海洋、铁路、公路、环保等行业的工作者由于工作范围大多地处户外,有些甚至是人迹罕至的不毛之地,所以他们对于获取自己当前所处位置的需求是非常强烈的。而且随着经济的不断发展,使移动目标的定位、监控、指挥和调度系统,成为公安、银行以及公交运输系统中一个越来越重要的问题。而GPS 定位技术的出现也给车辆、轮船等移动目标的导航定位提供了精确、实时的定位能力。全球定位系统是美国第二代卫星导航系统。它是在子午仪卫星导航系统的基础上发展起来的,GPS 能提供全天候、连续、实时高精度导航参数,实现三维定位,并可提供精确的时间信息。GPS系统由空间部分、地面监控部分和地面接收机部分组成。用户接收机接收到卫星发播的信号并利用本机产生的伪随机噪声码取得距离观测量和导航电文;根据导航电文提供的卫星位置和钟差改正信息计算接收机的位置。近年来GPS在在国内外得到广泛的应用,在各个领域发挥了极大的作用,已成为信息时代不可缺少的一部分。GPS系统一开始是为军事目的而建立的,但很快在民用方面得到了极大的发展。现在大多数的GPS 都已经模块化并提供简洁的应用接口。本文中要讨论的定位测量系统就是利用单片微型计算机和GPS 接收技术相结合而成的GPS 定位测量系统。

目前, 世界市场上已经出现了许多性能优良的便携式GPS 接收机, 尤其是美国、日本公司的GPS 接收机已经被广泛使用在车载导航、大地测量、远洋船

舶导航等领域中。利用GPS 全球定位系统而建立的实时导航,定位授时系统目前已被广泛应用。因此GPS接收机的原始设备制造产商(Original Equipment Manufacturer)接收板应运而生, 其内部含有基本的GPS 信号接收和解算单元以及必要的输入输出接口,具有性能可靠、结构简便、易于开发的特点,而且,仅数厘米的尺寸使其可以十分方便地与其他设备组合,适用于多种应用场合,正越来越受到开发者的关注。

本文即使用Garmin 公司生产的GPS 25 LP 型OEM 为例,介绍了其基本工作原理和输入输出数据格式,讨论了GPS OEM 板与MCS-51 单片机的串行通信接口以构成GPS基本应用系统,并给出了读取和控制GPS 导航信息的汇编语言程序。

2 系统的总体设计

本课题要求设计通过单片机控制GPS 器件组成的定位与测量系统。在这里使用常见的MCS-51 型单片机作为处理器,利用MCS-51 单片机的串行接口接收GPS 25型GPS OEM 板输出的数据信号,并通过软件方法筛选出其中有用的定位数据,最后通过单片机的并行接口输出至液晶显示模块显示的方案。

该GPS定位与测量系统硬件系统由以下几部分组成:

(1)接收部分:以Garmin GPS OEM板为核心的GPS 接收机; (2)电平转换电路:应用MAX232 电平转换芯片;

(3)控制电路:由51单片机作为微处理器控制GPS 信号; (4)显示部分:图形点阵液晶显示模块;

(5)电源电路部分:用以提供系统电源和LCD 背光调节的双电压输出。 该系统所要实现的基本功能为单片机对GPS器件的控制和对所采集的定位信息的显示两个方面。系统的总体硬件电路图如电路原理1所示。

单片机系统:本文提出使用8051 单片机作为微处理器,控制GPS 数据的读取和传输过程。利用其串行接口接收GPS25LP 型GPS OEM 板输出的NMEA 0183 语句数据,并将接收到的数据经过筛选和处理后发送到LCD 液晶显示器显示。

外围电路:外围电路一部分是由GPS 接收器件及其辅助电路组成,一部分是LCD 液晶显示模块的电源电路和显示电路。。GPS25系列OEM板主要由变频器、信号通道、存储器、中央处理器和输入输出接口构成。它接收天线获取的卫星信号,经过变频、放大、滤波、相关、混频等一系列处理,可以实现对天线视界内卫星的跟踪、锁定和测量。

单片机控制程序:编写程序,实现单片机控制系统的初始化,控制GPS 器件完成方位数据的采集,进行相应的信号处理,并通过单片机接口用总线的方式输出至液晶显示模块显示的功能。系统硬件结构原理框图如图2.1所示。

图2. 1 系统硬件结构示意图

基于MCS-51 系列单片机的GPS 独立定位测量系统的软件设计由4个模块组成,

分别是: 1 系统初始化模块; 2 信号接收模块; 3 信号处理模块; 4 数据显示模块。

GPS 25 型OEM 板的数据输入输出格式采用美国海洋电子协会为海洋电子设备制定的NMEA一0183 标准格式。该格式为ASC II 码字符串,易于理解,在多种高级语言中都可以直接进行判别和分离,提取所需要的数据。GPS 模块有多种格式的输出信息,这里我们采用$GPGRMC 语句,它输出了基本的定位信息,可以满足一般用户的使用要求。输出的语句按串口通信协议,数据采用的是ASCII 码字符,内容包含了纬度、经度、速度、日期、航向及卫星状况等信息。用软件编程对MCS-51的串行口及定时器正确设置后,即可接收由OEM 板传来的的定位数据。

3 GPS 全球定位系统及其工作原理

3.1 GPS 全球定位系统

GPS 全球卫星定位系统(Global Positioning System ),1994年由美国建成,是美国国防部研究并控制, 开始主要应用在军事领域方面。在海湾战争期之后, GPS开始走向民用研究及开发。可在海、陆、空进行全方位实时三维导航与定位,具有全天候、高精度、自动化和高效益等特点。

GPS 由空间部分、地面监控部分和用户接收机3大部分组成。其中GPS 空间星座部分、地面监控部分均为美国所控制;GPS 的用户设备主要由接收机硬件和处理软件组成。用户通过用户设备接收GPS 卫星信号,经信号处理而获得用户位置(经度、维度、高度)、速度等信息,从而实现利用GPS 进行导航和定位的目的。

在GPS 系统中, 分布在6个轨道面上的24颗GPS卫星连续的全天候、覆盖全球的发射定位、时间信息,地面上任何地点、任何时间的GPS 接收机都至少可

以同时接收到6 颗以上GPS 卫星的定位信息。只要有4 颗卫星的定位信息, GPS 接收机就能向用户提供三维坐标、时间及移动速度等信息参数。如图3.1所示。因此, 接收机是GPS 系统中重要的组成部分, 它接收GPS卫星的定位信息, 进行处理计算, 直接为用户服务。目前, 世界市场上已经出现了许多性能优良的便携式GPS 接收机, 尤其是美国、日本一些公司的GPS 接收机已经被广泛使用在车载导航、大地测量、远洋船舶导航等领域中。

3.2 GPS定位原理

GPS定位的基本原理是根据高速运动的卫星瞬间位置作为已知的起算数据,采用空间距离后方交会的方法,确定待测点的位置。假设t时刻在地面待测点上安置GPS 接收机,可以测定GPS 信号到达接收机的时间△t再加上接收机所接收到的卫星星历等其它数据可以确定如下所示的四个方程式:

?x1?x??x22??y1?y???z1?z??c?vt1?vt0??d12222

(1)

?x???y2?y???z2?z??c?vt2?vt0??d2 (2)

22?x3?x??x4??y3?y???z3?z??c?vt3?vt0??d32222(3)

?x???y4?y???z4?z??c?vt4?vt0??d4 (4)

2上述四个方程式中待测点坐标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 。

3.3 GPS OEM 板组成结构及原理

GPS-OEM 板是将GPS 接收机的主要部件做成大规模的集成电路片,并集成在一块电路板上。这个电路板具有接收GPS 信号、处理信号、输出观测信号和定位结果等功能。用户利用GPS OEM 板进行二次硬件开发可研制成各种应用的GPS 接收机。

在实际的使用中,不需要关心如何去计算坐标,只要选择合适的GPS 器件就可以满足我们对位置测量的要求。所以对于最终用户来说,关注的重点是GPS接收机。GPS-OEM 板是接收机的核心模块。GPS OEM 板内部含有基本的GPS 信号接收和解算单元以及必要的输入输出接口,具有性能可靠、易于开发的特点,而且,仅数厘米的尺寸使其可以十分方便地与其他设备组合,适用于多种应用场合,正越来越受到开发者的关注。

在这里,我们以Garmin 公司生产的GARMIN GPS 25LP 系列OEM 板为例,介绍它与单片机组成的应用系统。GARMIN GPS 25LP 系列OEM 板采用全封闭方式,单一+5V 供电,内置保护电池。是同类型的GPS OEM 板中最常用的一款,在飞机领域使用最多。GPS 25LP 系列OEM 板的外观如图3.2所示。

GPS 25LP OEM板的主要性能如下:

图3.2 GPS 25LP OEM板外观图 图3.3 GPS 25LP OEM板引脚图

·电源/数据口:单排12插针; ·位置精度(m):小于15; · 速度精度(m/s):小于0.1;

·外形尺寸(mm):46.5 ×69.8 ×11.4;

·定位时间(s):冷启动时间<45;热启动时间<15;重捕获时间<2; ·速度限制(m/s):515; ·加速度限制(g):6; ·电源(V): 3.6-6.0;

·功耗(W):0.9

GPS 25LP OEM 板的引脚如图3.3所示。各引脚定义如下: Pin1:TXD2,第二异步串行数据输出口; Pin2:RXD2,第二异步串行数据输入口; Pin3:PPS,秒脉冲信号;

Pin4:TXD1,第一异步串行数据输出口; Pin5:RXD1,第一异步串行数据输入口; Pin6:PWR_DN,电源控制;

Pin7:VAUX,内部辅助电源充电输入; Pin8:GND,电源和信号地; Pin9:VIN,与10脚相连;

Pin10:电源输入,3.6VDC-6.0VDC; Pin11:NC,留用,不外借引线; Pin12:NMEA,NMEA输出。

该GPS OEM 主要由变频器、信号通道、存储器、中央处理器和输入输出接口构 成。它接收天线获取的卫星信号,经过变频、放大、滤波、相关、混频等一系列处理,可以实现对天线视界内卫星的跟踪、锁定和测量。从而产生计算位置的数据信息(包含维度,经度,高度,速度,日期,时间,航向,卫星状况等信息)。其内部结构原理图如图3.4所示。

GPS信号

低噪音变频器 数字带处理 中央处理器 输入/出口 本振 随即存贮器 闪存 图3.4 GPS 25LP 系列GPS OEM 板内部结构原理图

在获取了卫星的位置信息和测算出卫星信号传播时间之后,就可计算出当前天线位置。用户通过微处理器的输入输出接口,采用异步串行通信方式与GPS OEM 板进行信息交换。输入语句由用户编制,主要功能是对GPS OEM 板进行初始化 、对导航模式和输出数据格式进行设定。该OEM 板为12 通道的GPS 接收机,可以同时跟踪多达12 颗的GPS 卫星,能够实现快速定位。GARMIN 的OEM 板功耗小,数据更新率为每秒一次。

4 GPS 25LP系列OEM板的数据格式

4.1 GPS OEM板的窜口通信协议

尽管目前市场上GPS OEM 板的型号众多且功能各异,但它们输出的GPS 定位信 息大多都是串行数据,且采用美国国家海洋电子协会制定的NMEA-0183 通信标准格式。NAEA-0183 协议语句格式为ASC II 码字符串,易于理解,在多种高级语言中都可以直接进行判别和分离,提取所需要的数据。传输速率可自定义。数据结构为8个数据位,1个起始位,1个停止位,无奇偶校验位。输出数据格式初始化为NMEA-0183格式,输出波特率为4800 波特。用户通过输入语句对GPS-OEM 板进行初始化,设置数据格式和通信波特率,以及要求输出的种类等。通过一系列设定,输出语句即向用户提供相应的定位数据。

4.2 NMEA-0183 语句格式

“$”为语句起始标志;“Aaccc”为地址域,前两位为识别符,后三位为语句名; “,”为域分隔符;“Ddd?ddd”为数据块,发送数据内容;“*”为校验和识别符,其后面的两位数为校验和;“hh”为校验和;“/”为终止符,表示回车、换行。 4.2.1 输入语句

NMEA 0183 输入语句是指GPS OEM 板可以接收的语句。输入语句包括初始位置,时间,秒脉冲状态,差分模式,NMEA 输出间隔等设置信息。这些语句是GPS 接收机可以有串口1 接受的于语句。本设计使用了接收机初始化信息

(PGRMI)语句。该语句一般在初始位置和当前实际位置的距离超过800 公里时使用,以加快定位速度。

$GPRMI,<1>,<2>,<3>,<4>,<5>,<6>,<7> *hh <1>纬度ddmm.mmmm(度分)格式(前面的0 也将被传输) ; <2>纬度半球N(北半球)或S(南半球);

<3>经度dddmm.mmmm(度分)格式(前面的0 也将被传输) ; <4>经度半球E(东经)或W(西经) ; <5> UTC 日期,ddmmyy(日月年)格式; <6> UTC 时间,hhmmss(时分秒)格式;

<7>接收机命令,A=自动定位,R=机器重新启动。

4.2.2 输出语句

GPS - OEM 板的输出语句有十余种,以Garmin生产的GPS25LP 板为例, 其主要语句有GPALM(历书数据)、GPGGA( GPS标准数据,定位数据)、GPGSV(卫星状态) 、GPGSA 、GPRMC 、GPVTG 、PGRME 、PGRMF 、PGRMT 、PGRMV(GARMIN定义的语句,3D速度信息) 、LCGLL 、LCVTG(NMEA 标准语句)等。可通过GPS 串口调试软件发送相应的命令语句给GPS OEM 板,此后GPS OEM 板会根据设置参数决定每隔若干毫秒发送哪种或哪几种NMEA 语句。 主要的输出语句格式如下:

(1) GPS标准数据(GGA)

$GPGGA , <1> , <2> , <3> , <4> , <5> ,<6> , <7> , <8>,<9 > ,M,<10> ,M, <11> ,<12>*hh 各数据区含义为:

<1> 确定位置的世界协调时(UTC) 时间,格式为“时时分分秒秒”; <2> 纬度值,格式为“度度分分. 分分分分”(含前导0) ; <3> 所测纬度半球,格式为“N”或“S”(即北或南) ;

<4> 经度值,格式为“度度度分分. 分分分分”(含前导0) ; <5> 所测经度半球,格式为“E”或“W”(即东或西) ;

<6> GPS 品质标识,0 = 不能定位,1 = 无差分定位,2 = 差分定位; <7> 定位所用卫星数目,数值范围00~12(含前导0) ; <8> 水平精度因子:数值范围0. 5~99. 9 ; <9> 天线高度,数值范围- 9999. 9~99999. 9m;

<10> 大地水准面高度,数值范围- 999. 9~9999. 9 m;

<11> 差分GPS 数据期,数值为从上一次有效的差分校正开始所经历的秒数

(若无差分修正,则此项为空) ;

<12> 差分站编号,数值范围0000~1023 (含前导0 ,若无差分修正,则此项

为空) 。

(2)$PGRMO,<1>,<2>*hh <1>语句名称

<2>语句模式:0=关闭<1>中指定的语句; 1=打开<1>中指定的语句; 2=关闭所有输出的语句;

3=打开所有的输出语句(GPALM 语句除外); 4=恢复出厂时的语句设置。

(3)推荐最小GPS/TRANSIT数据(RMC)

GPRMC语句包含时间、日期、方位、速度和磁偏角等信息,基本上可以满足一般的导航需求。

$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>, <12>*hh

<1> UTC 当地时间,hhmmss(时分秒)格式; <2>定位状态,A=有效定位,V=无效定位;

<3>纬度ddmm.mmmm(度分)格式(前面的0也将被传输) ; <4>纬度半球N(北半球)或S(南半球);

<5>经度dddmm.mmmm(度分)格式(前面的0也将被传输) ; <6>经度半球E(东经)或W(西经) ;

<7>对地速率000.0~999.9 节(前面的0也将被传输);

<8>对地航向000.0°~359.9 °(以真北为参考基准,前面的0也将传

输);

<9> UTC当地日期,ddmmyy(日月年)格式;

<10>磁偏角000.0°~180.0°(地球磁场不同时间不同地点的偏差。前面的

0也将被传输) ;

<11>磁偏角方向,E(东)或W(西) ;

<12>工作模式,A=自主,D=差分,E=评估,N=无效。 (4)GPS板设置语句(PGRMC)

PGRMC语句用于设置GPS板,设置参数存储于永久存储器中。如果设置语句无错,则GPS会响应语句,否则返回语句将显示当前默认值。

$PGRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>, <13>,<14>*hh

在本文的研究中,我们只保留推荐最小GPS/TRANSIT $GPRMC 语句,通过串口向GPS 输出。

5 GPS OEM 板与MCS-51单片机的接口电路

5.1 单片机电路

MCS–51 单片机是美国Intel 公司的产品, 也是国内使用较早的单片机系列之一。MCS - 51 系列单片机因其结构简单、功能丰富、价格低廉,在消费电子和工业控制领域有着广泛的应用。将MCS - 51 单片机作为处理器构成的GPS 应用系统,具有体积小巧、使用灵活的特点,而且系统的结构和功能可以根据需求的不同进行个性化配置,其性价比十分明显。

MCS – 51 系列单片机中,各类单片机都是相互兼容的,只是引脚功能略有差异。以典型的8051产品为例,它属于8位高档单片微机, 拥有强大的指令集、多种寻址功能, 含有并行I/O 口和全双工串行I/O口, 支持中断操作和中断优先级, 直接指令级支持乘除和位运算操作。图5.1是805 1单片机的引脚图(40脚DIP封装)。其中有两条主电源引脚,2条外接晶体引脚,4条控制或与其他电源复用的引脚,32条I/O引脚。

前已叙述,GPS 25 LP 有2组输入输出的串行接口(见图3.3所示),其引脚4 TXD1 用来输出相位信号,引脚5 RXD1 用来输入串行差分GPS 信号。因此,单片机与OEM 板的通信线路很简单,即将MCS - 51单片机的串行口(引脚10,RXD和引脚11,TXD)与GPS25 LP 对应的串行口进行相应连接即可实现数据传输。GPS – OEM 板上电经过自检后即进入卫星测量阶段并输出相关信息。GPS 应用统的软硬件复杂程度依其应用场合的不同而有极大的差异,对获取来自OEM 板的信息要求也各不相同。因此,硬件上的关键是单片机与OEM板的接口线路,而软件的核心则是正确对单片机串行口进行设置、对OEM板的进行合理配置并提取相应的GPS 信息。

要实现单片机的控制系统,还需要配备基本的外围电路。单片机的工作是在统一的时钟脉冲的控制下一拍一拍的进行的。这个脉冲是由单片机控制器中的时钟电路发出的,用来产生单片机工作所需的时钟信号。8051内部有一个高增益反向放大器,用以构成振荡器,引脚XTAL1和XTAL2分别是放大器的输入端和输出端。外部时钟振荡脉冲由XTAL2接入后直接送至内部时钟发生器,输入端XTAL1接地。见图5.2所示。

在单片机控制系统中,复位操作可以使单片机初始化,也可以使死机状态下的单片机重新启动,因此非常重要。单片机的复位都是靠外部电路来实现的,在时钟电路工作后,只要在单片机的RESET引脚上出现24个时钟振荡脉冲以上的高电平,单片机就能实现复位。如图5.3所示为按键复位电路。

图5.1 8051单片机引脚图

图5.2 时钟振荡电路 图5.3 按键复位电路

5.2 MAX232 电平转换电路

单片机的串行口与GPS OEM 板的联接需要通过一个电平转换芯片实现的。因为GPS OEM 板的串口电平是符合RS232 标准的电平,而单片机串口采用的是TTL 电平,因此需要通过电平转换才能够实现联接。MAX232 芯片是一款较为常用的电平转换芯片,可以实现RS232 电平与TTL 电平的双向转换。该芯片内部有电压倍增电路和转换电路,仅需外接几个小电容和+5V 电源便可工作,使用十分方便。引脚图如图5.4 所示。 引脚说明如下:

·C1+、C1-、C2+、C2-:外接电容;

·R1IN、R2IN:两路RS232 电平信号输入 端,可接传输线;

·R1OUT、R2OUT:两路转换后的TTL 电平输入端,可送单片机的RXD;

·T1IN、T2IN:两路TTL 电平输入端,可接单片机的TXD 端;

·T1OUT、T2OUT:两路转换后的RS232 电平信号输出端,可接传输线;

·V+、V-:分别经电容接电源和地。 一片MAX 232 内部带两组电平转换电路,

在本电路择其中一组即可。需要注意的是,在

图5.4 MAX232 引脚图 使用时串行口的发送端和接收端必须对应使用

同一组,还要注意数据的传输方向,注意不要

将输入输出接口接反。GPS OEM 板与单片机通过MAX232 电平转换的接口电路具体可见附录1。

5.3 单片机的信息接收和处理

GPS 只要处于工作状态就会源源不断地把接收并计算出的GPS 导航定位信

息通过串口传送到单片机系统中。假如对信息不经处理直接送到LCD 实现的话,那么在屏幕上出现的将是从串口接收到的一长串ASCⅡ 码字节流,这样没有经过分类提取的信息是无法利用的。因此必须通过程序将个人所需要的信息从接收到的字节流中提取出来,然后才能送到LCD 显示,这样才能做到一目了然。本文提取的信息是日期,时间,经度和纬度信息。

对GPS 信息进行提取必须首先明确其帧结构,数据帧主要有帧头,帧尾和帧内数据组成。对于不同的数据帧,帧头是不同的,主要有$GPGGA,$GPGSV,$PGRMC等。本文只需使用$PGRMC 信息,因此我们用软件设置OEM 板只输出$PGRMC 即可。这样我们就省去了判断是何种类型的麻烦。在单片机串口收到信息后,首先判断是否为语句引导头$,然后再接收信息内容。在收到*字符ASCⅡ 码后在接受两个字节结束接收,然后根据语句表示区分出信息类别以对受到ASCⅡ 码进行处理显示。

在这里需要强调的是,由于GPS 输出记录中的ASCⅡ 码字段位数可能随着实际测量计算出的定位数据的不同而有所变化,因此在进行识别,分解,解析记录中个字段时必须以逗号分隔符,作为个字段的分割标志,而不应该一个字段的字符位数作为分割个字段的依据,否则将会导致严重的数据错位。

同时需要注意的是,在处理北京时间时应在UTC 时间上加上8 小时才是准确的北京时间,在超出24 小时时应作减24 小时处理。数据更新率为每秒一次。系统工作时OEM 板不断得到新的数据,单片机不断刷新RAM,处理完后的数据随时送液晶显示器显示。

6 数据的控制与显示

6.1 液晶模块的工作特性

液晶显示器是一种将液晶显示器件、连接件、集成电路、PCB 线路板、背光源、结构件装配在一起的器件。一般情况下称作液晶显示模块。根据显示方式和内容的不同,液晶显示模块可以分为数显液晶模块,液晶点阵字符模块和图形点阵液晶模块三种。图形点阵液晶显示模块的点阵像素连续排列,行和列在排列中均没有空格。因此不仅可以显示字符,而且还可以显示连续完整的图形,是目前用于单片机中的现实信息量最大,功能最全面的一种显示器。另外还具有显示质量高,体积小,重量轻,功率消耗小,数字式接口更加简单方便等优点。

在本文的设计系统中,我们即采用型号为MGLS-12032A 的图形点阵液晶显示模块,其内置SED 1520 控制驱动器(集行,列驱动器和控制器于一体),采用内藏控制器直接进行控制驱动方式。SED 1520 控制器可以直接与51 系列单片机相连,不必使用其它的接口芯片因此选择存储器映像方式的接口,晶液晶模块当做存储器的一部分对待直接使用存储器读写进行I/O 操作。即将液晶模块的数据总线与单片机的数据总线(P0 口)直接相连,液晶显示的片选与控制引脚与单片机的高8 位地址线(P2 口)相连,这样对液晶模块的各种指令操作,实际上就是与相应的控制地址交换数据。MGLS-12032A 图形点阵液晶显示芯片引脚图如下图6.1 所示。 主要参数如下:

点阵数:120×32;

点大小:0.6×0.425mm; 模块尺寸:75.0×54.0mm;

视频尺寸:60×26.5mm;

驱动方式:内藏控制器驱动; 电参数;(VCC=+5.0V,V0=-10V); 引脚定义如下;

Vcc:+5V 电源; V0:工作负电压;

Vcc 和V0 中间件滑动变阻器可以改变液晶屏的背景光亮度; GND:逻辑电源地;

A0:数据/指令通道选择;1 为选择指令通道;0 为选择数据通道; R/W:读写选择信号;

E1:控制器1 的读写使能; E2:控制器2 的读写使能; NC:空;

D0-D7:三态数据总线。

数据接收和显示电路地址分配和连接如下:

电路原理图1

·74LS00、74LS04:由于LCD并没有独立的片选信号,所以使用单片机的读写信号进行选通,而74LS00、74LS04则是转换读写信号电平,同时作为片选信号。

·E1、E2:连接经过74LS00、74LS04转换后的单片机读写信号,作为单片机对LCD的片选信号。 ·A8:单片机对LCD的数据/指令通道的选择。 ·A9;单片机对LCD的读写信号选择 ·D0~D7:单片机和LCD的数据总线; ·-LCD:为LCD提供负电压的引脚; ·VIN:电源的正电压:

·VCC:经过MAX1677变换后的系统正电源电压; ·TXD_GPS:GPS串口输出;

·RXD:经过MAX232转换后的串口TTL电平。

6.2 液晶模块的电源设计

一般的,单片机系统如果采用电池供电,其输入电压为+3V,而LCD 显示输出除了需要提供+5V 工作电压外,需要提供-10V 的对比度调节电压。所以电源部分设计要求为+5V 和-10V 双电压输出。在这里我们采用MAX1677 芯片进行电源供电方案。

MAX1677 是双电压输出升压DC-DC 变换器,是用于需两种可调电压输出的便携式仪器。MAX1677 芯片的管脚如图10 所示。 MAX1677 芯片性能如下:

·允许输入电压范围:0.7V—5.5V;

·主要输出:2.5V—5.5V 可调电压输 出,预设值

3.3 输出,最大输出电流可达350mA; ·第二输出:可为LCD 对比度调节提供- 28—+28 图6.2 MAX232 引脚图 范围内电压;

·电源效率:可达95%;

·封装形式:16 脚QSOP 封装,体积很 小,不需要外部场效应管;

·其他性能:还包括20uA 静态工作电

图6.2 MAX232 引脚图 流,1uA 关断维持电流和电池欠电压检测。

电源电路原理如电路原理图2所示。 电路原理和地址分配如下说明:

·L1、L2:磁芯电感,选用CoilCraft(线艺)的DO1608C-103 表贴磁芯电感,电感值为10μ;

·D1、D2:肖特基二极管,但也可选用其它型号,只要反向耐压大于16V 即可; R1、R2:电阻,R1 和R2 决定了LCD 对比度输出的电压值Vlcd(图中为Vout2)其中R1 的取值范围为500KΩ~2MΩ;

· R3、R4:电阻,R3 和R4 的比值决定了主输出电压值Vout(对应图中的Vout1),其中R4 的取值范围是10 KΩ~200 KΩ;

· R5、R6:电阻,R5 和R6 的比值决定了系统欠电压检测的门槛电压值Vtrip,当电池电压正常时,电池电压过低,输出管脚LOB(Low-Battery Output) 输出保持高电平;一旦电池电压低于门槛电压Vtrip 时,LBO 管脚输出变成低电平。如果不使用欠电压检测的话,只许将第三管脚(LBI)接地。

·Vin:电源电路的输入端,连接两节1.5V 电池,形成便携式仪表的电源; ·Vout1:连接MAX1677 的16 管脚,输出+5V 电压,作为系统的电源电压;

·Vout2:连接MAX1677 的10 管脚,输出-10V 电压,作为液晶显示模块的背光电源电压;

·Low-Battery Output:连接MAX1677 的4 管脚,输出电源电压不足的报警信号,也就是MAX1677 中的LBO 信号。

7 系统软件设计

7.1 软件设计方案

基于MCS-51 系列单片机的GPS 独立定位测量系统的软件设计由4个模块组成,分别是:1 系统初始化模块;

2 信号接收模块; 3 信号处理模块;

4 数据显示模块。

①系统初始化模块:在用户对设备加电时,对单片机的硬件端口作初始化操作;对GPS OEM 板初始化,做如下操作:输入“$PGRMO,,2*”语句,禁止GPS OEM 板所有输出语句;输入“$PGRMO,GPRMC,1*”语句允许GPS OEM 板输出$GPRMC 语句数据;对液晶显示模块作初始化操作:设置显示模式为16 字×2 行;将定位数据指针指向80H,即屏幕第0 行第1 列;显示屏清屏开显示屏和设置光标;显示光标移动设置。

②信号接收模块: 该模块的功能是使单片机的串口接收从GPS OEM 板发送来的GPS 定位数据,做如下操作:判断接收的字符是否是“$”字符;如果是则将记录标志位置1;把纬度数据计数变量和经度数据计数变量置0;把逗号计数变量置0。接收数据时,如果数据无效则可由单片机响应对GPS OEM板进行配置,以加快定位速度。配置时,该模块负责将输入的信息发送到GPS OEM 板。对发送到GPS OEM 板的信息要转换为NMEA-0183 格式。在对GPS OEM 板配置的语句中,校验码非常重要,因为GPS OEM 板有时可能没有正确接收到配置语句,所以配置时要连续发送,直到GPS OEM 板返回一个确认语句为止。

③信号处理模块:负责从接收的定位数据中分离出纬度和经度信息数据,数据处理模块负责处理从GPS OEM 接收到的数据。接收数据时首先需要判断数据是否有效(在GPRMC 语句中,A为有效,V为无效)。因输出数据是以语句的形式出现的,每条语句代表一种数据,每种数据有它自己的识别码,所以判断有效性后要根据收到的语句的识别码来判断该语句是否为所需要的内容(如GPRMC 中,“GP”为识别符,“RMC”为语句名)。当接收完数据后,还要进行一次检错过程,将所有收到的数据异或求和之后,与校验和“hh”进行比较,如果两者相同,则整个数据接收正确,然后对数据进行处理;若接收不正确,则重新进行接收。操作如下:先判断送来的是否是“,”字符;判断逗号的个数;分别提取第3 和第5 个逗号后的数据,因为这两个数据分别代表当前的纬度和经度数据;把分离出的数据送数据显示模块显示。

④数据显示模块:负责将有用的定位信息数据显示在反映定位置。同时完成从单片机读数据到液晶显示器和从液晶显示器读数据到单片机的双向传输工作。NMEA一0183是以语句形式发送数据的。接收机可能发送很多类型的语句,而我们需要的可能只是某些语句中的几个字段。因此就需要对接收到的数据进行解析,取得所需的信息。另外,可能会由于小数点位数不同等原因,语句的长度是可变的,因而分离感兴趣的信息时,不能按照该信息在语句中所处的字符位置来查找,只能依据逗号分隔符,这些都是我们在程序中需要注意的问题。为解决信息中用户所需要的信息。在应用程序中,首先用软件通过判别消息的引导头是否为“$”来确认是否进行数据接收,然后在对应消息中提取经纬度及时间等数据,最后通过消息尾(即回车符)来停止数据接收的正确提取问题,并提高程序的复用性,可以编写适当的函数,如一个用来分离语句,返回GPS 语句。

7.2 程序设计

7.2.1 程序功能

该程序的主要功能有两个方面,一方面是使用单片机和GPS 模块通信,获得当前的方位数据,另一方面是单片机将所得字符数据处理成数值,并发送到液晶显示模块进行显示。本例中的函数有:主程序,GPS数据通信程序,液晶的驱动以及液晶的显示。 ·主程序 main()

·通信程序 serial()

·液晶的驱动 INTIAL() CLEAR() CWE1(void) DWE1(void) CWE2(void) DWE2(void) ·液晶的显示

void locate(page,column) void onechar()

void show(void) 7.2.2变量说明

单片机程序中的变量和功能如下表1所示:

表7.1 变量和功能说明

函数 void locate(page,column) void onechar() void show(void) void main(void) NDIG stringgps[ ] record number igps numbercoma numgps void CWE1(void) void CWE2(void) void DWE1(void) void DWE2(void) 功能说明 液晶显示字符定位由page页column列开始显示 液晶显示输出一个字符 液晶显示字符串输出 主程序,实现完整的系统功能 待显示的字符数 记录GPS数据的数组 进行通信数据记录的标志位 有效数据的长度变量 记录GPS数据字符数量的变量 记录逗号数量的变量 数值类型的GPS数据 向液晶模块E1写控制指令 向液晶模块E1写显示数据 向液晶模块E2写控制指令 向液晶模块E2写显示数据

7.2.3 程序代码

单片机对GPS 模块的串行数据接收,整理和向RAM 中写入数据的基本流程如图7.1。

程序分为6部分,分别是

·液晶主程序;

·串口接收子程序函数;

·字符显示程序disp.c的内容; ·制定显示位置函数; ·显示一个字符的函数; ·显示一个字符串; 具体程序内容见附录1。

图7.1 单片机对GPS模块的控制流程图

结束语

GPS接收机OEM板价格的低廉和超小体积板子的大量生产,使得目前市场上手持GPS产品大量涌现,为GPS的应用展示了广阔的前景。本文结合MCS-51 单片机和GPS25LP型GPS OEM 板的硬件特点,分析和介绍了构成GPS 基本应用系统的核心硬件组成和关键软件设计, 给出了硬件电路和软件流程,为普通用户了解、设计和应用GPS 系统提供了理论和实践上的指导。

随着GPS 由军用逐渐转向民用, GPS 在车载导航、大地测量、远洋船舶导航、远程监视等领域GPS应用越来越广泛,我们的设计只是应用的基础和开端。

在实际应用中我们要结合各个领域的特殊情况和特定的技术需求,进行有针对性的处理和设计。

参考文献

[1]杜树春,张体才.单片机与外围器件接口实例详解[M].中国电力出版

社,2009.

[2]沙占友,孟志永.单片机外围电路设计(第2版)[M].北京:电子工业出版社,2006.

[3]梅丽凤,王艳秋,汪毓铎,张军.单片机原理及接口技术[M].北京:北京交通大学出版社,清华大学出版社.2004.

[4]刘瑞华.MCS-51单片机与GPS -OEM板的串行通信研究与开发[J].电讯技术,2004,(5):93-95.

[5]刘晓,伍小东,姚军光,魏权利.基于单片机采集GPS数据系统的设计[J].青岛.

[6]张海龙.基于单片机的GPS定位显示系统[J].无线互联:2004,3:47. [7]王占猛.GPS与单片机接口程序设计[J].汽车电子及检测技术专

题,2007.7. [8]姚敏,郭庆.基于MCS-51系列单片机的GPS独立定位设备的研究[J].计算机与信息技术.2006,2(8):79-82.

[9]李光飞. GPS定位信息的单片机控制显示系统[J].中文核心期刊,《微计算机信息》(测控自动化),200420(11):92-93.

[10]徐进,周宁.GPS接收机的单片机通讯接口[J].电子器件,1999,22(3).182-187.

[11]李朝青.单片机&DSP外围数字IC技术手册(第2版)[M]北京航空航天大学出版社2005.10.

[12]李远,胡修林,赵文同等.基于GPS OEM板和单片机的定位终端开发[J].技术交流,2004,(6):22-26.

[13]索明何,饶运涛,邢海霞.基于单片机的液晶显示系统设计[J].科技广场2008,7(2):22-24.

[14]楼然苗,李光飞.单片机课程设计指导[M] 北京航空航天大学出版社 2007.7

附录1:程序详单

·主程序

//定义头文件,函数和变量 #include〈stdio.h〉 #include〈absacc.h〉 #include〈reg51.h〉 /*define variable type*/ #define uchar unsigned char #define uint unsigned int

void INITIAL(viod); /*液晶显示初始化*/ void CLEAR (viod); /*液晶显示清屏*/ void locata(uchar page,uchar column); /*指定首字符显示位置*/ void show(void);

/*从当前位置开始显示缓冲区BUFFER中的内容*/ char data BUFFER[15]; /*显示缓冲区*/ uchar data NDIG; /*待显示的字符数*/ int xdata sumup=0; /*测试用的变量*/ uchar idata stringgps[8]; uint k,i,j,k1;

uint record,number; uint igps;

uint numbercoma; uint len1,len2,len3; uint numgps;

//main()主函数,初始化变量和液晶的初始化内容 void main(void) {

TMOD=0x20; //初始化串口 TL1=0xfd; TH1=0xfd; SCON=0x50; PCON=0x00; IE=0x90; TR1=1; P1_0=0;

INITIAL(); /*显示初始化*/

CLEAR(); /*清屏*/

/*从page3,column4开始显示“sumup=rdy” */ /*固定长度的字符串显示*/ locate(3,4);

NDIG=sprintf(BUFFER,“sumup=rdy”); show(); //显示子函数 sumup=12345;

/*从page2,column4开始显示“sumup=12345”,为含数值的长度不确定的字符串显示*/

locate(2,4);

NDIG= sprintf(BUFFER,“sumup=﹪d”,sumup);

show(); //显示子函数

/*按键查询方式显示初始内容*/ for(;;) {

locate(0,2);

/*从page0,column2开始显示“k1:〈被按下的次数〉”*/ NDIG= sprintf(BUFFER,“k1=﹪d ”,k1); show(); } }

·串口接收数据子函数

//接收GPS的数据,采用GPRMC格式语句,此处只接受经纬数据 serial()interrupt4 using1 {

RI=0; //软件清除中断标志位

//判断是否收到GPRMC格式语句的第一个字符“$”,其数值为0x24,收到后开始记录数据

//并设置记录标志record=1。*/ if(SBUF= =0x24)

{

record=1; I=0;

Igps=0; //记录维度数据字符数量的变量 Numbercoma=0; //记录逗号数量的变量 }

if(record==1) // 开始处理GPRMC中的数据信息 {

本文来源:https://www.bwwdw.com/article/aex3.html

Top