基于單片機的GPS信息處理系統(tǒng)
全球定位系統(tǒng)(Global Positioning System,GPS)是美國從20世紀70年代開始研制,于1994年全面建成,以接收導航衛(wèi)星信號為基礎(chǔ)的非自主式導航與定位系統(tǒng)。他以全球覆蓋、全天候、連續(xù)實時提供高精度的三維位置、三維速度和時間信息的能力,很好地解決了人類導航和定位問題。隨著全球定位系統(tǒng)的不斷改進,軟硬件的不斷完善,應用領(lǐng)域正在不斷的開拓,無論在軍事還是民用領(lǐng)域都得到廣泛地應用和發(fā)展。實際應用中,GPS接收機收到軌道衛(wèi)星的信號后,經(jīng)過解調(diào)輸出的,是標準格式的GPS定位數(shù)據(jù),該數(shù)據(jù)必須經(jīng)過進一步處理,才能在用戶數(shù)據(jù)終端上顯示?;?a class="contentlabel" href="http://m.butianyuan.cn/news/listbylabel/label/單片機">單片機的GPS信息處理硬件結(jié)構(gòu)框圖如圖1所示。
1 GPS接收機輸出數(shù)據(jù)格式
NMEA-0183是美國國家海洋電子協(xié)會制定的用于航海儀器數(shù)據(jù)異步通信的通用接口標準,他是由ASCII字符組成的字符串。GPS接收機以NMEA-0183標準格式輸出GPS定位數(shù)據(jù),數(shù)據(jù)終端設備需要實時從GPS輸出的NMEA0183數(shù)據(jù)流中得到位置信息、時間信息。GPS接收機提供了多種語句格式,有GPGGA,GPGSA,GPGSV,GPRMC,GPZDA和GPGLL等。用戶可以根據(jù)需要選擇一種或多種語句輸出。本系統(tǒng)選擇接收并解析GPGLL和GPZDA,分別獲取地理位置信息和UTC時間信息(含日期),UTC時間通過時差修正得到本地時間信息。
NMEA0183語句包含多個數(shù)據(jù)項,數(shù)據(jù)項之間以逗號分隔,語句以回車(CR)和換行(LF)符結(jié)尾。
GPZDA語句格式如下:
上述語句中,各數(shù)據(jù)項的意義如下:
?、僬Z句類型:$GPZDA;②UTC時間:14523.62;③UTC日:01~31;④UTC月:01~12;⑤UTC:年2001;⑥本地時差:10時;⑦本地時差:34分;⑧校驗和:6E。其中校驗和包括$符。
GPGLL語句格式如下:
上述語句中,各數(shù)據(jù)項的意義如下:
?、僬Z句類型:$GPGLL;②緯度值;③北緯;④經(jīng)度值;⑤西經(jīng);⑥UTC時間,時時分分秒秒.秒秒秒格式;⑦狀態(tài),A=定位,V=未定位;⑧校驗和:2C。其中校驗和包括$符。
接收上述GPS信息由AT89C2051單片機的UART完成。GPGLL為55個字符,GPZDA為38個字符??紤]到單片機內(nèi)部RAM單元有限,為適應GPS同時輸出的數(shù)據(jù)句型比較多,數(shù)據(jù)量比較大的情況,因此,需要對句型進行選擇性接收。
{{分頁}}
2 主程序設計
主程序主要包括以下幾個部分:初始化、接收GPS數(shù)據(jù)、GPS信息處理、超時處理判斷等。GPS數(shù)據(jù)采用中斷方式接收,數(shù)據(jù)處理由獨立子程序完成,主要包括時間、位置信息的提取。數(shù)據(jù)接收處理完畢后,傳送到LCD顯示。超時判斷時間間隔設定與GPS數(shù)據(jù)更新速度匹配即可,其目的是保證GPS提供的位置、時聞信息與用戶的可視信息同步。主程序流程圖如圖2所示。
GPS接收機通常采用RS 232C/RS 485/422標準:傳輸速率可以設定,有4 800 b/s等,數(shù)據(jù)位:8 b,停止位:1 b。
對于AT89C2051單片機,選擇定時器1作為波特率發(fā)生器,波特率取決于溢出速率。波特率計算公式如下:
系統(tǒng)時鐘取11.059 2 MHz,則對于波特率4 800 b/s,定時器1重載值為FAH。
3 數(shù)據(jù)處理子程序設計
接收緩沖區(qū)存儲的內(nèi)容是ASCII碼(字符),因此在處理成數(shù)據(jù)的時候要進行轉(zhuǎn)換。
對于時間數(shù)據(jù),處理成壓縮BCD格式,如對于以下的GPZDA信息:
$GPZDA,114523,18,11,2006,10,34*6E
經(jīng)處理后,得到如下信息:11 H(時),45 H(分),23 H(秒),18 H(日),11 H(月),20 H(世紀)-06 H(年代),10 H(時差)。
GPS數(shù)據(jù)處理子程序首先將接收的時間數(shù)據(jù)轉(zhuǎn)換為上述BCD數(shù)據(jù)。根據(jù)GPZDA得到UTC時間和本地時差后,可以修正為本地時間輸出。時間修正要考慮到進位和借位問題。在程序設計過程中閏年、大月小月需要分別處理。
{{分頁}}
帶時差修正的GPS信息處理流程圖如圖3所示。圖中,Hour表示UTC時,Min表示UTC分,Sec表示UTC秒,Day表示UTC日,Mon表示UTC月,YearH表示UTC世紀,YearL表示UTC年代;D_Hour和D_Min表示時差的時和分。
常用GPS接收機輸出NMEA0183數(shù)據(jù)有V2.1,V2.0和V1.5三種版本,其中V2.1版本時差修正到分鐘,而V2.0和V1.5只到小時。為滿足程序通用,在實際信息解析時以V2.1為準,當接收的信息為V2.0和V1.5時,只需將上述程序中D_min置為0即可。
4 結(jié)語
GPS信息處理系統(tǒng)解決了GPS標準數(shù)據(jù)式的解讀、信息的提取、轉(zhuǎn)換和顯示問題。另外,他具有時差修正功能,便于全球各地用戶使用。以AT89C2051單片機為控制核心,LCD和鍵盤作為人機界面,以較低的成本滿足了用戶的一般需求。目前,該系統(tǒng)已在船用導航系統(tǒng)中得到了成功應用。
單片機相關(guān)文章:單片機教程
單片機相關(guān)文章:單片機視頻教程
單片機相關(guān)文章:單片機工作原理
負離子發(fā)生器相關(guān)文章:負離子發(fā)生器原理 離子色譜儀相關(guān)文章:離子色譜儀原理
評論