當(dāng)前位置:首頁 > 通信技術(shù) > 通信技術(shù)
[導(dǎo)讀]本文以一款EverMore公司的GM-X205GPS接受模塊為例,介紹了其數(shù)據(jù)格式,以及應(yīng)用PIC16F874單片機(jī)RS232串口進(jìn)行數(shù)據(jù)接收的程序。

 作者Email: Atom002@sohu.com

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

    關(guān)鍵詞:GPS、NMEA格式、PIC16F874、串口數(shù)據(jù)接收

    1、 GPS應(yīng)用簡介

    近年來GPS系統(tǒng),已經(jīng)在大地測繪、海上漁用、車輛定位監(jiān)控、建筑、農(nóng)業(yè)等各個領(lǐng)域得到廣泛應(yīng)用。從九十年代我國引進(jìn)GPS定位技術(shù)開始,經(jīng)過十多年的市場培育,GPS定位應(yīng)用進(jìn)入了發(fā)展的最好時機(jī),未來十年基于GPS的應(yīng)用將會改變我們的生活和工作方式。

    目前市場上的大部分GPS接受模塊都是通過RS232串口與MCU進(jìn)行數(shù)據(jù)傳輸?shù)摹_@些數(shù)據(jù)包括經(jīng)度、緯度、海拔高度、時間、衛(wèi)星使用情況等基本信息。開發(fā)人員再依據(jù)這些基本數(shù)據(jù),進(jìn)行數(shù)據(jù)處理來完成整套的定位系統(tǒng)軟件。

    2、 GM-X205模塊數(shù)據(jù)格式

    在進(jìn)行數(shù)據(jù)接受編程之前,先介紹一下該模塊的數(shù)據(jù)格式。它支持NMEA-0183輸出格式。信息如下:

    GGA位置測定系統(tǒng)定位資料(Global Positioning System Fix Data)
    GSV 導(dǎo)航衛(wèi)星資料(GNSS Satellites in View)
    RMC導(dǎo)航衛(wèi)星特定精簡資料(Recommended Minimum Specific GNSS Data)
    VTG 方向及速度等相關(guān)資料(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

應(yīng)位衛(wèi)星數(shù)

10

 

00-12

9

HDOP

0.8

 

10

海拔高度

133.4

 

11

海拔高度單位

M

 

12

WGS84水準(zhǔn)面劃分

 

 

 

13

WGS-84水準(zhǔn)面劃分單位

 

 

 

14

累計GPS數(shù)據(jù)微分

 

 

本模塊中不可用

15

參考工作站ID

 

 

本模塊中不可用

16

校驗位

*1F

 

 

上面例子中,我們可讀出位置信息:北緯24度46.5241分,西經(jīng)121度00.1536分
                                格林威治時間:3點(diǎn)37分44秒
3、 PIC16F874數(shù)據(jù)接收程序
筆者在系統(tǒng)中把接收到的數(shù)據(jù)處理后,顯示到圖形液晶屏上。限于篇幅在這里只給出數(shù)據(jù)接收部分程序,并且只接收經(jīng)度和時間信息,并且給出格林威治時間轉(zhuǎn)換為北京時間的轉(zhuǎn)換函數(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è)定按中端健才開始數(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ù)---結(jié)束
       CALL     PAND                     ;跳過逗號
       CALL     PAND                     ;跳過南/北緯判斷位數(shù)據(jù)
       CALL     PAND                     ;跳過逗號
       CALL     PAND                     ;接受經(jīng)度信號開始
       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                   ;接受經(jīng)度信號結(jié)束
       RETURN
;***************串口寄存器中是否數(shù)據(jù)*****************
PAND  
        BCF      STATUS,RP0
CC   BTFSS PIR1,5
        GOTO CC
        MOVF     RCREG,0
        RETURN
;*****************中斷函數(shù)***************************
INTERRUPT    
        BCF INTCON,7                  ;SET GIE=0屏蔽所有中端
        BCF     STATUS,RP0
        BCF     RCSTA,1               ;清除溢出錯誤位
        BSF       STATUS,RP0
        BCF       TXSTA,2             ;BRGH=0 Low speed
        BCF       TXSTA,4             ;Set Asynchronous mode
        MOVLW     0X0C
        MOVWF     SPBRG             ;設(shè)置波特率為4800
        BCF       STATUS,RP0
        MOVLW     B'10010000'
        MOVWF     RCSTA             ;串口接收相關(guān)設(shè)置
        BSF       STATUS,RP0         
        BSF       OPTION_REG,6        ; RB0/INT 引腳上升沿中斷
       MOVWF W_TEMP            
    SWAPF STATUS,W
    BCF   STATUS,RP0
    MOVWF STATUS_TEMP
    BCF     STATUS,RP0
    CALL    IDMESSAGE
       CALL    RECEIVE
        BCF     STATUS,RP0
        CLRF    RCSTA                ;清除串口設(shè)置
        CALL    CONVERT             ;調(diào)用時間轉(zhuǎn)換函數(shù)
OUT BCF STATUS,RP0             ;跳出中斷部分,恢復(fù)寄存器
     SWAPF STATUS_TEMP,W
     MOVWF STATUS
     SWAPF W_TEMP,F
     SWAPF W_TEMP,W  
     BSF  INTCON,7     ;SET GIE=1允許所有中端
     NOP 
        RETFIE
;************ 格林威治時間轉(zhuǎn)換為北京時間******************
CONVERT
       MOVLW  A'0'
       SUBWF  T2,1
       SUBWF  T1,1
       MOVLW  D'10'
       MOVWF  TEMP1
LOOP1  MOVF   TEMP1,0
       MOVF   TEMP1,1
       BTFSS  STATUS,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
CON1   MOVLW  D'20'
       MOVWF  TEMP1
       SUBWF  T2,0
       BTFSS  STATUS,C
       GOTO   CON2
       MOVWF  T2
       MOVLW  0X02
       MOVWF  T1
       GOTO   HALT1
CON2   MOVLW  D'10'
       MOVWF  TEMP1
       SUBWF  T2,0
       BTFSS  STATUS,C
       GOTO   CON3
       MOVWF  T2
       MOVLW  0X01
       MOVWF  T1
       GOTO   HALT1
CON3   MOVLW  0X00
       MOVWF  T1
HALT1  MOVLW  A'0'
       ADDWF  T1,1
       ADDWF  T2,1
       RETURN
ADD10  MOVF   T1,0
       ADDWF  T2,1
       DECF   TEMP1,1
       GOTO   LOOP1
       RETURN
;******************MAIN***********************
MAIN
        BCF       STATUS,RP0
        MOVLW     B'10010000'
        MOVWF     INTCON            ;打開中斷
        LOOP NOP
     BCF     STATUS,RP0
     GOTO  LOOP
     GOTO MAIN
        END

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