高書陽
(湖北方源東力電力科學研究有限公司,湖北 武漢 430000)
人類首顆GPS 試驗衛星于1978 年2 月22 日發射入軌,無線導航定位時代在導航衛星這個動態已知點的基礎上就此開創。來自GPS 衛星的定位導航信號這類空間信息資源已成一種公共資源,能為全部用戶共享[1]。結合硬件的特點,對GPS 接收模塊和STC12C5A60S2 單片機之間串行通信實現的途徑進行了分析,GPS 模塊發出數據經由串口接收,且把所需數據從中過濾獲得,在經過相應處理后顯示特定的數據,最終實現可以在LCD 顯示屏準確顯示出時間、日期和用戶所在位置的經緯度、速度等多種數據信息的效果。本文還通過硬件和軟件調試以及實驗仿真分析,進一步驗證了此系統的可靠性和精確性。它是一臺體積小巧、攜帶方便、可以獨立使用的全天候實時的定位導航設備,具有非常強可擴展功能的實際應用價值。在空中、海洋、陸地任一領域內,僅需某種可測量、變換、跟蹤和接收GPS 信號的一部接收機,運動平臺的3 維、7 維狀態參數便會被24 小時全球全天候不間斷測量。其影響之大,用途之廣,把其它類型的無線接收設備遠遠甩在身后。而且,入軌運行的GPS 衛星同樣能提供全天候、全天時、高精度測量技術,并且可以進行全球氣象學、全球海洋學、載人航天學、天體力學、地球物理學、地球動力學、大地測量學等學科領域實踐。縱觀現狀,GPS 技術有如下用途。
1.1.1 GPS 技術的陸地應用
該技術于電力工程勘測中和土地管理、林區生態工程的應用;行政區域勘界、高精度時間比對和頻率控制、冷鏈物流運輸過程的應用;智能交通系統應用;地質環境監測中的應用;建筑物變形監測中的應用;地表物質遷移的時變重力場反演方法及其應用;工程建設施工放樣測量等陸地上的諸多領域內,應用極為廣泛。
1.1.2 GPS 技術的海洋應用
GPS 技術在海洋方面有著非常重要的作用,對人類研究海洋提供了便利條件,比如:管制港口交通;測量無驗潮水深;檢測海洋災難;測定海洋油氣田平臺復位與就位;建立海洋大地控制網,遠洋船舶的最佳航線測定及實時調度和監測;測量海底管道鋪設;無人監測船遠程控制系統;光電掃描式成像跟蹤系統GPS 定位;高頻地波雷達海洋動力學參數反演與應用;布測海底大地測量控制網;小型多參數海洋環境監測浮標系統;精細測量海底地形;港口工程施工定位技術應用;定點測定海損事故或海洋糾紛;海洋救援及海底沉船位置的精確探測;鋼板樁施打作業領域應用GPS 定位技術等。
1.1.3 GPS 技術的航空航天應用
GPS 技術在航空航天方面應用有著非常重要地位,具體應用主要體現在:測量對地觀測衛星3 維、7 維狀態參數;自主導航民用航空器;星載GPS 遮掩天體體積以及大氣參數測量;測量重力與航空攝影參數;載入航天器在軌防護探測;航空護林;航天航空飛行器精密著陸;測量衛星回收與衛星入軌實時點位;飛行器空中加油控制;地面數據處理技術、方法與應用(航空遙感數字傳感器);飛行器探測災區范圍與標定測量;戰隊機軍事作戰控制;航空救援搜索及其定位測量;低軌道通訊衛星群的實時軌道測量;GPS時鐘同步機制及其民航空管系統;機載地球物理勘探[2]。
由此可見,GPS 技術的應用十分廣泛,已經深入到各個領域,對人類的進步發展探索起到巨大作用。但是前述最基本應運條件的實現必須要有可以進行GPS 信號接收且同時可以進行調制輸出的設施,把UTC 標準時間、當時所處位置經緯度顯示出來是此類設備的最基本功能,如何準確接收、調制輸出GPS 信號,是此項技術的關鍵,同時,當時所處部位的時間、緯度、經度能否精確的顯示同樣事關此類技術的實用價值大小。當前,以此類GPS 技術及其基本功能為前提而研發的GPS 導航設備、GPS 手持機等產品種類眾多。這項技術的優勢表現在可擴展性好、功能強大等,不足之處表現在電路復雜、費用過高等。課題論文擬把以單片機為基礎的GPS 定位系統設計成功。具備實用價值、廉價、基本性能完備等是本次課題的設計標準。
以單片機、GPS 理論為前提,把相應的單片機選擇出來,進行GPS 接收模塊接收數據的提取,且把所需特定的數據從中過濾獲得、適當處理,直至能夠將用戶所處部位速度、經緯度數據以及日期、時間準確顯示出來。這就是本次課題論文的主要設計目標。
本次設計除對所選LCD 顯示功能、單片機基本引腳功能、GPS 接收模塊性能指標要求研發人員熟悉以外,NMEA封包同樣需要把握,而且NMEA 輸出命令的使用技術也要掌握,以此和單片機的有關知識結合,實現GPS 捕獲的衛星信息提取,且選擇性的在液晶顯示器進行相關數據顯示。完成設計之后,通過Proteus 軟件來對其性能展開仿真測試。
基于對民用實時連續三維導航、軍事用途等現代社會發展標準的滿足所需,在“午儀衛星導航定位”技術基礎上,美國于1973 年組織其軍事機構進一步共同研究和建立新一代衛星導航系統[3],具有全球性、全能性、全天時性優勢的導航定位、定時、測速系統,即通常所說的“全球定位系統”(Global Positioning System),簡稱GPS 定位系統。情報收集是GPS 技術研發的初始意圖,無漏洞、實時、全天候的把有關導航服務提供給空中、海上以及陸地等各個領域是其當前基本目標。同時,應急通訊、核爆監測、情報收集以及應急通信、實時監測核武器動向等軍事目標同樣是其服務范疇。
以下就是GPS(全球定位系統)的基本組成部分:
1.由均勻散布于3 大洋的美軍基地及美國本土的監控站(5 個)、在主控站控制下把尋電文注入衛星的注入站-地面天線(3 個)、主要對地面綜合控制系統司職協調和管理的工作主控站(1 個)構成的地面監控系統[4]。
2.由3 顆備用衛星、21 顆工作衛星構建而成的空間衛星系統。在六個軌道面中的各軌道面均勻分布著3 至4 顆工作衛星。地球赤道平面和各軌道平面二者之間有55 度傾角,其中各軌道平面中的每個衛星升交角存在90 度距差。各個軌道面升交點赤徑之間有60 度相差。而軌道高度均值在20200 公里左右。對比西邊毗鄰軌道衛星來說,每個軌道衛星會有30 度超前,11 小時58 分是各個衛星的循環運行周期[5]。該系統事實上有24 顆以上衛星,這讓損壞、老化衛星能及時、便利的更換,以此來確保系統可以運行平穩。任意地點或任一時刻,該系統均能通過至少四顆衛星來服務使用者,有時甚而至于會有多達十一顆,就此把實時、連續定位與導航實現[6]。
3.由計算設備、數據處理軟件、衛星天線、GPS 衛星接收機構成的用戶接收系統。衛星射電干涉測量、多普勒測量、載波相位測量、偽距測量等是GPS 定位的基本辦法(GPS用戶接收系統如圖1 所示)。
GPS衛星定位系統三大部分之間的相互關系如圖2所示。全球GPS 衛星定位系統其主要特點如下:

