張偉
(江蘇科技大學(xué)(張家港校區(qū)),江蘇張家港 215600)
51單片機(jī)接收GPS數(shù)據(jù)的算法與實現(xiàn)
張偉
(江蘇科技大學(xué)(張家港校區(qū)),江蘇張家港215600)
本文研究的對象為處理器為51單片機(jī)的應(yīng)用系統(tǒng),研究的主要內(nèi)容為應(yīng)用系統(tǒng)在編程的過程中的內(nèi)存使用區(qū)劃分、GPS定位信息流數(shù)據(jù)格式兩方面。在應(yīng)用系統(tǒng)在使用的過程中,51單片機(jī)具有內(nèi)存較小的特點,而GPS導(dǎo)航具有數(shù)據(jù)流較大的特點,兩者之間存在著較大的矛盾。為了解決這一矛盾,本文提出了51單片機(jī)接收GPS數(shù)據(jù)的壓縮算法。
51單片機(jī)GPS數(shù)據(jù)數(shù)據(jù)壓縮
在嵌入式的GPS車載系統(tǒng)的處理器一般情況下采用51單片機(jī),但是這種處理器具有內(nèi)存較小的特點,其內(nèi)存僅為128B,而GPS定位信息數(shù)量流具有較大的特點。51單片機(jī)內(nèi)存與GPS定位信息之間存在著嚴(yán)重的矛盾,本文針對這對矛盾提出了GPS數(shù)據(jù)的壓縮算法,更好地解決了51單片機(jī)在應(yīng)用過程中內(nèi)存較小的問題。
51單片機(jī)具有內(nèi)存較小的特點,其內(nèi)存僅為128B,其中寄存器區(qū)為32個字節(jié)、數(shù)據(jù)緩沖區(qū)為80個字節(jié)、位尋址區(qū)為16個字節(jié)[1]。在對單片機(jī)技術(shù)人員的技術(shù)水平進(jìn)行衡量的過程中,單片機(jī)內(nèi)存寶貴資源的利用率是其重要的衡量標(biāo)準(zhǔn)之一。如果項目開發(fā)過程中應(yīng)用了51單片機(jī),那么程序設(shè)計人員在內(nèi)存資源利用的過程中,寄存器區(qū)的主要功能為參與程序運(yùn)算數(shù)據(jù)寄存單元,數(shù)據(jù)緩沖區(qū)的主要功能為對數(shù)據(jù)運(yùn)算結(jié)果或中間結(jié)果進(jìn)行緩存,位尋址去的主要功能為變量或標(biāo)志的定義。
GPS接收機(jī)在工作狀態(tài)中會不間斷地進(jìn)行GPS導(dǎo)航定位信息的傳輸,通過串口將這些信息傳輸?shù)絾纹瑱C(jī)中。如果沒有對這些GPS導(dǎo)航定位信息進(jìn)行處理,那么這些數(shù)據(jù)將是一長串字節(jié)流信息。因此,必須要通過一定的程序?qū)PS導(dǎo)航定位信息進(jìn)行轉(zhuǎn)化,使其具有實際意義并能夠為高層決策提供依據(jù)。GPS在進(jìn)行信息提取的過程中與其他的通信協(xié)議類似,首先要對幀結(jié)構(gòu)進(jìn)行明確,之后依據(jù)結(jié)構(gòu)進(jìn)行定位信息的提取。
嵌入式的GPS車載系統(tǒng)的使用者關(guān)注的主要內(nèi)容包括日期、時間、糾度、面速度等,因此GPS系統(tǒng)可以采用$GPRMC記錄語言。這種語言所包含的字節(jié)為70個,主要的內(nèi)容包括語句標(biāo)識頭、世界時間、定位狀態(tài)、緯度、緯度方位、經(jīng)度、經(jīng)度方位、地面速度、地面路線、日期、磁偏角、校驗和和結(jié)束標(biāo)記[2]。如果試用51單片機(jī)作為接收器,單片機(jī)內(nèi)存緩沖區(qū)需要花費(fèi)70個字節(jié),導(dǎo)致數(shù)據(jù)緩沖區(qū)的80個字節(jié)所剩無幾,根本不能夠用作他途。
通過對GPS數(shù)據(jù)記錄進(jìn)行分析發(fā)現(xiàn),語句之間的數(shù)據(jù)段中存在著較多的冗余位[3]。此外,數(shù)據(jù)記錄中包含數(shù)字、英文字符多種形式,因此將GPS數(shù)據(jù)進(jìn)行劃分,為之后的壓縮工作奠定基礎(chǔ)。例如:
$GPRMC,(UTC時間) 12153,(UTC時間) A,(定位狀態(tài)) 0033.4304,(緯度) N,(緯度半球) 00118.2030,(經(jīng)度) E,(經(jīng)度半球) 029.8,(地面速度) 240.8,(地面航向) 050712,(UTC日期) 120.E,(磁偏角)A,(校驗和)。
第一,在語句標(biāo)識頭$GPRMC,的處理過程中,由于所有語句的標(biāo)識頭都是相同的,可以將這7個字節(jié)作為冗余信息進(jìn)行去除,從而節(jié)約7個字節(jié)的位置。在程序處理的過程中,可以對$GPRMC,進(jìn)行預(yù)置,實現(xiàn)標(biāo)識頭與GPS信息的同步信號監(jiān)測處理。第二,UTC時間同樣占用7個字節(jié),通過時分秒的格式對世界時間進(jìn)行指示,在加上8小時之后轉(zhuǎn)換為背景時間[4]。在UTC時間中可以將“,”視為冗余位進(jìn)行去除。第三,定位狀態(tài)占用2個字節(jié),依據(jù)定位狀態(tài)對GPS信息定位的成功與否進(jìn)行判斷,定位狀態(tài)中可以將“,”視為冗余位進(jìn)行去除。第四,緯度占用10個字節(jié),可以將“.”、“,”視為冗余位進(jìn)行去除。第五,緯度指示器占用2個字節(jié),其作用是對東西經(jīng)進(jìn)行指示,所有的$GPRMC,中的該信息段都位于東經(jīng),因此可以將其視為冗余位進(jìn)行去除。第六,緯度占用11個字節(jié),可以將“.”、“,”視為冗余位進(jìn)行去除。第七,緯度指示器占用2個字節(jié),所有的$GPRMC,語句中該段信息都相同,可以將其視為冗余信息進(jìn)行去除。第八,地面速度占用6個字節(jié),可以將“.”、“,”視為冗余位進(jìn)行去除。第九,地面航向占用6個字節(jié),可以將“.”、“,”視為冗余位進(jìn)行去除。第十,其他記錄段中所有無關(guān)的都可以進(jìn)行保留,能夠去除17個字節(jié)。
通過壓縮與處理之后,共去除掉38個字節(jié),剩余的字節(jié)數(shù)為32個。在壓縮與處理的過程中最為重要的就是“.”與“,”符號的去除,其他的冗余為可以通過接受不存儲的方法進(jìn)行去掉[5]。為了實現(xiàn)直觀的效果,可以進(jìn)行單片機(jī)的單字節(jié)串行口接收的子程序和接收GPS數(shù)據(jù)流中的一段如時間、經(jīng)度、緯度等并去掉GPS數(shù)據(jù)串中間的“,”和“.”兩個符號的子程序的設(shè)置。
通過對GPS數(shù)據(jù)流的壓縮與處理,能夠?qū)崿F(xiàn)GPS車載系統(tǒng)中51單片機(jī)處理器存儲空間的節(jié)省,還具有信道占用時間降低、數(shù)據(jù)安全性提高等特點。本文提出的壓縮程序針對的對象為GPS數(shù)據(jù)格式,因此該壓縮程序具有壓縮比較大、通用性較差的特點。在將該程序移植到其他系統(tǒng)中時,需要對其進(jìn)行一定的修改。各個GPS廠家執(zhí)行的規(guī)范標(biāo)準(zhǔn)都是NMEA-0183輸出語句,這就為改壓縮程序的通用奠定了基礎(chǔ),而進(jìn)行修改的主要原因為數(shù)據(jù)輸出格式具有差別。
[1]王波,冬梅,劉東.基于ATMEGA644P單片機(jī)的GPS數(shù)據(jù)記錄器[J].電子世界,2014(43):5-6.
[2]劉曉,伍小東,姚軍光,魏權(quán)利.基于單片機(jī)采集GPS數(shù)據(jù)系統(tǒng)的設(shè)計[J].青島科技大學(xué)學(xué)報(自然科學(xué)版),201 1(65):172-175.
[3]郭耀華.基于單片機(jī)的GPS數(shù)據(jù)采集與傳輸系統(tǒng)的設(shè)計與實現(xiàn)[J].山東工業(yè)技術(shù),2013(64):48-49.
[4]董作民,姜木霖,陳曉青,段潤雪.MCS-51單片機(jī)與GPS-OEM板數(shù)據(jù)通訊的研究與應(yīng)用[J].湖北汽車工業(yè)學(xué)院學(xué)報,2010(25):37-41.
[5]魏守明,周生輝.GPS數(shù)據(jù)在出租車集群調(diào)度系統(tǒng)中的傳輸方案[J].電子技術(shù),2012(5):29-31.
張偉(1994—),江蘇南通人,江蘇科技大學(xué)(張家港校區(qū))學(xué)生,電氣工程及其自動化專業(yè)。