基于單片機(jī)的gps定位系統(tǒng)論文_第1頁
已閱讀1頁,還剩24頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p>  西北民族大學(xué)實(shí)驗(yàn)室開放項(xiàng)目成果(論文)</p><p>  題 目:基于單片機(jī)的GPS定位系統(tǒng) </p><p>  院 系:電氣工程學(xué)院 </p><p>  專業(yè)年級:2011級電子信息工程 </p><p>  學(xué)生姓名:陳江華、朱立、蘭雪艷 </p>

2、;<p>  指導(dǎo)老師:劉文博 </p><p><b>  摘要</b></p><p>  全球定位系統(tǒng)(GPS)是美國研發(fā)的第二代衛(wèi)星無線電導(dǎo)航系統(tǒng)。其目的是在全球范圍內(nèi)對地面和空中目標(biāo)進(jìn)行準(zhǔn)確定位和監(jiān)測。它能為用戶提供全球性、全天候、連續(xù)、實(shí)時、高精度的三維坐標(biāo)、三向速度和時間信息。隨著GPS的民用化與成本的降

3、低,已經(jīng)走入了人們的日常生活中,很多手機(jī)、PDA 等手持設(shè)備都配備了GPS功能。本文主要研究GPS 的定位原理與技術(shù),單片機(jī)的編程及其應(yīng)用,液晶屏的功能及其實(shí)現(xiàn)方法本控制系統(tǒng)主要完成接受數(shù)據(jù)、時間顯示、經(jīng)度顯示、緯度顯示等常規(guī)功能。此方案基于單片機(jī)、GPS模塊和12864液晶顯示屏等硬件, 并應(yīng)用C語言實(shí)現(xiàn)了GPS信號的提取、顯示及基本的鍵盤控制操作等。經(jīng)過實(shí)踐測試 ,這種接收機(jī)可以達(dá)到基本GPS信息的接收以及顯示,

4、可以做到體積小、精度高、連續(xù)導(dǎo)航,本設(shè)計在測控領(lǐng)域的應(yīng)用開發(fā)中具有一定的實(shí)用價值和借鑒價值。</p><p>  關(guān)鍵詞:GPS定位,液晶顯示,單片機(jī)</p><p><b>  Abstract</b></p><p>  Global Positioning System (GPS) is a U.S. research and devel

5、opment of the second generation satellite radio navigation system. Its purpose is worldwide on the ground and air targets for accurate positioning and monitoring. It provides users with a global, all-weather, continuous,

6、 real-time, high-precision three-dimensional coordinates, three velocity and time information. With the GPS civilian and cost reduction, has been into people's daily life, many cell phone, PDA and other handheld devi

7、ces </p><p>  Keywords: GPS positioning, LCD, microcontroller</p><p><b>  目錄</b></p><p><b>  引言4</b></p><p>  第一章、GPS系統(tǒng)簡介6</p><p>

8、;  1.1GPS系統(tǒng)的定位精度6</p><p>  1.2GPS系統(tǒng)定位原理8</p><p>  第二章、方案硬件設(shè)計10</p><p>  2.1GPS技術(shù)參數(shù)10</p><p>  2.2 單片機(jī)最小系統(tǒng)11</p><p>  2.3 電源模塊12</p><p

9、>  2.4液晶顯示部分13</p><p>  第3章 系統(tǒng)軟件設(shè)計15</p><p>  3.1程序初始化模塊15</p><p>  3.2軟件系統(tǒng)調(diào)試16</p><p><b>  參考文獻(xiàn)17</b></p><p><b>  附 錄18</

10、b></p><p><b>  引言</b></p><p>  GPS起始于1958年美國軍方的一個項(xiàng)目,1964年投入使用。20世紀(jì)70年代,美國陸??杖娐?lián)合研制了新一代衛(wèi)星定位系統(tǒng)GPS 。主要目的是為陸??杖箢I(lǐng)域提供實(shí)時、全天候和全球性的導(dǎo)航服務(wù),并用于情報收集、核爆監(jiān)測和應(yīng)急通訊等一些軍事目的,經(jīng)過20余年的研究實(shí)驗(yàn),耗資300億美元,到1994

11、年,全球覆蓋率高達(dá)98%的24顆GPS衛(wèi)星星座己布設(shè)完成。在機(jī)械領(lǐng)域GPS則有另外一種含義:產(chǎn)品幾何技術(shù)規(guī)范(Geometrical Product Specifications)-簡稱GPS。</p><p>  GPS的前身是美國軍方研制的一種子午儀衛(wèi)星定位系統(tǒng)(Transit),1958年研制,1964年正式投入使用。該系統(tǒng)用5到6顆衛(wèi)星組成的星網(wǎng)工作,每天最多繞過地球13次,并且無法給出高度信息,在定位精