圖2 GPS 全球定位系統組成關系
(1)全天候;
(2)全球性覆蓋;
(3)三維定時定速高精度、自動化高效益;
(4)快速省時高效率,觀測時間短;
(5)全能性、操作簡便。
要在液晶顯示屏顯示出GPS 定位數據信息,關鍵技術問題就是要實現GPS 信號的接收,目前有兩種選擇方案來實現GPS 信號的接收:
方案一:GPS 接收芯片先行確定完成,隨之以芯片有關設計參數為基礎,進行安裝天線、外圍電路等的設計,把1個獨立模塊做成。對GPS 芯片原理的了解、設計該系統接收部分硬件電路技術的把握等是選擇此方案的基本出發點,不過其缺點也是顯而易見的,首先自己動手焊接設計它的外圍電路麻煩,實現難度大,易出現引腳脫焊虛焊問題,其次由于GPS 接收芯片一般都是廠商直接供貨,單獨采購價格會很高。
方案二:選擇市場上口碑較好的GPS 集成模塊,選擇此方案的優點就是在這個信息現代化的時代的GPS 接收模塊的制造技術已經相非常成熟,并且性能穩定,使用也十分方便,定位成功接收到衛星信號后就可以直接通過模塊輸出GPS 相關信息,并通過單片機解析和封包數據成功的可以顯示在LCD 顯示屏上。并且在經過大規模的商業化生產后,它價格已經可以被我們所接受,一般幾十到一百多元不等,這樣的模塊在市面上也能夠很容易的購買到。
分析上面兩種方案的優缺點,選擇合適的GPS 接收模塊就能夠比較好的作為本次設計簡易單片機GPS 定位系統的解決方案,因此我選擇第二種方案來完成本次GPS 定位系統設計。
系統重點在于GPS 接收模塊,其性能、功能都不相同,型號也有許多種,通常都是由外置和內置天線、儲存器、CPU(處理器)、低噪聲下變頻器、并行信號通道等設備構成其基本架構。
GPS 接收模塊通過它的接收天線捕捉到衛星信號后,再經過變頻、放大、濾波、載波相位、混頻、測量偽距等一系列處理,便可以實現在保證天線接收范圍內對衛星的信號進行跟蹤、鎖定和測量、解調,并將這些電信號轉換為導航電文。衛星有關位置信息獲取以及信號的傳播時間測算完成后,便能以有關理論公式為依據把天線的位置計算出來。此時用戶可以通過輸入和輸出、I/O 串行接口,與GPS 接收模塊之間進行數據信息傳送,從而實現預期功能-GPS 定位顯示功能。GPS 接收模塊內部結構如圖3 所示。

