版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 緒論</b></p><p> GPS定位的數(shù)據(jù)格式NMER一0183標(biāo)準(zhǔn)應(yīng)用于GPS方面時(shí),數(shù)據(jù)串以“$GP”開頭,主要有GGA、GL、ZDA、GSV、GSA、ALM等格式。</p><p> 這次設(shè)計(jì)主要是基于DSP的GPGGA定位信息的提取,在實(shí)驗(yàn)箱上實(shí)現(xiàn)GPGGA定位數(shù)據(jù)的提取。</p><p> 第
2、一部分為GPS原理的介紹,GPS定位的一些原理,再詳細(xì)闡述GPGGA信息的接收和提取。</p><p> 第二部分為NEMA—0183數(shù)據(jù)標(biāo)準(zhǔn)在GPS中的應(yīng)用。</p><p> 第三部分為系統(tǒng)整體設(shè)計(jì),硬件的配置,以及整個(gè)系統(tǒng)的設(shè)計(jì)原理圖。</p><p> 第四部分為系統(tǒng)程序設(shè)計(jì)思路以及程序的實(shí)現(xiàn)。</p><p> 第五部分為調(diào)
3、試結(jié)果與分析。</p><p> 第一章 GPS原理介紹</p><p><b> 1.1 GPS簡介</b></p><p> GPS 是英文Global Positioning System(全球定位系統(tǒng))的簡稱,而其中文簡稱為“球位系”。GPS是20世紀(jì)70年代由美國陸??杖娐?lián)合研制的新一代空間衛(wèi)星導(dǎo)航定位系統(tǒng) 。其主要目的是為陸
4、、海、空三大領(lǐng)域提供實(shí)時(shí)、 全天候和全球性的導(dǎo)航服務(wù),并用于情報(bào)收集、核爆監(jiān)測和應(yīng)急通訊等一些軍事目的,簡單地說,這是一個(gè)由覆蓋全球的24顆衛(wèi)星組成的衛(wèi)星系統(tǒng)。這個(gè)系統(tǒng)可以保證在任意時(shí)刻,地球上任意一點(diǎn)都可以同時(shí)觀測到4顆衛(wèi)星,以保證衛(wèi)星可以采集到該觀測點(diǎn)的經(jīng)緯度和高度,以便實(shí)現(xiàn)導(dǎo)航、定位、授時(shí)等功能。這項(xiàng)技術(shù)可以用來引導(dǎo)飛機(jī)、船舶、車輛以及個(gè)人,安全、準(zhǔn)確地沿著選定的路線,準(zhǔn)時(shí)到達(dá)目的地。</p><p>
5、GPS主要由空間部分、地面控制系統(tǒng)、用戶設(shè)備等部分組成,GPS的空間部分是由24顆衛(wèi)星組成(21顆工作衛(wèi)星,3顆備用衛(wèi)星),它位于距地表20200km的上空,均勻分布在6 個(gè)軌道面上(每個(gè)軌道面4 顆) ,軌道傾角為55°。衛(wèi)星的分布使得在全球任何地方、任何時(shí)間都可觀測到4 顆以上的衛(wèi)星,并能在衛(wèi)星中預(yù)存的導(dǎo)航信息。GPS的衛(wèi)星因?yàn)榇髿饽Σ恋葐栴},隨著時(shí)間的推移,導(dǎo)航精度會(huì)逐漸降低;地面控制系統(tǒng)由監(jiān)測站(Monitor Sta
6、tion)、主控制站(Master Monitor Station)、地面天線(Ground Antenna)所組成,主控制站位于美國科羅拉多州春田市(Colorado Spring)。地面控制站負(fù)責(zé)收集由衛(wèi)星傳回之訊息,并計(jì)算衛(wèi)星星歷、相對距離,大氣校正等數(shù)據(jù);用戶設(shè)備部分即GPS 信號接收機(jī)。其主要功能是能夠捕獲到按一定衛(wèi)星截止角所選擇的待測衛(wèi)星,并跟蹤這些衛(wèi)星的運(yùn)行。當(dāng)接收機(jī)捕獲到跟蹤的衛(wèi)星信號后,就可測量出接收天線至衛(wèi)星的偽距離
7、和距離的變化率,解調(diào)出衛(wèi)星軌道參數(shù)等數(shù)據(jù)。根據(jù)這些數(shù)據(jù),接收機(jī)中的微處理計(jì)算機(jī)就可按定位解算方法進(jìn)行定位計(jì)算,計(jì)算出用戶所在地理位</p><p> 1.2 GPS 定位原理</p><p> GPS定位的基本原理是根據(jù)高速運(yùn)動(dòng)的衛(wèi)星瞬間位置作為已知的起算數(shù)據(jù),采用空間距離后方交會(huì)的方法,確定待測點(diǎn)的位置。如圖所示,假設(shè)t時(shí)刻在地面待測點(diǎn)上安置GPS接收機(jī),可以測定GPS信號到達(dá)接收機(jī)
8、的時(shí)間△t,再加上接收機(jī)所接收到的衛(wèi)星星歷等其它數(shù)據(jù)可以確定以下四個(gè)方程式: </p><p> 上述四個(gè)方程式中待測點(diǎn)坐標(biāo)x、 y、 z 和Vto為未知參數(shù),其中di=c△ti (i=1、2、3、4),di (i=1、2、3、4) 分別為衛(wèi)星1、衛(wèi)星2、衛(wèi)星3、衛(wèi)星4到接收機(jī)之間的距離,△ti (i=1、2、3、4) 分別為衛(wèi)星1、衛(wèi)星2、衛(wèi)星3、衛(wèi)星4的信號到達(dá)接收機(jī)所經(jīng)歷的時(shí)間,c為GPS信號的傳播速度(
9、即光速)。 四個(gè)方程式中各個(gè)參數(shù)意義如下:x、y、z 為待測點(diǎn)坐標(biāo)的空間直角坐標(biāo)。 xi 、yi 、zi (i=1、2、3、4) 分別為衛(wèi)星1、衛(wèi)星2、衛(wèi)星3、衛(wèi)星4在t時(shí)刻的空間直角坐標(biāo), 可由衛(wèi)星導(dǎo)航電文求得。Vt i (i=1、2、3、4) 分別為衛(wèi)星1、衛(wèi)星2、衛(wèi)星3、衛(wèi)星4的衛(wèi)星鐘的鐘差,由衛(wèi)星星歷提供。Vto為接收機(jī)的鐘差。 由以上四個(gè)方程即可解算出待測點(diǎn)的坐標(biāo)x、y、z 和接收機(jī)的鐘差Vto.</p><
10、;p> 1.3 GPS定位方法</p><p> GPS定位的方法是多種多樣的,用戶可以根據(jù)不同的用途采用不同的定位方法。GPS定位方法可依據(jù)不同的分類標(biāo)準(zhǔn),可分為:(1)根據(jù)定位所采用的觀測值:1.偽距定位:偽距定位所采用的觀測值為GPS偽距觀測值,所采用的偽距觀測值既可以是C/A碼偽距,也可以是P碼偽距。偽距定位的優(yōu)點(diǎn)是數(shù)據(jù)處理簡單,對定位條件的要求低,不存在整周模糊度的問題,可以非常容易地實(shí)現(xiàn)實(shí)時(shí)
11、定位;其缺點(diǎn)是觀測值精度低,C/A 碼偽距觀測值的精度一般為3米,而P碼偽距觀測值的精度一般也在30個(gè)厘米左右,從而導(dǎo)致定位成果精度低,另外,若采用精度較高的P碼偽距觀測值,還存在AS的問題,2載波相位定位 :載波相位定位所采用的觀測值為GPS的載波相位觀測值,即L1、L2或它們的某種線性組合。載波相位定位的優(yōu)點(diǎn)是觀測值的精度高,一般優(yōu)于2個(gè)毫米;其缺點(diǎn)是數(shù)據(jù)處理過程復(fù)雜,存在整周模糊度的問題。</p><p>
12、 根據(jù)定位的模式:1. 絕對定位:絕對定位又稱為單點(diǎn)定位,這是一種采用一臺(tái)接收機(jī)進(jìn)行定位的模式,它所確定的是接收機(jī)天線的絕對坐標(biāo)。這種定位模式的特點(diǎn)是作業(yè)方式簡單,可以單機(jī)作業(yè)。絕對定位一般用于導(dǎo)航和精度要求不高的應(yīng)用中;</p><p> 2 相對定位:相對定位又稱為差分定位,這種定位模式采用兩臺(tái)以上的接收機(jī),同時(shí)對一組相同的衛(wèi)星進(jìn)行觀測,以確定接收機(jī)天線間的相互位置關(guān)系;</p><p
13、> 根據(jù)獲取定位結(jié)果的時(shí)間:1、實(shí)時(shí)定位::據(jù)接收機(jī)觀測到的數(shù)據(jù),實(shí)時(shí)地解算出接收機(jī)天線所在的位置.。 2 、非實(shí)時(shí)定位:又稱后處理定位,它是通過對接收機(jī)接收到的數(shù)據(jù)進(jìn)行后處理以進(jìn)行定位得方法。</p><p> 根據(jù)定位時(shí)接收機(jī)的運(yùn)動(dòng)狀態(tài):1、動(dòng)態(tài)定位:就是在進(jìn)行GPS定位時(shí),認(rèn)為接收機(jī)的天線在整個(gè)觀測過程中的位置是變化的。也就是說,在數(shù)據(jù)處理時(shí),將接收機(jī)天線的位置作為一個(gè)隨時(shí)間的改變而改變的量。動(dòng)態(tài)
14、定位又分為Kinematic和Dynamic兩類。</p><p> 3 靜態(tài)定位:在進(jìn)行GPS定位時(shí),認(rèn)為接收機(jī)的天線在整個(gè)觀測過程中的位置是保持不變的。也就是說,在數(shù)據(jù)處理時(shí),將接收機(jī)天線的位置作為一個(gè)不隨時(shí)間的改變而改變的量。在測量中,靜態(tài)定位一般用于高精度的測量定位,其具體觀測模式多臺(tái)接收機(jī)在不同的測站上進(jìn)行靜止同步觀測,時(shí)間由幾分鐘、幾小時(shí)甚至數(shù)十小時(shí)不等。</p><p>
15、 1.4 GPS定位的特點(diǎn)</p><p> 全球定位系統(tǒng)的主要特點(diǎn):(1)全球、 全天候工作 (2)定位精度高應(yīng)用實(shí)踐已經(jīng)證明,GPS相對定位精度在50KM以內(nèi)可達(dá)10-6,100-500KM可達(dá)10-7m,1000KM可達(dá)10-9m。在300-1500M工程精密定位中,1小時(shí)以上觀測的解其平面其平面位置誤差小于1mm,與ME-5000電磁波測距儀測定得邊長比較,其邊長較差最大為0.5mm,校差中誤差為0.
16、3mm。(3)、觀測時(shí)間短 隨著GPS系統(tǒng)的不斷完善,軟件的不斷更新,目前,20KM以內(nèi)相對靜態(tài)定位,僅需15-20分鐘;快速靜態(tài)相對定位測量時(shí),當(dāng)每個(gè)流動(dòng)站與基準(zhǔn)站相距在15KM以內(nèi)時(shí),流動(dòng)站觀測時(shí)間只需1-2分鐘,然后可隨時(shí)定位,每站觀測只需幾秒鐘。</p><p> 第二章 數(shù)據(jù)的格式與提取</p><p> 2.1 NMEA-0183數(shù)據(jù)格式介紹</p>&l
17、t;p> NMEA系列標(biāo)準(zhǔn)是其制定的關(guān)于海洋電子設(shè)備之間通信接口和協(xié)議的標(biāo)準(zhǔn),1983年制定了NMEA一0183標(biāo)準(zhǔn)。這一標(biāo)準(zhǔn)在兼容NMEA一0180和NMEA一0182標(biāo)準(zhǔn)的基礎(chǔ)上,增加了GPS、測深儀、羅經(jīng)方位系統(tǒng)等多種設(shè)備的接口和通信協(xié)議定義,同時(shí),標(biāo)準(zhǔn)還允許一些特定設(shè)備制造商對其設(shè)備(如Garmin GPS一38、TfimbleEnsign XL)通信自行定義協(xié)議。由于NMEA一0183標(biāo)準(zhǔn)的通用性和靈活性,因而在全世界
18、被廣泛使用。</p><p> NMEA一0183格式定義:</p><p> ?。?) 數(shù)據(jù)串定義:NEMA一0183格式數(shù)據(jù)串的所有字符均為母的“語句ID”,其后是數(shù)據(jù)體,數(shù)據(jù)字段以逗號分隔,語句末尾為checksum(可選),以回車換行結(jié)束。每行語句最多包含82個(gè)字符(包括回車換行和“$”符號)。數(shù)據(jù)串以逗號分隔符識(shí)別,空字段保留逗號。</p><p>
19、語句結(jié)束的checksum 由一個(gè)“*”和兩個(gè)數(shù)據(jù)位的十六進(jìn)制數(shù)組成。NI、伍A一0183標(biāo)準(zhǔn)允許個(gè)別廠商自己定義語句格式,這些語句以“$P”開頭,其后是3個(gè)字符的廠家ID識(shí)別號,后接自定義數(shù)據(jù)體。</p><p> NMEA一0183標(biāo)準(zhǔn)應(yīng)用于GPS方面時(shí),數(shù)據(jù)串以“$GP”開頭,主要有GGA、GL、ZDA、GSV、GSA、ALM等格式,這些格式的作用分別是:</p><p> $G
20、P0GA:輸出GPS的定位信息;</p><p> $GPGLL:輸出大地坐標(biāo)信息;</p><p> $GPZDA:輸出UTC時(shí)間信息;</p><p> $GPGSV::輸出可見的衛(wèi)星信息;</p><p> $GPGST:輸出定位標(biāo)準(zhǔn)差信息;</p><p> $GPGSA:輸出衛(wèi)星DOP值信息;<
21、;/p><p> $GPALM:輸出衛(wèi)星星歷信息。</p><p> (2)通信協(xié)議定義:NMEA一0183格式通信采用RS232通信標(biāo)準(zhǔn),RS232標(biāo)準(zhǔn)用于DTE和DCE。GPS和微機(jī)之間的通信屬于DTE。標(biāo)準(zhǔn)的RS232通信連接采用25針</p><p> 串口(DB一25),也可用于現(xiàn)在多數(shù)微機(jī)流行的9針串口(DE一9)。</p><p&
22、gt; 在試驗(yàn)中,不需要了解NMEA0183通信協(xié)議的全部信息,僅需要從中挑選出需要的那部分定位數(shù)據(jù),其余的信息忽略掉。GPS與掌上電腦通信時(shí),通過串口每秒鐘發(fā)送10條數(shù)據(jù)。實(shí)際導(dǎo)航應(yīng)用讀取GPS的空間定位數(shù)據(jù)時(shí),可以根據(jù)需要每隔幾秒鐘更新一次經(jīng)緯度和時(shí)問數(shù)據(jù),不必頻繁地更新數(shù)據(jù),否則,會(huì)浪費(fèi)掌上設(shè)備有限的電能。如果和衛(wèi)星通信正常,可以接收到的數(shù)據(jù)格式如下:$GPGGA,<l>,<2>,<3>,&l
23、t;4>,<5>,<6>,<7>,<8>,<9>,<10>,<u>,<12>*hh<cR><LF>。</p><p> 一個(gè)完整的NEMA0183語句是從起始符“$GPGGA”到終止符“<CR><LF>”為止的一段字符串。需要掌握的信息是經(jīng)緯度、經(jīng)緯度方向、GPS
24、定位狀態(tài)和接收信號的時(shí)間。所以當(dāng)接收到這樣一個(gè)完整的NEMA0183語句時(shí),提取有用信息的方法是:先判定起始符$GPGGA的位置,從起始符開始讀人數(shù)據(jù),再通過異或校驗(yàn)后的語句中尋找字符“,”,然后截取前后兩個(gè)“,”之間的字符(串)獲得所關(guān)心的數(shù)據(jù),并以回車符為一個(gè)CPS語句的終止符,得到一個(gè)完整的GPS信號。在提取出的GPS語句中,找尋經(jīng)緯度所在的逗號位置,讀出經(jīng)緯度坐標(biāo),再將經(jīng)緯度坐標(biāo)進(jìn)行度數(shù)的轉(zhuǎn)換。因?yàn)榈貓D的坐標(biāo)是以度數(shù)為標(biāo)準(zhǔn)的?!?/p>
25、 </p><p> 2.2 提取GPGGA定位數(shù)據(jù)</p><p> GPS 接收機(jī)只要處于工作狀態(tài)就會(huì)源源不斷地把接收并計(jì)算出的GPS 導(dǎo)航定位信息通過串口傳送到計(jì)算機(jī)中。前面的代碼只負(fù)責(zé)從串口接收數(shù)據(jù)并將其放置于緩存, 在沒有進(jìn)一步處理之前緩存中是一長串字節(jié)流, 這些信息在沒有經(jīng)過分類提取之前是無法加以利用的。因此, 必須通過程序?qū)⒏鱾€(gè)字段的信息從緩存字節(jié)流中提取出來,將其轉(zhuǎn)化成
26、有實(shí)際意義的, 可供高層決策使用的定位信息數(shù)據(jù)。同其他通訊協(xié)議類似, 對GPS 進(jìn)行信息提取必須首先明確其幀結(jié)構(gòu), 然后</p><p> 才能根據(jù)其結(jié)構(gòu)完成對各定位信息的提取數(shù)據(jù)主要由幀頭、幀尾和幀內(nèi)數(shù)據(jù)組成, 根據(jù)數(shù)據(jù)幀的不同, 幀頭也不相同, 主要有"$GPGGA"、"$GPGSA"、"$GPGSV"以及"$GPRMC"等。這
27、些幀頭標(biāo)識(shí)了后續(xù)幀內(nèi)數(shù)據(jù)的組成結(jié)構(gòu), 各幀均以回車符和換行符作為幀尾標(biāo)識(shí)一幀的結(jié)束。</p><p> 由于幀內(nèi)各數(shù)據(jù)段由逗號分割, 因此在處理緩存數(shù)據(jù)時(shí)一般是通過搜尋ASCII</p><p> 碼"$"來判斷是否是幀頭, 在對幀頭的類別進(jìn)行識(shí)別后再通過對所經(jīng)歷逗號個(gè)數(shù)的計(jì)數(shù)來判斷出當(dāng)前正在處理的是哪一種定位導(dǎo)航參數(shù),并作出相應(yīng)的處理。</p>&l
28、t;p> 在本次設(shè)計(jì)中定位數(shù)據(jù)如經(jīng)緯度、速度、時(shí)間等均可以從"$GPGGA"幀中獲取得到, $GPGGA語句包括17個(gè)字段:語句標(biāo)識(shí)頭,世界時(shí)間,緯度,緯度半球,經(jīng)度,經(jīng)度半球,定位質(zhì)量指示,使用衛(wèi)星數(shù)量,水平精確度,海拔高度,高度單位,大地水準(zhǔn)面高度,高度單位,差分GPS數(shù)據(jù)期限,差分參考基站標(biāo)號,校驗(yàn)和結(jié)束標(biāo)記(用回車符<CR>和換行符<LF>),分別用14個(gè)逗號進(jìn)行分隔。該數(shù)據(jù)幀
29、的結(jié)構(gòu)及各字段釋義如下:</p><p> $GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*xx<CR><LF> $GPGGA:起始引導(dǎo)符及語句格式說明(本句為GPS
30、定位數(shù)據(jù)); </p><p> <1> UTC時(shí)間,格式為hhmmss.sss; </p><p> <2> 緯度,格式為ddmm.mmmm(第一位是零也將傳送); </p><p> <3> 緯度半球,N或S(北緯或南緯) ; </p><p> <4> 經(jīng)度,格式為dd
31、dmm.mmmm(第一位零也將傳送); </p><p> <5> 經(jīng)度半球,E或W(東經(jīng)或西經(jīng)) ; </p><p> <6> GPS狀態(tài), 0未定位, 1非差分定位, 2差分定位, 3無效PPS, 6正在估算 ;</p><p> <7> 使用衛(wèi)星數(shù)量,從00到12(第一個(gè)零也將傳送) ; </p>
32、<p> <8> 水平精確度,0.5到99.9; </p><p> <9> 天線離海平面的高度,-9999.9到9999.9米; </p><p><b> M 指單位米 </b></p><p> <10> 大地水準(zhǔn)面高度,-9999.9到9999.9米 ; </p>
33、;<p><b> M 指單位米 </b></p><p> <11> 差分GPS數(shù)據(jù)期限(RTCM SC-104),最后設(shè)立RTCM傳送的秒數(shù)量,如不是差分定位則為空; </p><p> <12> 差分參考基站標(biāo)號,從0000到1023(首位0也將傳送); </p><p> * 語
34、句結(jié)束標(biāo)志符 </p><p> xx 從$開始到*之間的所有ASCII碼的異或校驗(yàn)和 </p><p> <CR> 回車 </p><p><b> <LF> 換行</b></p><p> 第三章 系統(tǒng)總體設(shè)計(jì) </p><p><b>
35、 3.1 DSP介紹</b></p><p> DSP是Digital Signal Processing的縮寫,表示數(shù)字信號處理器,信息化的基礎(chǔ)是數(shù)字化,數(shù)字化的核心技術(shù)之一是數(shù)字信號處理,數(shù)字信號處理的任務(wù)在很大程度上需要由DSP器件來完成,DSP技術(shù)已成為人們?nèi)找骊P(guān)注的并得到迅速發(fā)展的前沿技術(shù)。 數(shù)字信號處理是利用計(jì)算機(jī)或?qū)S锰幚碓O(shè)備,以數(shù)字形式對信號進(jìn)行采集、變換、濾波、估值、增強(qiáng)、壓
36、縮、識(shí)別等處理,以得到符合人們需要的信號形式。 DSP技術(shù)的應(yīng)用 語音處理:語音編碼、語音合成、語音識(shí)別、語音增強(qiáng)、語音郵件、語音儲(chǔ)存等?! D像/圖形:二維和三維圖形處理、圖像壓縮與傳輸、圖像識(shí)別、動(dòng)畫、機(jī)器人視覺、多媒體、電子地圖、圖像增強(qiáng)等。</p><p> 由于DSP可以實(shí)現(xiàn)數(shù)字信號的處理和計(jì)算。從理論上講,只要有了算法,任何具有計(jì)算能力的設(shè)備都可以用來實(shí)現(xiàn)數(shù)字信號處理。所以在各模塊功能確定的情
37、況下,用DSP軟件開發(fā)平臺(tái)CODE Composer Studio(簡稱CCS)進(jìn)行借條函數(shù)的設(shè)計(jì),便可以達(dá)到預(yù)想中的功能。下圖所示為DSP實(shí)現(xiàn)解調(diào)功能的模塊組成:</p><p> 圖3.1 DSP實(shí)現(xiàn)解調(diào)功能的模塊</p><p> 3.2 異步傳輸方式</p><p> 通用數(shù)字信號處理器(DSP)以其很強(qiáng)的數(shù)據(jù)處理能力使其在高速數(shù)字信號處理方面得到廣
38、泛的應(yīng)用,但是它的通信接口控制能力比較弱,由于DSP的工作頻率很高,如TMS320C6201 時(shí)鐘頻率為200MHz,ADSP21060時(shí)鐘頻率為40MHZ,故其數(shù)據(jù)讀寫周期很短,然而PC機(jī)串口讀寫速度較低,最大數(shù)據(jù)吞吐量約為115kbps,盡管DSp在與這些慢速外進(jìn)行數(shù)據(jù)交換時(shí)可以加入額外的等待周期,但是在實(shí)時(shí)性要求苛刻,算法復(fù)雜的場合,將DSP從這些冗長的等待周期中解放出來,將其時(shí)間重點(diǎn)放在處理關(guān)鍵的實(shí)時(shí)任務(wù)中去,有著重要的實(shí)際意義
39、。故DSP與PC機(jī)之間串口通信的速度匹配是保證快速、準(zhǔn)確通信的關(guān)鍵。</p><p> PC機(jī)一般帶有一個(gè)或兩個(gè)內(nèi)置串口,每個(gè)端口的機(jī)箱背后有一個(gè)9針或25針的公插口。串口是以bit來傳輸數(shù)據(jù)的,傳輸數(shù)率取決于UART芯片,該芯片將PC總線上的并行數(shù)據(jù)(單字節(jié)或多字節(jié))分割成以比特為單位的串行數(shù)據(jù)流,從而實(shí)現(xiàn)在串口線纜中的數(shù)據(jù)傳輸。</p><p> 在本次課設(shè)中用到了TL16C550
40、B來實(shí)現(xiàn)并行數(shù)據(jù)和串行數(shù)據(jù)的格式轉(zhuǎn)換,它的最大數(shù)據(jù)吞吐量為115kbps,這已經(jīng)能夠滿足大多數(shù)串行設(shè)備的需要了。TL16C550B是通用異步接收/發(fā)送器(UART)芯片,它不僅能夠把從CPU接收的數(shù)據(jù)進(jìn)行并-串轉(zhuǎn)換,還能夠把從外圍設(shè)備或MODEM接收到的數(shù)據(jù)進(jìn)行串-并轉(zhuǎn)換。該UART包括一個(gè)可編程的波特率產(chǎn)生器??蓪⑤斎氲臅r(shí)鐘信號進(jìn)行分頻,并可產(chǎn)生16倍的時(shí)鐘來驅(qū)動(dòng)內(nèi)部的傳輸邏輯單元。TL16C550還具有MODEMN控制能力。包含一個(gè)
41、處理器中斷系統(tǒng),根據(jù)用戶的專用需要而設(shè)計(jì),在處理通訊連接時(shí),計(jì)算量是最小的。并且,TL16C550B管腳與TL16C750兼容,采用44引腳PLCC封裝。它的最高可達(dá)1M的波特率,且波特率發(fā)生器可編程設(shè)定,可以由軟件設(shè)定的FIFO來減少CPU中斷,并有可編程的串行數(shù)據(jù)發(fā)送格式:數(shù)據(jù)位長度為5、6、7、8。還有奇、偶校驗(yàn)或無校驗(yàn)?zāi)J?,它的停止位長度為1、1.5、2.</p><p> 同時(shí)它內(nèi)部集成了中斷邏輯,另
42、外通過對其內(nèi)部的寄存器的設(shè)置可以完成相應(yīng)功能,這些寄存器主要有:線路控制寄存器、FIFO控制寄存器、中斷使能寄存器MODEMN控制寄存器、線路狀態(tài)寄存器等11個(gè)寄存器。這些寄存器分別用于實(shí)現(xiàn)通信參數(shù)的設(shè)置、對線路及MODEMN的狀態(tài)訪問、數(shù)據(jù)的發(fā)送和接收及中斷管理功能。因而它可以與大多數(shù)的CPU實(shí)現(xiàn)無縫接口、使用很方便。</p><p> 圖3.2 C5402與PC機(jī)串行通信的硬件電路圖</p>
43、<p> 圖中TL16C550B的CS0和CS1都接高電平,CS2 接C5402的外部I/O空間,選擇線IS。當(dāng)XIN、XOUT端外接1.8342MHZ晶振時(shí),C5402以4800的波特率與PC機(jī)通信,所以,波特率因子寄存器的低位設(shè)為30HZ,高位設(shè)為00hz。TL16C550B的數(shù)據(jù)線D0-D7數(shù)據(jù)線相連,TL16C550的片內(nèi)寄存器選擇線接C5402的A0-A2。</p><p> 3.2 系
44、統(tǒng)硬件部分</p><p> 以下為系統(tǒng)硬件部分PC機(jī)的連接與異步串口通信在實(shí)驗(yàn)箱上實(shí)現(xiàn)的原理圖:</p><p> 圖3.3 系統(tǒng)整體硬件部分電路圖</p><p> 第四章 系統(tǒng)程序設(shè)計(jì)</p><p><b> 4.1 CCS介紹</b></p><p> CCS(Code Co
45、mposer Studio)代碼調(diào)試器是一種集成開發(fā)環(huán)境(IDE,Integrated Development Environment)。 CCS是一種針對標(biāo)準(zhǔn)TMS320調(diào)試器接口的交互式方法。CCS目前有CCS1.1 CCS1.2 CCS2.0等三個(gè)不同的版本,每個(gè)版本應(yīng)有CC2000(針對C2XX)</p><p> CCS5000(針對C54XX)CCS6000(針對C6X)等三個(gè)不同的型號。我們所使
46、用的是CCS5000、1.2的版本。這里所說明的CCS的一切問題都是基于CCS5000所討論,對其他版本的使用其差別不是很大,請參考其他有關(guān)資料。</p><p> CCS5000具有以下特性:</p><p> (1) TI編譯器的完全集成的環(huán)境</p><p> CCS5000目標(biāo)管理系統(tǒng),內(nèi)建編輯器,所有的調(diào)試和分析能力集成在一個(gè)Windows環(huán)境中。&
47、lt;/p><p> (2) 對C和DSP匯編文件的目標(biāo)管理</p><p> 目標(biāo)編輯器保持對所有文件及相關(guān)內(nèi)容的跟蹤。它只對最近一次編譯中改變過的文件重新編譯,以節(jié)省編譯時(shí)間。 </p><p> (3)高集成的編輯器調(diào)整C和DSP匯編代碼 </p><p> CCS5000的內(nèi)建編輯器支持C和匯編文件的動(dòng)態(tài)語法加亮顯示,使用戶能
48、很容易地閱讀代碼和當(dāng)場發(fā)現(xiàn)語法錯(cuò)誤。 </p><p> (4) 編輯和調(diào)試時(shí)的后臺(tái)編輯 </p><p> 用戶在使用編譯器和匯編器時(shí)沒有必要退出系統(tǒng)到DOS環(huán)境中,因?yàn)镃CS5000會(huì)自動(dòng)將這些工具裝載在它的環(huán)境中。在其窗口中,錯(cuò)誤會(huì)加亮顯示,只要雙擊錯(cuò)誤就可以直接到達(dá)出錯(cuò)處。</p><p>
49、(5) 在含有浮點(diǎn)并行調(diào)試管理器(PDM)的原有的MS窗口下支持多處理器,CCS5000在 Windows95和Windows-me中支持多處理器。PDM允許將命令傳播給所有的或所選擇的處理器。 </p><p> (6) 任何算法點(diǎn)觀察信號的圖形窗口探針 </p><p> 圖形顯示窗口使用戶能夠觀察時(shí)域或者頻域的信號。對于頻域圖,F(xiàn)FT在主機(jī)內(nèi)執(zhí)行, 這樣就可以觀察所感興趣的部分
50、而無須改變它的DSP代碼。圖形顯示也可以同探針連接,當(dāng)前顯示窗口被更新時(shí),探針被指定,這樣當(dāng)代碼執(zhí)行到達(dá)該點(diǎn)時(shí),就可以迅速地觀察到信號。 </p><p> (7) 文件探針在算法處通過文件提取或加入信號或數(shù)據(jù) </p><p> CCS5000允許用戶從PC機(jī)讀或?qū)懶盘柫?。而不是?shí)時(shí)的讀信號,這就可以用
51、已知的例子來仿真算法。</p><p> (8) 圖形分析 </p><p> CCS5000的圖形分析能力在其環(huán)境中是集成的。</p><p> (9) 在后臺(tái)(系統(tǒng)命令)執(zhí)行用戶的DOS程序 &l
52、t;/p><p> 用戶可以執(zhí)行CCS5000中的DOS程序,并將其輸出以流水方式送到CCS5000的輸出窗口。且允許用戶將應(yīng)用集成到CCS5000。</p><p> 4.2 系統(tǒng)程序設(shè)計(jì)與流程圖</p><p> GPS模塊以9600波特的速率串行輸出數(shù)據(jù)。有用的時(shí)間、經(jīng)緯度及海拔高度信息就包含在其中。實(shí)驗(yàn)的任務(wù)就是從選出有用的信息并送液晶顯示器顯示。實(shí)驗(yàn)的導(dǎo)
53、航電文由串口調(diào)試助手導(dǎo)入,導(dǎo)航電文里頭的GGA格式的數(shù)據(jù)就是我們這次實(shí)驗(yàn)要接收的,找到該組的有用信息。在字符串找到指定的字符串,并返回它的位置。在這里就找“$GPGGA”和“,”找到后,把這個(gè)位置以后的字符串重新賦給一個(gè)以前的字符串,一直循環(huán),就可以找到所有的信息了。具體步驟如下:</p><p> 系統(tǒng)進(jìn)行初始化,主要是對DSP芯片的ASP(異步串口)進(jìn)行初始化,將DSP異步通信口得數(shù)據(jù)傳送率設(shè)為9600bi
54、t/s,通信數(shù)據(jù)格式的設(shè)置為1個(gè)起始位,8位數(shù)據(jù)位,一個(gè)停止位,并設(shè)置接受數(shù)據(jù)緩沖區(qū)。對于波特率的設(shè)置可在串口驅(qū)動(dòng)程序中設(shè)置。</p><p> 使程序指向接受數(shù)據(jù)緩沖區(qū)首地址,系統(tǒng)處于讀接受狀態(tài)。</p><p> 采用查詢方式、進(jìn)行GPS數(shù)據(jù)流的數(shù)據(jù)起始位置時(shí),開始數(shù)據(jù)接收,否則就放棄,重新開始查詢過程。</p><p> 判斷是否再次查找到'$&
55、#39;f符號,若是,則跳回第二步,重新進(jìn)行數(shù)據(jù)接收。</p><p> 接收數(shù)據(jù)并查找所需的數(shù)據(jù)前面的逗號的位置。</p><p> 將查找到的逗號后的數(shù)據(jù)保存到中間數(shù)組變量中。</p><p> 數(shù)據(jù)處理,篩選出時(shí)間、經(jīng)度、緯度等基本數(shù)據(jù)進(jìn)行傳輸并調(diào)整格式在LCD上顯示。 </p><p> 圖4.2 程序設(shè)計(jì)流程圖</
56、p><p> 4.3 系統(tǒng)程序設(shè)計(jì)</p><p> 4.3.1 初始化程序模塊:</p><p> init_exint1_interrupt();</p><p> init_GPIO();</p><p> init_lcd();</p><p> LCD_clear(0);<
57、;/p><p> cur_row=2;</p><p> cur_col=20; /*列*/</p><p> LCD_pr_chars(" UART TEST ",16);</p><p> cur_row=3;</p><p> cur_col=1;</p>
58、;<p> LCD_pr_chars("------------------",23);</p><p> Close_LED_sign();</p><p> Close_LED_Data();</p><p> Close_LED_Traf();</p><p> waitloop( 0x040
59、0 );</p><p> 4.3.2 鍵盤控制程序模塊</p><p> 本課設(shè)中利用鍵盤來控制顯示,設(shè)置鍵盤值1鍵來設(shè)置控制,下載成功后,按1鍵即開始進(jìn)行接收顯示。</p><p><b> while(1)</b></p><p><b> {</b></p><p
60、> flag=0xffff;</p><p> i=Get_Key();</p><p> waitloop( 0x040000L );</p><p> j=Get_Key();</p><p><b> if(i==j)</b></p><p><b> {<
61、/b></p><p> key_val=j; /*save key_val*/ </p><p> while(Get_Key())</p><p><b> {</b></p><p> asm("\tnop"); /*wait blank_key*/</p>
62、<p><b> }</b></p><p> switch(key_val) /*由鍵值來控制*/</p><p><b> {</b></p><p><b> default:</b></p><p><b> break;<
63、;/b></p><p><b> case 1:</b></p><p> LCD_clear(0); /*LCD清屏幕*/</p><p> uart_rece(); /*調(diào)用 uart_race()接收函數(shù)*/</p><p><b> break;</b></p&
64、gt;<p> 4.3.3 中斷程序程序模塊:</p><p> void init_exint1_interrupt()</p><p><b> { </b></p><p> IFR=0Xffff;</p><p> IMR=0x0002; /*TINT=IMR.3 EXI
65、NT1=IMR.1*/</p><p> asm("\trsbx\tintm");</p><p><b> }</b></p><p> interrupt void EXINT1_isr()</p><p><b> { </b></p><
66、;p> Close_LED_sign();</p><p> Close_LED_Data();</p><p> Close_LED_Traf();</p><p> // while(!(GPIOSR&0X01))</p><p> { </p><
67、;p> asm("\tnop");</p><p> asm("\tnop");</p><p><b> }</b></p><p> // flag=~flag;</p><p><b> flag=0;</b></p>
68、;<p> cur_row=7;</p><p> cur_col=15;</p><p> LCD_pr_chars(" Uart_Stop ",17);</p><p><b> }</b></p><p> 4.3.4 數(shù)據(jù)處理模塊</p>&l
69、t;p> 定位信息通過串口來實(shí)現(xiàn)傳輸。本程序的關(guān)鍵在于串口數(shù)據(jù)的提取及相關(guān)處理操作。前面的代碼負(fù)責(zé)從串口接收數(shù)據(jù)并將其放置于緩存。在沒有進(jìn)一步處理之前緩存是一長串字節(jié)流,這些信息在沒有經(jīng)過分類提取之前是無法加以利用的。因此,必須通過程序?qū)⒏鱾€(gè)字段的信息從緩存字節(jié)流中提取出來,將其轉(zhuǎn)化成有實(shí)際意義的,可供高層決策使用的定位信息數(shù)據(jù)。同期他通訊協(xié)議類似。對該實(shí)驗(yàn)采用NMEA_0183xieyi協(xié)議的GPS固定數(shù)據(jù)輸出語句($GPGG
70、A)數(shù)據(jù)結(jié)構(gòu)。</p><p> 先定義305個(gè)數(shù)據(jù)的數(shù)組來存放導(dǎo)航電文的串行數(shù)據(jù),逗號、時(shí)間、緯度、及經(jīng)度的中間接收數(shù)組,以及輸出的字符數(shù)組。</p><p> void uart_rece(void)</p><p><b> {</b></p><p> //char buf[16];</p>
71、<p> unsigned int data[305],mc,tm[7],weidu[10],jingdu[11],geshu[3],deep[5];</p><p> unsigned int jj,ii,ni;</p><p> unsigned int locate=0;</p><p> char chartable[10]={'
72、0','1','2','3','4','5','6','7','8','9'};/*定義顯示值*/</p><p> 由于串口數(shù)據(jù)的讀取速度和對數(shù)據(jù)中參數(shù)的提取操作速度需要匹配,所以難免會(huì)有數(shù)據(jù)的丟失,為了保證參數(shù)的正確提取,程序的開始就需要對語句的正確性進(jìn)行控
73、制。處理時(shí)一般先通過對幀頭的判斷,即對“$GPGGA”幀進(jìn)行判斷。由于幀內(nèi)個(gè)數(shù)據(jù)段由逗號分割,因此在處理緩存數(shù)據(jù)時(shí)一般是通過搜尋ASCII碼‘$’來判斷是否是幀頭,在對幀頭的類別進(jìn)行識(shí)別后再通過所經(jīng)歷逗號個(gè)數(shù)的計(jì)數(shù)來判斷出當(dāng)前處理地是那一種定位導(dǎo)航參數(shù),并作出相應(yīng)的處理。判斷數(shù)據(jù)格式的程序如下:</p><p><b> do</b></p><p><b&g
74、t; {</b></p><p> jj=Uart_rx();/*串行數(shù)據(jù)輸出的調(diào)用函數(shù)*/</p><p><b> if(!flag)</b></p><p><b> {</b></p><p> asm("\tnop");</p>&l
75、t;p><b> break;</b></p><p><b> }</b></p><p> }while(jj==0xFFFF);</p><p> if(locate<300)//是發(fā)送數(shù)據(jù)存放在數(shù)組中的位置</p><p><b> { </b>
76、</p><p> data[locate]=jj; locate++; //locate自加到300</p><p> Uart_tx(jj);</p><p><b> }</b></p><p><b> else</b></p><p><b>
77、; {</b></p><p><b> ii=0;</b></p><p> while(ii<300) //接收并識(shí)別GGA數(shù)據(jù)的幀頭</p><p><b> { </b></p><p> if(data[ii]==36)</p><p>
78、 { if((ii+1)<300&&data[ii+1]==71)</p><p> if((ii+2)<300&&data[ii+2]==80)</p><p> if((ii+3)<300&&data[ii+3]==71)</p><p> if((ii+4)<300&&
79、amp;data[ii+4]==71)</p><p> if((ii+5)<300&&data[ii+5]==65)</p><p><b> break;</b></p><p> } /*識(shí)別GPGGA幀*/</p><p> 4.3.5定位信息的提取與LCD顯示模塊</p&
80、gt;<p> 一個(gè)完整的NMEA-0183語句是從信息起始標(biāo)志“$”、數(shù)據(jù)分隔符“,”和信息結(jié)束標(biāo)志符“”為止的一段字符串,需要掌握的信息是時(shí)間、經(jīng)度及緯度。所以當(dāng)接收到這樣一個(gè)完整的語句時(shí),提取有用信息的方法首先是判斷起始符的位置,從起始符開始讀入數(shù)據(jù)、再通過異或校驗(yàn)后的語句中尋找自負(fù)'‘,’,然后截取前兩個(gè)‘,’之間的字符串獲取所關(guān)心的數(shù)據(jù),并以回車符為一個(gè)GPS語句的終止符,得到一個(gè)完整的GPS信號。&l
81、t;/p><p> for(;ii<400;ii++)</p><p> {//$GPGGA,061820,2844.3546,N,11551.8844,E,1,10,0.8,57.9,M,-5.6,M,,*6C</p><p> if(data[ii]==36) </p><p><b> break;</b>
82、;</p><p> if(mc==1) {tm[ni]=data[ii];ni++;} /*提取時(shí)間*/</p><p> else if(mc==2) {weidu[ni]=data[ii];ni++;} /*提取緯度*/</p><p><b> else</b></p><p> if(mc==4) {
83、jingdu[ni]=data[ii];ni++;}/*提取經(jīng)度*/</p><p> else if(mc==7) {geshu[ni] =data[ii];ni++;}/*提取衛(wèi)星數(shù)據(jù)*/</p><p> else if(mc==9){deep[ni]=data[ii];ni++;}/*提取海拔高度*/</p><p> if(data[ii]==44)
84、 {mc++;ni=0;}/*逗號計(jì)數(shù)*/</p><p><b> }</b></p><p> 篩選出時(shí)間、經(jīng)度、緯度等基本數(shù)據(jù)進(jìn)行傳輸并調(diào)整在LCD上顯示,以下是顯示時(shí)間的一個(gè)處理過程</p><p> LCD_pr_chars("MD: ",5);</p><p> for(ii=0
85、;ii<6;ii++)</p><p><b> {</b></p><p> LCD_nextchar(chartable[tm[ii]-48]);/*化ASCII值為數(shù)值*/</p><p><b> }/*顯示時(shí)間*/</b></p><p><b> 第五章 系統(tǒng)調(diào)試
86、</b></p><p> 5.1 調(diào)試器介紹:</p><p> 一個(gè)很好而小巧的串口調(diào)試工具,支持常用的150-115200bps波特率,能設(shè)置校驗(yàn)、數(shù)據(jù)位和停止位,能以ASCII碼或十六進(jìn)制接收或發(fā)送任何數(shù)據(jù)或字符(包括中文),可以任意設(shè)定自動(dòng)發(fā)送周期,并能將接收數(shù)據(jù)保存成文本文件,能發(fā)送任意大小的文本文件。支持串口號高于9的串口(例如 COM10、com255 等)
87、</p><p> 如圖為課設(shè)中用到的串口調(diào)試器</p><p> 圖5.1 串口調(diào)試器</p><p> 5.2 系統(tǒng)調(diào)試過程</p><p> 連接好電源線和仿真器,在打開實(shí)驗(yàn)箱電源前,先用交叉串口線連接實(shí)驗(yàn)箱串口和PC機(jī)串口1。編譯并運(yùn)行程序后,打開串口調(diào)試器,設(shè)置串口為COM1,波特率為9600,并打開串口。在發(fā)送窗口輸入字符
88、或數(shù)字,選擇自動(dòng)發(fā)送或手動(dòng)發(fā)送。圖5.1即為設(shè)置的串口圖。</p><p> 在CCS軟件中完成程序并通過編譯生成.out文件,再加載.out文件運(yùn)行,打開串口調(diào)試器,把要發(fā)送的數(shù)據(jù)粘貼在發(fā)送端窗口,如圖發(fā)送數(shù)據(jù):</p><p> $GPGGA,061825,2844.3546,N,11551.8846,E,1,10,0.8,58.3,M,-5.6,M,,*6E時(shí),串口接收到的數(shù)據(jù)&
89、lt;/p><p> 圖5.2 數(shù)據(jù)發(fā)送圖</p><p> 5.3 調(diào)試結(jié)果與分析</p><p> 在實(shí)驗(yàn)箱上按鍵1開始LCD上顯示GPGGA,接著顯示UART start receive</p><p> 最后開始顯示提取后的數(shù)據(jù):</p><p> 圖5.3 LCD顯示</p><p
90、><b> 結(jié)束語</b></p><p> 這次設(shè)計(jì)是基于DSP的GPGGA定位信息的提取,首先論述了GPS定位的原理以及方法,介紹了NEMA-0183數(shù)據(jù)格式定義,以及GPGGA提取的定位數(shù)據(jù)的特點(diǎn)以及相應(yīng)的格式,接著又介紹了系統(tǒng)總體總體設(shè)計(jì)的原理圖,異步傳輸?shù)姆绞?,硬件部分的一些簡單介紹,再接著介紹了系統(tǒng)的程序設(shè)計(jì),詳細(xì)的闡述了每個(gè)模塊的實(shí)現(xiàn)過程,最后再論述了系統(tǒng)調(diào)試的過程,
91、對結(jié)過的分析。</p><p> 通過這一周的課設(shè),對整個(gè)基于DSP GPGGA定位數(shù)據(jù)的提取過程有了一個(gè)全面的了解,深入理解了異步串口通信的實(shí)現(xiàn)方法,通過實(shí)踐提高了自身的分析解決問題的能了,以及團(tuán)隊(duì)合作解決問題的能了。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 李莉編著,《DSP原理與應(yīng)用》 北京:中國水利水
92、電出版社,2004</p><p> [2] GPS定位的數(shù)據(jù)格式,NMEA-0183數(shù)據(jù)格式</p><p> [3] 張雄偉 陳亮 徐光輝編著,《DSP芯片的原理與開發(fā)應(yīng)用》 北京:電子工業(yè)出版社,2006</p><p><b> 致謝</b></p><p> 在整個(gè)課程設(shè)計(jì)的過程中,指導(dǎo)老師胡輝老師給予
93、我細(xì)心的指導(dǎo)和幫助,讓我在這次課設(shè)的課題中學(xué)會(huì)了團(tuán)隊(duì)合作完成課題,加強(qiáng)了對DSP的了解,在課設(shè)中鍛煉了自己的動(dòng)手操作能力。</p><p> 在設(shè)計(jì)過程中,同學(xué)們也給了我很大的幫助,特別是實(shí)驗(yàn)室的王濤同學(xué),幫助我們解決了驅(qū)動(dòng)下載中遇到的一些問題,還有朱路老師把實(shí)驗(yàn)箱借給我們調(diào)試了一天,最后才能順利的完成這個(gè)課設(shè)的任務(wù)。</p><p> 最后還要感謝同組成員李金森和李偉同學(xué)的配合跟合作
94、,沒有大家的共同努了,也就沒有最后成功的結(jié)果,在此對以上所有人表示誠摯的感激。</p><p><b> 附錄</b></p><p><b> 源代碼:</b></p><p> #include <stdio.h></p><p> #include "mmdrv.
95、h"</p><p> #include "mcbsp.h"</p><p> #include "cpu_reg.h"</p><p> #include "lcd_86.h"</p><p> ioport unsigned portefff;</p>
96、;<p> #define IO_374 portefff</p><p> void init_exint1_interrupt();</p><p> void init_GPIO(void);</p><p> void uart_rece(void);</p><p> void uart_trans(vo
97、id);</p><p> void uart_trans_byte(unsigned int data);</p><p> unsigned int flag=0xffff;</p><p> char tx_re_buf[1]={0x38};</p><p> void main(void)</p><p&g
98、t;<b> {</b></p><p> unsigned int i,j;</p><p> unsigned int key_val;</p><p> SWWSR=0X7fff;</p><p> SWCR=0X0001;</p><p> BSCR=0x8006;</p
99、><p> CLKMD=PLL_DIV_INIT;</p><p> waitloop(0x0400);</p><p> CLKMD=PLL_LOCK_INIT_X(9);</p><p> waitloop(0x0400);</p><p> PMST=0x0168;</p><p>
100、 IO_374=0Xffff; /*374 enable*/</p><p><b> //初始化系統(tǒng)</b></p><p> init_exint1_interrupt();</p><p> init_GPIO();</p><p> init_lcd();</p><p>
101、; LCD_clear(0);</p><p> cur_row=2;</p><p> cur_col=20; /*列*/</p><p> LCD_pr_chars(" UART TEST ",16);</p><p> cur_row=3;</p><p>
102、cur_col=1;</p><p> LCD_pr_chars("------------------",23);</p><p> Close_LED_sign();</p><p> Close_LED_Data();</p><p> Close_LED_Traf();</p><p&g
103、t; waitloop( 0x0400 );</p><p><b> while(1)</b></p><p><b> {</b></p><p> flag=0xffff;</p><p> i=Get_Key();</p><p> waitloop( 0
104、x040000L );</p><p> j=Get_Key();</p><p><b> if(i==j)</b></p><p><b> {</b></p><p> key_val=j; /*save key_val*/ </p><p> while(
105、Get_Key())</p><p><b> {</b></p><p> asm("\tnop"); /*wait blank_key*/</p><p><b> }</b></p><p> switch(key_val) /*由鍵值來控制*/&
106、lt;/p><p><b> {</b></p><p><b> default:</b></p><p><b> break;</b></p><p><b> case 1:</b></p><p> LCD_clea
107、r(0); /*LCD清屏幕*/</p><p> uart_rece(); /*調(diào)用 uart_race()接收函數(shù)*/</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p&g
108、t;<p><b> }</b></p><p><b> }</b></p><p> void init_exint1_interrupt()</p><p><b> { </b></p><p> IFR=0Xffff;</p&
109、gt;<p> IMR=0x0002; /*TINT=IMR.3 EXINT1=IMR.1*/</p><p> asm("\trsbx\tintm");</p><p><b> }</b></p><p> interrupt void EXINT1_isr()</p><
110、p><b> { </b></p><p> Close_LED_sign();</p><p> Close_LED_Data();</p><p> Close_LED_Traf();</p><p> // while(!(GPIOSR&0X01))</
111、p><p> { </p><p> asm("\tnop");</p><p> asm("\tnop");</p><p><b> }</b></p><p> // flag=~flag;</p>
112、<p><b> flag=0;</b></p><p> cur_row=7;</p><p> cur_col=15;</p><p> LCD_pr_chars(" Uart_Stop ",17);</p><p><b> }</b>&l
113、t;/p><p> void init_GPIO(void)</p><p><b> {</b></p><p> GPIOCR=0xfffe; /*EXINT=GPI0.0=INPUT=0,nand_cs=GPI0.6=output=1*/</p><p> GPIOSR=0x0040;
114、/*GPI0.6=output=1*/</p><p><b> }</b></p><p> void uart_rece(void)</p><p><b> {</b></p><p> //char buf[16];</p><p> unsigned in
115、t data[305],mc,tm[7],weidu[10],jingdu[11],geshu[3],deep[5];</p><p> unsigned int jj,ii,ni;</p><p> unsigned int locate=0;</p><p> char chartable[10]={'0','1','
116、;2','3','4','5','6','7','8','9'};/*定義顯示值*/</p><p> Uart_Init();/*初始化串口系統(tǒng)*/</p><p> cur_col=28;/*列*/</p><p> cur_row=1;
117、/*行*/</p><p> LCD_pr_chars("--GPGGA--",9);/*LCD顯示*/</p><p> cur_col=1;</p><p> cur_row=2;</p><p> LCD_pr_chars("=====================",21);</
118、p><p> for(ii=0;ii<300;ii++)</p><p> { data[ii]=0;}/*初始化data數(shù)組的前300個(gè)為0*/</p><p><b> while(1)</b></p><p><b> {</b></p><p>&
119、lt;b> do</b></p><p><b> {</b></p><p> jj=Uart_rx();/*串行數(shù)據(jù)輸出的調(diào)用函數(shù)*/</p><p><b> if(!flag)</b></p><p><b> {</b></p>
120、<p> asm("\tnop");</p><p><b> break;</b></p><p><b> }</b></p><p> }while(jj==0xFFFF);</p><p> if(locate<300)</p>
121、<p><b> { </b></p><p> data[locate]=jj; locate++;</p><p> Uart_tx(jj);</p><p><b> }</b></p><p><b> else</b></p>
122、<p><b> {</b></p><p><b> ii=0;</b></p><p> while(ii<300) </p><p><b> { </b></p><p> if(data[ii]==36)</p><p&
123、gt; { if((ii+1)<300&&data[ii+1]==71)</p><p> if((ii+2)<300&&data[ii+2]==80)</p><p> if((ii+3)<300&&data[ii+3]==71)</p><p> if((ii+4)<300&am
124、p;&data[ii+4]==71)</p><p> if((ii+5)<300&&data[ii+5]==65)</p><p><b> break;</b></p><p> } /*識(shí)別GPGGA幀*/</p><p><b> ii++;</b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- dsp課程設(shè)計(jì)-基于dsp的gpgga提取
- 基于dsp的圖像處理-dsp課程設(shè)計(jì)
- dsp課程設(shè)計(jì)---基于dsp的bios模塊設(shè)計(jì)實(shí)現(xiàn)
- dsp課程設(shè)計(jì)---dsp芯片簡介
- dsp課程設(shè)計(jì)--基于三知dsp實(shí)驗(yàn)箱的dsp實(shí)驗(yàn)整合
- dsp課程設(shè)計(jì)fft的dsp實(shí)現(xiàn)
- dsp課程設(shè)計(jì)報(bào)告--fft的dsp實(shí)現(xiàn)
- dsp課程設(shè)計(jì)
- dsp課程設(shè)計(jì)--基于dsp的溫度控制系統(tǒng)的設(shè)計(jì)
- dsp課程設(shè)計(jì)---基于dsp的回波的產(chǎn)生與抵消
- dsp課程設(shè)計(jì)——基于dsp的鋸齒波發(fā)生器設(shè)計(jì)
- dsp課程設(shè)計(jì)報(bào)告
- dsp課程設(shè)計(jì)--基于dsp的spi接口da轉(zhuǎn)換系統(tǒng)設(shè)計(jì)
- dsp課程設(shè)計(jì)實(shí)驗(yàn)
- dsp課程設(shè)計(jì)---基于dsp的實(shí)時(shí)fir濾波器的實(shí)現(xiàn)
- dsp課程設(shè)計(jì)報(bào)告
- dsp課程設(shè)計(jì)實(shí)驗(yàn)
- dsp課程設(shè)計(jì)論文
- dsp課程設(shè)計(jì)cll
- dsp課程設(shè)計(jì)報(bào)告--dsp芯片應(yīng)用系統(tǒng)設(shè)計(jì)
評論
0/150
提交評論