12、度方面也不盡如人意。然而,子午儀系統(tǒng)使得研發(fā)部門對衛(wèi)星定位取得了初步的經(jīng)驗(yàn),并驗(yàn)證了由衛(wèi)星系統(tǒng)進(jìn)行定位的可行性,為GPS的研制埋下了鋪墊。由于衛(wèi)星定位顯示出在導(dǎo)航方面的巨大優(yōu)越性及子午儀系統(tǒng)存在對潛艇和艦船導(dǎo)航方面的巨大缺陷。美國海陸空三軍及民用部門都感到迫切需要一種新的衛(wèi)星導(dǎo)航系統(tǒng)。</p><p>  為此,美國海軍研究實(shí)驗(yàn)室(NRL)提出了名為Tinmation的用12到18顆衛(wèi)星組成10000km高度的全

13、球定位網(wǎng)計劃,并于67年、69年和74年各發(fā)射了一顆試驗(yàn)衛(wèi)星,在這些衛(wèi)星上初步試驗(yàn)了原子鐘計時系統(tǒng),這是GPS精確定位的基礎(chǔ)。而美國空軍則提出了621-B的以每星群4到5顆衛(wèi)星組成3至4個星群的計劃,這些衛(wèi)星中除1顆采用同步軌道外其余的都使用周期為24h的傾斜軌道,該計劃以偽隨機(jī)碼(PRN)為基礎(chǔ)傳播衛(wèi)星測距信號,其強(qiáng)大的功能,當(dāng)信號密度低于環(huán)境噪聲的1%時也能將其檢測出來。偽隨機(jī)碼的成功運(yùn)用是GPS得以取得成功的一個重要基礎(chǔ)。海軍的計

14、劃主要用于為艦船提供低動態(tài)的2維定位,空軍的計劃能供提供高動態(tài)服務(wù),然而系統(tǒng)過于復(fù)雜。由于同時研制兩個系統(tǒng)會造成巨大的費(fèi)用而且這里兩個計劃都是為了提供全球定位而設(shè)計的,所以1973年美國國防部將2者合二為一,并由國防部牽頭的衛(wèi)星導(dǎo)航定位聯(lián)合計劃局(JPO)領(lǐng)導(dǎo),還將辦事機(jī)構(gòu)設(shè)立在洛杉磯的空軍航天處。該機(jī)構(gòu)成員眾多,包括美國陸軍、海軍、海軍陸戰(zhàn)隊、交通部、國防制圖局、北約和澳大利亞的代表。</p><p>  最初

15、的GPS計劃在美國聯(lián)合計劃局的領(lǐng)導(dǎo)下誕生了,該方案將24顆衛(wèi)星放置在互成120度的三個軌道上。每個軌道上有8顆衛(wèi)星,地球上任何一點(diǎn)均能觀測到6至9顆衛(wèi)星。這樣,粗碼精度可達(dá)100m,精碼精度為10m。由于預(yù)算壓縮,GPS計劃不得不減少衛(wèi)星發(fā)射數(shù)量,改為將18顆衛(wèi)星分布在互成60度的6個軌道上,然而這一方案使得衛(wèi)星可靠性得不到保障。1988年又進(jìn)行了最后一次修改:21顆工作星和3顆備用星工作在互成60度的6條軌道上。這也是GPS衛(wèi)星所使用

16、的工作方式。</p><p>  第一章、GPS系統(tǒng)簡介</p><p>  GPS系統(tǒng)的定位精度</p><p>  GPS導(dǎo)航系統(tǒng)是以全球24顆定位人造衛(wèi)星為基礎(chǔ),向全球各地全天候地提供三維位置、三維速度等信息的一種無線電導(dǎo)航定位系統(tǒng)。它由三部分構(gòu)成,一是地面控制部分,由主控站、地面天線、監(jiān)測站及通訊輔助系統(tǒng)組成。二是空間部分,由24顆衛(wèi)星組成,分布在6個軌道平

