- 相關推薦
GPS串口數(shù)據(jù)接收程序實例
摘 要:目前GPS(全球定位系統(tǒng))定位應用市場日趨成熟,正在進入應用的高速發(fā)展時期。本文以一款EverMore公司的GM-X205GPS接受模塊為例,介紹了其數(shù)據(jù)格式,以及應用PIC16F874單片機RS232串口進行數(shù)據(jù)接收的程序。關鍵詞:GPS、NMEA格式、PIC16F874、串口數(shù)據(jù)接收
1、 GPS應用簡介
近年來GPS系統(tǒng),已經(jīng)在大地測繪、海上漁用、車輛定位監(jiān)控、建筑、農(nóng)業(yè)等各個領域得到廣泛應用。從九十年代我國引進GPS定位技術開始,經(jīng)過十多年的市場培育,GPS定位應用進入了發(fā)展的最好時機,未來十年基于GPS的應用將會改變我們的生活和工作方式。
目前市場上的大部分GPS接受模塊都是通過RS232串口與MCU進行數(shù)據(jù)傳輸?shù)。這些數(shù)據(jù)包括經(jīng)度、緯度、海拔高度、時間、衛(wèi)星使用情況等基本信息。開發(fā)人員再依據(jù)這些基本數(shù)據(jù),進行數(shù)據(jù)處理來完成整套的定位系統(tǒng)軟件。
2、 GM-X205模塊數(shù)據(jù)格式
在進行數(shù)據(jù)接受編程之前,先介紹一下該模塊的數(shù)據(jù)格式。它支持NMEA-0183輸出格式。信息如下:
GGA位置測定系統(tǒng)定位資料(Global Positioning System Fix Data)
GSV 導航衛(wèi)星資料(GNSS Satellites in View)
RMC導航衛(wèi)星特定精簡資料(Recommended Minimum Specific GNSS Data)
VTG 方向及速度等相關資料(Course Over Ground and Ground Speed)
由于文章篇幅問題,筆者在這里只以接收GGA數(shù)據(jù)為例,格式如下:
$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
說明見表:
區(qū)域
名稱
例
單位
說明
1
信息ID
$GPGGA
GGA協(xié)議開始
2
UTC時間
033744
hhmmss
3
緯度
2446.5241
dddmm.mmmm
4
南/北半球指示
N
N=north ; S=south
5
經(jīng)度
12100.1536
dddmm.mmmm
6
東/西半球指示
E
E=east ; W=west
7
定位指示
1
0 =未定位
1=定位SPS模式
2=定位DGPS, SPS模式
8
應位衛(wèi)星數(shù)
10
00-12
9
HDOP
0.8
米
10
海拔高度
133.4
米
11
海拔高度單位
M
米
12
WGS84水準面劃分
13
WGS-84水準面劃分單位
14
累計GPS數(shù)據(jù)微分
本模塊中不可用
15
參考工作站ID
本模塊中不可用
16
校驗位
*1F
上面例子中,我們可讀出位置信息:北緯24度46.5241分,西經(jīng)121度00.1536分
格林威治時間:3點37分44秒
3、 PIC16F874數(shù)據(jù)接收程序
筆者在系統(tǒng)中把接收到的數(shù)據(jù)處理后,顯示到圖形液晶屏上。限于篇幅在這里只給出數(shù)據(jù)接收部分程序,并且只接收經(jīng)度和時間信息,并且給出格林威治時間轉換為北京時間的轉換函數(shù)。其他數(shù)據(jù)接收程序類似。
;**********************************************************
; THIS IS A GPS RECEIVER PROGRAM *
;**********************************************************
LIST P=16F874
INCLUDE P16F874.INC
;*******寄存器定義 ********************
TEMP1 EQU 0X27
W_TEMP EQU 0X54
STATUS_TEMP EQU 0X55
LONG1 EQU 0X40 ;LONG1--- LONG10經(jīng)度的10位數(shù)據(jù)
LONG2 EQU 0X41
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位數(shù)據(jù)
T2 EQU 0X59
T3 EQU 0X60
T4 EQU 0X61
T5 EQU 0X62
T6 EQU 0X63
;********************************************************
ORG 00H
NOP
NOP
GOTO MAIN
ORG 04H ;設定按中端健才開始數(shù)據(jù)接受
NOP
NOP
GOTO INTERRUPT
;*********判斷頭文件是不是'$GPGGA’**********
IDMESSAGE
BCF STATUS,RP0
BREAK0
CALL PAND
MOVWF TEMP1
MOVLW '$' ;detect $
SUBWF TEMP1,0
BTFSS STATUS,Z
GOTO BREAK0
CALL PAND
MOVWF TEMP1
MOVLW 'G' ;detect G
SUBWF TEMP1,0
BTFSS STATUS,Z
GOTO BREAK0
CALL PAND
MOVWF TEMP1
MOVLW 'P' ;detect P
SUBWF TEMP1,0
BTFSS STATUS,Z
GOTO BREAK0
CALL PAND
MOVWF TEMP1
MOVLW 'G' ;detect G
SUBWF TEMP1,0
BTFSS STATUS,Z
GOTO BREAK0
CALL PAND
MOVWF TEMP1
MOVLW 'G' ;detect G
SUBWF TEMP1,0
BTFSS STATUS,Z
GOTO BREAK0
CALL PAND
MOVWF TEMP1
MOVLW 'A' ;detect A
SUBWF TEMP1,0
BTFSS STATUS,Z
GOTO BREAK0
CALL PAND ;跳過逗號
RETURN
;************接收函數(shù)******************
RECEIVE
CALL PAND ;開始時間數(shù)據(jù)接收
MOVWF T1
CALL PAND
MOVWF T2
CALL PAND
MOVWF T3
CALL PAND
MOVWF T4
CALL PAND
MOVWF T5
CALL PAND
MOVWF T6 ;時間數(shù)據(jù)接收完成
CALL PAND ;跳過逗號
CALL PAND ;跳過10位緯度數(shù)據(jù)---開始
CALL PAND
CALL PAND
CALL PAND
CALL PAND
CALL PAND
CALL PAND
CALL PAND
CALL PAND
CALL PAND ;跳過10位緯度數(shù)據(jù)---結束
CALL PAND ;跳過逗號
CALL PAND ;跳過南/北緯判斷位數(shù)據(jù)
CALL PAND ;跳過逗號
CALL PAND ;接受經(jīng)度信號開始
MOVWF LONG1
CALL PAND
MOVWF LONG2
【GPS串口數(shù)據(jù)接收程序實例】相關文章:
Windows CE中實現(xiàn)藍牙串口驅動程序08-06
基于Vxworks實時操作系統(tǒng)的串口通信程序設計與實現(xiàn)08-19
GPS定位數(shù)據(jù)壓縮算法的設計與實現(xiàn)08-06
MRFIC1502在GPS接收器中的應用08-06
接收新黨員支部大會程序08-06
GPS車輛監(jiān)控調度系統(tǒng)中高速數(shù)據(jù)傳終端的設計08-06
Windows下多串口的配置與使用08-06
基于USB2.0的高速無線數(shù)傳接收設備的數(shù)據(jù)接收存儲方法08-06
航天GPS接收機的低噪聲放大器設計08-06