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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

4、可以做到體積小、精度高、連續(xù)導(dǎo)航,本設(shè)計(jì)在測(cè)控領(lǐng)域的應(yīng)用開(kāi)發(fā)中具有一定的實(shí)用價(jià)值和借鑒價(jià)值。</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)簡(jiǎn)介6</p><p>

8、;  1.1GPS系統(tǒng)的定位精度6</p><p>  1.2GPS系統(tǒng)定位原理8</p><p>  第二章、方案硬件設(shè)計(jì)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è)計(jì)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年美國(guó)軍方的一個(gè)項(xiàng)目,1964年投入使用。20世紀(jì)70年代,美國(guó)陸??杖娐?lián)合研制了新一代衛(wèi)星定位系統(tǒng)GPS 。主要目的是為陸??杖箢I(lǐng)域提供實(shí)時(shí)、全天候和全球性的導(dǎo)航服務(wù),并用于情報(bào)收集、核爆監(jiān)測(cè)和應(yīng)急通訊等一些軍事目的,經(jīng)過(guò)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)-簡(jiǎn)稱GPS。</p><p>  GPS的前身是美國(guó)軍方研制的一種子午儀衛(wèi)星定位系統(tǒng)(Transit),1958年研制,1964年正式投入使用。該系統(tǒng)用5到6顆衛(wèi)星組成的星網(wǎng)工作,每天最多繞過(guò)地球13次,并且無(wú)法給出高度信息,在定位精

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

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

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

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

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

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

18、衛(wèi)星之間的真實(shí)距離,而是偽距(PR):當(dāng)GPS衛(wèi)星正常工作時(shí),會(huì)不斷地用1和0二進(jìn)制碼元組成的偽隨機(jī)碼(簡(jiǎn)稱偽碼)發(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)星星歷、工作狀況、時(shí)鐘改正

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

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

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

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

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

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

25、差、大氣傳播延遲、多路徑效應(yīng)等誤差,在定位計(jì)算時(shí)還要受到衛(wèi)星廣播星歷誤差的影響,在進(jìn)行相對(duì)定位時(shí)大部分公共誤差被抵消或削弱,因此定位精度將大大提高,雙頻接收機(jī)可以根據(jù)兩個(gè)頻率的觀測(cè)量抵消大氣中電離層誤差的主要部分,在精度要求高,接收機(jī)間距離較遠(yuǎn)時(shí)(大氣有明顯差別),應(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á)厘米級(jí)和毫米級(jí)。但民用領(lǐng)域開(kāi)放的精度約為10米。</p><p>  GPS接收模塊主要技術(shù)參數(shù)</p><p>  GPS-NEO-6M-001 奮斗嵌入式開(kāi)發(fā)工作室出品的一款高性能GPS 定位模塊。該模塊采用</p><p>  U-BLOX NEO-6M-001模組,模塊自帶25mmX25mm無(wú)源陶瓷天線,板載可充電后

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

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

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)度計(jì)算出活動(dòng)維持當(dāng)前的對(duì)象可以超過(guò)和平活動(dòng)預(yù)定半徑。結(jié)果的基礎(chǔ)上的歧視,設(shè)置相應(yīng)的標(biāo)志。</p><p>  第二章、方案硬件設(shè)計(jì)</p><p><b>  GPS技術(shù)參數(shù)</b></p><p>  GPS接收機(jī)要具有接收、處理、顯示信

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

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

33、)所示為上電復(fù)位電路,圖(b)所示為上電按鍵復(fù)位電路。上電復(fù)位是利用電容充電來(lái)實(shí)現(xiàn)的,即上電瞬間RST端的電位與VCC相同,隨著充電電流的減少,RST的電位逐漸下降。圖2-12 (a)中的R是施密特觸發(fā)器輸入端的一個(gè)10K?下拉電阻,時(shí)間常數(shù)為10×10-6×10×103=100ms。</p><p>  只要VCC的上升時(shí)間不超過(guò)1ms,振蕩器建立時(shí)間不超過(guò)10ms,這個(gè)時(shí)間常數(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é)可編程閃爍存儲(chǔ)器。 </p><p>  (3) 壽命:1000寫(xiě)/擦循環(huán)。</

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

36、 兩個(gè)16位定時(shí)器/計(jì)數(shù)器。</p><p>  (10) 5個(gè)中斷源。 </p><p>  (11) 可編程串行通道。</p><p>  (12) 低功耗的閑置和掉電模式。</p><p>  (13) 片內(nèi)振蕩器和時(shí)鐘電路。</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電壓可能會(huì)造成該模塊損壞,造成模塊無(wú)法工作。因此該模塊應(yīng)運(yùn)而生。由一對(duì)穩(wěn)壓器和一對(duì)電容組成的電源模塊使得GPS可以安全正常運(yùn)行。同時(shí)為GPS的移動(dòng)性提供了很大的方便。</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>  帶中文字庫(kù)的LCD12864是一種具有4位、8位并行、

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

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

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

42、,再接收信息內(nèi)容,然后根據(jù)語(yǔ)句標(biāo)識(shí)區(qū)分出信息類別以對(duì)收到ASCII碼進(jìn)行處理顯示。若整個(gè)數(shù)據(jù)接收正確,便對(duì)數(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>  在對(duì)GPS接收到的衛(wèi)星信息進(jìn)行處理時(shí),碰到較為麻煩的問(wèn)題是在對(duì)接收到的時(shí)間信息進(jìn)行轉(zhuǎn)換上。直接從衛(wèi)星接收到的時(shí)間是UTC時(shí)間,北京時(shí)間應(yīng)在UTC時(shí)間上加上8小時(shí)才是準(zhǔn)確的北京時(shí),在超出24小時(shí)時(shí)應(yīng)作減24小時(shí)處理。</p><p>  剛開(kāi)始將對(duì)時(shí)間轉(zhuǎn)換的算法放在主函數(shù)中處理,程序如下:</p><p>  if(g_Ptr == 2) //接收到

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

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

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

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

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

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

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

51、></p><p>  uchar GPS_time[9]; //UTC時(shí)間</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; //逗號(hào)計(jì)數(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; //清空語(yǔ)句段計(jì)數(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é)計(jì)數(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,語(yǔ)句類型判斷</p><p> 

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

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

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

最新文檔

評(píng)論

0/150

提交評(píng)論