17、面。三是用戶裝置部分,由GPS接收機(jī)和衛(wèi)星天線組成。民用的定位精度可達(dá)10米內(nèi)。</p><p>  GPS導(dǎo)航系統(tǒng)的基本原理是測量出已知位置的衛(wèi)星到用戶接收機(jī)之間的距離,然后綜合多顆衛(wèi)星的數(shù)據(jù)就可知道接收機(jī)的具體位置。要達(dá)到這一目的,衛(wèi)星的位置可以根據(jù)星載時鐘所記錄的時間在衛(wèi)星星歷中查出。而用戶到衛(wèi)星的距離則通過記錄衛(wèi)星信號傳播到用戶所經(jīng)歷的時間,再將其乘以光速得到(由于大氣層電離層的干擾,這一距離并不是用戶與

18、衛(wèi)星之間的真實(shí)距離,而是偽距(PR):當(dāng)GPS衛(wèi)星正常工作時,會不斷地用1和0二進(jìn)制碼元組成的偽隨機(jī)碼(簡稱偽碼)發(fā)射導(dǎo)航電文。GPS系統(tǒng)使用的偽碼一共有兩種,分別是民用的C/A碼和軍用的P(Y)碼。C/A碼頻率1.023MHz,重復(fù)周期一毫秒,碼間距1微秒,相當(dāng)于300m;P碼頻率10.23MHz,重復(fù)周期266.4天,碼間距0.1微秒,相當(dāng)于30m。而Y碼是在P碼的基礎(chǔ)上形成的,保密性能更佳。導(dǎo)航電文包括衛(wèi)星星歷、工作狀況、時鐘改正

19、、電離層時延修正、大氣折射修正等信息。它是從衛(wèi)星信號中解調(diào)制出來,以50b/s調(diào)制在載頻上發(fā)射的。導(dǎo)航電文每個主幀中包含5個子幀每幀長6s。前三幀各10個字碼;每三十秒重復(fù)一次,每小時更新一次。后兩幀共15000b。導(dǎo)航電文中的內(nèi)容主要有遙測碼、</p><p>  可見GPS導(dǎo)航系統(tǒng)衛(wèi)星部分的作用就是不斷地發(fā)射導(dǎo)航電文。然而,由于用戶接受機(jī)使用的時鐘與衛(wèi)星星載時鐘不可能總是同步,所以除了用戶的三維坐標(biāo)x、y、z

20、外,還要引進(jìn)一個Δt即衛(wèi)星與接收機(jī)之間的時間差作為未知數(shù),然后用4個方程將這4個未知數(shù)解出來。所以如果想知道接收機(jī)所處的位置,至少要能接收到4個衛(wèi)星的信號。</p><p>  GPS接收機(jī)可接收到可用于授時的準(zhǔn)確至納秒級的時間信息;用于預(yù)報未來幾個月內(nèi)衛(wèi)星所處概略位置的預(yù)報星歷;用于計算定位時所需衛(wèi)星坐標(biāo)的廣播星歷,精度為幾米至幾十米(各個衛(wèi)星不同,隨時變化);以及GPS系統(tǒng)信息,如衛(wèi)星狀況等。</p&g

21、t;<p>  GPS接收機(jī)對碼的量測就可得到衛(wèi)星到接收機(jī)的距離,由于含有接收機(jī)衛(wèi)星鐘的誤差及大氣傳播誤差,故稱為偽距。對0A碼測得的偽距稱為UA碼偽距,精度約為20米左右,對P碼測得的偽距稱為P碼偽距,精度約為2米左右。</p><p>  GPS接收機(jī)對收到的衛(wèi)星信號,進(jìn)行解碼或采用其它技術(shù),將調(diào)制在載波上的信息去掉后,就可以恢復(fù)載波。嚴(yán)格而言,載波相位應(yīng)被稱為載波拍頻相位,它是收到的受多普勒頻

22、 移影響的衛(wèi)星信號載波相位與接收機(jī)本機(jī)振蕩產(chǎn)生信號相位之差。一般在接收機(jī)鐘確定的歷元時刻量測,保持對衛(wèi)星信號的跟蹤,就可記錄下相位的變化值,但開始觀測時的接收機(jī)和衛(wèi)星振蕩器的相位初值是不知道的,起始?xì)v元的相位整數(shù)也是不知道的,即整周模糊度,只能在數(shù)據(jù)處理中作為參數(shù)解算。相位觀測值的精度高至毫米,但前提是解出整周模糊度,因此只有在相對定位、并有一段連續(xù)觀測值時才能使用相位觀測值,而要達(dá)到優(yōu)于米級的定位 精度也只能采用相位觀測值。</

23、p><p><b>  GPS系統(tǒng)定位原理</b></p><p>  GPS定位的基本原理是根據(jù)高速運(yùn)動的衛(wèi)星瞬間位置作為已知的起算數(shù)據(jù),采用空間距離后方交會的方法,確定待測點(diǎn)的位置。如圖所示,假設(shè)t時刻在地面待測點(diǎn)上安置GPS接收機(jī),可以測定GPS信號到達(dá)接收機(jī)的時間△t,再加上接收機(jī)所接收到的衛(wèi)星星歷等其它數(shù)據(jù)可以確定四個數(shù)學(xué)方程式。</p><