圖3 GPS 接收模塊硬件結構
經由單片機對于GPS 定位系統內接收模塊的控制,來把簡單的定位功能實現,這是課題設計的基本標準。因此,編程控制采用的是STC12C5A60S2 單片機,采用SiRF StarII GPS 芯片為核心的接收模塊來接收GPS 衛星信號,且所需定位數據方面的相關信息主要是經由軟件編程keil c51 來進行篩選、解析,最終再經由單片機上的并行接口來把其向液晶顯示屏進行傳輸,就此把有關的定位信息顯示出來。該單片機GPS 定位系統硬件部分主要由以下幾個部分組成:
(1)接收部分:以SiRF StarII GPS 芯片接收模塊為核心的GPSOEM 模塊;
(2)控制電路:由STC12C5A60S2 單片機來編程控制;
(3)顯示部分:LCD12864 液晶顯示模塊;
(4)電源電路部分:采用USB 供電,大約5V 左右可以保證系統正常供電。
外圍電路:由以下2 部分構成:其一,液晶顯示模塊(LCD12864)內的顯示電路、電源電路;其二,GPS 定位系統內的接收模塊、其它電路。SiRF StarII GPS 接收模塊主要由變頻器、信號通道、存儲器、CPU 和I/O 接口構成。它通過天線接收獲取GPS 衛星信號,再經過變頻、放大、濾波、載波相位、混頻、測量偽距等一系列處理,便可以實現對在保證天線接收范圍內對衛星的信號進行跟蹤、鎖定和測量、解調。
單片機控制部分:經由NMEA-0183 語句數據(來自GPS 接收模塊)來選擇、處理所收到的GPS 數據,進行程序編寫,初始化單片機控制系統,對GPS 接收模塊進行控制,把采集相關數據信息的工作完成,處理有關信號,且將時間、經緯度、相關位置等數據信息經由單片機的輸出接口向LCD 顯示模塊輸送,并進行顯示。
由此以上可知:SiRF StarII GPS 接收模塊將獲取到的GPS 衛星電信號轉換為導航電文,進行解碼調制,且向標準NMEA-0183 格式轉換完成,再向單片機傳送,由其展示處理,如果導航電文數據信息(來自GPS)被單片機收到,其將會就上進行識別性的篩選,且把篩選所獲數據向LCD顯示模塊傳送,并把預設的定位信息顯示出來。
以總體設計規劃為依據,顯示部分(LCD12864 液晶顯示模塊)、控制部分(STC12C5A60S2 單片機)、以SiRF StarII 芯片基礎的GPS 接收模塊和外置車載天線的GPS 信號接收部分這三大部分構成了硬件電路,其大體結構框圖如圖4 所示。

