吳成英,樊戰友,邱杰峰
(1.中國科學院國家授時中心,西安7106001;2.中國科學研究生院)
嵌入式系統從20世紀孤立的單片機時代過渡到單片機與多科學融合時代,再到如今的嵌入式物聯網時代,使得嵌入式系統再次遇到了新的機遇。GPS(Global Position System,全球導航系統)時空參數是物聯網時代國家公證的工程建設,它為航空航海、科學勘探、地理測量、運輸行業、通信行業提供了精確的導航、指揮、監控、授時等服務[1-2]。本文充分結合STC單片機和Trimble公司的接收機設計出了導航授時系統。系統能實時給出運動載體的位置和速度等信息,并能同步接收衛星時間。
系統主要具有導航和授時兩大功能。系統最大的優點是在戶外可以通過液晶屏顯示導航信息和時間信息,在室內通過上位機人機交互界面顯示衛星時間和運動物體的經度、緯度、海拔等導航信息。系統克服了常用導航儀的繁瑣設計、功能單一、成本利用高等缺點,在此基礎上設計出了一款簡易、性價比高、應用普遍、易于擴展的導航系統。這為常用的導航和授時服務提供了很大的幫助。
首先,GPS模塊定時發送GPS導航數據和衛星時間到STC單片機,然后STC單片機對GPS導航數據進行處理并把數據發送給LCD液晶顯示屏或PC機,導航授時系統結構框圖如圖1所示。

圖1 導航授時系統結構框圖
系統的核心是GPS導航模塊,處理器是宏晶科技公司推出的STC12C5A單片機。GPS導航模塊采用Trimble公司的Sierra GPS芯片接收衛星導航信息和授時服務。Sierra芯片采用了 Trimble公司獨有的GPS算法來確保導航數據的準確性和衛星信號的快速鎖定。它還能夠有效地解決城市應用中經常出現的信號遮擋、多路徑和射頻干擾問題。STC12C5A是增強型8051內核具有超低功耗和超強抗干擾的特性,為GPS導航系統在戶外勘測和野外監測提供了很大的方便。本系統控制器件并不復雜,也不需要很大的存儲空間,STC12C5A可以控制整個系統,節省成本。另外,STC12C5A有2個串口剛好滿足系統需求。LCD液晶顯示選擇的是 LMB102DDC顯示屏。該顯示屏小巧、易控制、顯示清楚、成本低,是該系統的最佳選擇。
圖2為GPS導航電路。GPS導航模塊提供實時的三維位置和UTC時間信息,通過GPS的串行通信口B發送數據給STC單片機。GPS導航模塊和STC單片機的輸入/輸出電平都是TTL電平,所以串口之間可直接通信。GPS發送數據的波特率有 9 600 bps、4 800 bps、2 400 bps可任意選擇。

圖2 GPS導航電路
圖3是STC12C5A與LMB102DDC的接口電路。LMB102DDC內核模塊內部有一個指令寄存器和一個數據寄存器,其指令分為基本指令和擴展指令。指令主要用來初始化液晶顯示屏,實現基本控制。其中,包括清屏設置、顯示位置、光標狀態、顯示狀態、功能設置等。LMB102DDC既可以寫數據到RAM中,又可以從 RAM中讀數據,在此主要是寫數據到RAM。
當導航系統在戶外工作時,STC單片機將接收到的導航數據和時間信息進行處理,然后將導航的經度、緯度、海拔、衛星時間通過P0口輸出,并顯示在 LMB102DDC液晶屏上。當導航系統在室內工作時,STC單片機將接收到的導航信息通過串口完整地發送到PC機。PC機通過系統的上位機軟件查看相關的GPS導航數據和時間信息。由于PC機的輸入/輸出電平和STC單片機的輸入/輸出電平不一樣,兩者相互通信時要加一個MAX232電平轉換電路。室內工作不選擇LCD顯示導航信息主要是考慮到節約成本和保持系統的完整性這兩方面。這也是該導航系統區別其他導航系統的特色。

