基于單片機的GPS/電子羅盤(pán)測姿定位系統
2.2 串行通信接口電路
在信息傳輸模塊中,由丁C8051F021引腳的信號電平為T(mén)TL類(lèi)型,而上位機串口的異步串行通信是基于RS232標準的,兩者通信信號的邏輯電平不一致,必須進(jìn)行信號電平轉換。而MAX3232芯片能直接將單片機輸出的TTL電平轉換成上位機能接收的RS232電平,或將PC機輸出的RS232電平轉換成單片機能接收的TTL電平,故采用MAX3232來(lái)實(shí)現其中的電平轉換,從而實(shí)現系統的串行通信。本系統的串行通信硬件結構框圖如圖3所示。
3 系統軟件設計
系統的軟件實(shí)現采用C語(yǔ)言,C語(yǔ)言具有功能豐富的標準函數庫,具有運算速度快和可移植性強等特點(diǎn)。用C語(yǔ)言來(lái)編寫(xiě)軟件會(huì )大大縮短開(kāi)發(fā)周期,增強軟件的可讀性,便于改進(jìn)和擴充。
對于串口的數據處理有兩種方法:一種是查詢(xún)的方法,另一種是中斷的方法。查詢(xún)的方法是不斷地檢測接收和發(fā)送標志位,當查詢(xún)到有數據進(jìn)入到SBUF時(shí)對SBUF數據進(jìn)行判斷,是否為所需的數據,如果是則存儲到數據寄存器中。由于查詢(xún)方法在編寫(xiě)程序時(shí)比較復雜,需要反復地查詢(xún)標志位,但是相較于其他算法對于實(shí)現循環(huán)比較簡(jiǎn)單。本系統對串口接收和發(fā)送的數據采用的是查詢(xún)的方法。
單片機信息處理流程如圖4所示。首先,待單片機初始化后,開(kāi)啟中斷0,關(guān)閉中斷1,開(kāi)始通過(guò)串口0接收電子羅盤(pán)信息。電子羅盤(pán)HMR33 00更新頻率為8 Hz,即每秒最多可更新8次。為了保證其穩定輸出,每秒鐘提取4次電子羅盤(pán)信息。然后,以判斷回車(chē)來(lái)表示接收完一次羅盤(pán)信息,即hmr[i]=10。待接收完畢后,開(kāi)啟中斷1,關(guān)閉中斷0,通過(guò)串口1接收GPS定位信息。iTrax03-02更新速率為1fix/s。提取定位信息時(shí),每秒鐘提取一次GPS信息。接收到一條完整的語(yǔ)句后將其放入GPS數據存儲區。同樣地,我們以判斷回車(chē)來(lái)表示接收完一次GPS信息,即gps[i]=10。
GPS信息接收完畢后,再開(kāi)啟中斷0,關(guān)閉中斷1,接收電子羅盤(pán)信息。同時(shí),將采集到的姿態(tài)和定位信息通過(guò)串口0傳送給MAX3232后,不斷發(fā)送給上位機。在中斷0中接收電子羅盤(pán)的數據時(shí),需要提取的是其航向、俯仰和滾動(dòng)信息,應判定接收到的數據是否為起始標志位,若是則開(kāi)始采集數據,讀取第二位數,進(jìn)行采集的同時(shí)保存數據;如不是,則繼續判定。
由于采用的是非定長(cháng)通信,因此,在采集數據的同時(shí)還要判定當前位是否為結束標志位,若是則進(jìn)行CRC校驗。若正確則對得到的數據進(jìn)行HPR分離;若否則開(kāi)始新的采集。同樣,在中斷1中應在接收有效后,判斷是否接收到GGA語(yǔ)句,若是再進(jìn)行分析處理。也可直接發(fā)送指令給GPS接收機,使GPS接收機只輸出所需要的語(yǔ)句信息。同樣的操作也適用于電子羅盤(pán)HMR3300。
4 實(shí)驗驗證
為了驗證所設計系統的正確性和有效性,筆者進(jìn)行了地面跑車(chē)實(shí)驗。將該系統固定于汽車(chē)內,實(shí)驗過(guò)程中可見(jiàn)衛星數為11顆,可用衛星為7顆。實(shí)驗后,將采集到的數據運用MATLAB軟件進(jìn)行數據處理并對結果進(jìn)行了分析。跑車(chē)實(shí)驗數據分析如圖5所示。結論如下:
評論