圖4 硬件電路總體結構框圖
3.2.1 STC12C5A60S2 簡介
STC 制造的機器周期(1T)/單時鐘單片機——STC12C5A 60S2 系列單片機屬于8051 增強型新型單片機,這種增強型新型單片機具有超強抗干擾、低功耗、高速等特征,傳統的8051 指令代碼其能夠全面兼容,而且速度是其8-12 倍。其內部集成MAX810 特有的復位電路(外部晶體12MHZ 以上時,復位腳可接1000 歐姆電阻接地)。且將八路高速10 位A/D 轉換(25 萬次/秒,即250K/s)、PWM(2 路)、MAX810 專用復位電路集于一體,可過用于控制電機及其它強干擾場合。在Keil C51 開發環境中,選擇Intel 8052 編譯,頭文件包含
STC12C5A60S2 系列單片機的內部結構框圖如圖5 所示。外部晶體振蕩電路、片內R/C 振蕩器、PCA、SPI 接口、高速A/D 轉換、串口2、I/O 接口、UART 串口、定時/計數器、SRAM(數據存儲器)、Flash(程序存儲器)、CPU(中央處理器)等是STC12C5A60S2 單片機中的基本模塊。采集、控制數據方面的全部單元模塊基本上全涵蓋于這個系列單片機內,因而也能將其當成片上系統。

圖5 STC12C5A60S2 系列內部結構框
STC12C5A60S2 引腳如圖6 所示。

圖6 STC12C5A60S2 引腳
3.2.2 STC12C5A60S2 主要性能
? 高速:1 個時鐘/機器周期,增型8051 內核,速度比普通8051 快6~12 倍。
? 寬電壓:5.5~4.0V,2.1~3.6V(STC12LE5A60S2系列)。
? 增添P4.6(極為可靠的復位,能對復位門檻電壓進行調整,如果頻率不足12MHz,這個功能并不需要)/第2 復位功能腳。
? 增加外部掉電檢測電路/P4.6,可在掉電時,及時將數據存進EEPROM,低功耗設計:空閑模式(可由任一個中斷喚醒)。
? 工作頻率:0~35MHz,相當于普通8051:0~420MHz。
? 時鐘:可選擇的R/C 振蕩器(內部)、外部晶體,于ISP 下載編程用戶程序過程中進行設計。
? 8/16/32/40/48/56/60/62K 字節片內Flash 程序存儲器,擦寫次數10 萬次以上。
? 1280 字節片內RAM 數據存儲器。
? 獨立波特率發生器。
? SPI 高速同步串行通信接口。
? 可編程時鐘輸出功能(在P1.0,WDT(時鐘硬件看門狗)被BRT輸出;在P3.5,T把時鐘輸出;在P3.4,T0把時鐘輸出)。
? 通用I/O 口(36/40/44 個),復位后為:準雙向口(普通8051 傳統I/O 口)可設置為只是高阻/輸入,各I/O 口驅動能力開漏都能實現20 毫安,強上拉/強推免,弱上拉/準雙向口這幾種模式。芯片整體控制在120 毫安內為宜。
(1)時鐘電路
外部晶體時鐘、內部R/C 振蕩時鐘是STC12C5A60S2 系列單片機的2 個時鐘源,外部晶體時鐘是當前產品的出廠標配。8MHz-12MHz 是3V 單片機的常溫頻率,11-17MHz是5V 單片機芯片內的R/C 振蕩器常溫頻率,因為隨著溫度的變化,內部溫度的變化,內部R/C 振蕩器的頻率會有一些溫飄,再加上制造誤差,故內部R/C 振蕩器只適用于對時鐘頻率要對不敏感的場合。
圖7 所示即為內部時鐘電路。定時元件(大多由電容、石英晶體構成的并聯諧振回路充當)外接于TXD、RXD 引腳,自激振蕩就此在內部振蕩器中形成。宜于5pF-30pF 區間內挑選電容值,于1.2MHz-12MHz 區間內挑選晶體振蕩頻率,頻率將會因為電容值的大小而被其微調。

圖7 時鐘電路(a)內部方式時鐘電路結構圖
圖8 所示即為外部時鐘電路。其中TXD 引腳接外部振蕩器、RXD 引腳接地。只要保持住脈沖的寬度就行,并無特殊的外部振蕩信號標準,方波信號通常控制在12MHz 內。振蕩頻率被片中的時鐘發生器2 分頻,P1、P2 兩相時鐘會就此形成,且服務單片機運行。