24、p>  按定位方式,GPS定位分為單點(diǎn)定位和相對定位(差分定位)。單點(diǎn)定位就是根據(jù)一臺接收機(jī)的觀測數(shù)據(jù)來確定接收機(jī)位置的方式,它只能采用偽距觀測量,可用于車船等的概略導(dǎo)航定位。相對定位(差分定位)是根據(jù)兩臺以上接收機(jī)的觀測數(shù)據(jù)來確定觀測點(diǎn)之間的相對位置的方法,它既可采用偽距觀測量也可采用相位觀測量,大地測量或工程測量均應(yīng)采用相位觀測值進(jìn)行相對定位。</p><p>  在GPS觀測量中包含了衛(wèi)星和接收機(jī)的鐘

25、差、大氣傳播延遲、多路徑效應(yīng)等誤差,在定位計算時還要受到衛(wèi)星廣播星歷誤差的影響,在進(jìn)行相對定位時大部分公共誤差被抵消或削弱,因此定位精度將大大提高,雙頻接收機(jī)可以根據(jù)兩個頻率的觀測量抵消大氣中電離層誤差的主要部分,在精度要求高,接收機(jī)間距離較遠(yuǎn)時(大氣有明顯差別),應(yīng)選用雙頻接收機(jī)。</p><p>  28顆衛(wèi)星(其中4顆備用)早已升空,分布在6條交點(diǎn)互隔60度的軌道面上,距離地面約20000千米。已經(jīng)實(shí)現(xiàn)單機(jī)

26、導(dǎo)航精度約為10米,綜合定位的話,精度可達(dá)厘米級和毫米級。但民用領(lǐng)域開放的精度約為10米。</p><p>  GPS接收模塊主要技術(shù)參數(shù)</p><p>  GPS-NEO-6M-001 奮斗嵌入式開發(fā)工作室出品的一款高性能GPS 定位模塊。該模塊采用</p><p>  U-BLOX NEO-6M-001模組,模塊自帶25mmX25mm無源陶瓷天線,板載可充電后

27、備電池(用</p><p>  于支持溫啟動或熱啟動,后備電池在主電源斷電后,可以維持半小時左右的GPS 星歷保存)。 </p><p>  默示條件,GPS模塊SiRFStarIII接受每二輸出位置的數(shù)據(jù),通常$GPRMC精簡數(shù)據(jù)格式的數(shù)據(jù),包括緯度,經(jīng)度的目的,速度(結(jié)),運(yùn)動方向角,年,月,時,分,秒,毫秒,定位數(shù)據(jù)是有效的或無效的,和其他重要信息。語句格式如下:</p>

28、<p>  只需要知道位置信息,所以在閱讀唯一的,可以實(shí)際應(yīng)用。</p><p>  <1>:當(dāng)?shù)貢r間代表UTC。格式“當(dāng)每分鐘,小時,分鐘和秒2。</p><p>  <2>:工作代表國家?!薄帮@示可用的數(shù)據(jù),“V”表示接受警報,沒有可用的數(shù)據(jù)。</p><p>  <3>:代表緯度數(shù)據(jù)?!白蛹壍母袷健7址址?。”&

29、lt;/p><p>  <4>:緯度半球?yàn)榇淼摹癗”或“S”。</p><p>  <5>:代表經(jīng)度數(shù)據(jù)。格式和LD</p><p>  現(xiàn)狀;度分鐘。sub-sub-sub-sub.”</p><p>  <6>:代表經(jīng)度半球,為“E”或“</p><p>  軟件讀取經(jīng)緯度數(shù)據(jù),目

30、前的位置停止分析,確定用戶的當(dāng)前位置在該地區(qū)建立和平。的方法是基于用戶的設(shè)置確定中心的緯度和經(jīng)度和緯度和經(jīng)度計算出活動維持當(dāng)前的對象可以超過和平活動預(yù)定半徑。結(jié)果的基礎(chǔ)上的歧視,設(shè)置相應(yīng)的標(biāo)志。</p><p>  第二章、方案硬件設(shè)計</p><p><b>  GPS技術(shù)參數(shù)</b></p><p>  GPS接收機(jī)要具有接收、處理、顯示信

