基于單片機GPS定位系統的設計說明_第1頁
基于單片機GPS定位系統的設計說明_第2頁
基于單片機GPS定位系統的設計說明_第3頁
基于單片機GPS定位系統的設計說明_第4頁
基于單片機GPS定位系統的設計說明_第5頁
已閱讀5頁,還剩47頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

.. .. ..南陽理工學院計算機與信息工程學院軟硬件專業綜合課程設計總結報告題目:基于單片機的GPS定位系統計算機與信息工程學院軟硬件專業綜合課程設計任務書實踐題目 基于單片機的GPS定位系統學生姓名 張燕紅 班級 通信二班 學號 105060640079指導教師 鄭珂 職稱 副教授 實踐地點 南陽理工學院實踐日期 2014年2月起至2014年6選題的目的:掌握GPS定位設計技巧,使自己所學的知識在現實中得以應用。制作出一套設計方案,以軟硬件相結合的方式完成整個GPS數據接收和顯示的過程。完成一臺液晶顯示的手持式GPS定位接收設備。能夠較為精確地計算和顯示日期、時間、經度、緯度等衛星信息。通過對GPS接收板和LED顯示模塊的研究,設計GPS定位信息的采集與顯示系統。全球定位系統GPS是近年來開發的最具有開創意義的高新技術之一,其全球性、全天候性的導航定位、定時、測速優勢必然會在諸多領域中得到越來越廣泛的應用。GPS全球.專業資料... .. ..定位系統在實際生活中被廣泛應用,是當今信息時代發展中的重要組成部分。因其具有性能好、精度高、應用廣的特點,使其成為了迄今最好的導航定位系統。實踐證明,該系統顯示的時間非常精確、定位精度高,能滿足一般應用項目的使用,具有一定的實用價值。技術要求:1、uVision2集成開發環境、LCD液晶顯示器2、系統的主要功能有:1.硬件電路的設計2.GPS接收信息的處理3.顯示程序的調式進度安排:2014年2月20日——2014年2月30日查閱資料、項目總體分析2013年3月01日——2013年3月13日系統功能總體設計2013年3月14日——2013年3月26日軟件程序及硬件電路設計2013年3月27日——2014年月03日軟硬件系統調試、測試2014年01月04日——2014年01月08日撰寫實訓報告2014年01月09日——2014年01月10日驗收主要參考資料:一、工具書:[1]邱致和,王萬義.GPS原理與應用[M].北京:電子工業出版社,2001[2]李維言,郭強.液晶顯示應用技術,電子工業出版社,1999.8[3]李維言,郭強,周云仙.液晶顯示應用手冊,電子工業出版社,2002.8[4]陸愛明.單片機和圖形液晶顯示器接口應用技術,電子產品世界。2001.9.專業資料... .. ..[5]余錫存.單片機原理及接口技術[M].西安:西安電子科技大學出版社,2000[6]戴佳,戴衛恒.51單片機C語言應用程序設計[M].北京:電子工業出版社.2006[7]彭為.單片機典型系統設計實例精講[M].北京:電子工業出版社.2006二、參考資料:[1]肖劍飛.嵌入式GPS通用衛星模擬器設計與實現[J].空間電子技術,2007.4[2]黃少鋒,張尊泉,鄧斌,黃斌.基于單片機采集與顯示GPS定位信息系統的設計[J].空軍雷達學院學報,2007.1[3]王古猛.GPS與單片機接口程序設計[J].電子測試,2007,7[4]黃凌.基于單片機的GPS信息處理系統[J].現代電子技術,2009,12[5]楊平,宋贄存.基于GPS-OEM板和單片機的GPS接收機的設計[J].東北林業大學學報,2009,5教師簽名:年 月 日目錄1.引言 1.專業資料... .. ..2.方案選擇 22.1.方案一22.2.方案二23.硬件設計 43.1.系統總體結構圖 43.2.單片機引腳連接電路 43.3.LCD顯示電路 63.4.ISD語音電路 73.5.LM7805穩壓電路 84.軟件設計 104.1.程序流程圖 104.2.單片機串行通信 104.3.GPS接收語句設計 114.4.LCD1602流程圖 144.5.ISD1730流程圖 155.系統調試 165.1.單片機下載口調試 165.2.LCD1602調試 165.3.GPS定位坐標調試 175.4.ISD1730語音錄入調試 185.5.LM7805供電部分調試 20謝辭 21參考文獻 22附錄 23附錄1-原理圖 23附錄2-PCB圖 24附錄3-程序及注釋 25.專業資料... .. ..引言GPS技術在軍事、通訊、氣象、勘探、導航、遙感、大地測量、地球動力以及天文等眾多學科領域得到極其廣泛的應用,推動了科學技術的迅猛發展,也豐富了人類的科學文化生活。現在,GPS的外型設計已經轉向便攜式發展,逐步踏入尋常百姓的生活中。所以,對GPS的研究具有十分重要的意義。全球定位系統(GlobalPositioningSystem簡稱GPS)是美國第二代軍用導航系統,可實現全球范圍內的實時導航和定位。GPS由太空衛星、地面控制系統、用戶設備三個部分組成。太空衛星共有27顆,24顆運行,3顆備用。24顆可操作的工作衛星以55°的傾角分布在地球上空20~200KM的6個軌道面上。這些衛星軌道上的分布狀態使地球上的任何位置在任意時候都可以同時收到至少6顆衛星的定位信息,這些衛星則不斷地給全球用戶發送位置和時間的廣播數據。地面控制系統主要作用有:根據監控系統對GPS的觀測數據計算出衛星的星歷和衛星鐘的改正參數等,并將這些數據注入到衛星中去;對衛星進行控制,對衛星進行發布指令;接收衛星信號,監測衛星狀態等。用戶設備用于接收GPS衛星所發出的信號,利用這些信號進行導航定位等工作。GPS系統的基本定位原理是:每顆GPS衛星時刻發布其位置和時間數據信號,用戶接收機可以測量每顆衛星信號到接收機的時間延遲,根據信號傳輸的速度可以計算出接收機到不同衛星的距離。同時收集至少4顆衛星的數據時,就可以算出三維坐標、速度和時間。由于GPS具有全球覆蓋以及精度高、定位速度快、實時性好、抗干擾能力強等特點,近年來在國內外得到了廣泛的應用,在各個領域發揮了極大的作用,已成為了信息時代不可以或缺的一部分。本文的主要目的是在GPS和單片機的理論和知識上,選用Atmel公司的AT89S52提取GPS模塊的接收數據并由1602液晶顯示接收數據。在此設計過程中,主要熟悉GR-87GPS模塊各性能指標,結合單片機串行通信知識能實現對GPS接收到的衛星信息進行提取,而后在1602液晶顯示平臺上選擇性的顯示數據并且利用語音芯片ISD1730進行播報音。.專業資料... .. ..方案選擇2.1. 方案一主要芯片器件:GPS,GPS-OEM板;單片機,AT89S54;語音芯片,ISD1730;鍵盤模塊;液晶LCD1602;電平轉換MAX232;外置ROM等。GPSOEMLCD1602MAX232AT89S54

