基于單片機的GPS定位信息顯示系統(tǒng)設計畢業(yè)設計_第1頁
基于單片機的GPS定位信息顯示系統(tǒng)設計畢業(yè)設計_第2頁
基于單片機的GPS定位信息顯示系統(tǒng)設計畢業(yè)設計_第3頁
基于單片機的GPS定位信息顯示系統(tǒng)設計畢業(yè)設計_第4頁
基于單片機的GPS定位信息顯示系統(tǒng)設計畢業(yè)設計_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

學校代碼:11059學號:0805070058Hefei畢業(yè)論文〔設計〕BACHELORDISSERTATION論文題目:基于單片機的GPS定位信息顯示系統(tǒng)設計學位類別:__________工學學士________________年級專業(yè)〔班級〕:__08級自動化〔1〕班___作者姓名:________王致忠__________________導師姓名:________王慶龍_________________完成時間:_______2023年5月20日___________基于單片機的GPS定位信息顯示系統(tǒng)設計中文摘要GPS全球定位系統(tǒng)在實際生活中被廣泛應用,是當今信息時代開展中的重要組成局部。因其具有性能好、精度高、應用廣的特點,使其成為了迄今為止最好的定位導航系統(tǒng)。本論文詳細介紹了一種基于單片機、GPS接收模塊、12864液晶顯示模塊等器件的GPS實時顯示功能的實現(xiàn)。分別從硬件設計和軟件設計等方面對其作了詳細的闡述,并且結合硬件的特點研究了MCS-51系列單片機如何與GPS接收模塊實現(xiàn)串行通信,該系統(tǒng)是根據(jù)GPS模塊數(shù)據(jù)輸出根本原理設計而成的。它是一臺體積小巧、攜帶方便、可以獨立使用的全天候實時的定位導航設備。關鍵詞:GPS;單片機;GPS接收模塊;12864液晶屏Microcontroller-basedGPSPositioningInformationDisplaySystemDesignABSTRACTGPSGlobalPositioningSystemiswidelyusedinreallife,isanimportantpartinthedevelopmentoftoday'sinformationage.Becauseofitsgoodperformance,highaccuracy,wideapplication,makingitbyfarthebestnavigationandpositioningsystem.ThisthesisisdescribedindetailbasedonmicrocontrollerGPSreceivermodule,12,864LCDdisplaysandotherdevicesGPSreal-timedisplayfunctionimplementation.Fromhardwareandsoftwareimplementationgaveadetailedexpositionofthedesign,andcombinedwiththehardwarefeaturesoftheMCS-51seriesmicrocontrollerGPSreceivermoduletoachieveserialcommunication,thesystemdesignisbasedonthebasicprincipleoftheGPSmoduledataoutput.Itisacompact,portable,andcanbeusedindependently,all-weatherreal-timepositioningandnavigationequipment.KEYWORD:GPS;microcontroller;GPSreceivermodule;12864LCD目錄第一章緒論11.1課題背景及意義11.2論文主要內容2第二章GPS定位信息顯示系統(tǒng)方案設計32.1GPS全球定位系統(tǒng)簡介32.2GPS信號接收方案選擇52.3GPS接收模塊的研究52.4總體方案的設計6第三章基于單片機的GPS硬件電路設計83.1基于單片機的GPS硬件電路總體結構83.2基于單片機的GPS定位信息顯示系統(tǒng)設計硬件電路簡介83.2.1STC89C52簡介83.2.2SiRFStarIIGPS信號接收模塊123.2.312864液晶顯示模塊介紹133.3基于單片機的GPS硬件連接介紹15第四章基于單片機的GPS軟件設計174.1NMEA-0183數(shù)據(jù)格式174.1.1輸入語句174.1.2輸出語句184.2基于單片機的GPS定位系統(tǒng)軟件開發(fā)環(huán)境―KeiluVision2204.2.18051開發(fā)工具20uVision2集成開發(fā)環(huán)境204.2.3編輯器和調試器214.2.4測試程序224.2.5KeilC編譯步驟234.3基于單片機的GPS軟件設計思路254.4模塊軟件設計264.4.1液晶模塊初始化模塊264.4.2GPS數(shù)據(jù)接收模塊28第五章系統(tǒng)調試與實驗結果305.1硬件調試305.2軟件調試305.3實驗結果315.4實驗結果分析32第六章總結33致謝34參考文獻35附錄36第一章緒論1.1課題背景及意義1978年2月22日第一顆GPS試驗衛(wèi)星的入軌運行,開創(chuàng)了以導航衛(wèi)星為動態(tài)點的無線電導航定位的新時代。GPS衛(wèi)星所發(fā)送的導航定位信號,是一種可供無數(shù)用戶共享的空間信息資源[1]。陸地、海洋和空間的廣闊用戶,只要持有一種能夠接收、跟蹤、變換和測量GPS信號的接收機,就可以全天時、全天候和全球性的測量運動載體的七維狀態(tài)參數(shù)和三維狀態(tài)參數(shù)。其用途之廣,影響之大,是其他無線電接收裝置都望塵莫及的。不僅如此,GPSGPS技術的陸地應用GPS技術在陸地上的開發(fā)應用可以表達在許多方面,如:各種車輛的行駛狀態(tài)監(jiān)控;旅游者或旅游車的景點導游;應急車輛的快速引導行駛;高精度時間比對和頻率控制;大氣物理觀測;地球物理資源勘探;工程建設的施工放樣測量;大型建筑和煤氣田的沉降檢測;板內運動狀態(tài)和地殼形變測量;陸地以及海洋大地測量基準的測定;工程、區(qū)域、國家等各種類型大地測量控制網(wǎng)的測量和建設等。GPS技術的海洋應用GPS技術在海洋方面有著極其重要的作用,比方:遠洋船舶的最正確航線測定;遠洋船隊在途中航行的實時調度和監(jiān)測;內河船只的實時調度和自主導航測量;海洋救援的搜索和定點測量;遠洋漁船的結隊航行和作業(yè)調度;海洋油氣平臺的就位和復位測定;海底沉船位置的精確探測;海底管道鋪設測量;海岸地球物理勘探;水文測量;海底大地測量控制網(wǎng)的布測;海底地形的精細測量;船運貨物失竊報警;凈化海洋;海洋糾紛或海損事故的定點測定;港口交通管制;海洋災難檢測等。GPS技術的航空應用GPS技術在航空方面的應用主要表達在:民航飛機的在途自主導航;飛機精密著陸;飛機空中加油控制;飛機編隊飛行的平安保護;航空援救的搜索和定點測量;機載地球物理勘探;飛機探測災區(qū)大小和標定測量;攝影和遙感飛機的七維狀態(tài)參數(shù)和三維姿態(tài)參數(shù)測量等。GPS技術的航天應用GPS技術在航天方面同樣也有著很重要的作用:低軌道通訊衛(wèi)星群的實時軌道測量;衛(wèi)星入軌和衛(wèi)星回收的實時點位測量;載入航天器的在軌防護探測;星載GPS的遮掩天體大小和大氣參數(shù)測量;對地觀測衛(wèi)星的七維狀態(tài)參數(shù)和三維狀態(tài)參數(shù)測量[2]。由此可見,GPS技術已經(jīng)延伸到各個領域的方方面面,但是要完成以上所述的各種用途,最根本的就是要具備能夠接收GPS信號并且能夠調制輸出的設備,而這種設備最根本的功能就是能夠顯示當時所處地點的經(jīng)緯度以及UTC標準時間。現(xiàn)在世面上已經(jīng)有許多基于GPS接收模塊所開發(fā)的產(chǎn)品,如GPS手持機、車載GPS導航儀等等,雖然其功能強大,但價格相對而言比擬昂貴,而且對于普通應用沒有必要。所以基于這種情況下,本次設計針對普通用戶使用GPS的切實需要,設計并制作基于單片機的GPS定位信息顯示系統(tǒng)。1.2論文主要內容本次設計的主要任務是在GPS和單片機的理論知識根底上,選擇適宜的單片機提取GPS接收模塊接收的數(shù)據(jù)并且由液晶顯示模塊顯示接收的數(shù)據(jù)。在此次設計過程中,主要熟悉所選用的GPS接收模塊的性能指標,學習NMEA封包并懂得如何使用NMEA輸出命令,結合單片機的相關知識能實現(xiàn)對GPS接收到的衛(wèi)星信息進行提取,并在液晶顯示器上選擇性的顯示需要的數(shù)據(jù)。第二章GPS定位信息顯示系統(tǒng)方案設計2.1GPS全球定位系統(tǒng)簡介全球定位系統(tǒng)(GPS)是本世紀70年代由美國陸??杖娐?lián)合研制的新一代空間衛(wèi)星導航定位系統(tǒng)。其主要目的是為陸、海、空三大領域提供實時、全天候和全球性的導航效勞,并用于情報收集、核爆監(jiān)測和應急通訊等一些軍事目的,是美國獨霸全球戰(zhàn)略的重要組成局部。全球定位系統(tǒng)由三局部構成:(1)地面控制局部,由主控站(負責管理、協(xié)調整個地面控制系統(tǒng)的工作)、地面天線(在主控站的控制下,向衛(wèi)星注入尋電文)、監(jiān)測站(數(shù)據(jù)自動收集中心)和通訊輔助系統(tǒng)(數(shù)據(jù)傳輸)組成。(2)空間局部,由24顆衛(wèi)星組成,分布在6個軌道平面上。(3)用戶裝置局部,主要由GPS接收機和衛(wèi)星天線組成[3]。這三局部的相互關系如圖2.1所示。圖2.1GPS全球定位系統(tǒng)組成1978年2月22日,第一顆GPS試驗衛(wèi)星的發(fā)射成功,標志著工程研制階段的開始。1989年2月14日,第一顆GPS工作衛(wèi)星的發(fā)射成功,宣告GPS系統(tǒng)進入了生產(chǎn)作業(yè)階段。GPS系統(tǒng)經(jīng)過16年的發(fā)射試驗衛(wèi)星,到開發(fā)GPS信號應用,進而發(fā)射工作衛(wèi)星,終于在1994年3月建成了信號覆蓋率到達了98%的GPS工作星座,它由24顆圖2.2Block2衛(wèi)星圖全球定位系統(tǒng)有很多特點,其主要特點如下:(1)全天候;(2)全球覆蓋;(3)三維定速定時高精度;(4)快速省時高效率;(5)應用廣泛多功能。24顆GPS衛(wèi)星在離地面2萬公里的高空上,以12小時的周期環(huán)繞地球運行,使得在任意時刻,在地面上的任意一點都可以同時接收到6顆以上GPS衛(wèi)星的定位信息。只要有4顆衛(wèi)星的定位信息,GPS接收機就能向用戶提供三維坐標、時間及移動速度等信息參數(shù)。由于衛(wèi)星的位置精確可知,在GPS觀測中,我們可得到衛(wèi)星到接收設備的距離,根據(jù)三維坐標中的距離公式,利用3顆衛(wèi)星,就可以組成3個方程式,解出觀測點的位置(X,Y,Z)??紤]到衛(wèi)星的時鐘與接收機時鐘之間的誤差,實際上有4個未知數(shù),X、Y、Z和鐘差,因而需要引入第4顆衛(wèi)星,形成4個方程式進行求解,從而得到觀測點的經(jīng)緯度和高程。由于衛(wèi)星運行軌道、衛(wèi)星時鐘存在誤差,大氣對流層、電離層對信號的影響,以及人為的SA保護政策,使得民用GPS的定位精度只有100米。美國政府宣布從2000年起,在保證美國國家平安不受威脅的前提下,取消SA政策,GPS民用信號精度在全球范圍內得到改善,利用C/A碼進行單點定位的精度由100米提高到20米。為了到達更高的定位精度,往往還采用了差分GPS(DGPS)技術,建立基準站(差分臺)進行GPS觀測,利用的基準站精確坐標,與觀測值進行比擬,從而得出一修正數(shù),并對外發(fā)布。接收機收到該修正數(shù)后,與自身的觀測值進行比擬,消去大局部誤差,得到一個比擬準確的位置。實驗說明,利用差分GPS2.2GPS信號接收方案選擇要實現(xiàn)在液晶顯示器上顯示出接收到的GPS數(shù)據(jù)信息,首先要實現(xiàn)GPS信號的接收。在接收GPS信號方案上可以有兩種選擇。第一種方案是選擇GPS接收芯片然后再根據(jù)芯片設計標準,設計外圍電路和安裝天線等,選擇這個方案的優(yōu)點是可以掌握到GPS接收局部的電路設計技術,但是這個方案的缺點也是顯而易見的,首先實現(xiàn)的難度較大,不容易成功,其次由于GPS接收芯片一般都是廠商直接供貨,單獨采購價格會很高。第二種方案是選擇成品的GPS接收模塊,采用這個方案的優(yōu)點是由于現(xiàn)階段GPS接收模塊的制造技術已經(jīng)相當成熟,性能穩(wěn)定并且使用非常方便,定位成功后直接就可以通過模塊輸出GPS相關信息。并且在經(jīng)過大規(guī)模的商業(yè)化生產(chǎn)后價格已經(jīng)能被我們所接受,這樣的模塊在市面上也能夠容易的購置到。從上面的分析可以知道,選擇GPS接收模塊就能夠很好的作為本次設計接收GPS定位信息的解決方案,因此我選擇第二種方案來完本錢次設計。2.3GPS接收模塊的研究GPS接收模塊是接收機的關鍵局部,而且型號很多,功能各異,一般組成結構主要由低噪聲下變頻器、并行信號通道、CPU、儲存器等組成。GPS接收模塊通過它的接收天線獲取衛(wèi)星信號,經(jīng)過變頻、放大、濾波、相關、混頻等一系列處理,可以實現(xiàn)對天線視界內衛(wèi)星的跟蹤、鎖定和測量。在獲取了衛(wèi)星的位置信息和測算出衛(wèi)星信號傳播時間之后,即可計算出天線位置。用戶通過輸入輸出接口,與GPS接收模塊進行信息交換,實現(xiàn)功能。GPS接收模塊內部結構如圖2.3所示。圖2.3GPS接收模塊內部結構2.4總體方案的設計本次設計要求通過單片機控制GPS器件實現(xiàn)定位信息顯示功能。在這里使用常見的MCS-51型單片機作為處理器,利用MCS-51單片機的串行接口接收SiRFStarIIGPS信號接收模塊輸出的數(shù)據(jù)信號,并通過軟件方法篩選出其中有用的定位數(shù)據(jù),最后通過單片機的并行接口輸出至液晶顯示模塊顯示的方案。該GPS定位信息顯示系統(tǒng)硬件局部主要由以下幾個局部組成:(1)接收局部:以SiRFStarIIGPS接收模塊為核心的GPS接收機;(2)控制電路:由51單片機作為微處理器控制GPS信號;(3)顯示局部:12864LCD液晶顯示模塊;(4)電源電路局部:用以提供系統(tǒng)工作時所必須的電。單片機系統(tǒng):本次設計使用51單片機作為微處理器,控制GPS數(shù)據(jù)的讀取和傳輸過程。利用其串行接口接收SiRFStarIIGPS接收模塊輸出的NMEA-0183語句數(shù)據(jù),并將接收到的數(shù)據(jù)經(jīng)過篩選和處理后發(fā)送到12864液晶顯示器顯示。外圍電路:外圍電路一局部是由GPS接收器件及其輔助電路組成,一局部是LCD液晶顯示模塊的電源電路和顯示電路。SiRFStarIIGPS接收模塊主要由變頻器、信號通道、存儲器、中央處理器和輸入輸出接口構成。它接收天線獲取的衛(wèi)星信號,經(jīng)過變頻、放大、濾波、相關、混頻等一系列處理,可以實現(xiàn)對天線視界內衛(wèi)星的跟蹤、鎖定和測量定位。單片機控制程序:編寫程序,實現(xiàn)單片機控制系統(tǒng)的初始化,控制GPS器件完成數(shù)據(jù)的采集,進行相應的信號處理,并通過單片機接口輸出至液晶顯示模塊顯示必要的數(shù)據(jù)。由此可知:GPS接收模塊將接收到的GPS衛(wèi)星導航電文調制解碼,轉換為標準格式后,送給單片機,當單片機接收到GPS發(fā)送過來的導航電文后,經(jīng)過片內程序的識別篩選,將篩選出來的導航電文送到顯示模塊,并且最后通過液晶顯示器按照要求顯示出來。第三章基于單片機的GPS硬件電路設計3.1基于單片機的GPS硬件電路總體結構根據(jù)總體設計方案,該基于單片機的GPS硬件電路設計主要由GPS信號接收局部〔SiRFStarIIGPS信號接收模塊〕、控制芯片〔STC89C52單片機〕、顯示局部〔12864LCD液晶顯示模塊〕這幾局部構成。其大體結構框圖如圖3.1圖3.1基于單片機的GPS硬件總體結構框圖3.2基于單片機的GPS定位信息顯示系統(tǒng)設計硬件電路簡介STC89C52簡介STC89C52是一個低電壓,高性能CMOS8位單片機,采用40引腳雙列直插封裝方式。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容[4]。STC89C52引腳如圖3.2所示:圖3.2STC89C52引腳圖其引腳說明如下:主電源引腳〔2根〕:VCC(Pin40):電源輸入,接+5V電源;GND(Pin20):接地線。外接晶振引腳〔2根〕:XTAL1(Pin19):片內振蕩電路的輸入端;XTAL2(Pin18):片內振蕩電路的輸出端。控制引腳〔4根〕:RST(Pin9):復位引腳,引腳上出現(xiàn)2個機器周期的高電平將使單片機復位;ALE/PROG(Pin30):地址鎖存允許信號;PSEN(Pin29):外部存儲器讀選通信號;EA/VPP(Pin31):程序存儲器的內外部選通,接低電平從外部程序存儲器讀指令,如果接高電平那么從內部程序存儲器讀指令??删幊梯斎?輸出引腳〔32根〕:STC89C52單片機有4組8位的可編程I/O口,分別為P0、P1、P2、P3口,每個口有8根引腳,共32根。P0口〔Pin39~Pin32〕:8位雙向I/O口線,名稱為P0.0~P0.7;P1口〔Pin1~Pin8〕:8位準雙向I/O口線,名稱為P1.0~P1.7;P2口〔Pin21~Pin28〕:8位準雙向I/O口線,名稱為P2.0~P2.7;P3口〔Pin10~Pin17〕:8位準雙向I/O口線,名稱為P3.0~P3.7。STC89C52主要功能如表3.1所示。表3.1STC89C52主要功能主要功能特性兼容MCS51指令系統(tǒng)8K可反復擦寫FlashROM32個雙向I/O口256x8bit內部RAM3個16位可編程定時/計數(shù)器中斷時鐘頻率0-24MHz2個串行中斷可編程UART串行通道2個外部中斷源共6個中斷源2個讀寫中斷口線3級加密位低功耗空閑和掉電模式軟件設置睡眠和喚醒功能時鐘電路STC89C52內部有一個用于構成振蕩器的高增益反相放大器,引腳RXD和TXD分別是此放大器的輸入端和輸出端。時鐘可以由內部方式產(chǎn)生或外部方式產(chǎn)生。內部方式的時鐘電路如圖3.3(a)所示,在RXD和TXD引腳上外接定時元件,內部振蕩器就產(chǎn)生自激振蕩。定時元件通常采用石英晶體和電容組成的并聯(lián)諧振回路。晶體振蕩頻率可以在1.2~12MHz之間選擇,電容值在5~30pF之間選擇,電容值的大小可對頻率起微調的作用[5]。外部方式的時鐘電路如圖3.3〔b〕所示,RXD接地,TXD接外部振蕩器。對外部振蕩信號無特殊要求,只要求保證脈沖寬度,一般采用頻率低于12MHz的方波信號。片內時鐘發(fā)生器把振蕩頻率兩分頻,產(chǎn)生一個兩相時鐘P1和P2,供單片機使用?!瞐〕內部方式時鐘電路〔b〕外部方式時鐘電路圖3.3時鐘電路(2)復位復位是單片機的初始化操作。其主要功能是把PC初始化為0000H,使單片機從0000H單元開始執(zhí)行程序。除了進入系統(tǒng)的正常初始化之外,當由于程序運行出錯或操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為擺脫困境,也需按復位鍵重新啟動[6]。除PC之外,復位操作還對其他一些存放器有影響,它們的復位狀態(tài)如表3.2所示。表3.2一些存放器的復位狀態(tài)存放器復位狀態(tài)存放器復位狀態(tài)PC0000HTCON00HACC00HTL000HPSW00HTH000HSP07HTL100HDPTR0000HTH100HP0-P3FFHSCON00HIPXX000000BSBUF不定IE0X000000BPCON0XXX0000BTMOD00HRST引腳是復位信號的輸入端。復位信號是高電平有效,其有效時間應持續(xù)24個振蕩周期(即二個機器周期)以上。假設使用頗率為6MHz的晶振,那么復位信號持續(xù)時間應超過4us才能完成復位操作。整個復位電路包括芯片內、外兩局部。外部電路產(chǎn)生的復位信號(RST)送至施密特觸發(fā)器,再由片內復位電路在每個機器周期的S5P2時刻對施密特觸發(fā)器的輸出進行采樣,然后才得到內部復位操作所需要的信號[7]。SiRFStarIIGPS信號接收模塊該設計中GPS信號接收模塊所選用的是SiRFStarIIGPS接收模塊,該模塊是由美國瑟孚科技所生產(chǎn)。主要使用到的引腳如圖3.4所示。該模塊具有12通道并行接收能力,所接收的GPS信號屬于民用頻段的L1信號〔1575.42MHz〕,在沒有SA干擾的情況下平均定位誤差為10米,動態(tài)速度誤差為0.1米/秒,信號靈敏度到達-142dBm,冷啟動定位時間為42秒,熱啟動時間為38秒,重新定位時間僅僅需要圖3.4SiRFStarII引腳圖GPS數(shù)據(jù)輸出格式為標準的NMEA-0183標準,采集地理信息的更新速率為每兩秒一次,地圖坐標系為WGS-84坐標系[8]。該模塊天線采用的是體積小、可靠性高、靈敏度高的微帶天線,該天線封裝在模塊內部,更進一步的提高了整個模塊的可靠性。該模塊實物圖如圖3.5所示。圖3.5GPS接收模塊它的工作電壓為2.7V-3.3V,工作電流僅為75mA,它由GSP2e數(shù)字IC、GRF2i射頻IC和GSW2模塊化軟件組成。GSP2e主要集成了一個增強型GPS內核、一個50MHz的ARM7CPU、獨立的內部總線和外部總線、1MbEDODRAM、高精度實時時鐘、GPS接收機外部設備和2個UART。GRF2i主要由片內壓控振蕩器和基準振蕩器、集成中頻濾波器(IF)、集成LNA和數(shù)字接口等組成。GSW2模塊化軟件很容易集成到現(xiàn)有系統(tǒng)中,并提供功能強大的開發(fā)環(huán)境。SiRFStarII除增加了中央處理器和衛(wèi)星信號追蹤引擎,SiRFStarII在芯片組中集成了兆位存儲器(DRAM),這個是其它同類產(chǎn)品的八倍。這使其不僅可執(zhí)行各項GPS功能,還能為用戶應用提供額外存儲。將IF濾波器集成到射頻芯片內而無需新增外部濾波器,從而進一步降低了元件的數(shù)目并增加了可靠性。該芯片的主要特征如表3.3所示。表3.3SiRFStarII主要特征SiRFStarII特點功能用處信號捕捉從有遮擋地區(qū)走出時快速重捕衛(wèi)星信號在遮擋環(huán)境下提供更多的定位結果信號跟蹤跟蹤弱信號比正常信號信噪比低20dB改善信號可利用性,在信號衰減嚴重的地方也可定位單衛(wèi)星定位在短暫的僅能收到一顆衛(wèi)星的情況下定位在信號阻塞的地區(qū)也可定位,適于車載GPS多級消除誤差減小GPS反射徑帶來的誤差使GPS定位準確度提高到5m差分GPS周期〔大約30分鐘〕更新星歷和修正時間功率幾乎變成了以前的20%,增加使用時間功率分配1s內有800ms的時間接收機不工作,僅僅有200ms的時間用于重捕、跟蹤、定位工作在不想頻繁給出定位結果的情況下,節(jié)省功耗3.2.312864液晶顯示模塊介紹(1)液晶顯示模塊概述12864液晶顯示模塊,可顯示漢字及圖形,內置8192個中文漢字〔16X16點陣〕、128個字符〔8X16點陣〕及64X256點陣顯示RAM〔GDRAM〕。12864液晶顯示模塊引腳如圖3.6所示。圖3.612864液晶顯示電路圖主要技術參數(shù)和顯示特性:電源:VDD3.3V~5V(內置升壓電路,無需負壓);顯示內容:128列×64行;顯示顏色:黃綠;顯示角度:6:00鐘直視;LCD類型:STN;與MCU接口:8位或4位并行/3位串行;配置LED背光;多種軟件功能:光標顯示、畫面移位、自定義字符、睡眠模式等;邏輯工作電壓(VDD):4.5~5.5V;電源地(GND):0V;工作溫度(Ta):0~60℃(常溫)/-20~75℃〔寬溫〕[9]。12864有20接口引腳,引腳說明如表3.4所示。表3.412864引腳說明引腳序號名稱說明1CS1#U1片選。2CS2#U2片選。3VSS電源地。4VDD電源輸入〔+5V〕。5VO液晶顯示比照度調節(jié)。6DI數(shù)據(jù)輸入。7R/W讀寫選擇。R/W=1,讀狀態(tài);R/W=0,寫狀態(tài)。8E讀寫使能。9-16D0-D7數(shù)據(jù)總線。17RST液晶模組復位。RST#=L,復位。18VEE液晶驅動電源。19VLED+LED電源正〔5.0V〕。20VLED-LED電源地。3.3基于單片機的GPS硬件連接介紹整個硬件設計要求GPS接收模塊輸出的信號通過單片機STC89C52、GPS信號接收模塊、12864液晶顯示模塊、電源相連接實現(xiàn)系統(tǒng)功能。硬件電路設計如圖3.7所示。圖3.7GPS硬件電路圖第四章基于單片機的GPS軟件設計4.1NMEA-0183數(shù)據(jù)格式NMEA-0183是美國國家海洋電子協(xié)會〔NationalMarineElectronicsAssociation〕為海用電子設備制定的標準格式。它是在過去海用電子設備的標準格式0180和0182的根底上,增加了GPS接收機輸出的內容而完成的。目前廣泛采用的是Ver2.00版本?,F(xiàn)在除少數(shù)早期的GPS接收機外,幾乎所有的GPS接收機均采用了這一格式。此協(xié)議是為了在不同的GPS導航設備中建立統(tǒng)一的RTCM標準。這種格式的廣泛使用使得GPS接收模塊的通用化和互換性大大提高。這種格式所輸出的語句采用的是ASCII字符碼,包含了緯度、經(jīng)度、速度、日期、時間、航向、以及衛(wèi)星信號情況等信息。其串行通信默認參數(shù)為:波特率=9600bps,數(shù)據(jù)位=8bit,開始位=1bit,停止位=1bit,無奇偶校驗。幀格式形如:$aaccc,ddd,ddd,…,ddd*hh<CR><LF>(1)“$〞:幀命令起始位;(2)aaccc:地址域,前兩位為識別符,后三位為語句名;(3)ddd…ddd:數(shù)據(jù);(4)“*〞:校驗和前綴;(5)hh:校驗和〔checksum〕,$與*之間所有字符ASCII碼的校驗和〔各字節(jié)做異或運算,得到校驗和后,再轉換16進制格式的ASCII字符?!?6)<CR><LF>:CR〔CarriageReturn〕+LF〔LineFeed〕幀結束,回車和換行。輸入語句NMEA-0183輸入語句是指GPS接收模塊可以接收的語句。輸入語句包括初始位置,時間,秒脈沖狀態(tài),差分模式,NMEA輸出間隔等設置信息。這些語句是GPS接收機可以接受的語句。一般情況下初始化信息語句為PGRMI。$GPRMI,<1>,<2>,<3>,<4>,<5>,<6>,<7>*hh<CR><LF><1>緯度ddmm.mmmm〔度分〕格式〔前面的0也將被傳輸〕;<2>緯度半球N〔北半球〕或S〔南半球〕;<3>經(jīng)度dddmm.mmmm〔度分〕格式〔前面的0也將被傳輸〕;<4>經(jīng)度半球E〔東經(jīng)〕或W〔西經(jīng)〕;<5>UTC日期,ddmmyy〔日月年〕格式;<6>UTC時間,hhmmss〔時分秒〕格式;<7>接收機命令,A=自動定位,R=機器重新啟動。4.1.2SiRFStarII的輸出語句有十余種,其主要語句有GPALM〔歷書數(shù)據(jù)〕、GPGGA(GPS標準數(shù)據(jù),定位數(shù)據(jù))、GPGSV〔衛(wèi)星狀態(tài)〕、GPGSA、GPRMC、GPVTG、PGRME、PGRMF、PGRMT、PGRMV〔GARMIN定義的語句,3D速度信息〕、LCGLL、LCVTG〔NMEA標準語句〕等。可通過GPS串口調試軟件發(fā)送相應的命令語句給SiRFStarII芯片,此后芯片會根據(jù)命令語句設置參數(shù)。幾種常用的數(shù)據(jù)格式如下:〔1〕GPS標準數(shù)據(jù)〔GPGGA〕,其結構為:$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,<13>,<14>*<15><CR><LF><1>UTC時間,格式為hhmmss.sss;<2>緯度,格式為ddmm.mmmm〔前導位數(shù)缺乏那么補0〕;<3>緯度半球,N或S〔北緯或南緯〕;<4>經(jīng)度,格式為dddmm.mmmm〔前導位數(shù)缺乏那么補0〕;<5>經(jīng)度半球,E或W〔東經(jīng)或西經(jīng)〕;<6>定位質量指示,0=定位無效,1=定位有效;<7>使用衛(wèi)星數(shù)量,從00到12〔前導位數(shù)缺乏那么補0〕;<8>水平精確度,0.5到99.9;<9>天線離海平面的高度,-9999.9到9999.9米<10>高度單位,M表示單位米;<11>大地橢球面相對海平面的高度,-999.9到9999.9米;<12>高度單位,M表示單位米;<13>差分GPS數(shù)據(jù)期限〔RTCMSC-104〕,最后設立RTCM傳送的秒數(shù)量;<14>差分參考基站標號,從0000到1023〔前導位數(shù)缺乏那么補0〕;<15>校驗和?!?〕可視衛(wèi)星狀態(tài)輸出語句〔GPGSV〕,其結構為:$GPGSV,<1>,<2>,<3>,<4>,<5>,<6>,<7>,...,<4>,<5>,<6>,<7>*<8><CR><LF><1>總的GSV語句電文數(shù);<2>當前GSV語句號;<3>可視衛(wèi)星總數(shù),00至12;<4>衛(wèi)星編號,01至32;<5>衛(wèi)星仰角,00至90度;<6>衛(wèi)星方位角,000至359度,實際值;<7>信噪比〔C/No〕,00至99dB;無表未接收到訊號;<8>校驗和?!?〕推薦最小GPS/TRANSIT數(shù)據(jù)〔GPRMC〕,其結構為:$GPRMC,<1>,<2>,<2>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh<CR><LF>其中“GP〞為交談識別符;“RMC〞為語句識別符;“hh〞為校驗和,其代表了“$〞與“*〞之間所有字符的按位異或值〔不包括這兩個字符〕。$GPRMC語句數(shù)據(jù)區(qū)的內容為:<1>定位點的協(xié)調世界時間〔UTC〕,hhmmss〔時分秒〕格式;<2>定位狀態(tài),A=有效定位,V=無效定位;<3>定位點緯度,ddmm.mmmm〔度分〕格式;<4>緯度半球,N〔北半球〕或S〔南半球〕;<5>定位點經(jīng)度,dddmm.mmmm〔度分〕格式;<6>經(jīng)度半球,E〔東經(jīng)〕或W〔西經(jīng)〕;<7>地面速率,000.0~999.9節(jié);<8>地面航向,000.0~359.9度;<9>UTC日期,ddmmyy〔日月年〕格式;<10>磁偏角,000.0~180度;<11>磁偏角方向,E〔東〕或W〔西〕;<12>工作模式:A=自主,D=差分,E=評估,N=數(shù)據(jù)無效[10]。4.2基于單片機的GPS定位系統(tǒng)軟件開發(fā)環(huán)境―KeiluVision24.2.18051開發(fā)工具KeiluVision2是美國KeilSoftware公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),使用接近于傳統(tǒng)C語言的語法來開發(fā),與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優(yōu)勢,它還能嵌入?yún)R編,您可以在關鍵的位置嵌入。KeilC51標準C編譯器為8051微控制器的軟件開發(fā)提供了C語言環(huán)境,同時保存了匯編代碼高效,快速的特點。C51編譯器功能的不斷增強,使我們可以更加貼近CPU本身及其他的衍生品。C51已被完全集成到uVision2的集成開發(fā)環(huán)境中,這個集成開發(fā)環(huán)境包括:編譯器,匯編器,實時操作系統(tǒng),工程管理器,調試器。uVision2IDE可為它們提供單一而靈活的開發(fā)環(huán)境[11]。KeiluVision2與同類開發(fā)環(huán)境具有以下優(yōu)點:(1)真正的集成調試環(huán)境,集成了編緝器、編譯器、調試器;(2)眾多強大軟硬件調試手段,包括邏輯分析儀、跟蹤器、邏輯筆、波形發(fā)生器、影子存儲器、記時器、程序時效分析、數(shù)據(jù)時效分析、硬件測試儀、事件觸發(fā)器;(3)所有類型的單片機集成在一個調試環(huán)境下,支持匯編、C、PL/M源程序混合調試;(4)支持軟件模擬,支持工程管理;(5)支持點屏功能,直接點擊屏幕就可以觀察變量的值,方便快捷;(6)功能強大的觀察窗口,支持所有的數(shù)據(jù)類型;(7)樹狀結構顯示,一目了然;(8)在線直接修改、編譯、調試源程序,錯誤指令定位[12]。uVision2集成開發(fā)環(huán)境(1)工程管理工程〔project〕是由源文件、開發(fā)工具選項以及編程說明三局部組成的。一個單一的uVision2工程能夠產(chǎn)生一個或多個目標程序。產(chǎn)生目標程序的源文件構成“組〞。開發(fā)工具選項可以對應目標,組或單個文件。uVision2包含一個器件數(shù)據(jù)庫(devicedatabase),可以自動設置匯編器、編譯器、連接定位器及調試器選項,來滿足用戶充分利用特定微控制器的要求。此數(shù)據(jù)庫包含:片上存儲器和外圍設備的信息,擴展數(shù)據(jù)指針(extradatapointer)或者加速器(mathaccelerator)的特性。uVision2可以為片外存儲器產(chǎn)生必要的連接選項:確定起始地址和規(guī)模[13]。(2)集成功能uVision2的強大功能有助于用戶按期完工。集成源極瀏覽器利用符號數(shù)據(jù)庫使用戶可以快速瀏覽源文件。用詳細的符號信息來優(yōu)化用戶變數(shù)存儲器;文件尋找功能:在特定文件中執(zhí)行全局文件搜索;工具菜單:允許在V2集成開發(fā)環(huán)境下啟動用戶功能;可配置SVCS接口:提供對版本控制系統(tǒng)的入口;PC-LINT接口:對應用程序代碼進行深層語法分析;Infineon的EasyCase接口:集成塊集代碼產(chǎn)生;Infineon的DAVE功能:協(xié)助用戶的CPU和外部程序。DAVE工程可被直接輸入uVision2。編輯器和調試器(1)源代碼編輯器uVision2編輯器包含了所有用戶熟悉的特性。彩色語法顯像和文件辯識都對C源代碼進行和優(yōu)化??梢栽诰庉嬈鲀日{試程序,它能提供一種自然的調試環(huán)境,使你更快速地檢查和修改程序。(2)斷點uVision2允許用戶在編輯時設置程序斷點〔甚至在源代碼未經(jīng)編譯和匯編之前〕,用戶啟動V2調試器之后,斷點即被激活。斷點可設置為條件表達式,變量或存儲器訪問,斷點被觸發(fā)后,調試器命令或調試功能即可執(zhí)行。在屬性框(attributescolumn)中可以快速瀏覽斷點設置情況和源程序行的位置,代碼覆蓋率信息可以讓你區(qū)分程序中已執(zhí)行和未執(zhí)行的局部。調試函數(shù)語言uVision2中,你可以編寫或使用類似C的數(shù)語言進行調試。內部函數(shù):如printf,memset,rand及其它功能的函數(shù);信號函數(shù):模擬產(chǎn)生CPU的模擬信號和脈沖信號;用戶函數(shù):擴展指令范圍,合并重復動作。變量和存儲器用戶可以在編輯器中選中變呈來觀察其取值。雙層窗口顯示,可進行以下調整:當前函數(shù)的局部變量;用戶在兩個不同watch窗口頁面上的自定義變量;堆棧調用(callstack)頁面上的調用記錄〔樹〕(calltree);不同格式的四個存儲區(qū)[14]。測試程序uVision2調試器具備所有常規(guī)源極調試,符號調試特性以及歷史跟蹤,代碼覆蓋,復雜斷點等功能。DDE界面和shift語言支持自動程序測試。CPU和外設模擬裝置uVision2為8051及衍生產(chǎn)品提供了高速CPU模擬功能和片上擴展口.在對話框內可直接觀察和修改I/O值,也可以用預裝的C-LIKE宏指令書寫符號函數(shù)來提供動態(tài)輸入。(2)目標監(jiān)控器uVision2含一個可配置的監(jiān)控器,可測試目標器件上的軟件體。監(jiān)控器用uVision2的調試器直接工作,可支持代碼區(qū)。它要求目標系統(tǒng)具備6字節(jié)堆??臻g,6KB的代碼ROM和256字節(jié)XdataRAM。(3)MCB517/251啟開工具包在開始一項8051工程時,MCB啟開工具會對你有很大幫助。每一個啟開工具包括一套2K字節(jié)的開發(fā)工具和許多可快速運行的舉例程序。用戶可在檢測8051性能的同時,查看開發(fā)工具的可行性。MCB517AC板含高性能InfineonC517A單片機,它提供標準8052外圍設備和A/D轉換器,PWM,搜索/比擬,8位數(shù)據(jù)指針,一個高速運算單元[15]。同時包含對81C90CAN控制器和代碼區(qū)的支持。本次設計軟件采用了C語言程序編寫,并在KeiluVision2開發(fā)環(huán)境下編譯、調試。KeilC編譯步驟KeiluVision2C51軟件是目前功能最強大的單片機C語言集成開發(fā)環(huán)境,這里介紹簡單的編譯步驟。運行Keilc51進入編輯界面,如圖4.1所示。圖4.1Keilc51編輯界面首先進入菜單project/newproject建立一個新工程,如圖4.2所示。圖4.2建立新工程選擇要保存的路徑,輸入工程文件的名字,如圖4-3所示。圖4.3保存路徑根據(jù)使用的單片機選擇相應的型號,如圖4.4所示。圖4.4選擇單片機型號(5)單擊“Target1”前面的“+〞號,然后在“SourceGroup1”上單擊右鍵,彈出如圖4.5所示界面參加源文件。如還沒有源文件請先進入菜單File/New生成一個圖4.5參加源文件界面(6)進行輸出文件設置,進入菜單project/optionsfortarget選擇OUTPUT選項卡,勾選CrestHEXFile項,如圖4.6所示。圖4.6輸出文件設置(7)程序編寫完成后進入菜單Project/Buildtarget編譯工程,如圖4.7所示。生成的*.HEX文件即可作為下載程序使用[13]。圖4.7生成文件4.3基于單片機的GPS軟件設計思路該GPS設計的核心局部是GPS接收模塊與單片機的通訊,以及單片機將收到的信息篩選編排顯示位置后送到LCD液晶顯示模塊顯示。在設計該軟件時采用了模塊化的思想,之所以采用模塊化的設計思想,主要是想到了軟件模塊化前方便軟件的調試,同時也方便了該軟件的移植,在不同的硬件平臺上運行該軟件只需要更改相應的軟件模塊就可以實現(xiàn)。該軟件模塊設計分為液晶模塊初始化模塊,GPS數(shù)據(jù)接收模塊,單片機模塊這三個主要模塊。其程序流程圖如圖4.8所示。圖4.8軟件程序流程圖4.4模塊軟件設計4.4.1液晶模塊初始化模塊在該設計中所使用的是12864液晶顯示模塊,其初始化程序如下所示:#include"LCD.h"voidclr_screen(){Lcd_WriteCmd(0x34);//擴充指令操作delay(5);Lcd_WriteCmd(0x30);//根本指令操作delay(5);Lcd_WriteCmd(0x01);//清屏delay(5);}voidLcd_WriteCmd(ucharcmd){ LCD_RS=0; LCD_RW=0; LCD_EN=0; _nop_(); _nop_(); P0=cmd; DelayNOP();LCD_EN=1; DelayNOP(); LCD_EN=0;}voidLcd_WriteDat(uchardat){ LCD_RS=1; LCD_RW=0; LCD_EN=0;P0=dat; DelayNOP(); LCD_EN=1;DelayNOP(); LCD_EN=0;}voidLcd_Init(void){ LCD_PSB=1;//并口方式 Lcd_WriteCmd(0x34);//擴充指令操作 delay(5); Lcd_WriteCmd(0x30);//根本指令操作 delay(5); Lcd_WriteCmd(0x0C);//顯示開,關光標 delay(5); Lcd_WriteCmd(0x01);//去除LCD的顯示內容 delay(5);}voidLcd_SetPos(ucharX,ucharY){ucharpos;if(X==0){X=0x80;}elseif(X==1){X=0x90;}elseif(X==2){X=0x88;}elseif(X==3){X=0x98;}pos=X+Y;Lcd_WriteCmd(pos);//顯示地址}voidLcd_DispLine(ucharline,ucharpos,uchar*str){ inti=0; Lcd_SetPos(line,pos); while(str[i]!='\0') { Lcd_WriteDat(str[i]); i++; }}4.4.2GPS數(shù)據(jù)接收模塊首先要對GPS接收模塊是否有信號發(fā)送給單片機進行識別,而且由于GPS接收模塊發(fā)送出來的數(shù)據(jù)不是我們全部需要的,所以有必要再對語句進行識別,然后取入我們所需要的語句GPRMC。其識別程序如下:if(GPS_RMC_Parse(rev_buf,&GPS))//解析GPRMC{RMC_YES;GPS_DisplayOne(); //顯示GPS信息error_num=0;gps_flag=0;rev_stop=0;}else{error_num++;if(error_num>=20)//如果數(shù)據(jù)無效超過20次{RMC_NO;error_num=20;GPS_Init();//返回初始化}gps_flag=0;rev_stop=0;REV_NO;}程序代碼詳見附錄。第五章系統(tǒng)調試與實驗結果完成了系統(tǒng)的硬件設計、制作和軟件編程之后,要使系統(tǒng)能夠按照設計意圖正常運行,必須進行硬件和軟件系統(tǒng)調試。5.1硬件調試硬件調試的主要任務是排除硬件故障,其中包括設計的錯誤和工藝性故障等。檢查所設計的硬件電路板所有的器件和引腳是否正確。第一步,我用數(shù)字萬用表進行了逐一對點的檢查,檢查各導線間是否有短路與開路的故障。第二步測輸入5V電源〔0V地〕線是否與電路中的對應點的電源〔地〕線相連接是否正確;及檢查開關是否正常,是否連接正確。測芯片管座與芯片管座之間用導線連接起來的對應腳是否導通和截止。(2)將仿真插頭插入單片機插座進行調試,檢查各接口是否滿足設計的要求。(3)將程序代碼經(jīng)過Keil軟件仿真生成的〔.hex〕文件,用編程器將生成的文件導入單片機STC89C52中。(4)將寫入程序的單片機插入硬件電路單片機管座,查看液晶顯示器12864顯示結果是否符合設計要求。5.2軟件調試軟件調試的任務是利用開發(fā)工具進行在線仿真調試,發(fā)現(xiàn)和糾正程序的錯誤,同時也能發(fā)現(xiàn)硬件的故障。軟件調試是一個模塊一個模塊進行的,首先單獨調試各子程序是否能夠按照預期的功能,接口電路的控制是否正常,最后調試整個程序,尤其注意的是各模塊間能否正確的傳遞參數(shù)。(1)檢查12864液晶顯示模塊程序,觀察在液晶顯示器上是否能夠顯示相應的字符。(2)檢查GPS模塊程序,通過觀察12864液晶顯示情況理解GPS信號接收狀況。(3)通過GPS模塊程序和12864液晶顯示模塊程序的結合,觀察12864液晶顯示器上的GPS顯示信息。5.3實驗結果經(jīng)過軟件局部和硬件局部的調試,最后實現(xiàn)了其功能。GPS初始化如圖5.1所示。圖5.1GPS初始化時間、經(jīng)緯度顯示結果如圖5.2所示。圖5.2時間、經(jīng)緯度顯示結果5.4實驗結果分析圖5-2所示的實驗結果是我在合肥學院竹苑A座419寢室測試的結果。谷歌地圖顯示這個位置的經(jīng)緯度如圖5.3所示。圖5.3谷歌地圖顯示結果GPS定位顯示系統(tǒng)設計所測量出來的結果中,時間是很精確的,但是經(jīng)緯度有所差異,根據(jù)我的裝置顯示的結果是北緯31度45分15秒,東經(jīng)117度14分51秒。谷歌地圖上顯示的結果是北緯31.7505度,東經(jīng)117.2530度。經(jīng)過單位換算可知,谷歌地圖顯示的結果是北緯31度45分18秒,東經(jīng)117度15分10秒。由于我所選用的GPS接收模塊的版本比擬低,而且在實驗過程中有其他因素干擾,比方天氣方面和電離層的影響,以及在谷歌地圖上點選的位置有誤差,最終使得我所測量的結果與谷歌地圖之間有些許誤差,但是誤差是能夠被接受的,因此,本次試驗結果是可靠、有效的,滿足設計要求。第六章總結隨著GPS的應用越來越廣泛,GPS設備普及速度也將大大加快,在我們國內GPS產(chǎn)業(yè)才剛剛起步,GPS產(chǎn)業(yè)的興起勢必也將大大的推進GPS在民間的應用。GPS已在各個領域發(fā)揮了重要的作用,為促進人類開展作出了不可估量的奉獻。不過由于專業(yè)GPS設備價格昂貴,普通消費者難以承受,所以也限制了GPS在民間的大量應用,現(xiàn)在各個GPS廠商的當務之急便是降低GPS的制造本錢,削減一些普通消費者平時用不到的專業(yè)功能,保存一些根本的實用功能,以加快GPS在民間普及的速度。本次畢業(yè)設計,主要是了解GPS的原理,熟悉GPS接收機的工作原理及其各局部工作流程。GPS信號處理模塊由SiRFStarII實現(xiàn),通過SiRFStarII與MCS-51兼容系列單片機相連,配備了所需的外圍電路,同時配有液晶顯示器,可以顯示字符,并詳細介紹了該GPS接收機的硬件和軟件設計。畢業(yè)設計是本科學習階段一次非常重要的理論與實際相結合的時機,通過本次比擬完整的設計,我擺脫了單純的理論知識學習狀態(tài),通過理論和實際相結合,鍛煉了我的綜合運用所學知識的能力,以及解決實際工程的能力,同時也提高了我查閱文獻資料、設計手冊、設計標準以及繪圖的水平,而且通過對整體的掌控,對局部的取舍,以及對細節(jié)的斟酌處理,都能使我的能力得到提升,經(jīng)驗得到豐富。順利如期的完本錢次畢業(yè)設計給了我很大的信心,讓我了解專業(yè)知識的同時也對本設計的開展前景充滿信心。提高是有限的但也是全面的,正是這一次設計讓我積累了無數(shù)實際經(jīng)驗,使我的頭腦更好地被知識武裝起來,讓我在未來的工作學習中有更好的應變能力,更強的溝通力和理解力。由于水平有限和時間問題,有許多缺乏。本設計只是GPS入門級的設計,不能滿足現(xiàn)在市場上日益劇烈的競爭環(huán)境,實用性還有待提高,功能也有待完善??傊?,在做這次畢業(yè)設計的過程中,既復習了已學的專業(yè)知識,又學到了實際經(jīng)驗,是我人生中一次難得的學習經(jīng)歷,更是對自己綜合能力的考驗和提高。致謝本課題是在王慶龍老師的悉心指導下完成的,論文從選題到寫作及最后成稿,王老師都給予了我精心的指導和極大的幫助。王老師淵博的科學知識、遠見卓識的科學創(chuàng)新和嚴謹?shù)闹螌W態(tài)度給了我深遠的影響,同時王老師隨和的性格更讓我感到親切。在設計階段,王老師在資料搜集、程序調試、論文寫作等方面都給予我嚴格的要求和關鍵性的指導,在此衷心感謝幾個月來王老師對我的關心和指導。感謝電子系所有老師在畢業(yè)設計期間為我們提供良好的實驗環(huán)境。此外,我還要對在這次設計中,幫助和支持我的同學,表示感謝!王致忠2023年5月于合肥學院參考文獻[1]劉基余.GPS衛(wèi)星導航定位原理與方法[M],北京:科學出版社,2003.[2]劉基余,李征航.全球定位系統(tǒng)原理及其應用[M],北京:測繪出版社,1993.[3]王惠南.GPS導航原理與應用[M],北京:科學出版社,2003.[4]潘永雄.新編單片機原理與應用[M],西安:西安電子科技大學出版社,2003.[5]張鵬.單片機原理及應用[M],成都:電子科技大學出版社,2004.[6]張立科.單片機典型模塊設計實例導航[M],北京:人民郵電出版社,2000.[7]余錫存,曹國華.單片機原理及接口技術[M],西安:西安電子科技大學出版社,2023.[8]劉曉,伍小東,姚軍光,等.基于單片機采集GPS數(shù)據(jù)系統(tǒng)的設計[J],青島科技大學學報,2006,27(2):172-175.[9]姚敏,郭慶.基于MCS-51系列單片機的GPS獨立定位設備的研究[J],計算機與信息技術,2006,2(8):79-82.[10]李勇軍,楊青,龐樹杰,等.基于OEM板的GPS接收機設計[J],農機化研究,2006,5(12):109-111.[11]王丙祥,李建海.基于89C52的GPS板電路設計與實現(xiàn)[J],西安文理學院學報:自然科學版,2007,10(3):98-101.[12]AnnaM.Murphy,ShinichiTsutsumi,PererGaussen.ALow-Power,Low-CostBipolarGPSReceiverChip[J],IEEEJOURNALOFSOLID-STATECIRCUITS.1997,4(4):587-591.[13]李洪濤.GPS應用程序設計[M],北京:科學出版社,1999.[14]許進,周寧.GPS接收機的單片機通訊接口[J],電子器件,1999,22(3):23-26.[15]索明何,饒運濤,邢海霞,等.基于單片機的液晶顯示系統(tǒng)設計[J],科技廣場,2023,7(2):22-24.附錄主程序//定義頭文件,函數(shù)和變量#include<reg52.h>#include<stdio.h>#include<string.h>#include"GPS.h"#include"LCD.h"#include"display.h"charxdatarev_buf[80];//接收緩存ucharxdatarev_start=0;//接收開始標志ucharxdatarev_stop=0;//接收停止標志ucharxdatagps_flag=0;//GPS處理標志ucharxdatachange_page=0;//換頁顯示標志ucharxdatanum=0;voidUart_Init(void){ TMOD=0x21; //00100001 PCON=0X00; TH0=0x3c; TL0=0xb0; TH1=0xFA; //11111010 TL1=0xFA; //11111010 TR1=1;//開啟定時器1 REN=1;//允許接收數(shù)據(jù) SM0=0; SM1=1; TI=0; RI=0; EA=1;//開總中斷 ES=1;//串口1中斷允許 ET0=1;//定時器1中斷允許}voidmain(void)//主函數(shù){ ucharerror_num=0; Lcd_Init(); //初始化LCD GPS_Init();//初始化GPS rev_stop=0; REV_NO; while(1) { if(rev_stop)//如果接收完一行 { TR0=1;//開啟定時器 REV_YES;if(GPS_RMC_Parse(rev_buf,&GPS))//解析GPRMC{RMC_YES;GPS_DisplayOne(); //顯示GPS信息 error_num=0;gps_flag=0;rev_stop=0;}else{error_num++;if(error_num>=20)//如果數(shù)據(jù)無效超過20次{RMC_NO;error_num=20;GPS_Init();//返回初始化}gps_flag=0;rev_stop=0;REV_NO;}}}voidtimer0(void)interrupt1{ staticucharcount=0; TH0=0x3c; TL0=0xb0; count++; if(count==200)//2*5秒鐘 { count=0; change_page++;//換頁 if(change_page==10) change_page=0; } }voidUart_Receive(void)interrupt2{ ucharch; ES=0; if(RI) { ch=SBUF; if((ch=='$')&&(gps_flag==0))//如果收到字符'$',便開始接收 { rev_start=1; rev_stop=0; } if(rev_start==1)//標志位為1,開始接收 { rev_buf[num++]=ch;//字符存到數(shù)組中 if(ch=='\n')//如果接收到換行 { rev_buf[num]='\0'; rev_start=0; rev_stop=1; gps_flag=1; num=0; } } } RI=0; //RI清0,重新接收 ES=1; }SiRFStarIIGPS接收模塊程序#include"GPS.h"#include"LCD.h"#include<string.h>ucharcodeinit1[]={"GPS顯示終端"};ucharcodeinit3[]={"GPS初始化"};ucharcodeinit4[]={"搜索定位衛(wèi)星"};staticucharGetComma(ucharnum,char*str);staticdoubleGet_Double_Number(char*s);staticfloatGet_Float_Number(char*s);staticvoidUTC2BTC(DATE_TIME*GPS);voidGPS_Init(void){ Lcd_DispLine(0,0,init1); Lcd_DispLine(1,0,init3); Lcd_DispLine(2,0,init4);}intGPS_RMC_Parse(char*line,GPS_INFO*GPS){ ucharch,status,tmp; floatlati_cent_tmp,lati_second_tmp; floatlong_cent_tmp,long_second_tmp; char*buf=line; ch=buf[5]; status=buf[GetComma(2,buf)]; if(ch=='C')//如果第五個字符是C,($GPRMC) { if(status=='A')//如果數(shù)據(jù)有效,那么分析 { GPS–>NS=buf[GetComma(4,buf)]; GPS–>EW=buf[GetComma(6,buf)]; GPS->latitude=Get_Double_Number(&buf[GetComma(3,buf)]); GPS->longitude=Get_Double_Number(&buf[GetComma(5,buf)]); GPS->latitude_Degree=(int)GPS->latitude/100;//別離緯度 lati_cent_tmp=(GPS->latitude-GPS->latitude_Degree*100); GPS->latitude_Cent=(int)lati_cent_tmp; lati_second_tmp=(lati_cent_tmp-GPS->latitude_Cent)*60; GPS->latitude_Second=(int)lati_second_tmp; GPS->longitude_Degree=(int)GPS->longitude/100; //別離經(jīng)度 long_cent_tmp=(GPS->longitude-GPS->longitude_Degree*100); GPS->longitude_Cent=(int)long_cent_tmp; long_second_tmp=(long_cent_tmp-GPS->longitude_Cent)*60; GPS->longitude_Second=(int)long_second_tmp; GPS->D.hour=(buf[7]-'0')*10+(buf[8]-'0');//時間 GPS->D.minute=(buf[9]-'0')*10+(buf[10]-'0'); GPS->D.second=(buf[11]-'0')*10+(buf[12]-'0'); tmp=GetComma(9,buf); GPS->D.day=(buf[tmp+0]-'0')*10+(buf[tmp+1]-'0');//日期 GPS->D.month=(buf[tmp+2]-'0')*10+(buf[tmp+3]-'0'); GPS->D.year=(buf[tmp+4]-'0')*10+(buf[tmp+5]-'0')+2000; UTC2BTC(&GPS->D); return1; } } return0;}intGPS_GGA_Parse(char*line,GPS_INFO*GPS){ ucharch,status; char*buf=line; ch=buf[4]; status=buf[GetComma(2,buf)]; if(ch=='G')//$GPGGA { if(status!=',') { return1; } } return0;}staticfloatStr_To_Float(char*buf){ floatrev=0; floatdat; intinteger=1; char*str=buf; inti; while(*str!='\0') { switch(*str) { case'0': dat=0; break; case'1': dat=1; break; case'2': dat=2; break; case'3': dat=3; break; case'4': dat=4; break; case'5': dat=5; break; case'6': dat=6; break; case'7': dat=7; break; case'8': dat=8; break; case'9': dat=9; break; case'.': dat='.'; break; } if(dat=='.') { integer=0; i=1; str++; continue; } if(integer==1) { rev=rev*10+dat; } else { rev=rev+dat/(10*i); i=i*10; } str++; } returnrev;}staticfloatGet_Float_Number(char*s){ charbuf[10]; uchari; floatrev; i=GetComma(1,s); i=i-1; strncpy(buf,s,i); buf[i]=0; rev=Str_To_Float(buf); returnrev; }staticdoubleStr_To_Double(char*buf){ doublerev=0; doubledat; intinteger=1; char*str=buf; inti; while(*str!='\0') { switch(*str) { case'0': dat=0; break; case'1': dat=1; break; case'2': dat=2; break; case'3': dat=3; break; case'4': dat=4; break; case'5': dat=5; break; case'6': dat=6; break; case'7': dat=7; break; case'8': dat=8; break; case'9': dat=9; break; case'.': dat='.'; break; } if(dat=='.') { integer=0; i=1; str++; continue; } if(integer==1) { rev=rev*10+dat; } else { rev=rev+dat/(10*i); i=i*10; } str++; } returnrev;}staticdoubleGet_Double_Number(char*s){ charbuf[10]; uchari; doublerev; i=GetComma(1,s); i=i-1; strncpy(buf,s,i); buf[i]=0; rev=Str_To_Double(buf); returnrev; }staticucharGetComma(ucharnum,char*str){ uchari,j=0; intlen=strlen(str); for(i=0;i<len;i++) { if(str[i]==',') j++; if(j==num) returni+1; } return0; }staticvoidUTC2BTC(DATE_TIME*GPS){ GPS->second++; if(GPS->second>59) { GPS->second=0; GPS->minute++; if(GPS->minute>59) { GPS->minute=0; GPS->hour++; } } GPS->hour=GPS->hour+8; if(GPS->hour>23) { GPS->hour-=24; GPS->day+=1; if(GPS->month==2||GPS->month==4||GPS->month==6||GPS->month==9||GPS->month==11) { if(GPS->day>30) { GPS->day=1; GPS->month++; } } else { if(GPS->day>31) { GPS->day=1; GPS->month++; } } if(GPS->year%4==0) { if(GPS->day>29&&GPS->month==2) { GPS->day=1; GPS->month++; } } else { if(GPS->day>28&&GPS->month==2) { GPS->day=1; GPS->month++; } } if(GPS->month>12) { GPS->month-=12; GPS->year++; } }}voidInt_To_Str(intx,char*Str){ intt; char*Ptr,Buf[5]; inti=0; Ptr=Str; if(x<10) //當整數(shù)小于10時,轉化為"0x"的格式 { *Ptr++='0'; *Ptr++=x+0x30; } else { while(x>0) { t=x%10; x=x/10; Buf[i++]=t+0x30; //通過計算把數(shù)字轉化成ASCII碼形式 } i--; for(;i>=0;i--) //將得到的字符串倒序 { *(Ptr++)=Buf[i]; } } *Ptr='\0';}12864液晶顯示模塊程序#include"LCD.h"voidclr_screen(){Lcd_WriteCmd(0x34);//擴充指令操作delay(5);Lcd_WriteCmd(0x30);//根本指令操作delay(5);Lcd_WriteCmd(0x01);//清屏delay(5);}voidLcd_WriteCmd(ucharcmd){ LCD_RS=0; LCD_RW=0; LCD_EN=0; _nop_(); _nop_(); P0

溫馨提示

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

評論

0/150

提交評論