31、息的功能。硬件上必須有相應(yīng)的接收處理部分、顯示部分和配置輸入部分,同時需要處理器實(shí)現(xiàn)各部分功能的聯(lián)合。</p><p>  模塊自帶了一個狀態(tài)指示燈V1。該指示燈連接在UBLOX NEO-6M模組的TIMEPULSE端口,</p><p>  該端口的輸出特性可以通過程序設(shè)置。V1 LED燈,在默認(rèn)條件下,有2個狀態(tài): </p><p>  GPS模塊外觀如下圖&l

32、t;/p><p><b>  圖2-1</b></p><p>  通過V1 LED燈,我們就可以很方便的判斷模塊的當(dāng)前狀態(tài)。若led燈常亮,工作正常,未定位。,若led燈閃爍,表示模塊已經(jīng)定位成功。 </p><p>  2.2 單片機(jī)最小系統(tǒng)</p><p>  單片機(jī)的復(fù)位有上電復(fù)位和按鈕手動復(fù)位兩種。如圖2-12(a

33、)所示為上電復(fù)位電路,圖(b)所示為上電按鍵復(fù)位電路。上電復(fù)位是利用電容充電來實(shí)現(xiàn)的,即上電瞬間RST端的電位與VCC相同,隨著充電電流的減少,RST的電位逐漸下降。圖2-12 (a)中的R是施密特觸發(fā)器輸入端的一個10K?下拉電阻,時間常數(shù)為10×10-6×10×103=100ms。</p><p>  只要VCC的上升時間不超過1ms,振蕩器建立時間不超過10ms,這個時間常數(shù)足

34、以保證完成復(fù)位操作。</p><p><b>  圖2-2</b></p><p>  C51系列單片機(jī)的具體參數(shù)如下幾點(diǎn)</p><p>  (1) 與MCS-51兼容。 </p><p>  (2) 4K字節(jié)可編程閃爍存儲器。 </p><p>  (3) 壽命:1000寫/擦循環(huán)。</

35、p><p>  (4) 數(shù)據(jù)保留時間:10年。</p><p>  (5) 全靜態(tài)工作:0Hz-24MHz。</p><p>  (6) 三級程序存儲器鎖定。</p><p>  (7) 128×8位內(nèi)部RAM。</p><p>  (8) 32可編程I/O線。</p><p>  (9)

36、 兩個16位定時器/計數(shù)器。</p><p>  (10) 5個中斷源。 </p><p>  (11) 可編程串行通道。</p><p>  (12) 低功耗的閑置和掉電模式。</p><p>  (13) 片內(nèi)振蕩器和時鐘電路。</p><p>  單片機(jī)最下系統(tǒng)如下圖</p><p>&l

37、t;b>  圖2-3</b></p><p><b>  2.3 電源模塊</b></p><p>  GPS模塊的工作電壓為3.3V,如果加上5V電壓可能會造成該模塊損壞,造成模塊無法工作。因此該模塊應(yīng)運(yùn)而生。由一對穩(wěn)壓器和一對電容組成的電源模塊使得GPS可以安全正常運(yùn)行。同時為GPS的移動性提供了很大的方便。</p><p&g

38、t;<b>  圖2-4</b></p><p><b>  液晶顯示部分</b></p><p>  LCD12864與單片機(jī)的接線原理圖如圖2-5所示:</p><p><b>  圖2-5</b></p><p>  帶中文字庫的LCD12864是一種具有4位、8位并行、

39、2線或3線串行多種接口方式,內(nèi)部含有國標(biāo)一級、二級簡體中文字庫的點(diǎn)陣圖形液晶顯示模塊,其顯示分辨率為128×64,內(nèi)置8192個16×16點(diǎn)漢字,和128個16×8點(diǎn)ASCII字符集。利用該模塊靈活的接口方式和簡單、方便的操作指令,可構(gòu)成全中文人機(jī)交互圖形界面??梢燥@示8×4行、16×16點(diǎn)陣的漢字,也可完成圖形顯示。低電壓低功耗是其又一顯著特點(diǎn)。由該模塊構(gòu)成的液晶顯示方案與同類型的圖形

40、點(diǎn)陣液晶顯示模塊相比,不論硬件電路結(jié)構(gòu)或顯示程序都要簡潔的多,且該模塊的價格也略低于相同點(diǎn)陣的圖形液晶模塊。</p><p>  液晶模塊接口參數(shù)如下</p><p>  *注釋1:如在實(shí)際應(yīng)用中僅使用串口通訊模式,可將PSB接固定低電平,也可以將模塊上的J8和“GND”用焊錫短接。</p><p>  第3章 系統(tǒng)軟件設(shè)計</p><p>