圖3 STC12C5A與LMB102DDC的接口電路
導航授時系統的另外一個優點是能夠通過上位機軟件校準導航系統的相關信息。利用一組最新的時間數據(年、月、日、時、分、秒)和軟件系統的工作模式按一定的格式通過串行通信接口發送給STC單片機,STC單片機利用這組數據對錯誤的信息進行校準并根據發送的設置更改工作模式,上位機發送設置如圖4所示。
軟件設計是系統的控制中心。系統使用C語言在Keil uVision4編譯器中編寫STC單片機程序。程序主要包括接收GPS數據、處理GPS數據、顯示控制等。主程序流程如圖5所示。

圖5 主程序流程
STC12C5A通過串口接收一組完整的GPS數據后,通過控制程序對GPS信息作相應的處理。處理完后通過串口發送給上位機,在整個過程中必須同時打開2個串口。STC12C5A的2個串口剛好滿足系統要求,而且可以對它們設置不同的波特率。STC12C5A系列的單片機擴展了1 KB的RAM空間,足夠本系統作為暫時的緩沖器。系統不用保存大量的數據,雖然串口2一直在接收GPS導航數據和授時數據,同樣串口1以更高的波特率在向上位機發送數據,最后所有的數據都會通過上位機軟件以.txt格式保存在PC機上。控制程序在設置串口中斷優先級時會把發送數據的串口中斷設置成最高優先級,優先滿足串口發送。接收GPS數據時每隔1 s接收一次導航信息,這樣不會影響導航的精度。發送數據的串口波特率設置成115 200 bps,接收GPS數據的串口波特率設置成9 600 bps,2個串口的初始化程序代碼如下:

數據處理部分主要是判斷GPS發送給STC單片機的數據是否有效,在數據有效時提取經度、緯度、海拔、衛星日期、時間信息保存在字符數組中。數據保存完后確定數據是發送給LCD顯示屏顯示,還是通過串口發送給上位機軟件顯示。顯示模式有LCD顯示和上位機軟件顯示,默認方式是LCD顯示。如果需要上位機界面為顯示模式時,先通過上位機軟件中的“發送設置”對話框設置“顯示模式”為1,然后發送給STC單片機。
整個上位機采用結構化和模塊化設計方法。上位機軟件是基于對話框的MFC應用程序設計的,主要有串口通信模塊、導航數據和時間顯示模塊、工作模式設置模塊、授時模塊。授時模塊的作用是讓PC機時間與衛星同步,確保PC機時間的精確度。與系統相連的PC機可以作為一個授時主機向其他單元發送時間。
串口通信模塊的編寫是用Microsoft公司提供的串口通信MSComm控件。添加了MSComm控件后,首先要對控件初始化,然后打開串口準備按位接收字符[3-4]。串口通信模塊的主要程序代碼如下:

顯示模塊是當串口接收到字符后,對接收的字符進行分離并對應顯示在軟件界面上。上位機軟件顯示效果如圖6所示。
系統經過調試,最后將導航信息發送給上位機軟件,顯示結果如圖6所示。軟件界面的時間是從衛星中獲取的UTC時間加8得到的北京時間,GPS數據的經度、 緯度、海拔是導航點的信息。衛星數是當前搜索到的衛星數,工作模式有GPS模式和北斗模式。軟件的存儲設置是存儲設備端發送的完整數據;上位機發送設置界面如圖4所示。主要是設置顯示模式和校準設備當前的數據信息。通過測試,整個系統運行良好并到達了預期的效果。

圖6 上位機軟件顯示效果
本文設計了一種基于STC單片機設計的低功耗、低成本、多功能的導航授時系統。主要闡述了整個系統的硬件設計原理、主要模塊電路以及軟件設計流程,并對系統配套的上位機軟件作了詳細的介紹。系統通過測試可以在戶外、室內運行,為需要導航服務的行業和授時系統提供了很大的幫助。
[1]何立民.物聯網時代的嵌入式機遇[J].單片機與嵌入式系統應用,2011(3).
[2]沈建華.ARM處理器與嵌入式系統[J].單片機與嵌入式系統應用,2010(11).
[3]龔建偉,熊光明.Visual C++/Turbo C串口通信編程實踐[M].北京:電子工業出版社,2004.
[4]孫鑫,余安萍.VC++深入詳解[M].北京:電子工業出版社,2006.