摘 要:介紹以51單片機(jī)為處理器的應(yīng)用系統(tǒng)在編程時(shí)的內(nèi)存使用區(qū)劃分和GPS定位信息流的數(shù)據(jù)格式。說明GPS15L型接收模塊的數(shù)據(jù)線應(yīng)用情況。針對(duì)51單片機(jī)的內(nèi)存較小和GPS 導(dǎo)航數(shù)據(jù)流較大的矛盾,提出使用51單片機(jī)接收GPS數(shù)據(jù)的一種壓縮算法,并給出軟件設(shè)計(jì)流程圖,最后以51匯編語言為例給出實(shí)際接收GPS 數(shù)據(jù)的部分程序的具體實(shí)現(xiàn)方法。
關(guān)鍵詞:51單片機(jī);數(shù)據(jù)格式;GPS數(shù)據(jù);數(shù)據(jù)壓縮
中圖分類號(hào):TP368.1文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004373X(2008)2205003
Algorithm and Implementation Based on the MCU-51 Receiving GPS Data
YANG Yong,DU Wenlong
(Huaian College of Information Technology,Huaian,223003,China)
Abstract:The application system based on processor MCU-51 is introduced.The system programming memory uses data formats of the division and GPS positioning information flow.The data line application of GPS15L receiver module is noted.Because of the small memory of MCU-51 and the great navigation data of GPS,a kind of compression algorithm based on the MCU-51 receiving GPS data is introduced.The flow chart of software design is given.The specific method of the part process for GPS receiving data based on 51 language is given.
Keywords:MCU-51;data format;GPS data;data compression
1 小內(nèi)存單片機(jī)的內(nèi)存
51系列的單片機(jī)只有128 B的內(nèi)存,分為:寄存器區(qū)(00H~1FH)32個(gè)字節(jié)、位尋址區(qū)(20H~2FH)16個(gè)字節(jié)、數(shù)據(jù)緩沖區(qū)(30H~7FH)80個(gè)字節(jié)。能否充分高效地使用這有限的寶貴資源是衡量一個(gè)單片機(jī)技術(shù)人員水平高低的尺度之一。在應(yīng)用51系列單片機(jī)開發(fā)項(xiàng)目時(shí),程序設(shè)計(jì)人員經(jīng)常在數(shù)據(jù)緩沖區(qū)暫存數(shù)據(jù)運(yùn)算的結(jié)果或中間結(jié)果,位尋址區(qū)用作定義一些變量或標(biāo)志等,寄存器區(qū)作為參與程序運(yùn)算數(shù)據(jù)的寄存單元來使用。
2 GPS定位信息
GPS接收機(jī)只要處于工作狀態(tài)就會(huì)源源不斷地把接收并計(jì)算出的GPS導(dǎo)航定位信息通過串口傳送單片機(jī)中,在沒有進(jìn)一步處理之前,傳送的數(shù)據(jù)是一長串字節(jié)流信息。因此必須經(jīng)過程序?qū)⑵滢D(zhuǎn)化為有實(shí)際意義的;可供高層決策使用的定位信息數(shù)據(jù)。與其他通信協(xié)議類似,GPS進(jìn)行信息提取,必須明確其幀結(jié)構(gòu),然后才能根據(jù)其結(jié)構(gòu)完成對(duì)各個(gè)定位信息的提取。對(duì)本文以使用的GARMIN GPS 接收機(jī)為例,其發(fā)送到單片機(jī)的數(shù)據(jù)主要由幀頭,幀尾和幀內(nèi)數(shù)據(jù)組成。根據(jù)數(shù)據(jù)幀的不同,幀頭也不相同,主要有“#GPGGA”,“$GPGSA”,“$GPRMC”等。這些幀頭標(biāo)識(shí)了后續(xù)幀內(nèi)數(shù)據(jù)的組成結(jié)構(gòu),各幀均以回車符和換行符作為幀尾標(biāo)識(shí)一幀的結(jié)束。對(duì)于通常的情況,大家所關(guān)心的定位數(shù)據(jù)如經(jīng)緯度、速度、時(shí)間、航向等均以“$GPRMC”中獲取得到。該幀的結(jié)構(gòu)及各字段釋義如下:
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh
其中:
<1>為UTC時(shí)間,hhmmss(時(shí)分秒)格式;
<2>為定位狀態(tài),A=有效定位,V=無效定位;
<3>為緯度ddmm.mmmm(度分)格式;
<4>為緯度半球N北半球或S南半球;
<5>為經(jīng)度dddmm.mmmm(度分)格式;
<6>為經(jīng)度半球E東經(jīng)或W西經(jīng);
<7>為地面速度(000.0~999.9節(jié));
<8>為地面航向(000.0~359.9°),以真北為參考標(biāo)準(zhǔn);
<9>為UTC日期,ddmmyy(日月年)格式;
<10>為磁偏角(000.0~180.0°),磁偏方向,E(東)或W(西)模式指示;
<11>為校驗(yàn)和;
<12>為結(jié)束標(biāo)志。
GPS模塊是以 GPS15L為例。GPS15L接口特性是CMOS電平,波特率固定為4 800 b/s。其接口線共有6根,分別說明如下:
白線:備用電源輸入線;
黑線:接地線;
紅線:電源線;
黃線:數(shù)據(jù)輸出線接單片機(jī)的RXD;
藍(lán)線:數(shù)據(jù)輸入線;
桔色線:天線外部電源線。
用51系列單片機(jī)接收GPS15L的數(shù)據(jù)一般只用到3根線即黑線、紅線和黃線。
3 51單片機(jī)內(nèi)存小與GPS定位信息長的矛盾
嵌入式GPS車載系統(tǒng)的使用者只關(guān)心其日期和時(shí)間、糾度、面速度信息,因而可以只選用$GPRMC記錄語句。一條$GPRMC語句包括13個(gè)記錄:語句標(biāo)識(shí)頭、世界時(shí)間、定位狀態(tài)、緯度、緯度方位、經(jīng)度、經(jīng)度方位、地面速度、地面路線、日期、磁偏角、校驗(yàn)和和結(jié)束標(biāo)記,它一共占用70個(gè)字節(jié)(其中包括用于分隔記錄所使用的13個(gè)逗號(hào)),例如:$GPRMC,121530,A,0033.4304,N,00118.2030,E,029.1,240.8,050712,120.4,E,A,由此可見,從GPS15 OEM板接收下來的數(shù)據(jù)流文本字符串,如果全部直接由51單片機(jī)的內(nèi)存緩沖區(qū)80個(gè)字節(jié)來接收,一次就占用70個(gè)字節(jié),對(duì)單片機(jī)設(shè)計(jì)人員來說剩余的緩沖區(qū)空間根本就無法再用作其他的安排。
4 GPS接收程序的設(shè)計(jì)與算法
仔細(xì)觀察以上段中的GPS數(shù)據(jù)記錄,可以發(fā)現(xiàn)語句之間的數(shù)據(jù)段還存在很多冗余位。除此之外,這些記錄中所含的信息既有英文字符又有數(shù)字,為了后續(xù)的壓縮,把GPS數(shù)據(jù)分為10段:對(duì)語句中的各個(gè)記錄應(yīng)做如下的處理
‖$GPRMC,‖121530,‖A,‖0033.4304,‖N,‖00118.2030,‖E,‖029.1,‖240.8,‖050712,120.4,E,A,‖
(1) 語句標(biāo)識(shí)頭(ID)$GPRMC,:占用7個(gè)字節(jié),因?yàn)槊總€(gè)語句的標(biāo)識(shí)頭都一樣,所以該記錄段屬冗余信息,完全可以去除,可去掉7個(gè)字節(jié),在程序中具體處理時(shí)可先預(yù)置$GPRMC,標(biāo)識(shí)頭與接收的GPS信息進(jìn)行同步信號(hào)檢測處理。
(2) 世界時(shí)間(UTC):占用7個(gè)字節(jié),該信息段以時(shí)、分、秒的格式指示出當(dāng)時(shí)世界時(shí)間。轉(zhuǎn)換為北京時(shí)間還需要再加上8小時(shí)。末尾的“,”是冗余位可去掉。
(3) 定位狀態(tài)(A/V):占用2個(gè)字節(jié),不進(jìn)行處理。其與其他信息一起傳到控制中心,由此可判斷GPS信息定位成功與否。末尾的“,”是冗位可去掉。
(4) 緯度:占用10個(gè)字節(jié),進(jìn)行預(yù)處理時(shí)中間的“.”和末尾的“,”是冗余位??扇サ?個(gè)字節(jié)。
(5) 經(jīng)度指示器(E/W):占2個(gè)字節(jié),它指示出經(jīng)度是東經(jīng),還是西經(jīng)。由于各個(gè)$GPRMC語句中的該段信息在中國都是東徑,它是冗余信息,可去掉。
(6) 緯度:占用11個(gè)字節(jié),進(jìn)行預(yù)處理時(shí)中間的“.” 和末尾的“,”是冗余位??扇サ?個(gè)字節(jié)。
(7) 緯度指示器(N/S):占2個(gè)字節(jié),各個(gè)$GPRMC語句中的該段信息完全一樣,是冗余信息,處理方法與上相同。
(8) 地面速度:占用6個(gè)字節(jié),進(jìn)行預(yù)處理時(shí)中間的“.” 和末尾的“,”是冗余信息??扇サ?個(gè)字節(jié)。
(9) 地面航向:占用6個(gè)字節(jié),進(jìn)行預(yù)處理時(shí)中間的“.” 和末尾的“,”是冗余信息??扇サ?個(gè)字節(jié)。
(10) 其他記錄段與本系統(tǒng)的設(shè)計(jì)無關(guān)都不保留和進(jìn)行壓縮??扇サ?7個(gè)字節(jié)。
通過以上壓縮預(yù)處理后,保留的數(shù)據(jù),共占用32個(gè)字節(jié),壓縮掉38個(gè)字節(jié)。這其中把GPS數(shù)據(jù)格式段中的“,”,和“.”兩個(gè)符號(hào)去掉非常重要,其他的冗余位可以通過接收不存儲(chǔ)的方法去掉。為了直觀可先設(shè)計(jì)2個(gè)子程序,分別是單片機(jī)的單字節(jié)串行口接收的子程序和接收GPS數(shù)據(jù)流中的一段如時(shí)間、經(jīng)度、緯度等并去掉GPS數(shù)據(jù)串中間的“,”和“.”兩個(gè)符號(hào)的子程序。單片機(jī)串行口單字節(jié)接收子程序設(shè)計(jì)框圖如圖1所示。去掉GPS數(shù)據(jù)流中間的“,”,“、”子程序如圖2所示。單片機(jī)接收GPS數(shù)據(jù)的壓縮程序設(shè)計(jì)框圖如圖3所示。
GPS的數(shù)據(jù)串行口接收程序中不允許中斷,如單字節(jié)接收子程序命名為“RECEIVE1”,接收GPS數(shù)據(jù)段并壓縮掉該數(shù)據(jù)段中間的“,”,“.”的子程序命名為RECEIVE2,GPS數(shù)據(jù)流接收的程序?yàn)镚PSRECEIVE。
在程序中定義:
GPRMC:DB 6
DB “GPRMC,”為GPS數(shù)據(jù)同步識(shí)別標(biāo)志。
以51匯編語言編寫的程序代碼如下所示:
GPSRECEIVE: MOV DPTR,#GPRMC
…;同步識(shí)別處理
ACALL RECEIVE2;接收時(shí)間
…;北京時(shí)間調(diào)整
MOVR0,#30H;數(shù)據(jù)存放的起始地址
ACALL RECEIVE2;接收定位成功與否信息A或V
ACALL RECEIVE2;接收經(jīng)度信息
ACALL RECEIVE1;接收不存儲(chǔ)去掉“E”
ACALL RECEIVE1;接收不存儲(chǔ)去掉“,”
ACALL RECEIVE2;接收緯度信息
ACALL RECEIVE1;接收不存儲(chǔ)去掉“S”
ACALL RECEIVE1;接收不存儲(chǔ)去掉“,”
ACALLRECEIVE2;接收速度信息
ACALL RECEIVE2;接收航向信息
…;
該壓縮方在車載系統(tǒng)中使用不僅能節(jié)省存儲(chǔ)空間,而且能減少信道占有時(shí)間及提高數(shù)據(jù)的安全性。由于壓縮程序是針對(duì)GPS數(shù)據(jù)格式編寫的,因此其壓縮比大但通用性不強(qiáng)。盡管如此,該程序略做修改可移植到其他系統(tǒng)中,因?yàn)楦鱾€(gè)GPS廠家所執(zhí)行的規(guī)范標(biāo)準(zhǔn)都是NMEA-0183輸出語句,其數(shù)據(jù)的輸出格式略有差別。
參考文獻(xiàn)
[1]劉大杰,施一民,過靜君.全球定位系統(tǒng)(GPS)的原理與數(shù)據(jù)處理[M].上海:同濟(jì)大學(xué)出版社,1996.
[2]魏守明,周生輝.GPS數(shù)據(jù)在出租車集群調(diào)度系統(tǒng)中的傳輸方案[J].電子技術(shù),2002,29(5):29-31.
[3]楊宏業(yè),張躍.GPS定位數(shù)據(jù)壓縮算法的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2002,28(12):29-32.
[4]長青,柳重提.GPS定位與測速算法研究\\.北京航空航天大學(xué)學(xué)報(bào),1998,24(5):510-513.
[5]劉基余等.全球定位系統(tǒng)原理及應(yīng)用[M].北京:測繪出版社,1993.
[6]袁玫,袁文.數(shù)據(jù)壓縮技術(shù)及應(yīng)用[M].北京:電子工業(yè)出版社,1995.
[7]吳樂南.數(shù)據(jù)壓縮的原理及應(yīng)用[M].北京:電子工業(yè)出版社,1995.
作者簡介 楊 永 男,1973年出生,工學(xué)碩士,講師,電子信息教研室主任。研究方向?yàn)樾盘?hào)與信息處理。
杜文龍 男,1973年出生,工學(xué)碩士,講師,通信教研室主任。研究方向?yàn)橥ㄐ殴こ獭?/p>