圖8 時鐘電路(b)外部方式時鐘電路結構圖
(2)復位功能
單片初始化操作就是此處所說的復位涵義。將PC 初始化成0000H,讓單片機的程序執行由0000H 單元開始,這是復位的主要功能。正常的系統初始化操作之外,如果因為操作錯誤、程序運行出錯等讓系統死鎖,基于困境擺脫所需,同樣必須通過復位鍵來進行重新啟動[7]。看門狗復位,MAX810 專用復位電路或者掉電復位/上電復位(并可選擇200 毫秒延時復位增加額外,即于上電復位之后再進行一次復位延時200 毫秒增加操作),軟件復位,外部低壓檢測復位(增設第2 復位功能腳RST2 復位,實現外部可調復位門檻電壓復位),外部RST 引腳復位等屬于STC12C5A60S2 系列單片機的幾類復位形式。
(3)復位電路
當時鐘頻率高于12MHZ 時,建議使用第二復位功能引腳(RST2/EX_LVD/P4.6 口),這樣可利用增加的外部低壓檢測LVD 功能作為外部低壓復位腳(如電路圖9 和典型線路圖10 所示)。

圖9 復位電路

圖10 復位電路典型線路
7805(穩壓塊)后端有5V 直流電壓,當其降至約4V(如圖10 所示),R1、R2 這2 個電阻會把4V 附近電壓向不足1.33V(低壓檢測門檻電壓)周圍分壓,此時,CPU 將會被RST2 這個第2 復位功能腳置于復位狀態。當穩壓塊7805后端的直流電壓高于4V 時,圖中的電阻R1 和R2 將4V 的電壓分壓到高于低壓檢測門檻電壓(1.33V 附近),單片機就解除復位狀態,恢復到正常工作狀態上,典型線路如圖11所示。

圖11 典型線路
3.2.2 SiRFStarIIGPS 信號接收模塊
該設計中GPS 信號接收模塊是以SiRF StarII GPS 芯片為核心的模塊,該芯片是由美國瑟孚科技有限公司所生產的第二代芯片。它具有12 通道并行接收能力,其所接收的GPS 信號屬于民用頻段的L1 信號,大約為1575.42MHz,在沒有Selective Availability 干擾的情況下,它的動態速度誤差是每秒0.1 米,其平均定位誤差為10m,信號靈敏度能至-142dBm,熱啟動時間是38 秒,冷啟動定位時間是42 秒,即使是二次定位,時間方面同樣只需8 秒,該模塊主要引腳如圖12 所示。

圖12 SiRFStarII 引腳
引腳備注:TXD 端口是2 號管腳,一般連接外振蕩器;電源輸入端是3 號管腳,外接電壓通常約是+5V;GND 端口是1 號管腳,用于接地。該GPS 信號接收模塊的正常工作電流約為75mA。其正常工作電壓約為3V 左右。
GSP2e 把2 個UART、GPS 接收機外部設備、高精度實時時鐘、1MbEDODRAM、內外部獨立總線、ARM7CPU(50MHz1 個)、增強型GPS 內核(1 個)集于一體;數字接口、集成LNA、IF(集成中頻濾波器)、基準振蕩器、片內壓控振蕩器等則構成了GRF2i。當前系統內很方便集成進GSW2模塊化軟件,且可以進行功能強大的開發條件保障。
WGS-84 為地圖坐標系,地理信息采集更新速率是1 次/2s,NMEA-0183 是GPS 輸出數據的格式標準[8]。SiRF StarII 主要特征如表1 所示。

表1 SiRFStarII 主要特征
為了有更好的信號接收效果,本設計采用ROHS 認證通過的車載天線,該天線接收信號好,穩定性好,模塊和天線實物圖如圖13 所示,GPS 天線參數如下表2 所示。

圖13 GPS 接收模塊與天線實物

表2 GPS 天線參數
3.2.3 LCD12864 液晶顯示模塊介紹
(1)液晶顯示模塊
本設計采用LCD12864 液晶顯示模,具有多種功能,通過液晶顯示模塊中引腳4、5、6 分別與單片機引腳P25、26、27 相連,進行數據信息傳送,接收單片機控制器傳送的信息,顯示在顯示屏上面,展現出GPS 定位信息。并且本設計中R2 是可調節電阻,可以實現對顯示屏的亮度進行調節,以便滿足用戶需要,12864 液晶顯示模塊引腳電路圖和實物圖如圖14 所示。

圖14 LCD12864 液晶顯示模塊電路
(2)LCD12864 有20 個引腳,說明如表3 所示液晶硬件接口:

