低成本的STC單片機(jī)的導(dǎo)航授時(shí)系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:針對(duì)國(guó)內(nèi)導(dǎo)航系統(tǒng)與授時(shí)系統(tǒng)的發(fā)展現(xiàn)狀,將兩個(gè)系統(tǒng)合理地結(jié)合在一起并以STC12C5A單片機(jī)作為整個(gè)系統(tǒng)控制單元,設(shè)計(jì)出的導(dǎo)航授時(shí)服務(wù)系統(tǒng)成本低、功耗低。給出了系統(tǒng)的硬件設(shè)計(jì)和軟件流程,同時(shí)介紹了上位機(jī)軟件的模塊化設(shè)計(jì)思想。經(jīng)過(guò)測(cè)試,該系統(tǒng)可以在戶(hù)外或室內(nèi)對(duì)運(yùn)動(dòng)的載體實(shí)行導(dǎo)航定位,當(dāng)系統(tǒng)結(jié)合計(jì)算機(jī)運(yùn)行時(shí)能對(duì)計(jì)算機(jī)進(jìn)行授時(shí)。
關(guān)鍵詞:STC12C5A;導(dǎo)航系統(tǒng);授時(shí)系統(tǒng)
引言
嵌入式系統(tǒng)從20世紀(jì)孤立的單片機(jī)時(shí)代過(guò)渡到單片機(jī)與多科學(xué)融合時(shí)代,再到如今的嵌入式物聯(lián)網(wǎng)時(shí)代,使得嵌入式系統(tǒng)再次遇到了新的機(jī)遇。GPS(Global Position System,全球?qū)Ш较到y(tǒng))時(shí)空參數(shù)是物聯(lián)網(wǎng)時(shí)代國(guó)家公證的工程建設(shè),它為航空航海、科學(xué)勘探、地理測(cè)量、運(yùn)輸行業(yè)、通信行業(yè)提供了精確的導(dǎo)航、指揮、監(jiān)控、授時(shí)等服務(wù)。本文充分結(jié)合STC單片機(jī)和Trimble公司的接收機(jī)設(shè)計(jì)出了導(dǎo)航授時(shí)系統(tǒng)。系統(tǒng)能實(shí)時(shí)給出運(yùn)動(dòng)載體的位置和速度等信息,并能同步接收衛(wèi)星時(shí)間。
系統(tǒng)主要具有導(dǎo)航和授時(shí)兩大功能。系統(tǒng)最大的優(yōu)點(diǎn)是在戶(hù)外可以通過(guò)液晶屏顯示導(dǎo)航信息和時(shí)間信息,在室內(nèi)通過(guò)上位機(jī)人機(jī)交互界面顯示衛(wèi)星時(shí)間和運(yùn)動(dòng)物體的經(jīng)度、緯度、海拔等導(dǎo)航信息。系統(tǒng)克服了常用導(dǎo)航儀的繁瑣設(shè)計(jì)、功能單一、成本利用高等缺點(diǎn),在此基礎(chǔ)上設(shè)計(jì)出了一款簡(jiǎn)易、性?xún)r(jià)比高、應(yīng)用普遍、易于擴(kuò)展的導(dǎo)航系統(tǒng)。這為常用的導(dǎo)航和授時(shí)服務(wù)提供了很大的幫助。
1 系統(tǒng)硬件設(shè)計(jì)
1.1 設(shè)計(jì)思路
首先,GPS模塊定時(shí)發(fā)送GPS導(dǎo)航數(shù)據(jù)和衛(wèi)星時(shí)間到STC單片機(jī),然后STC單片機(jī)對(duì)GPS導(dǎo)航數(shù)據(jù)進(jìn)行處理并把數(shù)據(jù)發(fā)送給LCD液晶顯示屏或PC機(jī),導(dǎo)航授時(shí)系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
系統(tǒng)的核心是GPS導(dǎo)航模塊,處理器是宏晶科技公司推出的STC12C5A單片機(jī)。GPS導(dǎo)航模塊采用Trimble公司的Sierra GPS芯片接收衛(wèi)星導(dǎo)航信息和授時(shí)服務(wù)。Sierra芯片采用了Trimble公司獨(dú)有的GPS算法來(lái)確保導(dǎo)航數(shù)據(jù)的準(zhǔn)確性和衛(wèi)星信號(hào)的快速鎖定。它還能夠有效地解決城市應(yīng)用中經(jīng)常出現(xiàn)的信號(hào)遮擋、多路徑和射頻干擾問(wèn)題。STC12C5A是增強(qiáng)型8051內(nèi)核具有超低功耗和超強(qiáng)抗十?dāng)_的特性,為GPS導(dǎo)航系統(tǒng)在戶(hù)外勘測(cè)和野外監(jiān)測(cè)提供了很大的方便。本系統(tǒng)控制器件并不復(fù)雜,也不需要很大的存儲(chǔ)空間,STC12C5A可以控制整個(gè)系統(tǒng)節(jié)省成本。另外,STC12C5A有2個(gè)串口剛好滿(mǎn)足系統(tǒng)需求。LCD液晶顯示選擇的是LMB102DDC顯示屏。該顯示屏小巧、易控制、顯示清楚、成本低,是該系統(tǒng)的最佳選擇。
1.2 硬件原理
圖2為GPS導(dǎo)航電路。GPS導(dǎo)航模塊提供實(shí)時(shí)的三維位置和UTC時(shí)間信息,通過(guò)GPS的串行通信口B發(fā)送數(shù)據(jù)給STC單片機(jī)。GPS導(dǎo)航模塊和ST C單片機(jī)的輸入/輸出電平都是TTL電平,所以串口之間可直接通信。GPS發(fā)送數(shù)據(jù)的波特率有9 600bps、4 800bps、2 400bps可任意選擇。
圖3是STC12C5A與LMB102DDC的接口電路。LMB102DDC內(nèi)核模塊內(nèi)部有一個(gè)指令寄存器和一個(gè)數(shù)據(jù)寄存器,其指令分為皋本指令和擴(kuò)展指令。指令主要用來(lái)初始化液晶顯示屏,實(shí)現(xiàn)基本控制。其中,包括清屏設(shè)置、顯示位置、光標(biāo)狀態(tài)、顯示狀態(tài)、功能沒(méi)置等。LMB102DDC既可以寫(xiě)數(shù)據(jù)到RAM中,又可以從RAM中讀數(shù)據(jù),在此主要是寫(xiě)數(shù)據(jù)到RAM。
當(dāng)導(dǎo)航系統(tǒng)在戶(hù)外工作時(shí),STC單片機(jī)將接收到的導(dǎo)航數(shù)據(jù)和時(shí)間信息進(jìn)行處理,然后將導(dǎo)航的經(jīng)度、緯度、海拔、衛(wèi)星時(shí)間通過(guò)P0口輸出,并顯示在LMB102DDC液晶屏上。當(dāng)導(dǎo)航系統(tǒng)在室內(nèi)工作時(shí),STC單片機(jī)將接收到的導(dǎo)航信息通過(guò)串口完整地發(fā)送到PC機(jī)。PC機(jī)通過(guò)系統(tǒng)的上位機(jī)軟件查看相關(guān)的GPS導(dǎo)航數(shù)據(jù)和時(shí)間信息。由于PC機(jī)的輸入/輸出電平和STC單片機(jī)的輸入/輸出電平不一樣,兩者相互通信時(shí)要加一個(gè)MAX232電平轉(zhuǎn)換電路。室內(nèi)工作不選擇LCD顯示導(dǎo)航信息主要是考慮到節(jié)約成本和保持系統(tǒng)的完整性這兩方面。這也是該導(dǎo)航系統(tǒng)區(qū)別其他導(dǎo)航系統(tǒng)的特色。
導(dǎo)航授時(shí)系統(tǒng)的另外一個(gè)優(yōu)點(diǎn)是能夠通過(guò)上位機(jī)軟件校準(zhǔn)導(dǎo)航系統(tǒng)的相關(guān)信息。利用一組最新的時(shí)間數(shù)據(jù)(年、月、日、時(shí)、分、秒)和軟件系統(tǒng)的工作模式按一定的格式通過(guò)串行通信接口發(fā)送給STC單片機(jī),STC單片機(jī)利用這組數(shù)據(jù)對(duì)錯(cuò)誤的信息進(jìn)行校準(zhǔn)并根據(jù)發(fā)送的設(shè)置更改工作模式,上位機(jī)發(fā)送設(shè)置如圖4所示。
2 系統(tǒng)軟件設(shè)計(jì)
2.1 設(shè)計(jì)流程
軟件沒(méi)計(jì)是系統(tǒng)的控制中心。系統(tǒng)使用C語(yǔ)言在Keil uVision4編譯器中編寫(xiě)STC單片機(jī)程序。程序主要包括接收GPS數(shù)據(jù)、處理GPS數(shù)據(jù)、顯示控制等。主程序流程如圖5所示。
2.2 控制程序
STC12C5A通過(guò)串口接收一組完整的GPS數(shù)據(jù)后,通過(guò)控制程序?qū)PS信息作相應(yīng)的處理。處理完后通過(guò)串口發(fā)送給上位機(jī),在整個(gè)過(guò)程中必須同時(shí)打開(kāi)2個(gè)串口。STC12C5A的2個(gè)串口剛好滿(mǎn)足系統(tǒng)要求,而且可以對(duì)它們?cè)O(shè)置不同的波特率。STC12C5A系列的單片機(jī)擴(kuò)展了1 KB的RAM空間,足夠本系統(tǒng)作為暫時(shí)的緩沖器。系統(tǒng)不用保存大量的數(shù)據(jù),雖然串口2一直在接收GPS導(dǎo)航數(shù)據(jù)和授時(shí)數(shù)據(jù),同樣串口1以更高的波特率在向上位機(jī)發(fā)送數(shù)據(jù),最后所有的數(shù)據(jù)都會(huì)通過(guò)上位機(jī)軟件以.txt格式保存在PC機(jī)上??刂瞥绦蛟谠O(shè)置串口中斷優(yōu)先級(jí)時(shí)會(huì)把發(fā)送數(shù)據(jù)的串口中斷設(shè)置成最高優(yōu)先級(jí),優(yōu)先滿(mǎn)足串口發(fā)送。接收GPS數(shù)據(jù)時(shí)每隔1 s接收一次導(dǎo)航信息,這樣不會(huì)影響導(dǎo)航的精度。發(fā)送數(shù)據(jù)的串口波特率設(shè)置成115 200 bps,接收GPS數(shù)據(jù)的串口波特率設(shè)置成9 600 bps,2個(gè)串口的初始化程序代碼如下:
數(shù)據(jù)處理部分主要是判斷GPS發(fā)送給STC單片機(jī)的數(shù)據(jù)是否有效,在數(shù)據(jù)有效時(shí)提取經(jīng)度、緯度、海拔、衛(wèi)星日期、時(shí)間信息保存在字符數(shù)組中。數(shù)據(jù)保存完后確定數(shù)據(jù)是發(fā)送給LCD顯示屏顯示,還是通過(guò)串口發(fā)送給上位機(jī)軟件顯示。顯示模式有LCD顯示和上位機(jī)軟件顯示,默認(rèn)方式是LCD顯示。如果需要上位機(jī)界面為顯示模式時(shí),先通過(guò)上位機(jī)軟件中的“發(fā)送設(shè)置”對(duì)話(huà)框設(shè)置“顯示模式”為1,然后發(fā)送給STC單片機(jī)。
3 上位機(jī)軟件設(shè)計(jì)
整個(gè)上位機(jī)采用結(jié)構(gòu)化和模塊化設(shè)計(jì)方法。上位機(jī)軟件是基于對(duì)話(huà)框的MFC應(yīng)用程序設(shè)計(jì)的,主要有串口通信模塊、導(dǎo)航數(shù)據(jù)和時(shí)間顯示模塊、工作模式設(shè)置模塊、授時(shí)模塊。授時(shí)模塊的作用是讓PC機(jī)時(shí)間與衛(wèi)星同步,確保PC機(jī)時(shí)間的精確度。與系統(tǒng)相連的PC機(jī)可以作為一個(gè)授時(shí)主機(jī)向其他單元發(fā)送時(shí)間。
串口通信模塊的編寫(xiě)是用Microsoft公司提供的串口通信MSComm控件。添加了MSComm控件后,首先要對(duì)控件初始化,然后打開(kāi)串口準(zhǔn)備按位接收字符。串口通信模塊的主要程序代碼如下:
顯示模塊是當(dāng)串口接收到字符后,對(duì)接收的字符進(jìn)行分離并對(duì)應(yīng)顯示在軟件界面上。上位機(jī)軟件顯示效果如圖6所示。
4 測(cè)試結(jié)果
系統(tǒng)經(jīng)過(guò)調(diào)試,最后將導(dǎo)航信息發(fā)送給上位機(jī)軟件,顯示結(jié)果如圖6所示。軟件界面的時(shí)間是從衛(wèi)星中獲取的UTC時(shí)間加8得到的北京時(shí)間,GPS數(shù)據(jù)的經(jīng)度、緯度、海拔是導(dǎo)航點(diǎn)的信息。衛(wèi)星數(shù)是當(dāng)前搜索到的衛(wèi)星數(shù),工作模式有GPS模式和北斗模式。軟件的存儲(chǔ)設(shè)置是存儲(chǔ)設(shè)備端發(fā)送的完整數(shù)據(jù);上位機(jī)發(fā)送設(shè)置界面如圖4所示。主要是設(shè)置顯示模式和校準(zhǔn)設(shè)備當(dāng)前的數(shù)據(jù)信息。通過(guò)測(cè)試,整個(gè)系統(tǒng)運(yùn)行良好并到達(dá)了預(yù)期的效果。
結(jié)語(yǔ)
本文設(shè)計(jì)了一種基于STC單片機(jī)設(shè)計(jì)的低功耗、低成本、多功能的導(dǎo)航授時(shí)系統(tǒng)。主要闡述了整個(gè)系統(tǒng)的硬件設(shè)計(jì)原理、主要模塊電路以及軟件設(shè)計(jì)流程,并對(duì)系統(tǒng)配套的上位機(jī)軟件作了詳細(xì)的介紹。系統(tǒng)通過(guò)測(cè)試可以在戶(hù)外、室內(nèi)運(yùn)行,為需要導(dǎo)航服務(wù)的行業(yè)和授時(shí)系統(tǒng)提供了很大的幫助。