外置ROM鍵盤模塊ISD1730圖2.1硬件結構圖OEM模塊通過電平轉換MAX232與AT89S54進行串行通信,其中GPS傳入單片機的為GPRMC格式的語句,需要在單片機中進行數據拆分等操作。將取得的GPS數據發送到單片機中進行處理,通過鍵盤模塊的按鍵控制,單片機判斷后進行操作,或將數據存儲到外置rom中,或將已得的經緯度通過ISD1730語音模塊播報出,再次期間,LCD1602始終顯示當前位置的經緯度。方案一特點:OEM板軍用板,精確度高,是集成模塊,易于攜帶。鍵盤模塊按鍵多,使用功能強大,可以實現多種功能。AT89S54內存大,方便使用大程序。外置ROM,便于存儲數據以及調用。GPS-OEM板需經過電平轉化MAX232才可與單片機通信。并且OEM成本高,性價比一般。AT89S54非常用芯片,不易獲取。使用外置ROM需要占用至少8個數據口,如圖1所示,需要對某個數據口進行分時復用。加大了電路復雜性。整個電路硬件多,布局難。2.2. 方案二主要芯片器件:.專業資料... .. ..GPS,GR-87;單片機,AT89S52;語音芯片,ISD1730;3個按鍵;液晶LCD1602等GR-87