41、<b>  程序初始化模塊</b></p><p>  初始化模塊完成開機(jī)上電后對單片機(jī)、液晶顯示器和GPS 模塊的初始化工作。對單片機(jī)設(shè)置串口工作模式、設(shè)置波特率和中斷工作模式;對液晶顯示器設(shè)置開機(jī)畫面和顯示模式;完成對GPS 模塊串口的成功通信。</p><p>  數(shù)據(jù)接收處理模塊負(fù)責(zé)處理從GPS接收到的數(shù)據(jù)。在單片機(jī)串口收到信息后,先判別是否為語句引導(dǎo)頭“$”

42、,再接收信息內(nèi)容,然后根據(jù)語句標(biāo)識區(qū)分出信息類別以對收到ASCII碼進(jìn)行處理顯示。若整個數(shù)據(jù)接收正確,便對數(shù)據(jù)進(jìn)行處理;若接收不正確,則重新進(jìn)行接收。</p><p>  全球定位系統(tǒng)的主程序流程如下圖:</p><p><b>  圖3-1</b></p><p><b>  軟件系統(tǒng)調(diào)試</b></p>

43、<p>  在對GPS接收到的衛(wèi)星信息進(jìn)行處理時,碰到較為麻煩的問題是在對接收到的時間信息進(jìn)行轉(zhuǎn)換上。直接從衛(wèi)星接收到的時間是UTC時間,北京時間應(yīng)在UTC時間上加上8小時才是準(zhǔn)確的北京時,在超出24小時時應(yīng)作減24小時處理。</p><p>  剛開始將對時間轉(zhuǎn)換的算法放在主函數(shù)中處理,程序如下:</p><p>  if(g_Ptr == 2) //接收到

44、正確的數(shù)據(jù)幀</p><p><b>  {</b></p><p>  i = g_DisTime[0]-'0' ;//提取時間的小時位高位并轉(zhuǎn)換碼型</p><p>  j = g_DisTime[1]-'0';//提取時間的小時位低位并轉(zhuǎn)換碼型</p><p>  j = i*10

45、+ j+ 8; //在UTC時間上加上8個小時</p><p>  if (j >= 24) //判斷得到的時間是否超過24小時,超出變作減24處理</p><p><b>  {</b></p><p><b>  j - = 24;</b></p><p><b

46、>  } </b></p><p>  g_DisTime[0] = j/10+'0'; //將北京時間高一位作碼型變換并賦予高一位顯示</p><p>  g_DisTime[1] = j%10 +'0';//將北京時間高二位作碼型變換并賦予高二位顯示</p><p><b>  }</b>

47、</p><p>  在調(diào)試中出現(xiàn)一個問題,在做了以上的處理后,時間的小時位數(shù)據(jù)并不完全正確,高位顯示的與北京時間相同,但低位卻與UTC時間相同。在做了各種嘗試(如在UTC時間上做加9處理、直接給六位時間g_DisTime[5]賦值等)后總結(jié)出這樣一個問題,以上的算法處理只對六位數(shù)據(jù)位的高一位處理有效,低五位的顯示始終都是正確UTC時間。經(jīng)過分析,初步認(rèn)定上面的程序并沒有被完全的執(zhí)行。因GPS接收模塊源源不斷的傳

48、送數(shù)據(jù)給單片機(jī)處理,在運(yùn)行過程中定位信息大約每秒鐘更新一次,在主函數(shù)中對收到的時間進(jìn)行處理時有可能會出現(xiàn)還沒來得及處理完畢時便接收到下一幀數(shù)據(jù),故時間的處理就可能會有只對高一位處理完成而沒完成處理好低五位時又進(jìn)入了串行口中斷,那么液晶顯示的結(jié)果就是經(jīng)過處理的高一位(北京時間)和未經(jīng)處理的低五位(UTC時間)??紤]到以上原因,將原放在主函數(shù)的時間轉(zhuǎn)換處理程序放置在到中斷時一收到UTC時間就對其進(jìn)行轉(zhuǎn)換處理。經(jīng)過了調(diào)試,終于在液晶上顯示出來

49、正確的北京時間,證明了以上的分析、推斷的正確性。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]楊 剛,電子系統(tǒng)設(shè)計與實(shí)踐,電子工業(yè)出版社,2009.3</p><p>  [2]何希才,新型實(shí)用電子電路400例,電子工業(yè)出版社,2000.8</p><p>  [3]楊 剛,電子系統(tǒng)設(shè)計與

50、實(shí)踐,電子工業(yè)出版社,2009.3</p><p>  [2]高 鋒,單片微型計算機(jī)原理與接口技術(shù),科學(xué)出版社, 2003</p><p>  [1]洪大永,GPS全球定位系統(tǒng)技術(shù)及應(yīng)用, 廈門大學(xué)出版社, 1998</p><p><b>  附 錄</b></p><p><b>  軟件程序</b

