GPS串口數據接收研究管理論文

時間:2022-06-25 03:46:00

導語:GPS串口數據接收研究管理論文一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

GPS串口數據接收研究管理論文

摘要:目前gps(全球定位系統)定位應用市場日趨成熟,正在進入應用的高速發展時期。本文以一款EverMore公司的GM-X205GPS接受模塊為例,介紹了其數據格式,以及應用PIC16F874單片機RS232串口進行數據接收的程序。

關鍵詞:GPS、NMEA格式、PIC16F874、串口數據接收

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=未定位

1=定位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

上面例子中,我們可讀出位置信息:北緯24度46.5241分,西經121度00.1536分

格林威治時間:3點37分44秒

3、PIC16F874數據接收程序

筆者在系統中把接收到的數據處理后,顯示到圖形液晶屏上。限于篇幅在這里只給出數據接收部分程序,并且只接收經度和時間信息,并且給出格林威治時間轉換為北京時間的轉換函數。其他數據接收程序類似。

;**********************************************************

;THISISAGPSRECEIVERPROGRAM*

;**********************************************************

LISTP=16F874

INCLUDEP16F874.INC

;*******寄存器定義********************

TEMP1EQU0X27

W_TEMPEQU0X54

STATUS_TEMPEQU0X55

LONG1EQU0X40;LONG1---LONG10經度的10位數據

LONG2EQU0X41

LONG3EQU0X42

LONG4EQU0X43

LONG5EQU0X44

LONG6EQU0X45

LONG7EQU0X46

LONG8EQU0X47

LONG9EQU0X48

LONG10EQU0X49

T1EQU0X58;T1---T6時間的6位數據

T2EQU0X59

T3EQU0X60

T4EQU0X61

T5EQU0X62

T6EQU0X63

;********************************************************

ORG00H

NOP

NOP

GOTOMAIN

ORG04H;設定按中端健才開始數據接受

NOP

NOP

GOTOINTERRUPT

;*********判斷頭文件是不是''''$GPGGA’**********

IDMESSAGE

BCFSTATUS,RP0

BREAK0

CALLPAND

MOVWFTEMP1

MOVLW''''$'''';detect$

SUBWFTEMP1,0

BTFSSSTATUS,Z

GOTOBREAK0

CALLPAND

MOVWFTEMP1

MOVLW''''G'''';detectG

SUBWFTEMP1,0

BTFSSSTATUS,Z

GOTOBREAK0

CALLPAND

MOVWFTEMP1

MOVLW''''P'''';detectP

SUBWFTEMP1,0

BTFSSSTATUS,Z

GOTOBREAK0

CALLPAND

MOVWFTEMP1

MOVLW''''G'''';detectG

SUBWFTEMP1,0

BTFSSSTATUS,Z

GOTOBREAK0

CALLPAND

MOVWFTEMP1

MOVLW''''G'''';detectG

SUBWFTEMP1,0

BTFSSSTATUS,Z

GOTOBREAK0

CALLPAND

MOVWFTEMP1

MOVLW''''A'''';detectA

SUBWFTEMP1,0

BTFSSSTATUS,Z

GOTOBREAK0

CALLPAND;跳過逗號

RETURN

;************接收函數******************

RECEIVE

CALLPAND;開始時間數據接收

MOVWFT1

CALLPAND

MOVWFT2

CALLPAND

MOVWFT3

CALLPAND

MOVWFT4

CALLPAND

MOVWFT5

CALLPAND

MOVWFT6;時間數據接收完成

CALLPAND;跳過逗號

CALLPAND;跳過10位緯度數據---開始

CALLPAND

CALLPAND

CALLPAND

CALLPAND

CALLPAND

CALLPAND

CALLPAND

CALLPAND

CALLPAND;跳過10位緯度數據---結束

CALLPAND;跳過逗號

CALLPAND;跳過南/北緯判斷位數據

CALLPAND;跳過逗號

CALLPAND;接受經度信號開始

MOVWFLONG1

CALLPAND

MOVWFLONG2