LCD1602AT89S52ISD1730摁鍵圖2.2硬件結構圖GR-87模塊與單片機AT89S52直接可以進行串行通信,其中GPS傳入單片機的為GPRMC格式的語句,需要在單片機中進行數據拆分等操作。將取得的GPS數據發送到單片機中進行處理,通過按鍵控制,單片機判斷后進行操作,例如將已得的經緯度通過ISD1730語音模塊播報出,并在特殊的經緯度范圍內播報地址信息,在此期間,LCD1602始終顯示當前位置的經緯度。方案二特點:電路硬件少,結構簡單易懂。GR-87成本低,性價比高。AT89S52流行,內存8K足夠使用。數據口剛好夠用。結構簡單,硬件及軟件功能有一定的局限性。GR-87以及接線不方便攜帶。最終選擇了方案二,理由如下:GPS選擇GR-87,它可以滿足課題要求,并且其性價比高,而且不需要電平轉換。課題按鍵功能的實現不需要鍵盤模塊,只需4~6個按鍵即可。AT89S52內存足夠用,不用再定做AT89S54雖然缺少了外置ROM,但減少了分時復用的麻煩。方案二的I/O口分配合理。.專業資料... .. ..硬件設計3.1. 系統總體結構圖按鍵單片機LCD1602P1.2、P1.3P0數據口GR-87AT89S52RXDTXDISD1730TXDRXDP2.x控制口圖3.1系統總體結構圖系統總結構圖如圖3.1所示,其中,單片機P1.0~P1.3口進行按鍵控制,GR87與單片機串行通信,單片機的TXD連接GR-87的RXD1,GR-87的RXD2口閑置。LCD經上拉電阻與單片機P0口連接,ISD1730相關控制口與P3口中的部分I/O口相連。系統由統一的電源5V供電。3.2. 單片機引腳連接電路圖3.2 單片機引腳電路.專業資料... .. ..圖3.3最小系統電路AT89S52簡介AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統可編程Flash存儲器。使用Atmel公司高密度非易失性存儲器技術制造,與工業80C51產品指令和引腳完全兼容。片上Flash允許程序存儲器在系統可編程,亦適于常規編程器。在單芯片上,擁有靈巧的8位CPU和在系統可編程Flash,使得AT89S52為眾多嵌入式控制應用系統提供高靈活、超有效的解決方案。AT89S52具有以下標準功能:8k字節Flash,256字節RAM,32位I/O口線,看門狗定時器,2個數據指針,三個16位定時器/計數器,一個6向量2級中斷結構,全雙工串行口,片內晶振及時鐘電路。另外,AT89S52可降至0Hz靜態邏輯操作,支持2種軟件可選擇節電模式。空閑模式下,CPU停止工作,允許RAM、定時器/計數器、串口、中斷繼續工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。如圖3.2、3.3所示,本次課題中,P0口作為標準I/O口進行數據輸出端,傳入液晶;以P1^0到P1^4的標準I/O口功能進行按鍵控制,P1^5到P1^7作為下載器連接端口使用,利用P3^0、P3^1的串行數據傳輸功能與GPS進行數據通信,P3^4作為時鐘信號接入語音芯片的時鐘端,P2^0到P2^2作為語音芯片的控制端口,P2^5到P2^7作為液晶的控制端口。其他所用端口為:XTAL1、XTAL2、VCC、VPP、GND、RESET。GPS模塊GR-87簡介HOLUXGR-87是一個高效能、低耗電的智慧型衛星接收模組或稱做衛星接收引擎,他采用美國瑟孚SiRFstarIII公司所設計的第三代衛星定位接收晶片,是一個完整的衛星定位接收器具備全方位功能,能滿足專業定位的嚴格要求與個人消費需求。特色:.專業資料... .. ..采用SiRF第三代高效能晶片高靈敏度、低耗電量晶片STARIII,內建ARM7TDMICPU可符合客制需求。具備快速定位及追蹤20顆衛星的能力。體積超小,僅25.4×25×7公\u91d0。晶片內建200,000個衛星追蹤運算器,大幅提高搜尋及運算衛星訊號能力。內建RTCMSC-104DGPS和WASS/EGNOS解調器。低耗電量,具備有省電模式(Trickle-Power)功能,以及在設定的時間才啟動的定時定位(Push-to-Fix)功能。支援NMEA-0183v2.2版本規格輸出。GPSVCCVCC天線GR-87RXD1TXDAT89S52TXDRXDGNDGND圖3.4GPS模塊GR-87與單片機連接圖如圖3.4所示結構圖,GPS模塊只有4個端口與單片機連接,其中VCC、GND為供電部分,TXD、RXD為串行通信部分。由于GR-87屬于獨立模塊,所以在系統原理圖、PCB中未加入其封裝,而是采用從PCB中的單片機串行口以及VCC、GND分別引出4條線,采用引線的方式與GPS相連接。3.3. LCD顯示電路LCD1602簡介工業字符型液晶,能夠同時顯示16x02即32個字符。(16列2行)1602液晶也叫1602字符型液晶它是一種專門用來顯示字母、數字、符號等的點陣型液晶模塊它有若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符。每位之間有一個點距的間隔每行之間也有間隔起到了字符間距和行間距的作用,正因為如此所以他不能顯示圖形。其中RS為寄存器選擇端,高位時是數據寄存器,低位時是指令寄存器;RW時讀寫信號線,高位時是讀,低位時是寫;E為使能控制端。.專業資料... .. ..1602采用標準的16腳接口,其中:1腳:VSS為電源。2腳:VDD接5V電源正極3腳:V0為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度)。4腳:RS為寄存器選擇,高電平1時選擇數據寄存器、低電平0時選擇指令寄存器。5腳:RW為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。6腳:E(或EN)端為使能(enable)端。7~14腳:D0~D7為8位雙向數據端。15~16腳:空腳或背燈電源。15腳背光正極,16腳背光負極。LCD引腳連接介紹顯示電路如圖3.2右側所示,P0^0~P0^7經過上拉電阻10K*8歐姆與LCD的數據DB0~DB7相連;RS/RW/EN由單片機的P2^7~P2^5控制;對比度控制口VO經過測試后,經5K定值電阻與VCC相連剛好合適;背光燈控制BGVCC經51歐姆的電阻與VCC連接,BGGND連接地。這種接法缺陷是對比度不可調,但在穩定的5V供電的情況下,連接定置電阻經過測試也是行的通的。3.4. ISD語音電路ISD1730簡介ISD1700系列錄放芯片是一種高集成度,高性能的芯片。它可以多段錄音,采樣率可在4K至12K間調節,供電范圍可以在2.4V至5.5V之間。ISD1700系列錄放芯片可工作于獨立按鍵模式和SPI控制模式。芯片內有存儲管理系統來管理多段語音,這樣在獨立按鍵模式下也能進行多段語音錄放。此芯片內有振蕩器,可通過外部電阻來調節其振蕩頻率;還有帶自動增益控制(AGC)的話筒運放,模擬線路輸入,抗鋸齒濾波器,多級存儲陣列,平滑濾波器,音量控制,直接驅動喇叭的PWM輸出與接外部功放的電流/電壓輸出。ISD1700還有新錄音提示功能,當有新的錄音后,LED回每幾秒閃一次來提示用戶有新的錄音。此外還有4種音效來提示用戶的操作結果,如開始錄音、停止錄音、擦除、下一曲和全部擦除等。錄音數據存儲在芯片的FLASH內,沒有經過任何壓縮,所以有較好的音質和斷電存儲。芯片有兩路獨立的語音信號輸入通道,話筒輸入與模擬信號輸入。在獨立按鍵模式下,當某功能操作完成后芯片會自動進入掉電模式來降低功耗。在SPI模式下,用戶可對芯片進行更多功能操作。如對任意存儲地址進行錄放,對模擬通道配置寄存器(AnalogPathConfigurationregister,APC)進行讀寫等。.專業資料... .. ..如圖6所示,電阻R3會影響采樣率,采樣率與它的關系見下列表。采樣率 12KHz 8KHz 6.4KHz 5.3KHz 4KHzRosc 53KΩ 80KΩ 100KΩ 120KΩ 160KΩ表3.1采樣率與電阻關系圖3.5語音芯片ISD1730電路如圖3.5所示,圖3.5右側的MIC電路部分經過實踐測試,音質不好,所以棄用,因為所選芯片為ISD1730,內存足夠,所以改用找地址的電腦信號錄入方式進行錄音,具體的錄音地址見下文的系統調試部分;MISO、MOSI、SS與單片機的P2^2~P2^0連接;CLK與單片機的P2^4連接;ROSC與80K電阻連接后接地,采樣頻率為8KHZ;VOL與一個按鍵連接后接地,可調音量;AGC端口啟用,增益自動可調;SP-、SP+與喇叭直接相連,不用經過功率放大等,經過查找資料,本課題使用的,5歐姆、0.8w的喇叭可以被帶動,但是功率大一些的喇叭必須要經過功率放大電路才可以帶動;DP2為LED指示燈,在錄放音的時候會閃爍。3.5. LM7805穩壓電路.專業資料... .. ..圖3.6穩壓電路如圖7所示,其中Pd10為輸入口,Pd11為輸出口;LM7805輸出穩定在5V,輸入端要求為5V~18V或24V,本次測試中,采用2節鋰電池(型號18650),約7.4V輸入。其他部分參考LM7805的標準電路部分。.專業資料... .. ..軟件設計4.1. 程序流程圖開始液晶初始化單片機初始化中斷服務程序取得數據判斷GPRMC語句液晶顯示接收數據并存儲Y語音報中斷結束P11是否為0?地點圖4.2中斷程序流程圖NP12是否為0?Y語音報坐標N圖4.1主程序流程圖如圖4.2所示,在該系統中,接收GPS的是NAEA0183協議輸出的GPRMC語句,在中斷程序中判斷并且存儲相關數據,在如圖4.1所示,用函數提取出中斷中存儲的數據并且顯示完成相應的功能,具體步驟見下面的介紹。4.2.單片機串行通信串行端口模式1工作介紹在模式1時,串行端口經由TXD引腳負責發送及通過RXD引腳接收10位的數據,其.專業資料... .. ..中包括1個起始位、8個數據位和1個停止位。由于發送和接收是由不同引腳負責,故可同時進行發送和接收的動作。起始位(低電位)和停止位(高電位)是串行端口在發送數據時自動加上去的,當在接收狀態下,接收到的停止位會自動存入SCON寄存器的RB8位中,而發送及接收波特率可用軟件設定計時/計數器1,說明如下。①模式1的發送執行寫入SBUF指令后,產生一個WRITETOSBUF的脈沖,此時把數據送入SBUF,并激活TX控制方塊。在下一個機械周期時,SEND自動降為0,此時DATA己自動為0,故經由TXD引腳送出一個“0”的位,這就是所謂的起始位。然后數據位開始由TXD引腳依LSB-MSB順序向右移出,直到8位數據全部送出后,CPU會自動設定中斷標志TI=1,產生串行端口中斷請求,再自動經由TXD引腳送出一個“1”的位后,SEND升為高電位,DATA引腳為0,停止發送動作,此時TXD引腳維持高電位。②模式1的接收當要接收數據時,需將SCON寄存器的REN位設定為1,每當RXD引腳上檢測到負緣轉態信號后就會激活串行端口的接收動作。在接到正確的起始位后(低電位),開始依LSB-MSB順序接收數據位,直到SCON中的RI=0、SM2=0或RI=0接收到的停止位為l時,才自動把8位數據送入SBUF內。接著把停止位放入RB8中,然后設定接收中斷標志RI=l,產生串行端口中斷請求。經過-個位時間后,不論上述條件是否成立,RX控制方塊均會重新開始檢測RXD引腳有無負緣轉態信號,以準備接收下一批數據。模式1的波特率串行端口工作于模式1,其波特率將由計時/計數器1來產生,通常令計時/計數器1工作于模式2(自動再加載模式)。在此模式下,計算波特率的公式為:波特率=2SMOD*fosc/(32*12*(256-TH1))根據以上式子,帶入fosc=11.059MHz,TH1=FAH,可得波特率為4800bps4.3. GPS接收語句設計GPRMC輸入語句如下:$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh<CR><LF>GPRMC格式如下:幀頭標志符GPRMCGPS推薦的最短數據0>GPRMC1>UTC24小時制標準時間,格式為.hhmmss.sss#2>信號接收狀態:A為數據OK;V為警告3>緯度值,格式為.ddmm.mmmm.專業資料... .. ..4>表明南北半球,N為北半球,S為南半球5>經度值,格式為.dddmm.mmmm6>表明東西經,E為東經、W為西經7>速度,此處為08>方位角,范圍0.~359.9.9>日月年,格式為.日日/月月/年年#10>磁偏角:0.00.~180.。此處不輸出11>地磁變化方向:向西偏差為E或W。此處不輸出12>模式指示(僅NMEA01833.00版本輸出):A=自主定位,D=差分,E=估算,N=數據無效校驗和隔離符號13>校驗和CR><LF>幀尾結束符中斷程序中涉及GRPMC格式的拆分并且存儲,在此簡單介紹。voidT_R()interrupt4{while(RI==0);//RI==1表示接收好一幀數據if(SBUF=='$')//判斷數據起點{begin=1; //開始接收count_1=0;}if(begin==1) //開始接收GPRMC數據{if(SBUF==',')//‘,’為下一個數據的標志{count_1++;count_2=0;}elseif(SBUF=='*')//‘*’結束的標志{begin=0;count_1=0;count_2=0;}else{if(count_1==0){if(count_2<6)//接收到更長的數據時,會越界message[count_2++]=SBUF;//message[0]='$'.專業資料... .. ..}if((message[5]=='C')&&(message[4]=='M'))//判斷GPRMC格式{switch(count_1){case2:status[count_2++]=SBUF-48;break;//接收狀態case3:if(count_2<9)latitude[count_2++]=SBUF-48;break;//接收緯度case4:N_S[count_2++]=SBUF-48;break;//接受N或Scase5:if(count_2<10)longitude[count_2++]=SBUF-48;break;//接收經度case6:E_W[count_2++]=SBUF-48;break;//接收E或Wdefault:break;}}}}RI=0;//串口接收中斷標志必須軟件清零}unsignedcharcount_1=0;//數據類型累加變量unsignedcharcount_2=0;//數組下標累加變量設計思路:下面的將介紹完整的一個接收語句,判斷語句,拆分語句,存儲有關數據的過程。首先要接到一個語句的數據,如果一個語句的起點字符是“$”,將變量begin置1,并且將數據類型累加變量count_1置0;在count_1=0時,當接受的數據既不是結束位“*”,或者類型分隔位“,”時,將語句首的格式名稱存儲到message數組中,為了防止其它語句的干擾再次判斷接收語句是否為GPRMC格式,再次用message數組中的,5位,6位進行條件語句判斷,判斷為GPRMC后,再根據count_1的值進行相關數據存儲,每次的不同的GPS信息間都以“,”隔開,本次接收中只接收<2>信號接收狀態:A為數據OK;V為警告;<3>緯度值,格式為.ddmm.mmmm;<4>表明南北半球,為北半球,S為南半球;<5>經度值,格式為.ddmm.mmmm;<6>表明東西經,E為東經、W為西經的信息,例如接收經度值以及經度類型時(E或S),先CASE5,接收的經度格式為dddmm.mmmm共10位,根據數組下標累加變量count_2的值由09進行存儲,剛好將經度(包括小數點)存入longitude數組中,而后,再次進入中斷,按照上述過程在程序中判斷是否接到“,”符號,如果接到則將count_2置0,count_1加1,再次進行語句類型判斷時,到達了CASE6,將東經或西經存到E_W數組中,然后再次count_2置0,count_1加1進行下一條語句判斷。按此順序即可將經緯度信息以及值存到單片機的數組中。另外GPS傳入的格式數據是ASCII碼輸入,所以,每次存儲值時應該都減去48。.專業資料... .. ..4.4. LCD1602流程圖本次GPS定位系統中采用的液晶是1602,可以顯示8行漢字,每行可以顯示10個。對于該,液晶,必須要編寫液晶驅動程序。圖10為液晶的程序流程圖。1602通過D0~D7的8位數據端傳輸數據和指令。顯示模式設置:(初始化)00110000[0x38]設置16×2顯示,5×7點陣,8位數據接口;顯示開關及光標設置:(初始化)00001DCBD顯示(1有效)、C光標顯示(1有效)、B光標閃爍(1有效)000001NSN=1(讀或寫一個字符后地址指針加1&光標加1),N=0(讀或寫一個字符后地址指針減1&光標減1),S=1且N=1(當寫一個字符后,整屏顯示左移)s=0當寫一個字符后,整屏顯示不移動數據指針設置:數據首地址為80H,所以數據地址為80H+地址碼(0-27H,40-67H)其他設置:01H(顯示清屏,數據指針=0,所有顯示=0);02H(顯示回車,數據指針=0)。圖4.3液晶顯示流程圖該程序主要完成的是液晶的驅動(驅動中主要的是液晶的讀忙函數、讀寫數據函數、清屏函數、初始化函數)和系統開機的顯示,系統工作時的實時狀態的顯示,各個顯示界面的切換等。如下為液晶的初始化函數。voidTS1602_INIT(void){.專業資料... .. ..RS=0;RW=0;write_com(0x38);//顯示模式設置00111000設置16*2顯示5*7點陣8位數據接口write_com(0x0C);//設置液晶光標不顯示write_com(0x06);////顯示光標移動位置write_com(0x01);//清屏write_com(0x80);//光標的位置}4.5. ISD1730流程圖由于ISD1730只是放音作用,不涉及錄入等功能,所以流程圖只是放音部分。放數字音和放位置音的過程類似,所以都可以用一個流程圖表示。開始有無MISO信號?