表3 12864 引腳說明
1.邏輯工作電壓(VDD):4.5~5.5V;
2.電源地(GND):0V;
3.工作溫度(Ta):0~60℃(常溫)/-20~75℃(寬溫);
4.模塊有并行和串行兩種接法。
3.2.4 硬件外圍電路構造
(1)電源電路
系統采用+5V 電壓供電,可接USB 或者電池夾,S1 為自鎖開關。P1 為DC 電源口,電源部分電路圖和實物圖如圖15 所示。

圖15 電源電路圖
(2)復位電路
本設計采用10uF 電容、10K 電阻構成,接單片機引腳9RST,構成復位電路,當按下開關時,電容被短路,電容開始放電,R1 端電壓變高,RST 處于高電平,松開開關時,電容開始充電,R1 端電壓為0,RST 處于低電平狀態,正常工作,實現復位,復位電路圖和實物圖如16 所示。

圖16 復位電路
(3)串口通訊
本設計配有串口數據通信口,可實現串口通信,實現I/O 功能,支持修改程序,采用ISP 下載工具燒錄,引腳3 接單片RXD 腳,為數據接收端,引腳2 接TXD 腳,為數據發送端(電路圖和實物圖如圖17 所示)。

圖17 串口電路
(3)時鐘電路
本設計采用12M 晶振,兩個20uF 電容,構成時鐘電路,接單片機XTAL1、XTAL2 腳,構成時鐘電路,保證時序穩定,單片機正常工作(時鐘電路圖和實物圖如圖18 所示)。
(4)濾波電路
濾波電路由一個104 電容連接單片機電源引腳VCC 組成,作用是濾出外界輻射的高頻干擾和濾出單片機工作時自身產生的脈沖干擾,因為開和關瞬間會產生一個很高的尖峰,如果沒有一個電容,則這個信號會傳送到整個板子上,干擾其他器件工作(電路圖和實物圖如圖19 所示)。
整個硬件設計由單片機STC12C5A60S2、GPS 信號接收模塊、LCD12864 液晶顯示模塊、電源和一些外圍電路組成。
本文采用NMEA 對GPS 導航信息進行封包,NMEA-0183 是海用電子設備制定的標準格式。0180、0182 這兩個既有的標準格式是其制定的基礎,GPS 接收機所輸出的相關內容是NMEA-0183 的增加內容部分,目前的GPS 接收機領域內,除了早期的一小部分GPS 接收機之外,差不多已經全部運用了這一格式。把RTCM 的統一標準建立于各種GPS 導航設備內是這個協議的功能。全面運用此類格式能顯著提升GPS 接收模塊互換性、通用性。
基本命令格式如下:
(1)“$”:幀命令起始位;
(2)地址域:aaccc,aa 是識別符,ccc 是語句名;
(3)ddd…ddd:數據;
(4)“*”:校驗和前綴;
(5)hh:check sum(校驗和),也即*、$二者之間的全部字符ASCII 碼校驗和(異或運算所有字節之后,就此把校驗和獲得,隨后就此進行十六進制格式ASCII 字符轉換。)
(6)
4.1.1 輸入語句
這些語句是GPS 接收機可以接受的語句。一般情況下初始化信息語句為PGRMI,其結構為:$GPRMI,<1>,<2>,<3>,<4>,<5>,<6>,<7>*hh
<1>緯度ddmm.mmmm(度分)格式(前面的0 也將被傳輸);
<2>緯度半球N(北半球)或S(南半球);
<3>經度dddmm.mmmm(度分)格式(前面的0 也將被傳輸);
<4>經度半球E(東經)或W(西經);
<5>UTC 日期,ddmmyy(日月年)格式;
<6>UTC 時間,hhmmss(時分秒)格式;
<7>接收機命令,A=自動定位,R=機器重新啟動。
4.1.2 輸出語句
SiRF StarII 的輸出語句有很多種,經由GPS 串口調試軟件,SiRF StarII 芯片將會收到其所發送而來的有關命令語句,芯片也將會隨之以命令語句為基礎來進行參數設置。幾種常用的數據格式如下:
(1)GPS 標準數據(GPGGA),其結構為:$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,<13>,<14>*<15>
<1>UTC 時間,格式為hhmmss.sss;
<2>緯度,格式為ddmm.mmmm(前導位數不足則補0);
<3>緯度半球,N 或S(北緯或南緯);
<4>經度,格式為dddmm.mmmm(前導位數不足則補0);
<5>經度半球,E 或W(東經或西經);
<6>定位質量指示,0=定位無效,1=定位有效;
<7>接收到的衛星數量,從00 到12(前導位數不足則補0);
<8>水平精確度,0.5 到99.9;
<9>天線離海平面的高度,-9999.9 到9999.9 米;
<10>高度單位,M 表示單位米;
<11>大地橢球面相對海平面的高度,-999.9到9999.9米;
<12>高度單位,M 表示單位米;
<13>GPS 差分數據期限(RTCMSC-104),最后設立RTCM 傳送的秒數量;
<14>差分參考基站標號,從0000 到1023(前導位數不足則補0);
<15>校驗和。
(2)可視衛星狀態輸出語句(GPGSV),其結構為:$GPGSV,<1>,<2>,<3>,<4>,<5>,<6>,<7>,...,<4>,<5>,<6>,<7>*<8>
<1>總的GSV 語句電文數;
<2>當前GSV 語句號;
<3>可視衛星總數,00 至12;
<4>衛星編號,01 至32;
<5>衛星仰角,00 至90 度;
<6>衛星方位角,000 至359 度,實際值;
<7>信噪比(C/No),00 至99dB;無表未接收到訊號;
<8>校驗和。
(3)推薦最小GPS/TRANSIT 數據(GPRMC),其結構為:$GPRMC,<1>,<2>,<2>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh
其中的語句識別符是RMC;交談識別符是GP;校驗和是hh(即除*、$本身這兩個字符之外,*、$二者之間的全部字符按位異或值)。
$GPRMC 語句數據區的內容為:
<1>世界時間(UTC),hhmmss(時分秒)格式;
<2>定位狀態,A =有效定位,V =無效定位;
<3>定位點緯度,ddmm.mmmm(度分)格式;
<4>緯度,N(北半球)或S(南半球);
<5>定位點經度,dddmm.mmmm(度分)格式;
<6>經度半球,E(東經)或W(西經);
<7>地面速率,000.0~999.9 節;
<8>地面航向,000.0~359.9 度;
<9>UTC 日期,ddmmyy(日月年)格式;
<10>磁偏角,000.0~180 度;
<11>磁偏角方向,E(東)或W(西);
<12>工作模式:A=自主,D=差分,E=評估,N=數據無效[9]。
相比匯編來說,美國Keil Software 公司出品的51 系列兼容單片機C 語言軟件開發系統Keil uVision4,具有明顯的可維護性、可讀性、架構性以及功能等方面的優勢,匯編中同樣可以在關鍵部位嵌入C 語言。目前最新的版本是C51Version9.00Release,也就是所謂的μVision4。uVision4集成開發環境內已經全面集成了C51、調試器、項目管理器、實時操作系統、匯編器以及編譯器等均已處于該集成開發環境之中。uVision4IDE 能把靈活、單一開發環境提供給它們[10]。

