GPS串口数据接收程序实例.docx

上传人:b****9 文档编号:26069718 上传时间:2023-06-17 格式:DOCX 页数:14 大小:18.29KB
下载 相关 举报
GPS串口数据接收程序实例.docx_第1页
第1页 / 共14页
GPS串口数据接收程序实例.docx_第2页
第2页 / 共14页
GPS串口数据接收程序实例.docx_第3页
第3页 / 共14页
GPS串口数据接收程序实例.docx_第4页
第4页 / 共14页
GPS串口数据接收程序实例.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

GPS串口数据接收程序实例.docx

《GPS串口数据接收程序实例.docx》由会员分享,可在线阅读,更多相关《GPS串口数据接收程序实例.docx(14页珍藏版)》请在冰豆网上搜索。

GPS串口数据接收程序实例.docx

GPS串口数据接收程序实例

GPS串口数据接收程序实例

作者:

天大天财股份有限公司巩志民文章来源:

单片机及嵌入式系统应用

摘要:

目前GPS(全球定位系统)定位应用市场日趋成熟,正在进入应用的高速发展时期。

本文以一款EverMore公司的

GM-X205GPS接受模块为例,介绍了其数据格式,以及应用PIC16F874单片机RS232串口进行数据接收的程序。

1、GPS应用简介

近年来GPS系统,已经在大地测绘、海上渔用、车辆定位监控、建筑、农业等各个领域得到广泛应用。

从九十年代我国引

进GPS定位技术开始,经过十多年的市场培育,GPS定位应用进入了发展的最好时机,未来十年基于GPS的应用将会改变我

们的生活和工作方式。

目前市场上的大部分GPS接受模块都是通过RS232串口与MCU进行数据传输的。

这些数据包括经度、纬度、海拔高度、

时间、卫星使用情况等基本信息。

开发人员再依据这些基本数据,进行数据处理来完成整套的定位系统软件。

2、GM-X205模块数据格式

在进行数据接受编程之前,先介绍一下该模块的数据格式。

它支持NMEA-0183输出格式。

信息如下:

GGA位置测定系统定位资料(GlobalPositioningSystemFixData)

GSV导航卫星资料(GNSSSatellitesinView)

RMC导航卫星特定精简资料(RecommendedMinimumSpecificGNSSData)