NY在給定地址放音,傳輸回圖4.3語音芯片工作流程圖MOSI信號。結束放音的一段程序如下:ISD1730_Spio(0x00); //發送數據字節1ISD1730_Spio(caToneAdd1[n]); //發送數據字節2,放音起始地址低8位<S7:S0>ISD1730_Spio(0x00); //發送數據字節3,放音起邕地址高3位<S10:S8>,ISD1730不用ISD1730_Spio(caToneAdd1[n+1]);//發送數據字節4,放音結束地址低8位<E7:E0>ISD1730_Spio(0x00); //發送數據字節5,放音結束地址低8位<E10:E8>,ISD1730不用ISD1730_Spio(0x00); //發送數據字節6通過給定的存有每個需要讀出數據的地址的數組,其中每兩個為一個數據的讀音起始終止地址,在程序中選調初始地址,即可讀出相應地址的數據。.專業資料... .. ..系統調試5.1. 單片機下載口調試圖5.1下載口原理圖如圖5.1所示,下載器連接口,所用引腳為P1^5~P1^7,初步下載時,顯示“chiperror…..”內容,檢查引腳連接以及電平電壓,皆正常。最后檢測單片機是否起振,檢查原理圖以及PCB圖,將起振電容由22uf增大到30uf,同時縮小電容與晶振的距離。再次下載程序,顯示正常。所以,晶振,單片機,起振電容三者應距離在一定范圍內,越近越好。5.2. LCD1602調試圖5.2LCD1602原理圖如圖5.2所示,LCD1602引腳RS,RW,E由單片機控制,數據口DB0~DB7經上拉電阻連接單片機的P0口,背光電源BGVCC經小電阻連接5V,BGGND連接地。主電源VCC開始的設計時,經滑變接5V,上電后,發現液晶只有背光,后來改為主電源VCC直接與5V相連,工作正常。寫指令,數據時,開始判斷錯了地址行,認為第一行地址0X80~0X8f,第二行地.專業資料... .. ..0Xb0~0Xbf,經過測試,發現第二行的數據顯示有問題,上網查資料對比確認后,確定第二行地址有問題,改為0Xc0~0Xcf后顯示正常。所以,找資料應該找多家資料,找一份資料難免會出現紕漏。LCD1602主電源供電要供5V,沒必要接滑動變阻器,調節對比度引腳可以連接滑變。5.3. GPS定位坐標調試圖5.3GPS模塊GR-87實物圖如圖5.3所示,系統中采用的GPS芯片GR-87,臺灣HOLUX-GPS模組,另外有獨立天線。圖中接線顏色,按照自右向左順序為:紅、綠、藍、黑。圖中文字,紅線:電源-VCC;綠線:數據發送端-TXA;藍線:數據接收端-RXA;黑線:地線-GND。供電電壓3.5V~5.5V,其中可以將串行口與單片機的串行口直接相連。觀測點1正北觀測點2科技樓觀測點4圖5.4地點模擬圖觀測點3調試過程以科技樓為例,如圖5.4所示,科技樓方位正門朝向東南方,在1、2、.專業資料... .. ..3、4點分別測出經緯度,確定最大,最小,經緯度,然后程序中用判斷語句確定科技樓,然后返回一個常數標志。東經的計算east=longitude[0]*100+longitude[1]*10+longitude[2]+longitude[3]*0.1+longitude[4]*0.01+longitude[6]*0.001+longitude[7]*0.0001+longitude[8]*0.00001;北緯的計算north=latitude[0]*10+latitude[1]+latitude[2]*0.1+latitude[3]*0.01+latitude[5]*0.001+latitude[6]*0.0001+latitude[7]*0.00001;其中,longitude[],latitude[]數組中的數據來自中斷程序中的GR-87傳入的數據。傳入的經緯度格式如下:緯度值,格式為.ddmm.mmmm經度值,格式為.dddmm.mmmm其中,緯度dd為十位,個位,mm.mmmm分別為小數點后1~6位,同理可得經度的位判斷。判斷語句:if(east>=110.24825&&east<=110.24936) //科技樓{if(north>=25.19037&&north<=25.19167)return1;}在主程序中,利用包含以上判斷語句的函數,確定所在位置,隨后播音,或者其他操作。實際調試中,由于GR-87的靈敏度不高,導致測試同一地點的經緯度有小數點第5位的差別,所以選擇大范圍的定位科技樓,同樣,定位4、5、6教以及其它地方時也采用了同樣的方式。另外,有些地方,由于GR-87的靈敏度低,直接導致,移動中數據的停滯,在大多數地方,可以實時更新數據。為了減少不必要的測量誤差,應把測試范圍擴大,以便減小測試中的誤差。5.4. ISD1730語音錄入調試有兩種方式錄入:采用麥克風讀入方式采用電腦讀書軟件讀入方式。.專業資料.語音數據名稱0 1 2 3 4 5 6 7 8 9.. .. ..起始地址0x10x10x20x30x30x30x40x50x50x64c60696081終止地址0x10x1f0x20x30x30x40x40x50x60x6885849304由于個人的聲音質量差,以及雜音等種種問題,選擇了第二種方式讀入,它的缺點是,不好找到每個信息的地址,由于本系統的語音電路中不具備從電腦存入數據的能力,所以,將語音芯片拿下,從本班同學勞家權的語音系統中完成調試。調試過程如下:利用電腦中的讀書軟件讀入信息,其中包括,0、1、2、3、4、5、6、7、8、9、十、百、度、點、教、東經、北緯、科技樓、實訓樓等信息。錄入完成后,逐步尋找地址,按順序,利用播放函數中的起始結束地址的可變性,逐步從0x10~0xff中找到以上各個數字的地址,地址表如下:語音數據名稱十百度點教東經北緯科技樓實訓樓起始地址0x60x70x80xa0x70x90xa0xb20xc0995b471終止地址0x70x80x80xa0x70x90xa0xba0xc90表92語音e數據對7應地址b5尋址的播放函數如下:voidISD1730_SetPlay(charn){//SPI初始條件DISENISD1730_SS;ISD1730_SCLK_H;ISD1730_MOSI_L;ENISD1730_SS; //發送命令ISD1730_Spio(SET_PLAY); //發送命令字節ISD1730_Spio(0x00); //發送數據字節1ISD1730_Spio(caToneAdd1[n]); //發送數據字節2,放音起始地址低8位<S7:S0>ISD1730_Spio(0x00); //發送數據字節3,放音起邕地址高3位<S10:S8>ISD1730_Spio(caToneAdd1[n+1]);//發送數據字節4,放音結束地址低8位<E7:E0>ISD1730_Spio(0x00); //發送數據字節5,放音結束地址低8位<E10:E8>ISD1730_Spio(0x00); //發送數據字節6DISENISD1730_SS;}例如:將caToneAdd1[n]換為0x14,將caToneAdd1[n+1]換為0x18時,即可讀出.專業資料... .. ..的聲音,以后的信息也都同理讀出。在主函數以及語音函數的關聯調試過程中,需要延一定的時長,因為函數中的句子是按照順序以及同樣的時間間隔進行的,調試必須要加上延時,延時長了,聽起來不連貫,延時短了,會有信息丟失,所以,本次調試采用大范圍固定地址的方式進行的,另外,在尋址時應當保證數字的地址間距大致相同,以便延時是固定的,并且可以用于不同經緯度的讀出。語音主要是尋址,尋址后延時確定好即可。5.5. LM7805供電部分調試初步設計是用9V的常用電池作為電源供電輸出5V后供給系統使用,在初步調試過程中,發現,9V的電池接入系統中,僅僅可以供電3~5分鐘,而后缺乏電力導致液晶無法顯示,背光暗淡。因此,決定買鋰電池,所用的鋰電池型號18650。圖5.518650實物圖18650型鋰電池簡介:單節標稱電壓一般為:3.7V充電電壓一般為:4.20V最小放電終止電壓一般為:2.75V最大充電終止電壓:4.20V直徑:18±0.2mm高度:65±2.0mm容量:1000mAh以上(目前已知最高的是松下的3100mAh)調試中,采用兩節鋰電池,7.4V作為LM7805電路的輸入,由于LM7805的規定輸入為5V~18V,所以可以正常輸出,鋰電池的電量遠遠大于常用的9V電池,所以,經過幾次外出調試,可以非常好的給整個系統供電。GPS系統需要外出調試,經常背著筆記本很麻煩,所以要主動設計電源供電。.專業資料... .. ..謝辭從論文選題到搜集資料,從寫稿到反復修改,期間經歷了喜悅、聒噪、痛苦和彷徨,在寫作論文的過程中心情是如此復雜。如今,伴隨著這篇畢業論文的最終成稿,復雜的心情煙消云散,自己甚至還有一點成就感。那種感覺就宛如在一場盛大的頒獎晚會上,我在晚會現場看著其他人一個接著一個上臺領獎,自己卻始終未能被念到名字,經過了很長很長的時間后,終于有位嘉賓高喊我的大名,這時我忘記了先前漫長的無聊的等待時間,欣喜萬分地走向舞臺,然后迫不及待地開始抒發自己的心情,發表自己的感想。這篇畢業論文的就是我的舞臺,以下的言語便是有點成就感后在舞臺上發表的發自肺腑的誠摯謝意與感想:我要感謝,非常感謝我的導師蔣艷紅老師。她為人隨和熱情,治學嚴謹細心。在閑聊中她總是能像知心朋友一樣鼓勵你,在論文的寫作和措辭等方面她也總會以“專業標準”嚴格要求你,從選題、定題開始,一直到最后論文的反復修改、潤色,蔣老師始終認真負責地給予我深刻而細致地指導,幫助我開拓研究思路,精心點撥、熱忱鼓勵。正是蔣老師的無私幫助與熱忱鼓勵,我的畢業論文才能夠得以順利完成,謝謝蔣老師。我要感謝,感謝我的專業同學們,尤其是陳洪斌,勞家權,黃柏華,黃紹昇同學,在進行系統板制作,以及調試過程中,他們給了我非常大的幫助,在第一次做實驗板的過程中遇到了非常多的困難和問題,但在他們的幫助下一一化解了,所以在做第二塊正式的系統板的時候,綜合了他們的意見以及以前的問題,較為成功的做出了現在的這個板,感謝他們的幫助,如果沒有他們的悉心幫助,我不可能這樣較為順利地做出板。.專業資料... .. ..參考文獻張勇,姬志飛,聶萍等.基于單片機的GPS接收和顯示的設計[J].環球市場信息導報,2011,(9):1~3.董作民,姜木霖,陳曉青等.MCS一51單片機與GPS—OEM板數據通訊的研究與應用[J].湖北汽車工業學院學報,2009,14(3):1~5.李浩,邱超凡.基于GPS模塊與單片機的語音播報系統設計[J].電子產品世界,2011,18(11):1~4.黃少鋒,張尊泉,鄧斌等.基于單片機采集與顯示GPS定位信息系統的設計[J].空軍雷達學院學報,2007,21(1):1~3趙志禮,孟慶輝,張松濤等.基于單片機的GPS定位信息處理[J].電子測試,2009,(10):1~4徐愛鈞,彭秀華.KeilCx51V7.0單片機高級語言編程與μVision2應用實踐[M].北京:電子工業出版社,2004.白駒珩,雷曉平.物理學[M].單片計算機及其應用:高等教育出版社,電子科大出版社,1997:86~196.高朋等.電路設計與制版-protel入門與提高[M].北京:人民郵電出版社,2000.02.邱致和,王萬義.GPS原理與應用[M].北京:電子工業出版社,2001:3~8.ElliottD.Kaplan.UnderstandingGPSPrinciplesandApplications[M].北京:電子工業出版社,2002..專業資料... .. ..附錄附錄1-原理圖.專業資料... .. ..附錄2-PCB圖.專業資料... .. ..附錄3-程序及注釋/******************************************************************幀頭標志符GPRMCGPS推薦的最短數據0>GPRMC1>UTC24小時制標準時間,格式為.hhmmss.sss#2>信號接收狀態:A為數據OK;V為警告3>緯度值,格式為.ddmm.mmmm4>表明南北半球,N為北半球,S為南半球5>經度值,格式為.ddmm.mmmm6>表明東西經,E為東經、W為西經7>速度,此處為08>方位角,范圍0.~359.9.9>日月年,格式為.日日/月月/年年#10>磁偏角:0.00.~180.。此處不輸出11>地磁變化方向:向西偏差為E或W。此處不輸出12>模式指示(僅NMEA01833.00版本輸出):A=自主定位,D=差分,E=估算,N=數據無效校驗和隔離符號13>校驗和CR><LF>幀尾結束符*************只用到023456****************************************///isd1700命令碼#ifndef__SPI_H__#define__SPI_H__#include"reg52.h"http://--------------------------------------------------------------------------------//命令定義#definePU0x11//17xx上電#defineSTOP0x02//停止當前操作#defineRESET0x03//芯片復位#defineCLR_INT0x04//清除EOM標志和中斷信號#defineRD_STATUS0x05//返回狀態寄存器內容#defineRD_PLAY_PTR0x06//在1,2字節返回狀態寄存器信息,2,3字節返回放音指針#definePD0x17//芯片下電#defineRD_REC_PTR0x08//在1,2字節返回狀態寄存器信息,2,3字節返回錄音指針.專業資料... .. ..#defineDEVID0x09//讀取芯片ID號碼#definePLAY0x50//從當前地址放音#defineREC0x51//從當前地址錄音#defineERASE0x42//擦除當前語音段#defineG_ERASE0x53//擦除芯片所有語音#defineRD_APC0x44//返回狀態寄存器信息在1,2字節,APC寄存器信息在3字節#defineWR_APC10x45//將<D11:D0>寫入APC寄存器#defineWR_APC20x65//將<D11:D0>寫入APC寄存器,并由<D2:D0>位控制音量#defineWR_NVCFG0x46//將APC內容寫入NVCFG#defineLD_NVCFG0x47//將NVCFG內容寫入APC#defineFWD0x58//將放音指針指向下一段語音地址處#defineCHK_MEM0x49//檢查環狀存儲體系#defineEXTCLK0x4a//外部時鐘使能#defineSET_PLAY0x80//從起始地址<S10:S0>放音到結束地址<E10:E0>結束#defineSET_REC0x81//從起始地址<S10:S0>錄音到結束地址<E10:E0>結束#defineSET_ERASE0x82//從起始地址<S10:S0>擦除到結束地址<E10:E0>結束#defineucharunsignedchar#defineuintunsignedint#endif//--------------------------------------------------------------------------------//LCD1602地址表/*0X800X810X820X830X840X850X860X870X880X890X8A0X8B0X8C0X8D0X8E0X8F0XC00XC10XC20XC30XC40XC50XC60XC70XC80XC90XCA0XCB0XCC0XCD0XCE0XCF*/#include<reg52.h>#defineTS1602_DATAP0#defineENISD1730_SS ISD1730_SS=0#defineDISENISD1730_SS ISD1730_SS=1#defineISD1730_MISO_L ISD1730_MISO=0#defineISD1730_MISO_H ISD1730_MISO=1#defineISD1730_MOSI_L ISD1730_MOSI=0#defineISD1730_MOSI_H ISD1730_MOSI=1#defineISD1730_SCLK_L ISD1730_SCLK=0#defineISD1730_SCLK_H ISD1730_SCLK=1//SPI與MCU引腳連接sbitISD1730_MISOsbitISD1730_MOSIsbitISD1730_SCLKsbitISD1730_SS

