畢業(yè)論文-基于ARM的洗衣機控制系統(tǒng)設計.doc_第1頁
畢業(yè)論文-基于ARM的洗衣機控制系統(tǒng)設計.doc_第2頁
畢業(yè)論文-基于ARM的洗衣機控制系統(tǒng)設計.doc_第3頁
畢業(yè)論文-基于ARM的洗衣機控制系統(tǒng)設計.doc_第4頁
畢業(yè)論文-基于ARM的洗衣機控制系統(tǒng)設計.doc_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

應用技術(shù)學院本 科 畢 業(yè) 論 文題 目:基于ARM的洗衣機控制系統(tǒng)設計 年 級: 專 業(yè): 班 號: 學 號: 學生姓名: 指導教師: 職 稱: 論文提交日期: 年 月 日目 錄摘 要2Abstract2前 言3第一章 總體設計41.1 系統(tǒng)概述41.2 系統(tǒng)設計4第二章 硬件模塊介紹52.1 主控芯片介紹52.2 Ublox GPS模塊62.2.2 GPS信息格式72.3 語音合成模塊82.4 串口觸摸屏82.4.1 串口屏基本概念82.4.2 串口屏原理92.5 按鍵電路9第三章 系統(tǒng)軟件設計103.1 主程序103.2 GPS數(shù)據(jù)解析程序113.3 串口觸摸屏驅(qū)動程序173.4 語音合成驅(qū)動程序183.5 按鍵程序20第四章 總結(jié)與展望22參考文獻23摘 要 隨著國民經(jīng)濟的不斷發(fā)展和城市人口的不斷增長,城市中的公交車日益凸顯出了其特有的優(yōu)勢:方便、快捷、價格低廉、運載量大、能耗低、低污染,因此公交車逐漸成為了廣大人民出行首選的交通工具。近些年來手動按鍵報站方式仍然是公交車上比較普遍采用的報站方式,但其報站不準確,并且報站時需要由駕駛員進行手動操作,這給行駛中的車輛帶來了一定的安全隱患?,F(xiàn)階段雖然國內(nèi)已經(jīng)有些大中城市的公交車上已經(jīng)采用了基于GPS定位系統(tǒng)的自動報站方式,但其昂貴的成本,目前難以實現(xiàn)普及。本設計主要目的是針對目前公交車常見報站方式的主要缺陷,探索設計出一種物美價廉的公交報站器。本文介紹一種基于GPS模塊和STM32單片機設計的自動語音報站系統(tǒng)。利用STM32F103C8T6串行口通信接收GPS模塊輸出的經(jīng)緯度信息,通過對比存儲經(jīng)、緯度數(shù)據(jù)和相應的站點名字。確認公交車是否進入設定站臺范圍內(nèi),以達到自動報站的目的;再設計的過程中給出硬件電路的設計方案、主要軟件流程圖、數(shù)據(jù)處理及其程序設計的方法。本設計解決了以住公交車報站系統(tǒng)人工操作不便、誤報站多、故障時不報站等問題。關(guān)鍵詞:公交語音報站、GPS、STM32、單片機 作 者:XXX 指導教師:YYYAbstractWith the continuous development of the national economy and the continuous growth of the city population, the city bus is increasingly protruding shows its unique advantages: convenient, fast, low cost, high carrying capacity, low energy consumption, low pollution, so the bus gradually become the majority of people travel the preferred means of transport. In recent years, the manual button station mode is still more commonly used in the bus station, but its newspaper station is not accurate, and the station is required to operate manually, which brings a certain security risks to the vehicle. Although there are already some large and medium cities in the domestic bus has been used based on the GPS positioning system to automatically stop way, but its expensive cost, is difficult to achieve universal. The main purpose of this design is to design a kind of cheap and good quality public transportation station, which is aimed at the main defects of the bus station.This paper introduces an automatic speech system based on GPS module and STM32 MCU. STM32F103C8T6 serial port communication to receive the output of the GPS module latitude and longitude information, through the comparison of storage, latitude data and the corresponding site name. Confirm whether the bus entered the platform to achieve the purpose of automatic reporting station. The design of hardware circuit, the main software flow chart, data processing and program design method are given in the process of design. This design solves the problem of the inconvenience of manual operation, the false alarm station and the station of the fault in the station system.Keywords: Public Transportation Voice Station, GPS, STM32, MicrocontrollersWritten by XXXSupervised by YYY 前 言 隨著國民經(jīng)濟的不斷發(fā)展和城市人口的不斷增長,城市中的公交車日益凸顯出了其特有的優(yōu)勢:方便、快捷、價格低廉、運載量大、能耗低、低污染,因此公交車逐漸成為了廣大人民出行首選的交通工具。近些年來手動按鍵報站方式仍然是公交車上比較普遍采用的報站方式,但其報站不準確,并且報站時需要由駕駛員進行手動操作,這給行駛中的車輛帶來了一定的安全隱患?,F(xiàn)階段雖然國內(nèi)已經(jīng)有些大中城市的公交車上已經(jīng)采用了基于GPS定位系統(tǒng)的自動報站方式,但其昂貴的成本,目前難以實現(xiàn)普及。本設計主要目的是針對目前公交車常見報站方式的主要缺陷,探索設計出一種物美價廉的公交報站器。GPS系統(tǒng)是由美國國防部開發(fā)的高精度衛(wèi)星導航系統(tǒng)。用戶可以通過用戶設備接收GPS衛(wèi)星信號,經(jīng)過對信號的處理從而獲得用戶位置、速度等多個信息,最終實現(xiàn)利用GPS進行導航和定位的目的。 2000年以前,民用GPS接收器的價格,實時定位精度不能滿足車載導航的需求。 2000年5月1日,美國政府發(fā)表的政府聲明,正式結(jié)束實行了10年之久的人為降低GPS精度的SA(SelectiveAvailability)政策,利用C/A碼進行單點定位的精度由100m提高到1020m,這有助于民用GPS接收機的快速發(fā)展。現(xiàn)在民用微型GPS接收機接收的實時價格和準確性已經(jīng)完全滿足車輛導航定位的需要,為本次公交車自動報站系統(tǒng)的設計提供了有利的條件。 GPS語音自動報站系統(tǒng),采用先進的衛(wèi)星定位技術(shù),徹底地改變了傳統(tǒng)公交車語音報站器必須由司機操控才能工作的落后方式,進站、出站自動播報站名及服務用語,準確、及時、完全不需要人工介入,是公交車語音報站器的一項技術(shù)革命,它將為公交車的管理人員和乘客帶來福音,實現(xiàn)了公交車報站器的完全智能化。第一章 總體設計1.1 系統(tǒng)概述 該系統(tǒng)采用了更先進的衛(wèi)星定位技術(shù)和語音合成技術(shù)相結(jié)合的辦法,以前公交車語音報站器必須有司機操控才能工作,現(xiàn)在本系統(tǒng)的實現(xiàn)改變了這一落后方式,可以實現(xiàn)進站、出站自動播報站名及服務用語,及時、準確、不需要人工介入,實現(xiàn)了公交車報站器的完全智能化。本裝置主要特點為:(1利用GPS衛(wèi)星定位技術(shù),可以自動地、準確地播報當前所到達的站名、服務用語以及廣告等等。(2)能夠與顯示屏直接連接,同步顯示報站信息、當前經(jīng)緯度位置以及速度等。(3)可存儲多條線路,方便公交車臨時更換運營線路。GPS總線自動站系統(tǒng)包括兩部分硬件和軟件兩者。硬件是以STM32F013處理器核心,必要的外圍配置存儲器, I / O設備,通訊模塊;軟件則是以嵌入式軟件為核心,以提供應用程序編程接口( API ),能夠向下屏蔽具體的硬件板級支持包BSP 。嵌入式系統(tǒng)中,軟件和與協(xié)調(diào)工作的硬件緊密配合,完成系統(tǒng)預定的功能。1.2 系統(tǒng)設計本文提出的較為先進的公交車自動報站系統(tǒng)的基本原理如下圖所示。通過GPS模塊接收GPS工作衛(wèi)星的導航信息,通過對接收到的數(shù)據(jù)分析從而計算出車輛目前的經(jīng)緯度位置、速度等信息;根據(jù)GPS定位數(shù)據(jù)計算出公交車的實時坐標,將其與站點坐標相比較,當公交車駛?cè)胝军c一定距離范圍內(nèi)時,不用進行人工的干預,系統(tǒng)可以自動為乘客報站。將位置信息與數(shù)據(jù)庫中電子矢量地圖進行匹配,根據(jù)公交車位置的不同,顯示屏上顯示不同的站點信息等。在離站、到站閾值范圍內(nèi)語音提示的同時,在顯示屏上顯示同類信息,也可通過按鍵設置播報音量的大小。其硬件模塊可分為電源、主控芯片、語音合成模塊、按鍵模塊、GPS模塊和串口觸摸屏模塊,如下圖所示。第二章 硬件模塊介紹2.1 主控芯片介紹核心處理器STM32F103C8T6是一款由ST公司設計的低功耗、高度集成的32位RISC處理器,它采用64 腳LQFP 封裝,為手持設備和一般類型應用提供了低價格、低功耗、高性能小型微控制器的解決方案。STM32F103C8T6的顯著特性是其CPU核心為一個32位的CORTEX-M3處理器。通過提供一系列完整的系統(tǒng)外圍設備,STM32F103C8T6可大大減少整個系統(tǒng)的成本,不需要為系統(tǒng)配置額外器件。該STM32F103xx中等密度的高性能線系列結(jié)合了高性能在72 MHz的頻率,高速ARMCortex-M3 32位RISC內(nèi)核工作嵌入式存儲器(閃存高達128 KB的SRAM和高達20千字節(jié))和增強的I / O和外圍設備的廣泛連接到兩個APB總線。所有器件提供了兩個12位的ADC,三個通用16位定時器加一PWM定時器,如以及標準和先進的通信接口:多達兩個個I2C和SPI,三USART接口,一個USB和一個CAN。該器件采用2.0至3.6 V電源供電。它們是在兩個-40到可用+ 85C的溫度范圍和-40至+105C擴展級溫度范圍。一個全面的省電模式,可以讓低功耗應用的設計。該STM32F103xx中等密度的高性能線系列產(chǎn)品包括六種不同的設備封裝類型:從36針到100針。根據(jù)選擇的設備上,不同組的外圍設備包括,下面的描述給出的完整范圍的概述在這個家庭提出的外設。這些特點使得STM32F103xx中等密度的高性能微控制器線家庭適用于廣泛的應用范圍,如電機驅(qū)動器,應用控制,醫(yī)療和手持設備,PC和游戲外設,GPS平臺,工業(yè)應用的PLC,變頻器,打印機,掃描儀,報警系統(tǒng),視頻對講,和HVACs。最小系統(tǒng)原理圖如下所示:其中PA9和PA10引腳連接GPS的RX和TX端,單片機通過TX引腳給GPS發(fā)送指令,GPS模塊由RX引腳反饋數(shù)據(jù)給單片機,單片機通過串口中斷的方式接收。PA2和PA3引腳分別連接SY6288語音模塊的RX和TX端,也同樣單片機由TX端發(fā)送指令給語音合成模塊從而完成語音播報的控制,RX端則負責處理反饋的數(shù)據(jù)。另外,還有PA4和PA5兩個引腳連接了兩個按鍵,代表音量的增高和降低,通過外部中斷的方式觸發(fā)并處理數(shù)據(jù),以達到音量的控制。2.2 Ublox GPS模塊 Ublox公司通過使用其他廠商的GPS芯片設計生產(chǎn)GPS模塊的方式打入GPS行業(yè),主攻車載GPS市場。小有成就之后,開始涉足芯片設計。此后和Atmel公司合作,U- blox公司提供GPS接收算法,Atmel則負責芯片的設計生產(chǎn)。這次合作使得U- blox成功轉(zhuǎn)型為GPS芯片供應商,并采用自己的芯片繼續(xù)生產(chǎn)GPS模塊,在歐洲車載GPS市場獲得巨大成功。當時的Atmel也非??春肬- blox,并考慮過收購U- blox,但當時由于價錢沒談攏,沒有成功。轉(zhuǎn)眼間U- blox已經(jīng)成了一個壯漢,顯然不再甘心芯片設計生產(chǎn)再受Atmel約制,開始自己設計芯片,2006成功推出U- blox5系列芯片組,前瞻性地具備兼容美國GPS衛(wèi)星系統(tǒng)和歐盟伽利略衛(wèi)星系統(tǒng)引擎,數(shù)據(jù)刷新頻率可小于1秒,50毫瓦的超低功耗和高達-160 dBm的SuperSense跟蹤靈敏度等領(lǐng)先性能而終成霸業(yè)。在公司成立10年后的2007年成功在瑞士證券交易所上市。如今,U- blox在GPS行業(yè)如同一個標桿,是歐洲汽車GPS導航委員會及伽利略委員會委員,參與制定歐洲汽車GPS導航專業(yè)標準制定及修正。2.2.1 硬件結(jié)構(gòu) 模塊由兩個功能部分組成:射頻(RF)和基帶(Baseband)部分。RF前端包括輸入匹配元件、SAW(聲表面波)帶通濾波器、u-blox 6 RF-IC(帶集成的LNA)和頻率源?;鶐Р糠?,包括u-blox 6基帶處理器、RTC晶體振蕩器和附加的元件如:用于擴展編程和靈活性的可選FLASH內(nèi)存。其詳細結(jié)構(gòu)如下圖所示: VCC:主電源 主電源接到VCC腳。在運行期間,u-blox 6 GPS模塊的消耗的電流變化非常大,特別是節(jié)電模式的時候。系統(tǒng)電源應該能提供短時的峰值電流。當從備份模式切換到正常模式或者啟動時u-blox6模塊先給內(nèi)核域的內(nèi)部電容充電,這時會產(chǎn)生一個很大的電流,對于低功耗的應用,使用節(jié)電或備份模式,電源或在模塊輸入的低ESR電容擔負著這個充電電流。V_BCKP:備份電源 在VCC失去的時候,實時時鐘和備份RAM的供電通過V_BCKP腳。這個備份電源使得u_blox6接收器能夠以若啟動或溫啟動方式(取決于VCC掉電的時間長度)從掉電中恢復過來, 可以保持配置信息存儲在備份RAM中不丟失。如果無備份電池連接,接收器上電的時候會執(zhí)行冷啟動。u-blox 6具有UART接口(RxD1/TxD1),支持波特率4.8到115.2kBit/s,但注意這個信號輸入輸出電平是0V到VCC范圍,而不是標準的RS232接口電平,所以需要有電平轉(zhuǎn)換IC,如MAX3232。不支持硬件握手信號和同步操作。更多的信息見LEA-6/NEO-6/MAX-6的數(shù)據(jù)手冊。2.2.2 GPS信息格式通常GPS模塊支持兩種格式:二進制消息格式和NMEA-0183 ASCII消息格式。前者的通信協(xié)議為 9600b/s、無校驗、8位數(shù)據(jù)位、1位停止位;后者的通信協(xié)議為4800b/s、無校驗、8位數(shù)據(jù)位、1位停止位。由于NMEA-0183 ASCII格式直觀、易于識別及應用,因此本設備采用ASCII格式。 系統(tǒng)接收到的GPS數(shù)據(jù)主要由幀頭、幀尾和幀內(nèi)數(shù)據(jù)組成。根據(jù)數(shù)據(jù)幀的不同,幀頭也不相同,主要有GPGGA、GPGSA、GPGSV以及GPRMC等。這里選用推薦的GPRMC。各類數(shù)據(jù)幀分別包含了不同的信息,在此列舉出GPRMC的各項含義: GPRMC,*hh 當前位置的格林威治時間,格式為hhmmss。 狀態(tài),A為有效位置,V為非有效接收警告,即當前天線視野上方的衛(wèi)星個數(shù)少于顆。 緯度,格式為ddmm.mmmm。 標明南北半球,N為北半球、S為南半球。 徑度,格式為dddmmmmmm。 標明東西半球,E為東半球、W為西半球。 地面上的速度,范圍為000.0節(jié)999.9節(jié)(1節(jié)=1.852km/h)。 方位角,范圍為000.0度359.9度。 日期,格式為ddmmyy。 地磁變化,從000.0度180.0度。 地磁變化方向,為E或W。 由于幀頭由逗號分隔的,所以當處理高速緩存的數(shù)據(jù)每個數(shù)據(jù)段幀是通常通過搜索ASCII碼“$” ,以確定是否首部。之后的類別進行標識的頭,然后經(jīng)通過計算逗號正在處理判斷目前的數(shù)字是什么樣的導航參數(shù),并進行相應的處理。 2.3 語音合成模塊語音合成傳輸電路主要由SYN6288模塊和揚聲器組成。其中SYN6288負責實現(xiàn)文本到語音的轉(zhuǎn)換(TTS),揚聲器負責發(fā)出聲音提示。SYN6288是北京宇音天下科技有限公司于2010年初推出的采用PSOLA拼接合成技術(shù)的一款語音合成芯片。SYN6288通過異步串口(UART)通信方式,接收待合成的文本數(shù)據(jù),實現(xiàn)文本到語音(或TTS語音)的轉(zhuǎn)換,可直接通過PWM輸出方式驅(qū)動揚聲器或外接功率放大電路驅(qū)動揚聲器,進行語音輸出,并可以通過讀取BUSY管腳的電平獲取芯片當前的狀態(tài)。該芯片支持GB2312等格式的文本,支持標點符號、漢字、數(shù)字、英文字母及特殊字符處理,可正確識別數(shù)值、號碼、時間日期及常用的度量衡符號,具備很強的多音字處理和中文姓氏處理能力。SYN6288 通過異步串口接收待合成的文本,實現(xiàn)文本到聲音( TTS )的轉(zhuǎn)換。功能特點: 支持 GB2312 、 GBK 、 BIG5 和 UNICODE 內(nèi)碼格式的文本; 清晰、自然、準確的中文語音合成效果;可合成任意的中文文本,支持英文字母的合成; 具有智能的文本分析處理算法,可正確識別數(shù)值、號碼、時間日期及常用的度量衡符號; 具備很強的多音字處理和中文姓氏處理能力; 支持多種文本控制標記,提升文本處理的正確率; 每次合成的文本量最多可達 200 字節(jié); 支持多種控制命令,包括:合成、停止、暫停合成、繼續(xù)合成、改變波特率等; 支持休眠功能,在休眠狀態(tài)下可降低功耗;支持多種方式查詢芯片工作狀態(tài); 支持串行數(shù)據(jù)通訊接口,支持三種通訊波特率: 9600bps , 19200bps 、 38400bps ; 支持 16 級音量調(diào)整;播放文本的前景音量和播放背景音樂的背景音量可分開控制; 可通過發(fā)送控制標記調(diào)節(jié)詞語語速,支持 6 級詞語語速調(diào)整; 芯片內(nèi)固化有多首和弦音樂、提示音效和針對某些行業(yè)領(lǐng)域的常見語音提示音; 內(nèi)部集成 19 首聲音提示音, 23 首和弦提示音, 15 首背景音樂; 最終產(chǎn)品提供 SSOP 貼片封裝形式;體積業(yè)內(nèi)最小; 芯片各項指標均滿足室外嚴酷環(huán)境下的應用;2.4 串口觸摸屏2.4.1 串口屏基本概念 串口是單片機中最普遍的一種接口,幾乎99%的單片機系統(tǒng)都支持串口,串口開發(fā)在單片機開發(fā)中成為一種基礎中的基礎,具有廣泛的用戶基礎和資料普及度;而另一方面,TFT彩色液晶屏的控制顯示卻復雜的多,不僅每家甚至每種屏接口都不一致,且還需要自己處理漢字點陣以及圖形點陣,您看到的彩色界面實際上是一個點一個點繪制出來的,需要高檔的單片機才能做到,且實現(xiàn)是非常復雜的;常言道,把復雜的事情變簡單就是價值,串口屏正遵循了這個原則,您只需要通過串口發(fā)送一個命令字符串,比如CLS(1); 就可以將屏幕清成紅色;同樣發(fā)送其他的命令就可以完成漢字以及圖片的顯示。2.4.2 串口屏原理 串口屏是由液晶屏+單片機+存儲器三部分構(gòu)成的,由計算機將圖片和漢字點陣通過GpuMaker程序預先存儲到串口屏的存儲器中,然后由單片機通過串口發(fā)送指令調(diào)用顯示就可以,單片機部分的編程就會變得異常簡單;2.5 按鍵電路 此次設計需要兩個按鍵來控制語音播報的音量,采用高電平觸發(fā)外部中斷的方式,由STM32F103C8T6的PA4和PA5管腳控制,其電路設計如下圖所示。第三章 系統(tǒng)軟件設計3.1 主程序 系統(tǒng)的軟件流程下圖所示。上電后,首先完成系統(tǒng)初始化,然后創(chuàng)建GPS信號檢測任務,并進入此任務執(zhí)行GPS信號檢測及解析,同時監(jiān)測是否有GPS報站中斷產(chǎn)生。若有中斷產(chǎn)生,則啟動更新GPS數(shù)據(jù)在顯示屏上顯示并且播放器播報站名;若沒有,則檢測是否有觸摸屏中斷產(chǎn)生。若有中斷,則進入人機交互界面;否則繼續(xù)檢測GPS數(shù)據(jù)是否到達站點,同時檢測、解析GPS信號以及按鍵中斷信號。3.2 GPS數(shù)據(jù)解析程序現(xiàn)在GPS的應用越來越廣泛,已不僅僅應用于導航系統(tǒng)了。很多項目中,都用到了GPS。比如車載防盜系統(tǒng)。公交調(diào)度系統(tǒng),自動氣象儀等等。這里,我大致談一下GPS數(shù)據(jù)的提取方法。GPS數(shù)據(jù)都是一條條的ASCII字符串。每個字符串的開頭都是以$開頭。以累加和校驗(*后的兩個字符)以及回車換行結(jié)束。$后跟的標識表示當前的字符的種類。如GPRMC,GPGGA等。每種字符串內(nèi)所包含的數(shù)據(jù)以,分開。每種字符串所包含數(shù)據(jù)的格式,在GPS的手冊中都有詳細說明,這里不多說,主要是說一下,各種字符串的主要用處。$GPRMC,最常用的字符串,包含了時間,日期,定位,和航速航向信息。一般應用,只要有這些信息就可以了。$GPGGA,包含了定位信息相關(guān)的詳細信息。如定位時用到的星數(shù),定位的方式,天線的海拔高度,精度等等。$GPGSA,包含了定位,水平,海拔三種DOP信息,即精度信息,包含了定位所用到的衛(wèi)星ID。$GPGSV,包含了GPS模塊可以看到的星數(shù)(注意,只是能看到的星數(shù),實際使用到的星數(shù)在GPGGA中),以及這些衛(wèi)星的ID號,仰角,方位角,信噪比。關(guān)于這種字符串要特別說明的是,它可能會由幾條GPGSV字符串組成,因此,每個字符串都包含了共幾條字符串,本字串是第幾條這樣的信息。一般的GPS最多是三條。也有的GPS模塊會超過3條。$GPVTG,包含了更詳細的航向航速的信息,航向信息分為以真北為參考和以地磁北為參考(真北和地磁北是不一樣的,兩者相差幾度),航速信息則給出了以節(jié)為單位和以公里/時為單位的數(shù)據(jù)。以上信息,一般GPS模塊都會默認輸出,也有的模塊只輸出其中幾個。在C語言中提供了相關(guān)的字符串處理的一些功能,所以你要呈現(xiàn)在這些字符串,只要您可以使用這些功能中的數(shù)據(jù)?;镜姆椒ㄊ鞘褂胹trchr函數(shù),字符串被間隔開以讀取的atoi函數(shù)的整數(shù)值與sscanf函數(shù)來讀取浮點數(shù)。在微控制器,因為處理效率低浮動,考慮拆分成兩個整數(shù)浮動,數(shù)字的小數(shù)部分和整數(shù)部分的數(shù)目。特別值得注意的是,通過串口讀取GPS字符串時,通常是非??煽康?,但在實踐中,有時似乎是錯誤或不完整的讀取,因此,讀取GPS字符串是最好的積累和驗證,該方法是除“$”的“*”以前的數(shù)據(jù)后,計算累計總和,其結(jié)果與“*”被包括在累積和比較后。他們一致認為,檢查通過。在這里,給我出使用的算法。#include gps.h#include stdlib.h#include string.h#include usart.h#include syn6288.hchar GPS_BUF50;char InputBuffer50;u8 rev_start = 0;GPS_INFO GPS_DATA;Site_Typedef Site1,Site2,Site3;u8 cnt=0;u8 Judge_Arrive(void)if(Site1.latitude_Min GPS_DATA.latitude_Degree & GPS_DATA.latitude_Degree Site1.latitude_Max)& (Site1.longitude_Min GPS_DATA.longitude_Degree & GPS_DATA.longitude_Degree Site1.longitude_Max)return 1;if(Site2.latitude_Min GPS_DATA.latitude_Degree & GPS_DATA.latitude_Degree Site2.latitude_Max)& (Site2.longitude_Min GPS_DATA.longitude_Degree & GPS_DATA.longitude_Degree Site2.longitude_Max)return 2;if(Site3.latitude_Min GPS_DATA.latitude_Degree & GPS_DATA.latitude_Degree Site3.latitude_Max)& (Site3.longitude_Min GPS_DATA.longitude_Degree & GPS_DATA.longitude_Degree Site3.longitude_Max)return 3;return 0;void Print_Data(void)GpuSend(CLS(1);rn);sprintf(InputBuffer,DS16(80,4,GPS數(shù)據(jù),15);rn);GpuSend(InputBuffer);sprintf(InputBuffer,DS16(5,24,日期:,15);rn);GpuSend(InputBuffer);sprintf(InputBuffer,DS16(5,44,UTC時間:,15);rn);GpuSend(InputBuffer);sprintf(InputBuffer,DS16(5,64,經(jīng)度:%d%d%d ,15);rn,GPS_DATA.latitude_Degree,GPS_DATA.latitude_Cent,GPS_DATA.latitude_Second);GpuSend(InputBuffer);sprintf(InputBuffer,DS16(5,84,緯度:%d%d%d ,15);rn,GPS_DATA.longitude_Degree,GPS_DATA.longitude_Cent,GPS_DATA.longitude_Second);GpuSend(InputBuffer);sprintf(InputBuffer,DS16(5,104,速度:%f,15);rn,GPS_DATA.speed);GpuSend(InputBuffer);sprintf(InputBuffer,DS16(5,124,到達站點情況,15);rn);GpuSend(InputBuffer);switch(Judge_Arrive()case 1:sprintf(InputBuffer,DS16(5,144,到達站點一,15);rn);GpuSend(InputBuffer);sprintf(InputBuffer,v%d到達站點一,vol_level);syn6288_SpeakStr(InputBuffer,0);break;case 2:sprintf(InputBuffer,DS16(5,144,到達站點二,15);rn);GpuSend(InputBuffer);sprintf(InputBuffer,v%d到達站點二,vol_level);syn6288_SpeakStr(InputBuffer,0);break;case 3:sprintf(InputBuffer,DS16(5,144,到達站點三,15);rn);GpuSend(InputBuffer);sprintf(InputBuffer,v%d到達站點三,vol_level);syn6288_SpeakStr(InputBuffer,0);break;default:sprintf(InputBuffer,DS16(5,144,未到達,15);rn);GpuSend(InputBuffer); break;int GetComma(int num,char *str) int i,j=0; int len=strlen(str); for(i=0;ilen;i+) if(stri=,) j+; if(j=num) return i+1; return 0;/將獲取文本信息轉(zhuǎn)換為double型double Get_Double_Number(char *s) char buf128; int i; double rev; i=GetComma(1,s); strncpy(buf,s,i); bufi=0; rev=atof(buf); return rev;/將獲取文本信息轉(zhuǎn)換為float型float Get_Float_Number(char *s) char buf128; int i; float rev; i=GetComma(1,s); strncpy(buf,s,i); bufi=0; rev=atof(buf); return rev;int GPS_RMC_Parse(char *line) u8 ch, status, tmp; float lati_cent_tmp, lati_second_tmp; float long_cent_tmp, long_second_tmp; float speed_tmp; char *buf = line; ch = buf5; status = bufGetComma(2, buf); if (ch = C) /如果第五個字符是C,($GPRMC) if (status = A) /如果數(shù)據(jù)有效,則分析 GPS_DATA.NS = bufGetComma(4, buf); GPS_DATA.EW = bufGetComma(6, buf); GPS_DATA.latitude = Get_Double_Number(&bufGetComma(3, buf); GPS_DATA.longitude = Get_Double_Number(&bufGetComma(5, buf); GPS_DATA.latitude_Degree = (int)GPS_DATA.latitude / 100; /分離緯度 lati_cent_tmp = (GPS_DATA.latitude - GPS_DATA.latitude_Degree * 100); GPS_DATA.latitude_Cent = (int)lati_cent_tmp; lati_second_tmp = (lati_cent_tmp - GPS_DATA.latitude_Cent) * 60; GPS_DATA.latitude_Second = (int)lati_second_tmp; GPS_DATA.longitude_Degree = (int)GPS_DATA.longitude / 100; /分離經(jīng)度 long_cent_tmp = (GPS_DATA.longitude - GPS_DATA.longitude_Degree * 100); GPS_DATA.longitude_Cent = (int)long_cent_tmp; long_second_tmp = (long_cent_tmp - GPS_DATA.longitude_Cent) * 60; GPS_DATA.longitude_Second = (int)long_second_tmp; speed_tmp = Get_Float_Number(&bufGetComma(7, buf); /速度(單位:海里/時) GPS_DATA.speed = speed_tmp * 1.85; /1海里=1.85公里 GPS_DATA.direction = Get_Float_Number(&bufGetComma(8, buf); /角度 GPS_DATA.D.hour = (buf7 - 0) * 10 + (buf8 - 0); /時間 GPS_DATA.D.minute = (buf9 - 0) * 10 + (buf10 - 0); GPS_DATA.D.second = (buf11 - 0) * 10 + (buf12 - 0); tmp = GetComma(9, buf); GPS_DATA.D.day = (buftmp + 0 - 0) * 10 + (buftmp + 1 - 0); /日期 GPS_DATA.D.month = (buftmp + 2 - 0) * 10 + (buftmp + 3 - 0); GPS_DATA.D.year = (buftmp + 4 - 0) * 10 + (buftmp + 5 - 0) + 2000; /UTC2BTC(&GPS_DATA.D); Print_Data(); return 1; return 0;void USART1_IRQHandler(void)u8 rev;if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)USART_ClearITPendingBit(USART1,USART_IT_RXNE);rev=USART_ReceiveData(USART1);if(rev=$)cnt=0;/USART_SendData(USART1, (unsigned char) rev);rev_start=1;if(rev_start)if(rev!=n)GPS_BUFcnt+=rev;elserev_start=0;GPS_BUFcnt=0;GPS_RMC_Parse(GPS_BUF);3.3 串口觸摸屏驅(qū)動程序接單片機的電路非常簡單,+5V和GND不用說直接接電源,串口屏的RX接單片機的TX端,串口屏的TX接單片劫RX端;TTL電平是05V的電平,因此TTL串口不存在5V和3.3V單片機電平轉(zhuǎn)換的問題,可以直接接入使用;但不可直接與RS232的串口接入,因為RS232的串口電平標準是12V以上,直接接入會燒掉GPU上的單片機。函數(shù)GpuSend中循環(huán),將*buf對應的字符串循環(huán)將每個字符都發(fā)送到串口中,一直到這個字符串結(jié)束。然后由單片機通過串口發(fā)送指令調(diào)用顯示就可以,單片機部分的編程就會變得異常簡單。void GpuSend(char * buf) u8 i=0; while (1) if (bufi!=0) USART_SendData(USART1, bufi); while(USART_GetFlagStatus(USART1, USART_FLAG_TC) = RESET); i+; else return; 3.4 語音合成驅(qū)動程序上位機以命令幀的格式向SYN628-A模塊發(fā)送命令。SYN6288-A模塊根據(jù)命令幀進行相應操作,并向上位機返回命令操作結(jié)果。接收到控制命令幀,芯片會向上位機發(fā)送1個字節(jié)的狀態(tài)回傳,上位機可根據(jù)這個回傳來判斷芯片目前的工作狀態(tài)。SYN6288-A模塊在初始化成功時會發(fā)送一個字節(jié)的“初始化成功”回傳。SYN6288-A模塊收到命令幀后會判斷此命令幀正確與否,如果命令幀正確返回“接收成功”回傳,如果命令幀錯誤則返回“接收失敗”回傳。SYN6288-A模塊收到狀態(tài)查詢命令時,如果芯片正處于播音的工作狀態(tài)則返回“正在播音”回傳,如果芯片處于空閑狀態(tài)則返回“芯片空閑”回傳。在一幀數(shù)據(jù)合成完畢后,芯片會自動返回一次“芯片空閑”的回傳。其具體程序如下所示:#include syn6288.h#include usart.hchar syn_state=0;void syn_Delaynms(unsigned char n);u8 vol_level=10;/0-16void syn6288_Init()USART2_Init();void syn6288_SpeakStr(char *text,char MusicID)/MusicID為需要播放的背景音樂變化,0不播放 char FrameHead5; int cnt=0; char length=0; char check=0; length=strlen(text); FrameHead0=0xfd; FrameHead1=0x00; FrameHead2=length+3; FrameHead3=01; FrameHead4=00+(MusicID3);/GB2312 for(cnt=0;cnt5;cnt+) check=check(FrameHeadcnt); syn6288_SendByte(FrameHeadcnt); for(cnt=0;cntlength;cnt+) check=che

溫馨提示

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

評論

0/150

提交評論