圖3-14 時鐘電路

圖3-15 濾波電路
KeilC51 μVision4 較之前的版本,新增了下面幾個功能:
? 多重的監控和彈性的窗口管理系統。
? 系統查看器(System Viewer)-顯示設備周邊緩存器的訊息。
? 除錯恢復檢視(Debug Restore Views)-建立和儲存多重除錯窗口設計。
? 多項目工作區(Multi-Project Workspace)-與許多項目簡化工作。
? 源碼和解組譯連結(Sourceand Disassembly Linking)-解組譯窗口和源碼窗口完全同步使程序除錯和光標導航較容易。
? 內存窗口固定(Memory Window Freeze)-儲存目前內存窗口檢視允許容易在不同的點及時比較。
? 設備模擬-更新支持很多新設備(例如InfineonXC88x,SiLABSC8051Fxx,AtmelSAM7/9 和從Luminary,NXP,andToshi ba 來的CortexM3MCUs)。
? 支持硬件除錯轉接器(Support for Hardware debugad apters)-包括ADI。miDAS-Link,AtmelSAM-ICE,InfineonD AS,和ST-Link。
? 新資料和指令追蹤(New Data and instruction trace)-對ARM 和Cortex MCUs。
? 基于XML 的項目文件(XML based Project files)-建立,檢視和修改項目如同容易可讀的XML 本文檔案一樣。
? 串列的窗口-擴充到提供一個基本的100-VT終端機,ASCII 模式,混合模式,和十六進制模式檢視。
? 拖放檔案開啟(Drag &Drop File Opening)-檔案拖進μVision4 項目空間自動會被開啟。
? 監控點和邏輯分析儀(Watchpoints and Logic Analyzer)-現在更容易設定。
單片機主程序、初始化LCD12864 液晶顯示模塊、GPS數據接收處理是這個設計軟件的基本設計模塊思路。這樣的設計理念好處是,模塊功能清楚明朗,容易調試程序,具有可移殖性,適應不同的單片機環境[11-12]。軟件的程序流程圖如圖20 所示,相關的程序詳細代碼見附錄。