P2^2;P2^1;P3^4;P2^0;//lcd與單片機引腳連接.專業資料... .. ..sbitRS=P2^7;//指令或數據sbitRW=P2^6;//讀或寫sbitE=P2^5;//使能端sbitP10=P1^0;//按鍵1號sbitP11=P1^1;//按鍵2號sbitP12=P1^2;//按鍵3號//unsignedchar--無符號字符型unsignedcharcodelcd_code[]="0123456789";unsignedcharcaToneAdd1[]={0x14,0x18,0x1c,0x1f,0x26,0x28,0x30,0x35,0x36,0x38,0x39,0x44,//0123450x46,0x49,0x50,0x53,0x58,0x60,0x61,0x64,0x69,0x70,0x74,0x77,//6789十教0x79,0x80,0x85,0x89,0x97,0x9b,0xa1,0xa5,0xab,0xae,0xb2,0xba,//百度東經北緯點科技樓0xc0,0xc9,0xcd,0xd4};//實訓樓校門口unsignedcharmessage[6];//存放“$GPRMC”unsignedcharstatus[1];//狀態A為數據OK;V為警告unsignedcharlatitude[9]={0};//緯度unsignedcharN_S[1];//N(北緯)或S(南緯)unsignedcharlongitude[10]={0};//經度unsignedcharE_W[1];//E(東經)或W(西經)unsignedcharcount_1=0;//數據類型累加變量unsignedcharcount_2=0;//數組下標累加變量bitbegin=0;//起始標志//--------------------------------------------------------------------------------//*****************************************************//函數功能:延時程序//使用說明:注意參數范圍//****************************************************voiddelay_500ms(unsignedchartime)//延時500us{unsignedchara,b,c;for(;time>0;time--)for(c=18;c>0;c--)for(b=152;b>0;b--)for(a=28;a>0;a--);}//isd1700相關函數聲明unsignedcharISD1730_Spio(unsignedchardat);voidISD1730_PU(void);voidISD1730_Set_Play(unsignedcharVOICE_NUM);unsignedcharSR0H;.專業資料... .. ..unsignedcharSR0L;unsignedcharSR1;unsignedcharSR2;//--------------------------------------------------------------------------------//isd1700函數/*--------------------------------------------------------------------------------名稱:ISD1730_Spio功能:ISD1730SPI驅動函數輸入:dat:要傳送到ISD1730的數據輸出:無返回:receive:接收的數據備注:無--------------------------------------------------------------------------------*/staticunsignedcharISD1730_Spio(unsignedchardat){unsignedchar i;unsignedchar recevice;ISD1730_SCLK_L; //先將SCLK清0for(i=0;i<8;i++) //將dat字節的8個位數據一一送到MOSI線上{if((dat&0x01)==0x01){ISD1730_MOSI_H;//數據位是1}else{ISD1730_MOSI_L;//數據位是0}dat>>=1;//要寫入的數據左移一位ISD1730_SCLK_H;//將要發送的數據位送到MOSI上后,置SCLK為1,上升沿時將當前MOSI上的數據傳到ISD1730recevice>>=1;if(ISD1730_MISO==1)//SPI接口的串行輸出。ISD1700在SCLK下降沿之前的半個周期將數據//放置在MISO端。數據在SCLK的下降沿時移出{recevice|=0x80;}ISD1730_SCLK_L;}returnrecevice;}/*--------------------------------------------------------------------------------名稱:ISD1730_PU功能:ISD1730上電操作-------------------------------------------------------------------------------*/staticvoidISD1730_PU(void).專業資料... .. ..{//--------------------------------------------------------------------------------//SPI初始條件DISENISD1730_SS;ISD1730_SCLK_H;ISD1730_MOSI_L;ENISD1730_SS;//--------------------------------------------------------------------------------//發送命令SR0L=ISD1730_Spio(PU); //發送命令字節SR0H=ISD1730_Spio(0x00);//發送數據字節1DISENISD1730_SS;delay10ms(2);}/*--------------------------------------------------------------------------------名稱:ISD1730_PD功能:ISD1730下電命令--------------------------------------------------------------------------------*/voidISD1730_PD(void){//SPI初始條件DISENISD1730_SS;ISD1730_SCLK_H;ISD1730_MOSI_L;ENISD1730_SS;//發送命令SR0L=ISD1730_Spio(PD); //發送命令字節SR0H=ISD1730_Spio(0x00); //發送數據字節1DISENISD1730_SS;//delay10ms(2);}voidISD1730_SetPlay(charn){//SPI初始條件DISENISD1730_SS;ISD1730_SCLK_H;ISD1730_MOSI_L;ENISD1730_SS; //發送命令ISD1730_Spio(SET_PLAY); //發送命令字節ISD1730_Spio(0x00); //發送數據字節1ISD1730_Spio(caToneAdd1[n]); //發送數據字節2,放音起始地址低8位<S7:S0>ISD1730_Spio(0x00);//發送數據字節3,放音起邕地址高3位<S10:S8>ISD1730_Spio(caToneAdd1[n+1]);//發送數據字節4,放音結束地址低8位<E7:E0>ISD1730_Spio(0x00); //發送數據字節5,放音結束地址低8位<E10:E8>,ISD1730不用.專業資料... .. ..ISD1730_Spio(0x00); //發送數據字節6DISENISD1730_SS;}/***************************************************//函數功能:isd1700播放函數*****************************************************/voidbofang(charn){ISD1730_PU();ISD1730_SetPlay(n);ISD1730_PD();}/***************************************************//函數功能:LCD1602驅動函數*****************************************************/voiddelay(unsignedintx){unsignedinti;for(;x>0;x--)for(i=0;i<4;i++);}//************************************************//函數功能:寫指令//使用說明:無//************************************************voidwrite_com(unsignedcharcom){RW=0;RS=0;TS1602_DATA=com;delay(1);E=1;delay(1);E=0;}//***************************************************//函數功能:寫數據//使用說明:無//****************************************************voidwrite_date(unsignedchardate){RW=0;RS=1;TS1602_DATA=date;delay(1);.專業資料... .. ..E=1;delay(1);E=0;}//***************************************************//函數功能:液晶初始化//使用說明:無//****************************************************voidTS1602_INIT(void){RS=0;RW=0;write_com(0x38);write_com(0x0C);//設置液晶光標不顯示write_com(0x06);write_com(0x01);//清屏write_com(0x80);//光標的位置}//函數功能:顯示一位數字voiddisplay_a_num(unsignedcharnum){write_date(lcd_code[num]);}//函數功能:顯示字符串voiddisplay_string(unsignedchar*P){while(*P){write_date(*P);P++;}}//================以上為LCD1602的驅動函數//****************************************************//函數功能:判斷地點//使用說明:返回值為地點代號//****************************************************unsignedcharget_place(void){floateast=longitude[0]*100+longitude[1]*10+longitude[2]+longitude[3]*0.1+longitude[4]*0.01+longitude[6]*0.001+longitude[7]*0.0001+longitude[8]*0.00001;float.專業資料... .. ..north=latitude[0]*10+latitude[1]+latitude[2]*0.1+latitude[3]*0.01+latitude[5]*0.001+latitude[6]*0.0001+latitude[7]*0.00001;//判斷地點if(east>=110.24825&&east<=110.24936)//科技樓{if(north>=25.19037&&north<=25.19167)return1;}if(east>=110.24943&&east<=110.25041)//實訓樓{if(north>=25.18703&&north<=25.18799)return2;}if(east>=110.24870&&east<=110.24880)//校門{if(north>=25.18440&&north<=25.18449)return3;}if(east>=110.24739&&east<=110.24774)//四教{if(north>=25.19019&&north<=25.19061)return4;}if(east>=110.24706&&east<=110.24751)//五教{if(north>=25.19000&&north<=25.19038)return5;}if(east>=110.24687&&east<=110.24740)//六教{if(north>=25.18980&&north<=25.19006)return6;}return0;}//****************************************************************//函數功能:LCD顯示//參數說明:參數為地點代號//****************************************************************voidLCD1602_display(unsignedcharplace){write_com(0x80); //設置液晶光標起始位置第一行起點write_date(N_S[0]+48); //顯示“N”或“S”write_date(':');display_a_num(latitude[0]); //顯示十位display_a_num(latitude[1]); //顯示個位.專業資料... .. ..write_date(latitude[4]+48); //顯示小數點display_a_num(latitude[2]); //顯示小數點后第一位display_a_num(latitude[3]);display_a_num(latitude[5]);display_a_num(latitude[6]);display_a_num(latitude[7]);write_com(0x8b);//設置液晶光標起始位置write_date(status[0]+48);//顯示'A'或‘V’write_com(0xc0);//0xa8 //設置光標位置第二行起點write_date(E_W[0]+48); //顯示“E”或“W”write_date(':');display_a_num(longitude[0]);//百位display_a_num(longitude[1]);//十位display_a_num(longitude[2]);//個位write_date(longitude[5]+48);//顯示小數點display_a_num(longitude[3]);//顯示小數點后第一位display_a_num(longitude[4]);display_a_num(longitude[6]);display_a_num(longitude[7]);display_a_num(longitude[8]);//*************顯示地點****************************switch(place){case1:{write_com(0xcc);display_string("KJL");}break;//顯示科技樓 0xb4case2:{write_com(0xcc);display_string("SXL");}break;//顯示實訓樓case3:{write_com(0xcc);display_string("XMK");}break;//顯示校門口case4:{write_com(0xcc);display_string("4J");}break;//顯示4教case5:{write_com(0xcc);display_string("5J");}break;//顯示5教case6:{write_com(0xcc);display_string("6J");}break;//顯示6教default:{write_com(0xcc);display_string("");}break;//顯示把顯示的地點清空}}//****************************************************//函數功能:播放經緯度//使用說明:參數無//****************************************************voidboyin_jwd(void){bofang(30); //播放“北緯”delay_500ms(5); //延時等待等待“北緯”讀完bofang(latitude[0]+latitude[0]); //播報北緯十位delay_500ms(3); //延時等待if(latitude[1]!=0) //如果十位為“0”則不念十位{ //判斷十位是否為0,為零則不用讀“十”.專業資料... .. ..bofang(20); //讀"十"delay_500ms(2);}bofang(latitude[1]+latitude[1]); //個位delay_500ms(4);bofang(32); //“點”delay_500ms(8);bofang(latitude[2]+latitude[2]); //小數點后第1位delay_500ms(5);bofang(latitude[3]+latitude[3]); //小數點后第2位delay_500ms(5);bofang(latitude[5]+latitude[5]); //小數點后第3位delay_500ms(5);bofang(latitude[6]+latitude[6]); //小數點后第4位delay_500ms(5);bofang(latitude[7]+latitude[7]); //小數點后第5位delay_500ms(5);bofang(26); //度delay_500ms(8);//******************************************

溫馨提示

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

評論

0/150

提交評論