51、></p><p>  uchar GPS_time[9]; //UTC時間</p><p>  uchar xdata GPS_wd[12]; //緯度</p><p>  uchar xdata GPS_jd[13]; //經(jīng)度</p><p>  uchar GPS_warn;

52、 //定位警告</p><p>  uchar GPS_quality; //定位質(zhì)量</p><p>  uchar GPS_status; //定位狀態(tài)</p><p>  uchar GPS_alt[8]; //海拔</p><p>  uchar GPS_

53、sv[3]; //使用衛(wèi)星</p><p>  uchar GPS_speed[10]; //速度</p><p>  uchar GPS_date[9]; //UTC日期</p><p>  uchar Segment; //逗號計數(shù)</p><p>  uch

54、ar Bytes_counter;</p><p>  uchar Command;</p><p>  void GPRMC(uchar);</p><p>  void GPGGA(uchar);</p><p>  void GPVTG(uchar);</p><p>  void GPGSA(uchar);&l

55、t;/p><p>  void gps(uchar);</p><p>  void gps(uchar tmp)</p><p><b>  {</b></p><p>  //com_send_byte(tmp);</p><p>  if(tmp == '$')//起始標(biāo)志<

56、;/p><p><b>  {</b></p><p>  Command = 0;</p><p>  ReceivingF = 1;</p><p>  Bytes_counter = 0;</p><p>  Segment = 0; //清空語句段計數(shù)器</p

57、><p><b>  return;</b></p><p><b>  }</b></p><p>  if(ReceivingF)</p><p><b>  { </b></p><p>  if(tmp == ',')&

58、lt;/p><p><b>  {</b></p><p>  ++Segment;</p><p>  Bytes_counter = 0; //清空段字節(jié)計數(shù)器</p><p><b>  return;</b></p><p><b>  }</b&g

59、t;</p><p>  if(tmp == '*')//收到結(jié)束標(biāo)志</p><p><b>  {</b></p><p>  ReceivingF = 0;</p><p><b>  EndF = 1;</b></p><p><b>  r

60、eturn;</b></p><p><b>  }</b></p><p>  if(Segment == 0)</p><p><b>  {</b></p><p>  if(Bytes_counter == 3) //段0,語句類型判斷</p><p> 

61、 switch(tmp)</p><p><b>  {</b></p><p>  case 'G':Command = 1;//語句類型 $GPGGA</p><p><b>  GGAF = 1;</b></p><p><b>  break;</b>&

62、lt;/p><p>  case 'M':Command = 2;//語句類型 $GPRMC</p><p><b>  RMCF = 1;</b></p><p><b>  break;</b></p><p>  case 'T':Command = 3;//語句類

63、型 $GPVTG</p><p><b>  VTGF = 1;</b></p><p><b>  break;</b></p><p>  case 'S':break;</p><p>  default:Command = 0; //非有效數(shù)據(jù)類型,終止當(dāng)前數(shù)據(jù)接收</

64、p><p>  ReceivingF = 0;</p><p><b>  break;</b></p><p><b>  }</b></p><p>  if(Bytes_counter == 4)</p><p>  if(Command==0 && tmp

65、=='A')</p><p><b>  {</b></p><p>  Command = 4;//語句類型 $GPGSA</p><p><b>  GSAF = 1;</b></p><p><b>  }</b></p><p>

66、<b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  switch(Command)</p><p><b>  {</b></p><p>  case

67、1:GPGGA(tmp);</p><p><b>  break;</b></p><p>  case 2:GPRMC(tmp);</p><p><b>  break;</b></p><p>  case 3:GPVTG(tmp);</p><p><b>

68、;  break;</b></p><p>  case 4:GPGSA(tmp);</p><p><b>  break;</b></p><p>  default:break;</p><p><b>  }</b></p><p><b>  

69、}</b></p><p>  ++Bytes_counter; </p><p><b>  }</b></p><p>  NewByteF = 0;</p><p><b>  return;</b></p><p><b>  }<

70、/b></p><p>  void GPGGA(uchar tmp)</p><p><b>  {</b></p><p>  switch(Segment)</p><p><b>  {</b></p><p>  case 1: if(Bytes_cou

71、nter == 2 || Bytes_counter == 5) //$GPGGA段1,UTC時間,hhmmss(時分秒)格式,取前6位 轉(zhuǎn)換為HH:MM:SS格式</p><p><b>  {</b></p><p>  GPS_time[Bytes_counter] = ':';</p><p>  ++Bytes_

72、counter;</p><p><b>  }</b></p><p>  if(Bytes_counter<8)</p><p>  GPS_time[Bytes_counter] = tmp;</p><p>  GPS_time[8] = '\0';</p><p>

73、  break; </p><p>  case 2: if(Bytes_counter == 3) //$GPGGA 段2處理 緯度ddmm.mmmm(度分)格式</p><p><b>  {</b></p><p>  GPS_wd[Bytes_counter] = '.';

74、 //接收第二個字節(jié)后插入'.'</p><p>  ++Bytes_counter;</p><p>  GPS_wd[11] = '\0';</p><p><b>  }</b></p><p>  if(Bytes_counter == 0)</p><p&

75、gt;  ++Bytes_counter;</p><p>  GPS_wd[Bytes_counter] = tmp; </p><p><b>  break;</b></p><p>  case 3: GPS_wd[0] = tmp; //$GPGGA第3段處理 緯度半球N(北半球

76、)或S(南半球)</p><p><b>  break;</b></p><p>  case 4: if(Bytes_counter == 4) //$GPGGA 段4處理 經(jīng)度dddmm.mmmm(度分)格式</p><p><b>  {</b></p><

77、;p>  GPS_jd[Bytes_counter] = '.'; //接收第3個字節(jié)后插入'.'</p><p>  ++Bytes_counter;</p><p>  GPS_jd[12] = '\0';</p><p><b>  }</b></p><p&

78、gt;  if(Bytes_counter == 0)</p><p>  ++Bytes_counter;</p><p>  GPS_jd[Bytes_counter] = tmp; </p><p><b>  break;</b></p><p>  case 5: GPS_jd[0] = tmp

79、; //$GPGGA第5段處理 經(jīng)度半球E(東經(jīng))或W(西經(jīng))</p><p><b>  break;</b></p><p>  case 6: GPS_quality = tmp;</p><p><b>  break;</b></p><p>  c

80、ase 7: if(Bytes_counter<2) </p><p>  GPS_sv[Bytes_counter] = tmp;</p><p>  GPS_sv[2] = '\0'; </p><p><b>  break;</b></p><

81、p>  case 9: if(Bytes_counter<7) {</p><p>  GPS_alt[Bytes_counter] = tmp;</p><p>  GPS_alt[Bytes_counter+1] = '\0';</p><p><

82、b>  } </b></p><p><b>  break;</b></p><p>  default:break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void GP

83、RMC(uchar tmp)</p><p><b>  {</b></p><p>  switch(Segment)</p><p><b>  {</b></p><p>  case 9: if(Bytes_counter<2) //$GPR

84、MC第9段處理 UTC日期,ddmmyy(日月年)格式轉(zhuǎn)換為yy-mm-dd</p><p><b>  {</b></p><p>  GPS_date[6+Bytes_counter] = tmp;</p><p><b>  }</b></p><p>  if(Bytes_counter&g

85、t;1 && Bytes_counter<4)//月</p><p><b>  {</b></p><p>  GPS_date[1+Bytes_counter] = tmp;</p><p>  GPS_date[5] = '-';</p><p><b>  }<

86、;/b></p><p>  if(Bytes_counter>3 && Bytes_counter<6)//年</p><p><b>  {</b></p><p>  GPS_date[Bytes_counter-4] = tmp;</p><p>  GPS_date[2] =

87、'-';</p><p>  GPS_date[8] = '\0';</p><p><b>  }</b></p><p><b>  break;</b></p><p>  default:break;</p><p><b>

88、  }</b></p><p><b>  }</b></p><p>  void GPGSA(uchar tmp)</p><p><b>  {</b></p><p>  switch(Segment)</p><p><b>  {</b

89、></p><p>  case 2: GPS_status = tmp; break;</p><p>  default:break;</p><p><b>  }</b></p><p><b>  }</b></p>

90、<p>  void GPVTG(uchar tmp)</p><p><b>  {</b></p><p>  switch(Segment)</p><p><b>  {</b></p><p>  case 7:if(Bytes_counter < 7) </p>

91、;<p><b>  {</b></p><p>  GPS_speed[Bytes_counter] = tmp;</p><p>  GPS_speed[Bytes_counter+1] = '$'; </p><p>  GPS_speed[Bytes_counter+2] = '"'

92、;;</p><p>  GPS_speed[Bytes_counter+3] = '/';</p><p>  GPS_speed[Bytes_counter+4] = '#';</p><p>  GPS_speed[Bytes_counter+5] = '\0';</p><p><

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論