圖20 軟件程序流程圖
4.3.1 LCD12864 顯示初始化
顯示模塊顯示初始化設計在設計中是重要部分,是正常顯示出GPS 信息的準備工作,初始化流程圖如圖21 所示。

圖21 顯示模塊初始化
初始化部分清零代碼如下:


4.3.2 定時器T0 設置
定時器中斷設置是單片機編程中關鍵部分,在不影響CPU 正常工作情況下,保證其他程序正常高效率運行,流程圖如圖22 所示。

圖22 定時T0 設置
定時器超時判斷程序代碼:

4.3.3 GPS 數據接收隊列模塊
對于1HZ 輸出的GPS 模塊,由于其數據包格式有GPRMC,GPCGA 等,如果不用數據包緩沖,實時讀取解析,會丟失數據包導致顯示異常,因而數據接收隊列模塊很重要,保證及時數據及時傳遞[13-14]。設計框圖如如圖23,部分代碼如下。

圖23 GPS 數據接收隊列模塊
初始化接收緩沖區:


系統軟件編程、實物制作以及硬件設計完成之后,必須要調試系統的軟件、硬件,這樣才能夠讓系統可以依據相應的設計目標進行平穩運轉。
把工藝故障、設計錯誤這類不同的硬件故障排除屬于調試硬件的基本目的。
第一步:對硬件電路板中所設計的全部引腳、器件準確與否進行檢查。通過萬用表(數字)來進行逐一的對點檢測,對不同的導線相互之間有沒有存在開路、短路這些故障現象進行檢測。
第二步:測輸入5V 電源(0V 地)線是否與電路中的對應點的電源(地)線相連接是否正確;及檢查開關是否正常,是否連接正確。
對于通過導線連接而成的芯片管座相互之間的對應腳截止與否、導通與否等進行檢測。
通過開發工具來全面展開在線仿真調試,以此對程序中的錯誤加以發現與糾正,把硬件方面存在的故障同步獲得,這是調試軟件的主要目的。軟件調試時,必須要按模塊來逐一展開:其一,對于每個子程序可不可以依據預期目標運行進行單獨的調試;其二,對可不可以正常的控制接口電路進行調試;其三,對整個程序進行調試,特別是要對每一個模塊相互之間可不可以進行參數的準確傳遞來進行調試。
將程序代碼經過Keil 軟件編譯生成的(.hex)文件,讓然后用STC-ISP 下載到單片機中。看是否符合設計要求,正常顯示出正確的經緯度、時間日期等相關參數。
調試硬件以及軟件部分讓其預期功能最終實現。圖24為時間信息,圖25 是經緯度信息。

圖24 實物顯示

圖25 實物顯示
由以上實驗結果圖分析可以知道,此單片機GPS 定位系統設計,時間日期、經緯度等數據十分精確,與實際基本很吻合。其中海拔高度,數據顯示83 米,但地圖系統顯示42 米,這是因為測量地點在21 樓,加上實際地理位置可能處于當前地勢地方,所以有些偏差。綜合考慮,此設計基本上達到了預期效果,實現了簡易GPS 定位功能
由于Proteus 里面沒有是STC 單片機,這里用AT89C51 代替,不影響主要性能;由于我是筆記本沒有COM 串口,這里我使用虛擬串口軟件設置Configure Virtual Serial PortDriver,至于衛星GPS 接收模塊采用VirtualGPS(虛擬GPS 軟件)作為信號接收[15]。
本次設計,主要講解單片機、GPS 相關接收原理,GPS信號接收處理模塊由SiRF StarII 實現,通過SiRF StarII 與STC12C5A60S2 兼容系列單片機相連,配備了所需的外圍電路,同時LCD12864 液晶顯示屏,可以顯示相關定位信息,并詳細介紹了該GPS 設計的硬件和軟件設計[16]。