VTG方向及速度等相关资料(CourseOverGroundandGroundSpeed

由于文章篇幅问题,笔者在这里只以接收GGA数据为例,格式如下:

$GPGGA,hhmmss,dddmm.mmmm,a,dddmm.mmmm,a,x,xx,x.x,x.x,M,,M,x.x,xxxx*CS

例:

$GPGGA,033744,2446.5241,N,12100.1536,E,1,10,0.8,133.4,M,,,,*1F

说明见表:

区域

名称

单位

说明

1

信息ID

$GPGGA

GGA协议开始

2

UTC时间

033744

hhmmss

3

纬度

2446.5241

dddmm.mmmm

4

南/北半球指示

N

N=north;S=south

5

经度

12100.1536

dddmm.mmmm

6

东/西半球指示

E

E=east;W=west

7

定位指示

1

0=未疋位

仁定位SPS模式

2=定位DGPS,SPS模式

8

应位卫星数

10

00-12

9

HDOP

0.8

10

海拔高度

133.4

11

海拔高度单位

M

12

WGS84水准面划分

13

WGS-84水准面划分单位

14

累计GPS数据微分

本模块中不可用

15

参考工作站ID

本模块中不可用

16

校验位

*1F

间:

3点37分44秒

上面例子中,我们可读岀位置信

息:

纬2

4度

46.5

241分,西经1

21度0

0.15

36

林威治时

3、PIC16F874数据接收程序

笔者在系统中把接收到的数据处理后,显示到图形液晶屏上。

限于篇幅在这里只给岀数据接收部分程序,并且只接收经度和时间信息,并且给岀格林威治时间转换为北京时间的转换函数。

其他数据接收程序类似。

■**********************************************************

THISISAGPSRECEIVERPROGRAM

■**********************************************************

LISTP=16F874

INCLUDEP16F874」NC

■*******

>

^寄存器定■^义********************

TEMP1

EQU0X27

W_TEMPEQU0X54

STATUS_TEMPEQU0X55

LONG1EQU0X40

;LONG1---LONG10经度的10位数据

LONG2EQU0X41

 

LONG3

EQU

0X42

LONG4

EQU

0X43

LONG5

EQU

0X44

LONG6

EQU

0X45

LONG7

EQU

0X46

LONG8

EQU

0X47

LONG9

EQU

0X48

LONG10

EQU

0X49

 

T1

EQU

0X58

;T1---T6时间的6位数据

T2

EQU

0X59

T3

EQU

0X60

T4

EQU

0X61

T5

EQU

0X62

T6

EQU

0X63

.********************************************************

 

ORG

00H

NOP

NOP

GOTOMAIN

ORG

04H;设定按中端健才开始数据接受

NOP

NOP

GOTOINTERRUPT

.*********

J

判断头文件是不是'$GPGGA'**********

 

IDMESSAGE

BCF

STATUS,RP0

 

BREAK0

CALL

PAND

MOVWFTEMP1

MOVLW'$';detect$

SUBWFTEMP1,0

BTFSS

STATUS,Z

GOTOBREAK0

 

CALL

PAND

MOVWF

TEMP1

MOVLW

'G';detectG

SUBWF

TEMP1,0

BTFSS

STATUS,Z

GOTOBREAK0

 

CALL

PAND

MOVWF

TEMP1

MOVLW

'P';detectP

SUBWF

TEMP1,0

BTFSS

STATUS,Z

GOTOBREAK0

 

CALL

PAND

MOVWF

TEMP1

MOVLW

'G';detectG

SUBWF

TEMP1,0

BTFSS

STATUS,Z

GOTOBREAK0

 

CALL

PAND

MOVWF

TEMP1

MOVLW

'G';detectG

SUBWF

TEMP1,0

BTFSS

STATUS,Z

GOTOBREAK0

 

CALL

PAND

MOVWF

TEMP1

MOVLW

'A';detectA

SUBWF

TEMP1,0

BTFSS

STATUS,Z

GOTOBREAK0

CALL

PAND

;跳过逗号

RETURN

.************

J

RECEIVE

接收函数

******************

CALL

PAND

;开始时间数据接收

MOVWF

T1

CALL

PAND

MOVWF

T2

CALL

PAND

MOVWF

T3

CALL

PAND

MOVWF

T4

CALL

PAND

MOVWF

T5

CALL

PAND

MOVWF

T6

;时间数据接收完成

CALL

PAND

;跳过逗号

CALL

PAND

;跳过10位纬度数据---开始

CALLPAND

CALLPAND

CALL

PAND

CALL

PAND

CALL

PAND

CALL

PAND

CALL

PAND

CALL

PAND

CALL

PAND

;跳过10位纬度数据---结束

CALL

PAND

;跳过逗号

CALL

PAND

;跳过南/北纬判断位数据

CALL

PAND

;跳过逗号

CALL

PAND;接受经度信号开始

MOVWF

LONG1

CALL

PAND

MOVWF

LONG2

CALL

PAND

MOVWF

LONG3

CALL

PAND

MOVWF

LONG4

CALL

PAND

MOVWF

LONG5

CALL

PAND

MOVWF

LONG6

CALL

PAND

MOVWF

LONG7

CALL

PAND

MOVWF

LONG8

CALL

PAND

MOVWF

LONG9

CALL

PAND

MOVWF

LONG10;接受经度信号结束

RETURN

 

.***************

J

串口寄存器中是否数据*****************

PAND

BCFSTATUS,RP0

CCBTFSSPIR1,5

GOTOCC

BCFINTCON,7

;SETGIE=0屏蔽所有中端

MOVF

RCREG,0

RETURN

 

.*****************

J

中断函数***************************

INTERRUPT

BCFSTATUS,RP0

BCFRCSTA,1

BSFSTATUS,RP0

BCFTXSTA,2

BCFTXSTA,4

MOVLW0X0C

MOVWFSPBRG

BCFSTATUS,RP0

MOVLWB'10010000'

MOVWFRCSTA

BSFSTATUS,RP0

BSFOPTION_REG,6

MOVWFW_TEMP

SWAPFSTATUS,W

BCFSTATUS,RP0

MOVWFSTATUS_TEMP

BCFSTATUS,RP0

CALLIDMESSAGE

CALLRECEIVE

BCFSTATUS,RP0

CLRFRCSTA

CALLCONVERT

OUTBCFSTATUS,RP0

SWAPFSTATUS_TEMP,W

MOVWFSTATUS

SWAPFW_TEMP,F

SWAPFW_TEMP,W

;清除溢出错误位

;BRGH=0Lowspeed

;SetAsynchronousmode

;设置波特率为4800

;串口接收相关设置

;RB0/INT引脚上升沿中断

;清除串口设置

;调用时间转换函数

;跳出中断部分,恢复寄存器

BSFINTCON,7;SETGIE=1允许所有中端

NOP

RETFIE

CONVERT

MOVLW

A'0'

SUBWF

T2,1

SUBWF

T1,1

MOVLW

D'10'

MOVWF

TEMP1

LOOP1MOVFTEMP1,0

MOVF

TEMP1,1

BTFSSSTATUS,Z

GOTO

ADD10

MOVLW

D'8'

ADDWF

T2,1

MOVLW

D'24'

SUBWF

T2,1

BTFSC

STATUS,C

GOTO

CON1

ADDWF

T2,1

GOTO

CON1

CON1MOVLWD'20'

MOVWF

TEMP1

SUBWF

T2,0

BTFSSSTATUS,C

GOTO

CON2

MOVWF

T2

MOVLW

0X02

MOVWF

T1

GOTO

HALT1

CON2MOVLWD'10'

MOVWF

TEMP1

SUBWF

T2,0

BTFSSSTATUS,C

GOTOCON3

MOVWFT2

MOVLW

0X01

MOVWF

T1

GOTO

HALT1

CON3MOVLW0X00

MOVWF

T1

HALT1MOVLWA'0'

ADDWFT1,1

ADDWFT2,1

RETURN

ADD10MOVFT1,0

ADDWFT2,1

DECFTEMP1,1

GOTOLOOP1

RETURN;******************MAIN***********************

MAIN

BCFSTATUS,RP0

MOVLWB'10010000'

MOVWFINTCON;打开中断

LOOPNOP

BCFSTATUS,RP0

GOTOLOOP

GOTOMAIN

END

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1