摘要 隨著汽車擁有量的逐年增加,道路擁擠和交通事故頻頻發(fā)生,這不僅給人們出行帶來(lái)極大不便,而且還涉及到能源浪費(fèi)、環(huán)境污染、人民生命安全等多方面問(wèn)題。如何加強(qiáng)對(duì)車輛的管理,規(guī)范駕駛員的駕駛行為,減少交通事故的發(fā)生,營(yíng)造一個(gè)和諧、通暢的行車環(huán)境己成為交通運(yùn)輸和安全管理部門面臨的一個(gè)重要問(wèn)題。
本課題的主要內(nèi)容是:利用GPS接收機(jī)、微控制器、存儲(chǔ)設(shè)備等設(shè)計(jì)了一個(gè)具有定位功能的車輛行駛信息記錄系統(tǒng)。車輛行駛信息記錄系統(tǒng)主要由1片MSP430F149型號(hào)的單片機(jī)組成的控制電路、GPS接收模塊組成的信息接收電路、SD卡讀寫(xiě)模塊電路組成。GPS接收模塊接收GPS實(shí)時(shí)數(shù)據(jù),經(jīng)過(guò)MSP430單片機(jī)解析,提取出所需要的時(shí)間以及經(jīng)緯度信息通過(guò)串口發(fā)送到SD卡存儲(chǔ)起來(lái)。SD卡在寫(xiě)入數(shù)據(jù)時(shí)會(huì)創(chuàng)建可命名的txt文件,將收到的數(shù)據(jù)存儲(chǔ)在所命名的文件中。 經(jīng)過(guò)多次的系統(tǒng)調(diào)試和實(shí)驗(yàn),所設(shè)計(jì)的系統(tǒng)可正常工作,可實(shí)現(xiàn)對(duì)車輛實(shí)時(shí)位置信息的記錄,從而監(jiān)控車輛的行駛信息。
目錄 第1章 緒論... 1 1.1 課題研究的目的和意義... 1 1.2 課題的主要研究?jī)?nèi)容... 2 1.3 論文的組織結(jié)構(gòu)... 2 第2章 系統(tǒng)分析與設(shè)計(jì)方案... 3 2.1 GPS系統(tǒng)及其工作原理... 3 2.1.1 GPS基礎(chǔ)... 3 2.1.2 GPS定位原理... 3 2.1.3 GPS數(shù)據(jù)... 4 2.2 系統(tǒng)總體設(shè)計(jì)... 7 第3章 系統(tǒng)硬件設(shè)計(jì)... 9 3.1 系統(tǒng)硬件總體設(shè)計(jì)概述... 9 3.2 系統(tǒng)電路模塊設(shè)計(jì)... 9 3.2.1 MSP430F149單片機(jī)簡(jiǎn)介... 10 3.2.2 MSP430F149單片機(jī)最小系統(tǒng)... 14 3.2.3 GPS定位信息接收電路... 16 3.2.4 SD卡讀寫(xiě)電路... 20 3.2.5 電源模塊電路... 21 3.3 整體硬件電路... 22 第4章 系統(tǒng)軟件設(shè)計(jì)... 24 4.1 系統(tǒng)軟件總體設(shè)計(jì)概述... 24 4.2 系統(tǒng)各部分程序... 24 4.2.1 主程序... 24 4.2.2 SD卡讀寫(xiě)模塊程序... 25 4.2.3 GPS數(shù)據(jù)處理模塊程序... 30 第5章 系統(tǒng)調(diào)試與結(jié)果分析... 33 5.1 概述... 33 5.2 IAR軟件簡(jiǎn)介... 33 5.3 軟件調(diào)試方法及步驟... 34 5.3.1 系統(tǒng)在IAR軟件的調(diào)試... 34 5.3.2 程序下載電路的調(diào)試... 35 5.4 整體調(diào)試... 36 5.5 調(diào)試結(jié)果與分析... 37 第6章 經(jīng)濟(jì)與社會(huì)效益分析... 40 6.1 經(jīng)濟(jì)效益分析... 40 6.2 社會(huì)效益分析... 40 結(jié)論... 41 致謝... 42 參考文獻(xiàn)... 43 附錄Ⅰ 電路原理圖... 45 附錄Ⅱ 部分程序清單... 46
第1章緒論1.1 課題研究的目的和意義隨著汽車擁有量的逐年增加,道路擁擠和交通事故頻頻發(fā)生,這不僅給人們出行帶來(lái)極大不便,而且還涉及到能源浪費(fèi)、環(huán)境污染、人民生命安全等多方面問(wèn)題。如何加強(qiáng)對(duì)車輛的管理,規(guī)范駕駛員的駕駛行為,減少交通事故的發(fā)生,營(yíng)造一個(gè)和諧、通暢的行車環(huán)境己成為交通運(yùn)輸和安全管理部門面臨的一個(gè)重要問(wèn)題。 而GPS衛(wèi)星導(dǎo)航全球定位系統(tǒng)自問(wèn)世以來(lái),在導(dǎo)航、定位領(lǐng)域發(fā)展勢(shì)頭迅猛,引起世界各界人士的關(guān)注。具備高精度、全天候、全球覆蓋、高效率、多功能、操作簡(jiǎn)便等特點(diǎn)。廣泛應(yīng)用于地面車輛跟蹤和城市智能交通管理方面。隨著人們對(duì)運(yùn)輸載體的監(jiān)控、跟蹤以及智能化管理要求的提高,GPS在中國(guó)已經(jīng)進(jìn)入爆發(fā)性發(fā)展階段,蘊(yùn)藏著巨大的發(fā)展空間。 GPS系統(tǒng)包括三大部分:空間部分——GPS衛(wèi)星星座;地面控制部分——地面監(jiān)控系統(tǒng);用戶設(shè)備部分——GPS信號(hào)接收機(jī)。GPS系統(tǒng)通過(guò)使用來(lái)自多個(gè)衛(wèi)星的信號(hào)來(lái)確定地面或近地面任何位置的移動(dòng)接收機(jī)的位置。我國(guó)的衛(wèi)星定位技術(shù)綜合了GPS衛(wèi)星導(dǎo)航全球定位,GSM全球數(shù)字蜂窩移動(dòng)通信,GIS地理信息,計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)全方位的技術(shù)應(yīng)用。利用GPS衛(wèi)星信號(hào)接收機(jī),跟蹤這些衛(wèi)星的運(yùn)行,對(duì)所接收到的GPS信號(hào)進(jìn)行變換、放大和處理,測(cè)量傳播時(shí)間,解譯導(dǎo)航電文。接收機(jī)24h不間斷地接收衛(wèi)星發(fā)送的數(shù)據(jù)參數(shù),算出接收的三維位置、三維方向以及運(yùn)動(dòng)速度和時(shí)間信息。 本課題就是這種背景下提出的利用GPS的定位導(dǎo)航功能,實(shí)現(xiàn)對(duì)車輛位置信息的記錄,并將車輛的位置信息存儲(chǔ)下來(lái),以供后續(xù)調(diào)查。通過(guò)對(duì)車輛的位置信息的記錄,可以加強(qiáng)車輛的管理,優(yōu)化車輛的行駛路徑,減少交通事故的發(fā)生。 本課題是一個(gè)非常有創(chuàng)新的課題,同時(shí)具有非常高的實(shí)用價(jià)值。對(duì)本課題的設(shè)計(jì)很好的煅煉了自己的能力。讓我對(duì)GPS的工作原理有了更深的認(rèn)識(shí)。同時(shí),在實(shí)現(xiàn)這個(gè)設(shè)計(jì)的過(guò)程也很好地煅煉了自己的動(dòng)手能力和獨(dú)立思考能力。完成一個(gè)這樣有實(shí)用價(jià)值的作品,對(duì)我以后步入社會(huì)后的工作也很有幫助。 1.2 課題的主要研究?jī)?nèi)容 本次畢業(yè)設(shè)計(jì)的任務(wù)是基于GPS的車輛行駛信息記錄系統(tǒng)的設(shè)計(jì),主要是通過(guò)GPS接收模塊接受的信息通過(guò)串口傳輸?shù)組SP430單片機(jī),由單片機(jī)進(jìn)行數(shù)據(jù)信息的解析與提取,將提取的有效信息儲(chǔ)存到SD卡中。 主要研究?jī)?nèi)容: 1、硬件電路的設(shè)計(jì)制作,將GPS接收模塊、SD存儲(chǔ)卡、單片機(jī)、電源模塊集成到一個(gè)系統(tǒng)板中; 2、用單片機(jī)解析GPS定位數(shù)據(jù)(因?yàn)镚PS數(shù)據(jù)是十分豐富的,要提取里邊有用的); 3、將單片機(jī)處理以后的定位數(shù)據(jù)存儲(chǔ)到SD存儲(chǔ)卡。 本課題重點(diǎn)是實(shí)現(xiàn)單片機(jī)對(duì)SD卡的讀寫(xiě),存儲(chǔ)車輛位置信息。 1.3 論文的組織結(jié)構(gòu) 本文共分為6個(gè)章節(jié),以設(shè)計(jì)順序?yàn)橹骶對(duì)系統(tǒng)進(jìn)行了詳細(xì)介紹。第1章主要介紹了該課題研究的目的、意義、題目要求以及論文的組織結(jié)構(gòu),本章為設(shè)計(jì)工作的準(zhǔn)備階段。第2章對(duì)系統(tǒng)進(jìn)行了分析,提供了系統(tǒng)的設(shè)計(jì)方案。第3章介紹了該系統(tǒng)的硬件電路設(shè)計(jì)原理,詳細(xì)介紹了系統(tǒng)各個(gè)組成電路模塊。第4章主要是對(duì)軟件設(shè)計(jì)的研究,首先說(shuō)明了程序設(shè)計(jì)思路,然后畫(huà)出了程序流程圖,并對(duì)各程序流程圖作了簡(jiǎn)要說(shuō)明。第5章主要是系統(tǒng)實(shí)驗(yàn)結(jié)果與分析。第6章對(duì)該課題的經(jīng)濟(jì)和社會(huì)效益進(jìn)行了簡(jiǎn)要分析。本文還包括結(jié)論、致謝、參考文獻(xiàn)、附錄部分。 第2章 系統(tǒng)分析與設(shè)計(jì)方案方案設(shè)計(jì)是系統(tǒng)完成的關(guān)鍵,其設(shè)計(jì)的合理性直接決定了整個(gè)系統(tǒng)的結(jié)構(gòu)和功能。 本系統(tǒng)完成了對(duì)GPS接收信息的提取,并將其存儲(chǔ)到SD卡中。下面對(duì)GPS系統(tǒng)及其工作原理和本系統(tǒng)的設(shè)計(jì)做一下具體說(shuō)明。 2.1 GPS系統(tǒng)及其工作原理 2.1.1 GPS基礎(chǔ)GPS主系統(tǒng)是由美國(guó)發(fā)射的衛(wèi)星系統(tǒng),由27顆衛(wèi)星組成,其中24個(gè)正常使用,3個(gè)備用,27顆衛(wèi)星不間斷的發(fā)送地理位置海拔高度和時(shí)間信號(hào),由地面的接收機(jī)接受再做處理,一般的接收機(jī)可以接收5至12個(gè)衛(wèi)星信號(hào)。全球定位系統(tǒng)分為三部分:太空衛(wèi)星部分:24顆繞極轉(zhuǎn)動(dòng)的衛(wèi)星分成六個(gè)軌道,在20200公里的高空運(yùn)動(dòng),轉(zhuǎn)動(dòng)一周約12小時(shí),每個(gè)衛(wèi)星都不停的發(fā)射載有衛(wèi)星軌道數(shù)據(jù)及時(shí)間的無(wú)線電波以供地球上的各種接收機(jī)接收。地面管制部分:在地面設(shè)置的地面管制站主要任務(wù)是追蹤控制衛(wèi)星運(yùn)轉(zhuǎn),修正維護(hù)每個(gè)衛(wèi)星能保持運(yùn)轉(zhuǎn)的個(gè)性參數(shù),確保接收信息的可靠性。終端設(shè)備:追蹤GPS衛(wèi)星并隨時(shí)計(jì)算出接收機(jī)所在位置的坐標(biāo),移動(dòng)速度及時(shí)間。GPS接收機(jī)及一般分為:無(wú)線藍(lán)牙GPS,USB接口GPS。 2.1.2 GPS定位原理GPS系統(tǒng)的基本定位原理是:每顆GPS衛(wèi)星時(shí)刻發(fā)布其位置和時(shí)間數(shù)據(jù)信號(hào),用戶接收機(jī)可以測(cè)量每顆衛(wèi)星信號(hào)到接收機(jī)的時(shí)間延遲,根據(jù)信號(hào)輸出的速度可以計(jì)算出接收機(jī)到不同衛(wèi)星的距離。同時(shí)收集至少4顆衛(wèi)星的數(shù)據(jù)時(shí),就可以算出三維坐標(biāo)、速度和時(shí)間,經(jīng)由I/O口輸出串行數(shù)據(jù)。 2.1.3 GPS數(shù)據(jù)GPS模塊協(xié)議支持NMEA-0183協(xié)議,NMEA-0183協(xié)議是NationalMarinc Elcctronics Association所指定的標(biāo)準(zhǔn)規(guī)格,這一標(biāo)準(zhǔn)還包含傳輸資料的格式以及傳輸資料的通信協(xié)議。一組正常的GPS協(xié)議語(yǔ)句包含GPS固定數(shù)據(jù)輸出語(yǔ)句($GPGGA),建議使用推薦定位信息($GPRMC),地面速度信息($GPVTG)語(yǔ)句。 1.當(dāng)前衛(wèi)星信息$GPGGA $GPGGA,101443.00,4155.48410,N,12323.86670,E,1,05,11.28,89.7,M,7.8,M,,*6B;其標(biāo)準(zhǔn)格式為$GPGGA,(1),(2),(3),(4),(5),(6),(7),(8),(9),M(10),M,(11),(12),*hh(CR)(LF) 各部分對(duì)應(yīng)的含義為: (1):標(biāo)準(zhǔn)定位時(shí)間:##時(shí)##分##秒; (2):緯度(格式ddmm.mmmm即##度##.####分); (3):N/S南或北表示緯度即北緯37度54.9756分; (4);經(jīng)度(格式ddmm.mmmm即##度##.####分); (5):E/W 東或西表示經(jīng)度即東經(jīng)109度28.4278分; (6):質(zhì)量因子(0=沒(méi)有定位,1=實(shí)時(shí)GPS,2=差分GPS); (7):可以應(yīng)用衛(wèi)星個(gè)數(shù)(0--8); (8):水平精度因子(1.0--99.9)水平精度因子=1.0; (9):天線高程天線高程20.6米; (10):大地橢球面相對(duì)海平面的高度(-999.9---9999.9,單位:米); (11):差分GPS數(shù)據(jù)年齡,實(shí)時(shí)GPS時(shí)無(wú); (12):差分某準(zhǔn)站號(hào)(0000---1023),實(shí)時(shí)GPS時(shí)無(wú); *:語(yǔ)句結(jié)束標(biāo)識(shí)符; Hh:為從$開(kāi)始到*之間的所有ASCII碼的異或校驗(yàn)和; (CR):回車; (LF):換行。 2.推薦定位信息數(shù)據(jù)格式$GPRMC $GPRMC,101443.00,A,4155.48410,N,12323.86670,E,0.049,255.81,160411,,,A*6A,其標(biāo)準(zhǔn)格式為:$GPRMC(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11)*hh (1):標(biāo)準(zhǔn)定為時(shí)間格式hhmmss.sss; (2):定位狀態(tài):A=數(shù)據(jù)可用,V=數(shù)據(jù)不能被用; (3):緯度:格式ddmm.mmmm; (4):緯度區(qū)分:北半球=N,南半球=S; (5):經(jīng)度:格式ddmm.mmmm; (6):經(jīng)度區(qū)分:東半球=E,西半球=W; (7):相對(duì)位移的速度0.0至1851.8knots; (8):相對(duì)位移的方向:000.0至359.9度,實(shí)際值; (9):日期:格式ddmmyy; (10):磁極變量:0度到180度; (11):磁偏角方向,E(東)或W(西); (12):模式指示(A=自主定位,D=差分,E=估算,N=數(shù)據(jù)無(wú)效)。 3.地面速度信息$GPVTG $GPVTG,255.81,T,,M,0.049,N,0.090,K,A*32,其標(biāo)準(zhǔn)格式為: $GPVTG,(1),(2),(3),(4),(5),(6),(7),(8),(9)*hh (1):運(yùn)動(dòng)角度,000---359前導(dǎo)位數(shù)不足補(bǔ)0; (2):T=真北參照系; (3):運(yùn)動(dòng)角度,000---359前導(dǎo)位不足補(bǔ)0; (4):M=磁北參照系; (5):水平運(yùn)動(dòng)速度0.00前導(dǎo)位不足補(bǔ)0; (6):N=節(jié),Knots; (7):水平運(yùn)動(dòng)速度0.00前導(dǎo)位不足補(bǔ)0; (8):K=公里/時(shí); (9):模式指示(A=自主定位,D=差分,E=估算,N=數(shù)據(jù)無(wú)效)。 4.含經(jīng)緯度的地理位置$GPGLL $GPGLL,3723.2475,N,12158.3416,W,161229.487,A*2C,其標(biāo)準(zhǔn)格式為: $GPGLL,(1),(2),(3),(4),(5),(6)*hh (1):緯度37度23.2475分; (2):N/S,北半球或南半球; (3):經(jīng)度121度58.3416分; (4):E/W,東半球或西半球; (5):標(biāo)準(zhǔn)定為時(shí)間:格式,時(shí)時(shí)分分秒秒; (6):狀態(tài),A=數(shù)據(jù)可用,V=數(shù)據(jù)不可用。 5.當(dāng)前衛(wèi)星信息$GPGSA $GPGSA A,3,07,02,26,27,09,04,15,,,,1.8,1.0,1.5*33,其標(biāo)準(zhǔn)格式為:$GPGSA,(1),(2),(3),(3),,,,,(3),(3),(3),(4),(5),(6),(7) (1):模式:M = 手動(dòng), A = 自動(dòng); (2):定位型式1 = 未定位, 2 = 二維定位, 3 = 三維定位; (3):PRN 數(shù)字:01 至32 表天空使用中的衛(wèi)星編號(hào),最多可接收12顆衛(wèi)星信息; (4):PDOP位置精度因子(0.5~99.9); (5):HDOP水平精度因子(0.5~99.9); (6):VDOP垂直精度因子(0.5~99.9); (7):Checksum.(檢查位)。 2.2 系統(tǒng)總體設(shè)計(jì)首先是GPS數(shù)據(jù)接收模塊進(jìn)行數(shù)據(jù)的接收,然后將接收數(shù)據(jù)傳給單片機(jī)進(jìn)行數(shù)據(jù)的加工處理從中選取有用數(shù)據(jù),存儲(chǔ)到SD卡中。 系統(tǒng)整體設(shè)計(jì)框架圖如圖2.1所示: file:///C:\Users\ZX\AppData\OICE_15_974FA576_32C1D314_319\msohtmlclip1\01\clip_image002.jpg 圖2.1 系統(tǒng)整體設(shè)計(jì)框架圖 此次設(shè)計(jì)的系統(tǒng)主要包括GPS接收模塊、MSP430單片機(jī)、SD卡讀寫(xiě)模塊、串行通信接口等幾部分,各部分設(shè)計(jì)及主要功能介紹如下: GPS接收模塊: GPS接收機(jī)的功能是能夠捕獲到按一定衛(wèi)星高度截止角所選擇的待測(cè)衛(wèi)星的信號(hào),并跟蹤這些衛(wèi)星的運(yùn)行,對(duì)接收到的GPS信號(hào)進(jìn)行變換、放大和處理,可以實(shí)現(xiàn)對(duì)天線視界內(nèi)衛(wèi)星的跟蹤、鎖定和測(cè)量。在獲取了衛(wèi)星的位置信息和測(cè)算出衛(wèi)星信號(hào)傳輸時(shí)間之后,就可算出輸出定位、導(dǎo)航和其他數(shù)據(jù)。 GPS接收機(jī)由核心處理器、GPS接收裝置和液晶顯示設(shè)備組成。本研究采用的GPS接收機(jī)是RCB-4H,具有接收GPS信號(hào)、處理信號(hào)、輸出定位信息等功能。 單片機(jī): 單片機(jī)是此系統(tǒng)的核心部分,通過(guò)對(duì)外圍各個(gè)接口的數(shù)據(jù)信號(hào)的提取及處理,來(lái)控制整個(gè)系統(tǒng)的工作。本課題采用MSP430F149單片機(jī)提取GPS接收的數(shù)據(jù)信息,并對(duì)數(shù)據(jù)信息進(jìn)行處理。 SD卡讀寫(xiě)模塊: SD卡讀寫(xiě)模塊內(nèi)置文件系統(tǒng)、可直接進(jìn)行文件讀寫(xiě)的SD卡模塊,適用于單片機(jī)系統(tǒng)實(shí)現(xiàn)大容量存儲(chǔ)方案。單片機(jī)使用模塊,可直接進(jìn)行目錄遍歷、目錄創(chuàng)建、目錄刪除、文件創(chuàng)建、文件刪除、文件修改、卡格式化等標(biāo)準(zhǔn)文件系統(tǒng)操作,無(wú)需了解SD卡內(nèi)部存儲(chǔ)結(jié)構(gòu)及文件系統(tǒng)實(shí)現(xiàn)細(xì)節(jié)。SD卡通過(guò)SD卡讀寫(xiě)模塊存儲(chǔ)經(jīng)過(guò)單片機(jī)處理過(guò)的有效信息。
第3章 系統(tǒng)硬件設(shè)計(jì)3.1 系統(tǒng)硬件總體設(shè)計(jì)概述系統(tǒng)的硬件電路部分設(shè)計(jì)是本課題的非常重要和關(guān)鍵的一部分,這部分的設(shè)計(jì)情況將影響到系統(tǒng)功能的實(shí)現(xiàn)。本章著重介紹硬件部分電路的設(shè)計(jì)原理,各部分電路的組成以及外圍電路器件的功能等等。 系統(tǒng)硬件框圖如圖3.1所示: file:///C:\Users\ZX\AppData\OICE_15_974FA576_32C1D314_319\msohtmlclip1\01\clip_image004.jpg 圖3.1 系統(tǒng)硬件框圖 3.2 系統(tǒng)電路模塊設(shè)計(jì)對(duì)應(yīng)于系統(tǒng)所要實(shí)現(xiàn)的功能,本系統(tǒng)的硬件設(shè)計(jì)主要由四部分組成。這四部分分別為GPS定位信息接收電路,SD卡讀寫(xiě)電路,電源電路與STC89C52RC接口電路和程序下載電路。
3.2.1 MSP430F149單片機(jī)簡(jiǎn)介單片機(jī)是系統(tǒng)的核心部分,通過(guò)對(duì)外圍各個(gè)接口的數(shù)據(jù)信號(hào)的提取及處理,來(lái)控制整個(gè)系統(tǒng)的工作。本課題采用的是MSP430F149單片機(jī)。 單片機(jī)芯片配以必要的外部器件,一般包括電源供入及電源開(kāi)關(guān)、復(fù)位電路、晶振、輸入輸出電路等就能構(gòu)成最小系統(tǒng)。 file:///C:\Users\ZX\AppData\OICE_15_974FA576_32C1D314_319\msohtmlclip1\01\clip_image006.jpgMSP430功能框圖如圖3.2所示:
圖3.2 MSP430功能框圖 MSP430F149芯片是美國(guó)TI公司推出的超低功耗微處理器,有60KB+256字節(jié)FLASH,2KBRAM,包括基本時(shí)鐘模塊、看門狗定時(shí)器、帶3個(gè)捕獲/比較寄存器和PWM輸出的16位定時(shí)器、帶7個(gè)捕獲/比較寄存器和PWM輸出的16位定時(shí)器、2個(gè)具有中斷功能的8位并行端口、4個(gè)8位并行端口、模擬比較器、12位A/D轉(zhuǎn)換器、2個(gè)串行通信接口等模塊。MSP430F149芯片具有如下特點(diǎn): (1)功耗低:電壓2.2V、時(shí)鐘頻率1MHz時(shí),活動(dòng)模式為200μA;關(guān)閉模式時(shí)僅為0.1A,且具有5種節(jié)能工作方式; (2)高效16位RISC-CPU,27條指令,8MHz時(shí)鐘頻率時(shí),指令周期時(shí)間為125ns,絕大多數(shù)指令在一個(gè)時(shí)鐘周期完成;32kHz時(shí)鐘頻率時(shí),16位MSP430單片機(jī)的執(zhí)行速度高于典型的8位單片機(jī)20MHz時(shí)鐘頻率時(shí)的執(zhí)行速度; (3)低電壓供電、寬工作電壓范圍:1.8~3.6V; (4)靈活的時(shí)鐘系統(tǒng):兩個(gè)外部時(shí)鐘和一個(gè)內(nèi)部時(shí)鐘; (5)低時(shí)鐘頻率可實(shí)現(xiàn)高速通信; (6)具有串行在線編程能力; (7)強(qiáng)大的中斷功能; (8)喚醒時(shí)間短,從低功耗模式下喚醒僅需6μs; (9)ESD保護(hù),抗干擾力強(qiáng); (10)運(yùn)行環(huán)境溫度范圍為-40~+85℃,適合于工業(yè)環(huán)境。 MSP430系列單片機(jī)的所有外圍模塊的控制都是通過(guò)特殊寄存器來(lái)實(shí)現(xiàn)的,故其程序的編寫(xiě)相對(duì)簡(jiǎn)單。編程開(kāi)發(fā)時(shí)通過(guò)專用的編程器,可以選擇匯編或C語(yǔ)言編程,IAR公司為MSP430系列的單片機(jī)開(kāi)發(fā)了專用的C430語(yǔ)言,可以通過(guò)WORKBENCH和C-SPY直接編譯調(diào)試,使用靈活簡(jiǎn)單。 單片機(jī)引腳圖如圖3.3所示: file:///C:\Users\ZX\AppData\OICE_15_974FA576_32C1D314_319\msohtmlclip1\01\clip_image008.jpg 圖3.3 MSP430引腳圖 58腳RST/NMI 為430單片機(jī)的復(fù)位引腳(低電平有效)。 1腳DVCC、63腳DVSS 為數(shù)字電源接口。 64腳AVCC、62腳AVSS 為模擬電源接口。注意:MSP430系列單片機(jī)的供電電壓為1.8V~3.6V。 32腳UTXD0、33腳URXD0 的第二功能為MSP430F149單片機(jī)兩路串口通訊接口中的第一路。 34腳UTXD1、35腳URXD1 的第二功能為MSP430F149單片機(jī)兩路串口通訊接口中的第二路。 29腳SIMO0,30腳SOMI0,31腳UCLK0 的第二功能為MSP430F149單片機(jī)兩路SPI通訊接口中的第一路。 45腳SIMO1,46腳SOMI1,47腳UCLK1 的第二功能為MSP430F149單片機(jī)兩路SPI通訊接口中的第二路。 48腳的第二功能為MSP430F149單片機(jī)MCLK(主系統(tǒng)時(shí)鐘)的輸出端。 49腳的第二功能為MSP430F149單片機(jī) SCLK(子系統(tǒng)時(shí)鐘)的輸出端 50腳的第二功能為MSP430F149單片機(jī) ACLK(輔系統(tǒng)時(shí)鐘)的輸出端。 52腳、53腳為外部高頻時(shí)鐘晶振輸入端(程序中說(shuō)明一般用XT2CLK或HF XTAL表示)。 8腳、9腳為外部低頻時(shí)鐘晶振輸入端(程序中說(shuō)明一般用LFXTICLK表示)。 59腳TA0,60腳TA1,61腳TA2,2腳A3,3腳A4,4腳A5,5腳A6,6腳A7 的第二功能為8路的內(nèi)部12位ADC模擬電壓輸入端口。 54腳TDO/TDI,55腳TDI/TCLK,56腳TMS,57腳TCK 為JTAG接口(同時(shí)擁有仿真器和編程器的功能),用于下載程序并實(shí)現(xiàn)硬件在線仿真。 I/O口的操作: P1~P6的公有寄存器位為PXSEL,PXDIR,PXOUT,PXIN。其中P1,P2相對(duì)于P3,P4 ,P5,P6還多出了3個(gè)寄存器PXIE,PXIES,PXIFG,這三個(gè)寄存器是用于設(shè)置開(kāi)啟P1,P2的外部觸發(fā)中斷使用的(其中X可以為1,2,3,4,5,6)。 以下各寄存器功能介紹(以P3.4為例): P3SEL用于功能選擇,當(dāng)其置0選擇的是普通I/O口功能,置1選擇的是第二功能; 比如32腳UTXD0對(duì)應(yīng)P3.4,33腳URXD0對(duì)應(yīng)P3.4。 P3SEL&= ~BIT4;// 該程序是將P3.4置0,此時(shí)該引腳只具有普通I/O口功能; P3SEL|= BIT4;// 該程序是將P3.4置1,此時(shí)該引腳將具有異步串口通信功能。 P3DIR是用于設(shè)置I/O口輸出方向的。 P3DIR&= ~BIT4; //該程序是將I/O口的方向設(shè)置為輸入(一般用于讀取數(shù)據(jù)時(shí)); P3DIR|= BIT4; //該程序是將I/O口的方向設(shè)置為輸出。 P3OUT是用于設(shè)置I/O口輸出高低電平的。 P3OUT&= ~BIT4; ///該程序是使該I/O口輸出高電平; P3OUT|= BIT4; ///該程序是使該I/O口輸出低電平。 P3IN是用于讀取外部輸入到該引腳,使用該寄存器前必須將P3DIR置0。 3.2.2 MSP430F149單片機(jī)最小系統(tǒng) 最小系統(tǒng)是由保證處理器可靠工作所必須的基本電路組成的,主要包括電源電路、時(shí)鐘電路和復(fù)位電路。 1.時(shí)鐘電路 時(shí)鐘電路用于產(chǎn)生單片機(jī)工作時(shí)所需要的時(shí)鐘信號(hào)。單片機(jī)各功能部件的操作都是以時(shí)鐘頻率為基準(zhǔn),有條不紊地周期性地工作。因此,時(shí)鐘頻率直接影響單片機(jī)的運(yùn)行速度,時(shí)鐘電路的質(zhì)量也直接影響單片機(jī)系統(tǒng)的穩(wěn)定性。 MSP430系列單片機(jī)時(shí)鐘模塊包括數(shù)控振蕩器(DCO)、高速晶體振蕩器和低速晶體振蕩器等3個(gè)時(shí)鐘源。這是為了解決系統(tǒng)的快速處理數(shù)據(jù)要求和低功耗要求的矛盾,通過(guò)設(shè)計(jì)多個(gè)時(shí)鐘源或?yàn)闀r(shí)鐘設(shè)計(jì)各種不同工作模式,才能解決某些外圍部件實(shí)時(shí)應(yīng)用的時(shí)鐘要求,如低頻通信、LCD顯示、定時(shí)器、計(jì)數(shù)器等。數(shù)字控制振蕩器DCO已經(jīng)集成在MSP430內(nèi)部,在系統(tǒng)中只需設(shè)計(jì)高速晶體振蕩器和低速晶體振蕩器兩部分電路。 低速晶體振蕩器(LFXTl)滿足了低功耗及使用32.768kHz晶振的要求。LFXTl振蕩器默認(rèn)工作在低頻模式,即32.768kHz,也可以通過(guò)外接450kHz~8MHz的高速晶體振蕩器或陶瓷諧振器工作在高頻模式,在本電路中我們使用低頻模式。 高速晶體振蕩器(HFXT2)也稱為第二振蕩器XT2,它為MSP430F149工作在高頻模式時(shí)提供時(shí)鐘,XT2最高可達(dá)8MHz。在系統(tǒng)中XT2采用8MHz的晶體,XT2外接2個(gè)30pF的電容經(jīng)過(guò)XT2IN和XT2OUT連接到MCU。 晶振電路如圖3.4所示: file:///C:\Users\ZX\AppData\OICE_15_974FA576_32C1D314_319\msohtmlclip1\01\clip_image010.jpg file:///C:\Users\ZX\AppData\OICE_15_974FA576_32C1D314_319\msohtmlclip1\01\clip_image012.jpg 圖3.4 晶振電路 2.復(fù)位電路 在單片機(jī)每次初始加電時(shí),首先投入工作的功能部件是復(fù)位電路。復(fù)位電路把單片機(jī)鎖定在復(fù)位狀態(tài)上并且維持一個(gè)延時(shí),以便給予電源電壓從上升到穩(wěn)定的一個(gè)等待時(shí)間。在電源電壓穩(wěn)定之后,再插入一個(gè)延時(shí),給予時(shí)鐘振蕩器從起振到穩(wěn)定的一個(gè)等待時(shí)間。 從上MSP430系統(tǒng)復(fù)位電路功能模塊圖中可以看到了兩個(gè)復(fù)位信號(hào),一個(gè)是上電復(fù)位信號(hào)POR(PowerOn Reset)和上電清除信號(hào)PUC(Power Up Clear)。POR信號(hào)是器件的復(fù)位信號(hào),此信號(hào)只有在以下的事件發(fā)生時(shí)才會(huì)產(chǎn)生:
器件上電時(shí):RST/NMI引腳配置為復(fù)位模式,當(dāng)RST/NMI引腳產(chǎn)生低電平時(shí)。
當(dāng)POR信號(hào)產(chǎn)生時(shí),必然會(huì)產(chǎn)生PUC信號(hào);而PUC信號(hào)的產(chǎn)生時(shí)不會(huì)產(chǎn)生POR信號(hào)。會(huì)引起產(chǎn)生PUC信號(hào)的事件:
POR信號(hào)發(fā)生時(shí);啟動(dòng)看門狗時(shí),看門狗定時(shí)器計(jì)滿時(shí);向看門狗寫(xiě)入錯(cuò)誤的安全參數(shù)值時(shí);向片內(nèi)FLASH寫(xiě)入錯(cuò)誤的安全參數(shù)值時(shí)。 當(dāng)POR信號(hào)或PUC信號(hào)發(fā)生時(shí)引起器件復(fù)位后,器件的初始化狀態(tài)為:
RST/NMI引腳配置為復(fù)位模式、I/O引腳為輸入模式、狀態(tài)寄存器SR復(fù)位、看門狗激活進(jìn)入工作模式、程序計(jì)數(shù)器(PC)裝入復(fù)位向量地址0xFFFE,微處理器從此地址開(kāi)發(fā)始執(zhí)行。 由于MSP430F149單片機(jī)是低電平復(fù)位,在復(fù)位鍵未按下時(shí),由于電容對(duì)直流電的阻隔作用,復(fù)位端口REST為高電平,因此單片機(jī)不執(zhí)行復(fù)位功能;當(dāng)按下復(fù)位鍵S2時(shí),電容C3通過(guò)S2放電,此時(shí)REST為低電平,單片機(jī)進(jìn)入復(fù)位狀態(tài),當(dāng)釋放S2時(shí),電源通過(guò)電阻R8給電容再次充電,復(fù)位端口的點(diǎn)位由低電平緩慢的上升的高電平,在未達(dá)到單片機(jī)規(guī)定的閾值之前,單片機(jī)均認(rèn)為是低電平,保持復(fù)位狀態(tài)當(dāng)充電完成后,復(fù)位端口為高電平,復(fù)位結(jié)束。其中二極管D3的加入是保證REST端的電壓限定在一定范圍內(nèi)不會(huì)太高。 復(fù)位電路如圖3.5所示: file:///C:\Users\ZX\AppData\OICE_15_974FA576_32C1D314_319\msohtmlclip1\01\clip_image014.jpg 圖3.5 復(fù)位電路 最小系統(tǒng)可以直接作為核心部件應(yīng)用與工程和科研中,具有良好的通用性和可擴(kuò)展性。在最小系統(tǒng)的基礎(chǔ)上,可以很方便地進(jìn)行二次開(kāi)發(fā)和功能擴(kuò)展,能夠縮短開(kāi)發(fā)周期,降低開(kāi)發(fā)成本。本文實(shí)現(xiàn)了最小系統(tǒng)的基本功能,介紹了各模塊的硬件電路。該最小系統(tǒng)可以經(jīng)過(guò)適當(dāng)修改可應(yīng)用于電子設(shè)計(jì)、計(jì)算機(jī)教學(xué)與科研、工業(yè)控制等領(lǐng)域。 3.2.3 GPS定位信息接收電路在進(jìn)行硬件設(shè)計(jì)時(shí),應(yīng)根據(jù)系統(tǒng)的需要來(lái)選擇適合的硬件。 在本系統(tǒng)的設(shè)計(jì)中,GPS接收機(jī)是最基本的組成部分,由它來(lái)接收衛(wèi)星信號(hào),并且產(chǎn)生定位信息。下面分別介紹GPS接收機(jī)的分類、選擇與各種特性。
1.GPS接收機(jī)的分類 GPS接收機(jī)可以根據(jù)用途、工作原理、接收頻率等進(jìn)行不同的分類。按接收機(jī)的用途進(jìn)行分類可分為導(dǎo)航型接收機(jī),測(cè)地型接收機(jī),授時(shí)型接收機(jī)等;按接收機(jī)的載波頻率進(jìn)行分類可分為單頻接收機(jī),雙頻接收機(jī);由于GPS接收機(jī)的定位原理多樣,應(yīng)用范圍廣泛,所以分類方法也多種多樣,需要根據(jù)實(shí)際應(yīng)用來(lái)選擇適當(dāng)?shù)慕邮諜C(jī)。
2.GPS定位模塊的選擇 由于本項(xiàng)目開(kāi)發(fā)的是基于GPS OEM接收機(jī)自主完好性監(jiān)測(cè)系統(tǒng)的研究,所以應(yīng)選擇導(dǎo)航型的GPS模塊。目前,有很多廠商都能提供GPS OEM板產(chǎn)品,如SiRF、Conexant、Sychip、GARMIN等公司。其中北京三信通導(dǎo)技術(shù)有限公司是最著名、深受用戶信賴的專業(yè)GPS廠家,在GPS的定位、導(dǎo)航領(lǐng)域一直走在最前列,在提供各種類型的GPS成品的同時(shí),還提供一系列最經(jīng)典的GPS OEM板產(chǎn)品。此公司生產(chǎn)的GPS OEM產(chǎn)品的優(yōu)良的性能既能夠滿足靈敏度需求,也能夠滿足動(dòng)態(tài)需求,所以本項(xiàng)目選擇RCB-4H作為GPS定位模塊。它為12 通道的GPS接收機(jī),也就是同時(shí)可以跟蹤多達(dá)12顆GPS 衛(wèi)星,從而能夠快速的定位。GPS 接收機(jī)功耗非常小,數(shù)據(jù)更新率為4HZ,即為每秒4次。 3.RCB-4H簡(jiǎn)介 GPS-OEM板采用單一5V供電,內(nèi)置保護(hù)電池,RS232、TTL兩種電平自動(dòng)輸出NMEA0183格式(ASCII字符型)語(yǔ)句。GPS接收板主要由變頻器、信號(hào)通道、存儲(chǔ)器、中央處理器和輸入輸出接口構(gòu)成。它接收天線獲取的衛(wèi)星信號(hào),經(jīng)過(guò)變頻、放大、濾波、相關(guān)、混頻等一系列處理,可以實(shí)現(xiàn)對(duì)天線視界內(nèi)衛(wèi)星的跟蹤、鎖定和測(cè)量。在獲取了衛(wèi)星的位置信息和測(cè)算出衛(wèi)星信號(hào)傳輸時(shí)間之后,就可算出輸出定位、導(dǎo)航和其他數(shù)據(jù)。 4.RCB-4H的輸出格式 RCB-4H是一種超低功耗的GPS接收板.接收機(jī)輸出數(shù)據(jù)通常使用的格式是美國(guó)國(guó)家海洋電子協(xié)會(huì)指定的NMEA0183通信標(biāo)準(zhǔn)格式,其輸出數(shù)據(jù)代碼為ASCII碼字符,內(nèi)容包含了緯度、精度、高度、速度、日期、時(shí)間、航向以及衛(wèi)星狀況等信息。輸出數(shù)據(jù)為多種格式,如GPGRS、GPGGA、GPGSA等。GPS通信波特率為4800~19200,1個(gè)起始位,8個(gè)數(shù)據(jù)位,1個(gè)停止位,無(wú)奇偶校驗(yàn)位。 GPS接收機(jī)的實(shí)物圖如圖3.6所示: file:///C:\Users\ZX\AppData\OICE_15_974FA576_32C1D314_319\msohtmlclip1\01\clip_image016.jpg 圖3.6 GPS接收機(jī)實(shí)物圖 GPS接收機(jī)引腳圖如圖3.7所示: file:///C:\Users\ZX\AppData\OICE_15_974FA576_32C1D314_319\msohtmlclip1\01\clip_image018.jpg 圖3.7 GPS接收機(jī)管腳配置圖 各引腳功能如表3.1所示。
表3.1 GPS引腳功能介紹 5.GPS信息接收電路 由于我們所采用的RCB-4H信號(hào)接收模塊輸出信號(hào)為RS-232電平,而MSP430單片機(jī)串口所使用的電平為TTL電平,所以為了能使單片機(jī)正常的與RCB-4H信號(hào)接收模塊進(jìn)行通訊,故需要對(duì)電平進(jìn)行相互轉(zhuǎn)換,所以我使用了MAX-232轉(zhuǎn)換芯片。其電路設(shè)計(jì)圖如圖3.8所示。 file:///C:\Users\ZX\AppData\OICE_15_974FA576_32C1D314_319\msohtmlclip1\01\clip_image020.jpg 圖3.8 GPS信息接收電路 3.2.4 SD卡讀寫(xiě)電路SD卡讀寫(xiě)模塊SDV600是一款整合了SD卡規(guī)范和FAT文件格式規(guī)范的模塊,只要通過(guò)本模塊規(guī)定的通訊協(xié)議就可以把數(shù)據(jù)存儲(chǔ)在SD卡中的文件中。由于SD卡規(guī)范和FAT規(guī)范是非常復(fù)雜,如果在項(xiàng)目中要單獨(dú)來(lái)寫(xiě)這兩個(gè)規(guī)范的非常費(fèi)時(shí)和費(fèi)力,而且非常占用系統(tǒng)資源;現(xiàn)在的便攜儀采集的數(shù)據(jù)種類越來(lái)越多,數(shù)據(jù)量越來(lái)越大,而其大部分要求在計(jì)算機(jī)上備份數(shù)據(jù)或者后期用計(jì)算機(jī)處理數(shù)據(jù);而SD 卡以其容量大,速度快,接口簡(jiǎn)單,加之配套的讀卡器便宜而發(fā)展迅速;這些主觀和客觀的因素促使項(xiàng)目中迫切要求使用SD 卡加FAT文件系統(tǒng)來(lái)存儲(chǔ)數(shù)據(jù),也促使本模塊的誕生。 本模塊支持FAT32文件格式,理論支持8G以下SD卡。通過(guò)命令提供給主機(jī)有如下功能: (1)文件的創(chuàng)建(注:文件名只支持8.3 文件格式:8.3文件格式文件名不支持中文,文件名長(zhǎng)度為最大8個(gè)字符); (2)文件的打開(kāi)(8.3 文件名格式); (3)文件的連續(xù)寫(xiě)入和文件的給定起始地址寫(xiě)入; (4)文件的連續(xù)讀取和文件的給定起始地址讀取; (5)當(dāng)前打開(kāi)文件的保存; (6)當(dāng)前文件的關(guān)閉; (7)文件指針的設(shè)置; (8)當(dāng)前打開(kāi)文件信息的讀取,包括文件的大小和當(dāng)前文件指針值; (9)獲取系統(tǒng)的狀態(tài)(有無(wú)SD卡,是否為FAT32文件格式,系統(tǒng)是否繁忙); (10)通過(guò)模塊上的撥碼開(kāi)關(guān)設(shè)置串口波特率(2400,9600,19200,57600,115200)。 SD卡讀寫(xiě)模塊連接電路如圖3.9所示: file:///C:\Users\ZX\AppData\OICE_15_974FA576_32C1D314_319\msohtmlclip1\01\clip_image022.jpg 圖3.9 SD卡讀寫(xiě)模塊電路 本模塊工作穩(wěn)定,不挑卡,不死機(jī),串口 UART操作(直接接任何帶串口單片機(jī)),指令少,還可以順序存。 3.2.5 電源模塊電路由于整個(gè)系統(tǒng)采用5V和3.3V供電,又考慮到硬件系統(tǒng)要求電源具有穩(wěn)壓功能和波紋小等特點(diǎn),另外也考慮到硬件系統(tǒng)的低功耗等特點(diǎn),因此該硬件系統(tǒng)的電源先用LM7805穩(wěn)壓為5V給外圍模塊電路供電,再用SPX1117芯片穩(wěn)壓得到3.3V電壓,給CPU和3.3V設(shè)備供電。 電源電路如圖3.10所示: file:///C:\Users\ZX\AppData\OICE_15_974FA576_32C1D314_319\msohtmlclip1\01\clip_image024.jpg 圖3.10 電源電路 3.3 整體硬件電路本系統(tǒng)的硬件電路主要包括GPS接收模塊、MSP430F149單片機(jī)和SD卡讀寫(xiě)模塊組成。 整體硬件電路實(shí)物圖如圖3.11所示: file:///C:\Users\ZX\AppData\OICE_15_974FA576_32C1D314_319\msohtmlclip1\01\clip_image026.gif 圖3.11 整體硬件電路實(shí)物圖
第4章 系統(tǒng)軟件設(shè)計(jì)4.1 系統(tǒng)軟件總體設(shè)計(jì)概述本次課題是基于GPS的車輛行駛信息記錄系統(tǒng)的設(shè)計(jì),主要實(shí)現(xiàn)GPS數(shù)據(jù)接收、GPS數(shù)據(jù)信息處理以及GPS有效數(shù)據(jù)信息存儲(chǔ)等功能,而這些功能通過(guò)使用IAR Embedded Workbench集成調(diào)試軟件編寫(xiě)程序來(lái)實(shí)現(xiàn)。由于硬件電路設(shè)計(jì)包含主控電路、GPS信息接收電路、SD卡存儲(chǔ)電路組成,因此本次程序設(shè)計(jì)主要包含3個(gè)部分:主程序、SD卡讀寫(xiě)模塊程序和GPS數(shù)據(jù)處理模塊電路程序。 4.2 系統(tǒng)各部分程序4.2.1 主程序設(shè)計(jì)系統(tǒng)時(shí),一般會(huì)設(shè)計(jì)系統(tǒng)的主程序。主程序主要用于調(diào)用各個(gè)子程序,不僅如此,還標(biāo)明調(diào)用子程序所要滿足的條件。本系統(tǒng)的主程序流程圖如圖4.1 所示。 file:///C:\Users\ZX\AppData\OICE_15_974FA576_32C1D314_319\msohtmlclip1\01\clip_image028.gif 圖4.1 系統(tǒng)主程序流程圖 4.2.2 SD卡讀寫(xiě)模塊程序SDV600 是內(nèi)含處理器,整合FAT 協(xié)議,操作起來(lái)和芯片一樣,它工作狀態(tài)也是有忙有閑,所以在執(zhí)行操作時(shí)需要檢查模塊的busy 標(biāo)志引腳,客戶處理器完全可以去做別的事,必要時(shí)判斷busy 進(jìn)行下一步操作。 對(duì)于FAT協(xié)議來(lái)講,文件數(shù)越多造成得尋址和判斷(判斷文件重命名)時(shí)間越來(lái)越長(zhǎng),使建立文件命令執(zhí)行時(shí)間增長(zhǎng),所以在使用命令時(shí)一定要判斷模塊的BUSY腳,如果處于BUSY狀態(tài)發(fā)送的后續(xù)命令就會(huì)被模塊丟棄,直到不為BUSY狀態(tài)時(shí),后續(xù)命令才可被模塊執(zhí)行。 例如:按照狀態(tài)命令(01)+創(chuàng)建命令(02)+打開(kāi)命令(06)+寫(xiě)入數(shù)據(jù)命令(05)+保存命令(04)+關(guān)閉命令(08)這樣的命令而不判斷BUSY,當(dāng)創(chuàng)建到大概800 多個(gè)文件時(shí),創(chuàng)建命令時(shí)間變長(zhǎng),使得后續(xù)打開(kāi)命令(06)丟失,而寫(xiě)入數(shù)據(jù)命令(05)+保存命令(04)因沒(méi)有打開(kāi)文件(打開(kāi)命令丟棄沒(méi)有執(zhí)行),而執(zhí)行失敗,這樣會(huì)出現(xiàn)創(chuàng)建好文件后,沒(méi)有寫(xiě)入數(shù)據(jù)的現(xiàn)象,如果判斷BUSY就能解決此問(wèn)題。 類似問(wèn)題還有保存命令,關(guān)閉命令。 SD卡讀寫(xiě)模塊在工作時(shí)可實(shí)現(xiàn)創(chuàng)建文件、打開(kāi)文件、寫(xiě)入數(shù)據(jù)、保存文件和關(guān)閉文件的操作,在實(shí)現(xiàn)不同操作時(shí)對(duì)應(yīng)有不同的命令格式: 1.創(chuàng)建文件命令 0x02 創(chuàng)建文件命令提供給主機(jī)創(chuàng)建文件的功能。參數(shù)為N字節(jié)8.3 文件格式的文件名(字符串格式,即文件名以0 結(jié)尾),即8 字節(jié)的基本文件名(模塊不支持漢字編碼,字母不區(qū)分大小寫(xiě)),3 字節(jié)擴(kuò)展名。命令格式如下: 0x55 0xaa 0x02 個(gè)數(shù)(2 字節(jié),低字節(jié)在前) 8.3文件格式名 校驗(yàn)和 應(yīng)答的數(shù)據(jù)為1 個(gè)字節(jié)的狀態(tài)信息,各位分別代表不同的狀態(tài): Bit 0,SD 卡不存在狀態(tài),1 表示SD 卡不存在; Bit 1,SD 卡寫(xiě)保護(hù)狀態(tài),1 表示SD 卡寫(xiě)保護(hù); Bit 2,文件打開(kāi)狀態(tài),1 表示當(dāng)前有文件打開(kāi),創(chuàng)建失敗; Bit 3,F(xiàn)AT16 根目錄滿,1 表示根目錄滿,F(xiàn)AT16 根目錄只能創(chuàng)建32 個(gè)文件或文件夾; Bit 4,文件名格式,1 表示當(dāng)前目錄下有同名文件或者文件名格式不是8.3格式; Bit 5,文件系統(tǒng)類型,1 表示不為FAT32 文件系統(tǒng); Bit 6,系統(tǒng)忙狀態(tài),1 表示系統(tǒng)正處在忙狀態(tài); Bit 7,校驗(yàn)和狀態(tài),1 表示發(fā)送命令的校驗(yàn)和不正確。 注:接收到應(yīng)答,其中8 位任何一位不為0,表示命令執(zhí)行失敗。 例如要在SD卡中建立文件12345678.txt,發(fā)送的命令數(shù)據(jù)為: 例:55 AA02 0D 00 31 32 33 34 35 36 37 38 2E 74 78 74 00 41 創(chuàng)建 12345678.txt文件。 2.打開(kāi)文件命令 0x06 該命令為主機(jī)提供打開(kāi)文件的功能。參數(shù)為N 字節(jié)8.3文件格式的文件名(字符串格式,即文件名以0 結(jié)尾),即8 字節(jié)的基本文件名(模塊不支持漢字編碼,字母不區(qū)分大小寫(xiě)),3 字節(jié)擴(kuò)展名。命令格式如下,其中個(gè)數(shù)占2字節(jié),低字節(jié)先發(fā)送: 0x55 0xaa 0x06 個(gè)數(shù)(2 字節(jié),低字節(jié)在前) 8.3文件格式名 校驗(yàn)和 應(yīng)答的數(shù)據(jù)為1 個(gè)字節(jié)的狀態(tài)信息,各位分別代表不同的狀態(tài): Bit 0,SD 卡不存在狀態(tài),1 表示SD 卡不存在; Bit 1,文件打開(kāi)狀態(tài),1 表示當(dāng)前有文件打開(kāi),打開(kāi)失敗,先關(guān)閉文件在調(diào)用該命令; Bit 2,文件名狀態(tài),1 表示文件名不是標(biāo)準(zhǔn)的8.3 文件格式; Bit 3,文件存在狀態(tài),1 表示無(wú)該文件; Bit 4,無(wú)定義; Bit 5,文件系統(tǒng)類型,1 表示不為FAT文件系統(tǒng); Bit 6,系統(tǒng)忙狀態(tài),1 表示系統(tǒng)正處在忙狀態(tài); Bit 7,校驗(yàn)和狀態(tài),1 表示發(fā)送命令的校驗(yàn)和不正確。 注:接收到應(yīng)答,根據(jù)第8 位判斷命令執(zhí)行狀態(tài),如果失敗,原因參考前幾位標(biāo)識(shí)。 例:55 AA06 0D 00 31 32 33 34 35 36 37 38 2E 74 78 74 00 45 打開(kāi) 12345678.txt文件。 3.寫(xiě)入文件命令 0x05 該命令為主機(jī)提供向已打開(kāi)文件中寫(xiě)入數(shù)據(jù)的功能。每寫(xiě)一個(gè)數(shù)據(jù)文件指針自動(dòng)加1,當(dāng)數(shù)據(jù)寫(xiě)完, 文件指針指向最后一個(gè)數(shù)據(jù)地址加1 的位置。命令格式如下,其中個(gè)數(shù)占2 字節(jié),低字節(jié)先發(fā)送,起始地址占4 字節(jié),低字節(jié)先發(fā)送: 0x55 0xaa 0x05 個(gè)數(shù)(2 字節(jié)) 起始地址(4個(gè)字節(jié)) 有效數(shù)據(jù) 校驗(yàn)和 應(yīng)答的數(shù)據(jù)為1 個(gè)字節(jié)的狀態(tài)信息,各位分別代表不同的狀態(tài): Bit 0,SD 卡不存在狀態(tài),1 表示SD 卡不存在; Bit 1,SD 卡寫(xiě)保護(hù)狀態(tài),1 表示SD 卡寫(xiě)保護(hù); Bit 2,文件打開(kāi)狀態(tài),1 表示無(wú)文件打開(kāi); Bit 3,磁盤(pán)狀態(tài),1表示磁盤(pán)空間滿,寫(xiě)入失敗; Bit 4,參數(shù)個(gè)數(shù)狀態(tài),1 表示參數(shù)個(gè)數(shù)小于4個(gè)字節(jié); Bit 5,文件系統(tǒng)類型,1 表示不為FAT文件系統(tǒng); Bit 6,系統(tǒng)忙狀態(tài),1 表示系統(tǒng)正處在忙狀態(tài); Bit 7,校驗(yàn)和狀態(tài),1 表示發(fā)送命令的校驗(yàn)和不正確。 注:接收到應(yīng)答,其中8 位任何一位不為0,表示命令執(zhí)行失敗,原因參考位標(biāo)識(shí)。 例:55 AA05 0D 00 00 00 00 00 31 32 33 34 35 36 37 38 39 EF 向打開(kāi)的文件寫(xiě)入123456789數(shù)據(jù)。 如果要連續(xù)寫(xiě)入文件,只要把寫(xiě)命令中的地址信息置最大值,0xffffffff就可以了。有效數(shù)據(jù)≤200個(gè)字節(jié),個(gè)數(shù)2個(gè)字節(jié)是備用將來(lái)擴(kuò)展。 4.保存文件命令 0x04 該命令為主機(jī)提供保存當(dāng)前打開(kāi)文件的功能,為了防止頻繁寫(xiě)SD 卡,每次送入模塊的數(shù)據(jù)先是保存在模塊的512 字節(jié)的扇區(qū)緩沖中,所以為了防止數(shù)據(jù)丟失,完成所有數(shù)據(jù)的傳輸后,要發(fā)送保存文件命令來(lái)保存文件。命令格式如下: 0x55 0xaa 0x04 0x00 0x00 0x04 應(yīng)答的數(shù)據(jù)為1 個(gè)字節(jié)的狀態(tài)信息,各位分別代表不同的狀態(tài): Bit 0,SD 卡不存在狀態(tài),1 表示SD 卡不存在; Bit 1,SD 卡寫(xiě)保護(hù)狀態(tài),1 表示SD 卡寫(xiě)保護(hù); Bit 2,文件打開(kāi)狀態(tài),1 表示無(wú)文件打開(kāi); Bit 3,無(wú)定義; Bit 4,文件系統(tǒng)類型,1 表示不為FAT32 文件系統(tǒng); Bit 5,系統(tǒng)忙狀態(tài),1 表示系統(tǒng)正處在忙狀態(tài); Bit 6,校驗(yàn)和狀態(tài),1 表示發(fā)送命令的校驗(yàn)和不正確。 注:接收到應(yīng)答,其中8 位任何一位不為0,表示命令執(zhí)行失敗,原因參考位標(biāo)識(shí)。 記得文件要保存數(shù)據(jù)才可以完全寫(xiě)入sd卡中,文件信息(大小)等才可以更新。 例:55 AA04 00 00 04 保存文件。 5.關(guān)閉文件命令 0x08 該命令為主機(jī)提供關(guān)閉當(dāng)前打開(kāi)的文件的功能。在創(chuàng)建文件、創(chuàng)建文件夾、打開(kāi)文件之前要求關(guān)閉當(dāng) 前打開(kāi)的文件,才可以執(zhí)行這些命令,否則返回失敗。命令格式如下: 0x55 0xaa 0x08 0x00 0x00 0x08 應(yīng)答的數(shù)據(jù)為1 個(gè)字節(jié)的狀態(tài)信息,各位分別代表不同的狀態(tài): Bit 0,SD 卡不存在狀態(tài),1 表示SD 卡不存在; Bit 1,無(wú)定義; Bit 2,無(wú)定義; Bit 3,無(wú)定義; Bit 4,文件系統(tǒng)類型,1 表示不為FAT文件系統(tǒng); Bit 5,系統(tǒng)忙狀態(tài),1 表示系統(tǒng)正處在忙狀態(tài); Bit 6,校驗(yàn)和狀態(tài),1 表示發(fā)送命令的校驗(yàn)和不正確。 注:接收到應(yīng)答,其中8 位任何一位不為0,表示命令執(zhí)行失敗,原因參考位標(biāo)識(shí)。 SD卡讀寫(xiě)模塊程序流程圖如圖4.2所示: file:///C:\Users\ZX\AppData\OICE_15_974FA576_32C1D314_319\msohtmlclip1\01\clip_image030.gif 圖4.2 SD卡讀寫(xiě)模塊程序流程圖 4.2.3 GPS數(shù)據(jù)處理模塊程序GPS接收機(jī)只要處于工作狀態(tài)就會(huì)源源不斷地把接收并計(jì)算出的GPS導(dǎo)航定位信息通過(guò)串口傳送到計(jì)算機(jī)中。GPS定位信息的接收只負(fù)責(zé)從串口接收數(shù)據(jù)并將其放置于緩存,在沒(méi)有進(jìn)一步處理之前緩沖中是一長(zhǎng)串ASCII碼字節(jié)流,這些信息在沒(méi)有經(jīng)過(guò)分類提取之前是無(wú)法加以利用的。因此,必須通過(guò)程序?qū)⒏鱾(gè)字段的信息從緩存字節(jié)流中提取出來(lái)。因此,必須通過(guò)程序?qū)⒏鱾(gè)字段的信息從接收到的字節(jié)流中提取出來(lái),將其轉(zhuǎn)換成實(shí)際意義的,可供高層決策使用的定位信息數(shù)據(jù)。同其他通訊協(xié)議類似,對(duì)GPS信息進(jìn)行提取必須首先明確其幀結(jié)構(gòu)。數(shù)據(jù)幀主要由幀頭、幀尾和幀內(nèi)數(shù)據(jù)組成。對(duì)于不同的數(shù)據(jù)幀,其幀頭是不同的,主要有“$GPGGA”、“$GPGSA”、“$GPGSV”以及“$GPRMC”等。這些幀頭標(biāo)識(shí)了后續(xù)幀內(nèi)數(shù)據(jù)的組成和結(jié)構(gòu)特點(diǎn)。各幀均已回車符<CR>和換行符<LF>作為幀尾,標(biāo)識(shí)一幀的結(jié)束。 對(duì)數(shù)據(jù)幀處理,是先對(duì)幀頭進(jìn)行判斷,然后只對(duì)感興趣的幀進(jìn)行數(shù)據(jù)的提取處理。由于幀內(nèi)各數(shù)據(jù)段被逗號(hào)分割,因此在處理接收數(shù)據(jù)時(shí)一般是首先通過(guò)搜尋ASCII碼“$”來(lái)判斷是否是幀頭,接著對(duì)幀頭的類別進(jìn)行識(shí)別,然后再根據(jù)識(shí)別出來(lái)的幀類型作出相應(yīng)的提取和存儲(chǔ)。 本課題采用的是“$GPRMC”語(yǔ)句,內(nèi)含所需要的時(shí)間、經(jīng)度、緯度及日期等信息。 GPS數(shù)據(jù)處理模塊程序流程圖如圖4.3所示: file:///C:\Users\ZX\AppData\OICE_15_974FA576_32C1D314_319\msohtmlclip1\01\clip_image032.gif 圖4.3 GPS數(shù)據(jù)處理模塊程序流程圖
第5章 系統(tǒng)調(diào)試與結(jié)果分析5.1 概述IAR系統(tǒng)嵌入式 Workbench是一種用于開(kāi)發(fā)應(yīng)用各種不同的目標(biāo)處理器的靈活的集成環(huán)境。它提供一個(gè)方便的窗口界面用于迅速的開(kāi)發(fā)和調(diào)試嵌入式。Workbench支持多種不同的目標(biāo)處理器,用戶用不同的目標(biāo)處理器開(kāi)發(fā)的工程(Projects)可以在工程的基礎(chǔ)上逐個(gè)規(guī)定目標(biāo)工程。 軟件調(diào)試主要是檢查程序編寫(xiě)的語(yǔ)法錯(cuò)誤,即能否正確編譯、單步運(yùn)行時(shí)邏輯上是否正確;然后要把程序下載單片機(jī)內(nèi),看能否實(shí)現(xiàn)系統(tǒng)預(yù)期的功能,這一部分是最為關(guān)鍵的環(huán)節(jié)。 硬件調(diào)試主要是檢查電路連接是否有誤,根據(jù)電路圖逐個(gè)檢查各個(gè)引腳是否連接準(zhǔn)確。硬件調(diào)試的目的是把系統(tǒng)的各個(gè)部分有機(jī)的組合起來(lái),成為一個(gè)整體。 5.2 IAR軟件簡(jiǎn)介IAR Embedded Workbench 是瑞典 IAR Systems 公司為 微處理器開(kāi)發(fā)的一個(gè)集成開(kāi)發(fā)環(huán)境,支持ARM,AVR,MSP430等芯片內(nèi)核平臺(tái)。 IAR EWARM 中包含一個(gè)全軟件的模擬程序(simulator)。用戶不需要任何硬件支持就可以模擬各種ARM 內(nèi)核、外部設(shè)備甚至中斷的軟件運(yùn)行環(huán)境。從中可以了解和評(píng)估IAR EWARM 的功能和使用方法。
IAR EWARM 的主要特點(diǎn)如下:
1、高度優(yōu)化的IAR ARM C/C++ Compiler;
2、IAR ARM Assembler;
3、一個(gè)通用的IAR XLINK Linker;
4、IAR XAR 和XLIB 建庫(kù)程序和IAR DLIB C/C++運(yùn)行庫(kù);
5、功能強(qiáng)大的編輯器;
6、項(xiàng)目管理器;
7、命令行實(shí)用程序;
8、IAR C-SPY 調(diào)試器(先進(jìn)的高級(jí)語(yǔ)言調(diào)試器)。 5.3 軟件調(diào)試方法及步驟5.3.1 系統(tǒng)在IAR軟件的調(diào)試使用該軟件進(jìn)行開(kāi)發(fā)的過(guò)程為,啟動(dòng)軟件后先建立工程文件,命名并保存到指定的文件夾中。在工程文件中建立新的Workspace,命名并保存到指定的文件夾中。在Workspace中創(chuàng)建新文件命名并保存到指定的文件夾中。緊接著需向項(xiàng)目文件中增加程序文件內(nèi)容,可以是新建的程序文件也可以是已經(jīng)創(chuàng)建好的文件。在Option中選擇單片機(jī)芯片型號(hào)(如選擇芯片MSP430F149)和需要的相關(guān)生成文件(如生成可下載到芯片中的.txt文件)。之后即可編譯連接工程文件了,編譯、連接時(shí),如果程序出錯(cuò),則編譯不成功,并在下面的信息窗口給出相應(yīng)的出錯(cuò)提示,以進(jìn)行修改,修改后再編譯、連接,這個(gè)過(guò)程可能會(huì)重復(fù)多次。如果沒(méi)有錯(cuò)誤,則編譯、連接成功,并且信息窗口給出提示信息。 IAR軟件編譯成功后結(jié)果如圖5.1所示:
file:///C:\Users\ZX\AppData\OICE_15_974FA576_32C1D314_319\msohtmlclip1\01\clip_image034.jpg 圖5.1 編譯成功結(jié)果圖 5.3.2 程序下載電路的調(diào)試在程序編譯成功后,在相關(guān)的文件目錄中可以找到生成的需要下載到芯片中的.txt格式文件。具體步驟如下: (1)檢查電路連接; (2)打開(kāi)SF_BSL430.exe程序下載軟件; (3)設(shè)置串口; (4)裝載生成的.txt文件; (5)執(zhí)行。
程序下載過(guò)程界面如圖5.2所示: file:///C:\Users\ZX\AppData\OICE_15_974FA576_32C1D314_319\msohtmlclip1\01\clip_image036.jpg 圖5.2 程序下載過(guò)程界面圖 5.4 整體調(diào)試在程序下載成功后,將單片機(jī)與計(jì)算機(jī)通過(guò)串口線相連,準(zhǔn)備系統(tǒng)的整體調(diào)試。 串行通信接口模塊主要完成的功能是單片機(jī)與計(jì)算機(jī)之間的數(shù)據(jù)傳送。本系統(tǒng)的設(shè)計(jì)采用的是MAX-232通信協(xié)議。在進(jìn)行串行通信接口模塊的調(diào)試時(shí)使用的是串口調(diào)試助手軟件。該軟件使用起來(lái)方便、快捷。不需要通過(guò)鍵盤(pán)和顯示模塊來(lái)調(diào)試,只需要將GPS OEM接收板用串口線與計(jì)算機(jī)相連就可以進(jìn)行調(diào)試。開(kāi)始進(jìn)行調(diào)試的時(shí)候,我們先要設(shè)置一下串口通訊的參數(shù),波特率選擇9600b/s,檢驗(yàn)位None(無(wú)),數(shù)據(jù)值選8,停止位選擇1;
串口參數(shù)設(shè)置如圖5.3所示: file:///C:\Users\ZX\AppData\OICE_15_974FA576_32C1D314_319\msohtmlclip1\01\clip_image038.jpg 圖5.3 串口參數(shù)設(shè)置 在串口調(diào)試助手窗口發(fā)送區(qū)發(fā)送數(shù)據(jù): $GPRMC,101443.00,A,4155.48410,N,12323.86670,E,0.049,255.81,160411,選擇自動(dòng)發(fā)送按鈕,即可將數(shù)據(jù)存儲(chǔ)到SD卡中,在數(shù)據(jù)接收區(qū)可以查看到存儲(chǔ)的數(shù)據(jù)。 5.5 調(diào)試結(jié)果與分析給系統(tǒng)上電之后通過(guò)串口調(diào)試助手發(fā)送數(shù)據(jù),硬件整體效果如圖5.4所示: file:///C:\Users\ZX\AppData\OICE_15_974FA576_32C1D314_319\msohtmlclip1\01\clip_image040.jpg 圖5.4 上電時(shí)電路 斷開(kāi)電源后取出SD卡插入到計(jì)算機(jī)中打開(kāi),可以看到創(chuàng)建的11112222.txt文件。得到界面如圖5.5所示: file:///C:\Users\ZX\AppData\OICE_15_974FA576_32C1D314_319\msohtmlclip1\01\clip_image042.jpg 圖5.5 創(chuàng)建的.txt文件
打開(kāi)文件11112222.txt,文件中的數(shù)據(jù)即為接收到的解析后的GPS數(shù)據(jù)信息,如圖5.6所示: file:///C:\Users\ZX\AppData\OICE_15_974FA576_32C1D314_319\msohtmlclip1\01\clip_image044.jpg 圖5.6 存儲(chǔ)的數(shù)據(jù) 以上即為本設(shè)計(jì)的調(diào)試結(jié)果,基本上實(shí)現(xiàn)了設(shè)計(jì)的預(yù)期要求。但從最后存儲(chǔ)的數(shù)據(jù)可以看到系統(tǒng)在存儲(chǔ)數(shù)據(jù)時(shí)有數(shù)據(jù)缺失,造成此現(xiàn)象的可能原因有: (1) 解析信號(hào)時(shí)解析不完整; (2) 在存儲(chǔ)過(guò)程中造成數(shù)據(jù)丟失。
第6章 經(jīng)濟(jì)與社會(huì)效益分析6.1 經(jīng)濟(jì)效益分析本文介紹的是基于GPS接收模塊的車輛行駛信息記錄系統(tǒng)的設(shè)計(jì),不僅能夠從GPS導(dǎo)航系統(tǒng)獲得時(shí)間、定位信息,而且本系統(tǒng)在設(shè)計(jì)之初就進(jìn)行了成本的預(yù)算,這不僅為生產(chǎn)商考慮了經(jīng)濟(jì)收益,也為使用者考慮了性價(jià)比問(wèn)題。整個(gè)系統(tǒng)的主要器件都比較常見(jiàn),價(jià)格比較合理,尤其存儲(chǔ)部分采用的SD卡讀寫(xiě)模塊在能夠很好的完成顯示的前提下,更具有成本較低的優(yōu)勢(shì)。采用低成本元件實(shí)現(xiàn)高性能的系統(tǒng),可以滿足生產(chǎn)者和使用者的需求。 總之,整個(gè)系統(tǒng)具有硬件電路簡(jiǎn)單、成本低廉、編程方便、性能穩(wěn)定的特點(diǎn),具有一定的使用價(jià)值。 6.2 社會(huì)效益分析隨著汽車擁有量的逐年增加,道路擁擠和交通事故頻頻發(fā)生,這不僅給人們出行帶來(lái)極大不便,而且還涉及到能源浪費(fèi)、環(huán)境污染、人民生命安全等多方面問(wèn)題。如何加強(qiáng)對(duì)車輛的管理,規(guī)范駕駛員的駕駛行為,減少交通事故的發(fā)生,營(yíng)造一個(gè)和諧、通暢的行車環(huán)境己成為交通運(yùn)輸和安全管理部門面臨的一個(gè)重要問(wèn)題 而GPS衛(wèi)星導(dǎo)航全球定位系統(tǒng)自問(wèn)世以來(lái),在導(dǎo)航、定位領(lǐng)域發(fā)展勢(shì)頭迅猛,引起世界各界人士的關(guān)注。具備高精度、全天候、全球覆蓋、高效率、多功能、操作簡(jiǎn)便等特點(diǎn)。廣泛應(yīng)用于地面車輛跟蹤和城市智能交通管理方面。隨著人們對(duì)運(yùn)輸載體的監(jiān)控、跟蹤以及智能化管理要求的提高,GPS在中國(guó)已經(jīng)進(jìn)入爆發(fā)性發(fā)展階段,蘊(yùn)藏著巨大的發(fā)展空間。 所以基于GPS的車輛行駛信息記錄系統(tǒng)的設(shè)計(jì)有著很大的經(jīng)濟(jì)、社會(huì)效益。
結(jié) 論基于GPS的車輛行駛信息記錄系統(tǒng)的設(shè)計(jì)本次到此,就暫告一段落了。雖然系統(tǒng)還不是很完善,比如在存儲(chǔ)數(shù)據(jù)時(shí)有丟失數(shù)據(jù)的問(wèn)題,但調(diào)試結(jié)果基本完成了任務(wù)書(shū)所要求的各項(xiàng)功能和技術(shù)指標(biāo)。 通過(guò)本次設(shè)計(jì)研究,本文所做的工作及研究結(jié)果如下所示: 1 介紹了GPS系統(tǒng)以及GPS接收機(jī)的工作原理; 2 提供了以MSP430單片機(jī)為核心處理器、SD卡讀寫(xiě)模塊為主要部件的系統(tǒng)硬件電路設(shè)計(jì); 3 提供了系統(tǒng)的軟件設(shè)計(jì); 4 完成了系統(tǒng)的調(diào)試。 通過(guò)半年的畢業(yè)設(shè)計(jì),過(guò)程雖然辛苦,但收獲頗豐。在完成畢業(yè)設(shè)計(jì)的過(guò)程中,學(xué)到了許多課堂上老師們沒(méi)有教授過(guò)知識(shí)。這些知識(shí)不是從書(shū)本上就能學(xué)到的,是自己在實(shí)際設(shè)計(jì)和操作中不斷的總結(jié)得出,對(duì)日后的工作具有很大的用處。從一開(kāi)始的查閱資料、理論分析、電路設(shè)計(jì),再到后來(lái)的調(diào)試和硬件測(cè)試過(guò)程,這一切要求將所學(xué)過(guò)的理論知識(shí)和實(shí)踐結(jié)合起來(lái),加強(qiáng)了的理論分析能力和實(shí)踐動(dòng)手能力。 原理圖設(shè)計(jì)、軟硬件調(diào)試的過(guò)程,要求我擁有細(xì)心和耐心。有時(shí)候系統(tǒng)存在一些小問(wèn)題,但就是這些小問(wèn)題而導(dǎo)致系統(tǒng)無(wú)法達(dá)到設(shè)計(jì)的目的甚至所有的設(shè)計(jì)毀于一旦,而這些小問(wèn)題往往可能就是在原理圖設(shè)計(jì)時(shí)一條導(dǎo)線連接錯(cuò)誤;在程序設(shè)計(jì)時(shí),一條語(yǔ)句編寫(xiě)錯(cuò)誤而引起的。所以設(shè)計(jì)系統(tǒng)的過(guò)程要求我們應(yīng)該擁有很大的耐心去不斷的調(diào)試和改正。 善于自學(xué)、認(rèn)真學(xué)習(xí)、耐心體會(huì)、細(xì)心總結(jié),這些優(yōu)點(diǎn)不僅僅可以用于學(xué)習(xí)這門學(xué)科中,還能使我們?cè)诋厴I(yè)后的工作生活獲益匪淺。這半年的畢業(yè)設(shè)計(jì)時(shí)間,讓我學(xué)到很多,也成長(zhǎng)了很多,相信在電子設(shè)計(jì)這條道路上,我會(huì)越走越遠(yuǎn)。
致 謝歲月如梭,回首四年的大學(xué)生活,百感交集。所有的經(jīng)歷,無(wú)論成敗喜憂,都會(huì)成為我面對(duì)未來(lái)生活的財(cái)富儲(chǔ)備。 在此,謹(jǐn)向所有老師四年來(lái)的諄諄教誨,致以最誠(chéng)摯的謝意! 李玉峰院長(zhǎng)在大學(xué)伊始,耐心指導(dǎo),將我領(lǐng)進(jìn)了電子學(xué)的大門。李軒副教授激情洋溢的授課,將精彩豐呈的電子學(xué)世界展現(xiàn)給我。高建平教授慈祥親切、于春和副教授風(fēng)趣幽默,兩位老師讓我更全面地了解電子學(xué)的歷史和現(xiàn)狀。張述杰教授獨(dú)特的視野,讓我明白做人要有自己的特點(diǎn)。 石建民老師的和藹可親,在電子實(shí)訓(xùn)過(guò)程中對(duì)我們的支持與關(guān)注;曲樂(lè)樂(lè)老師對(duì)課堂的投入、對(duì)學(xué)生的關(guān)注;孫琦老師親切又不失嚴(yán)謹(jǐn);江秀紅老師課堂的輕松氛圍;常立東老師的嚴(yán)謹(jǐn)執(zhí)教……這一切,都將是我人生路上,學(xué)習(xí)的榜樣! 畢業(yè)設(shè)計(jì)從最初選題到開(kāi)題答辯,直至后期硬件調(diào)試過(guò)程中,得到了指導(dǎo)老師王爾申副教授的鼎力支持與指導(dǎo),在此致以誠(chéng)摯的謝意!對(duì)實(shí)驗(yàn)室徐嵩等各位老師的支持與幫助,致以誠(chéng)摯的謝意!向杜剛剛、寧剛剛、劉通等同學(xué)的熱情幫助,致以誠(chéng)摯的謝意! 充實(shí)的過(guò)程,讓我在各方面得到鍛煉,獲得成長(zhǎng)。能夠走到今天,離不開(kāi)老師同學(xué)們的幫助、親人朋友們的支持!感激之心拳拳,然而文字單薄,僅能承載萬(wàn)一!
參考文獻(xiàn)[1] 張毅剛,劉杰. 單片機(jī)原理及應(yīng)用[M].哈爾濱工業(yè)大學(xué)出版社. 2004 : 219-226 [2] 周荷琴,吳秀清.微型計(jì)算機(jī)原理與接口技術(shù)[M].中國(guó)科學(xué)技術(shù)大學(xué)出版社.2008 [3] 劉建清. 從零開(kāi)始學(xué)單片機(jī)技術(shù)[M].國(guó)防工業(yè)出版社. 2006 : 249-257 [4] 楊恢先,黃輝先 .單片機(jī)原理及應(yīng)用[M]. 人民郵電出版社. 2006: 146-149 [5] 張?chǎng)? 單片機(jī)原理及應(yīng)用[M].電子工業(yè)出版社. 2005 : 14-22 [6] 何宏. 單片機(jī)原理與接口技術(shù)[M].國(guó)防工業(yè)出版社. 2006 : 256-262 [7] 潘永雄. 新編單片機(jī)原理與應(yīng)用[M].電子科技大學(xué)出版社.2003: 54-63 [8] 雷思孝. 單片機(jī)系統(tǒng)設(shè)計(jì)及工程應(yīng)用[M].西安電子科技大學(xué)出版社.2005:156-168 [9] 龍威山. 單片機(jī)應(yīng)用入門[M].北京大學(xué)出版社.2008: 16-28 [10] 張桂紅. 單片機(jī)原理與應(yīng)用[M].福建科學(xué)技術(shù)出版社.2007:150-157 [11] 張守信編著.GPS技術(shù)與應(yīng)用[M].北京:國(guó)防工業(yè)出版社,2004. [12] 王爾申.GPS接收機(jī)及其應(yīng)用的關(guān)鍵技術(shù)研究[D].大連海事大學(xué)博士論文,2009. [13] 王愛(ài)兵.GPS測(cè)時(shí)的接收機(jī)自主完好性監(jiān)測(cè)算法[D].解放軍信息工程大學(xué)碩士生論文,2007. [14] 張怡群. GPS在精準(zhǔn)農(nóng)業(yè)應(yīng)用中定位精度的實(shí)驗(yàn)研究[C]. 中國(guó)農(nóng)業(yè)工程學(xué)會(huì)學(xué)術(shù)年論文集,2005. [15] 徐進(jìn). GPS接收機(jī)的單片機(jī)通訊接口[J]. 電子器件,2006. [16] GPS接收機(jī)的應(yīng)用于研究[N].科技創(chuàng)新導(dǎo)報(bào),2009. [17] 王密.車載GPS導(dǎo)航系統(tǒng)中GPS定位與道路匹配方法研究[N].武漢測(cè)繪科技大學(xué)學(xué)報(bào),2000. [18] 陳曦紅.GSU-14 GPS接收板與單片機(jī)的接口及信息提取的程序設(shè)計(jì)[N].福建農(nóng)業(yè)大學(xué)學(xué)報(bào),2000. [19] 郭瑞.導(dǎo)航系統(tǒng)接收機(jī)自主完好性監(jiān)測(cè)研究[D]. 鄭州:信息工程大學(xué),2006. [20] 王爾申,張淑芳,胡青. 基于 MCMC 粒子濾波的 GPS 接收機(jī)自主完好性監(jiān)測(cè)算法研究[J]. 儀器儀表學(xué)報(bào), 2009, 30(10):2208-2212. [21] 秦龍.MSP430單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)典型實(shí)例[M].中國(guó)電力出版社,2005. [22] 趙建,謝楷等.MSP430系列十六位超低功耗單片機(jī)教程[M].西安電子科技大學(xué)測(cè)控工程與儀器系,2006年5月. [23] Jimmy.GPS ReceiverModule GP62030-PCT[J].GP62030-ACI Datasheet.2005. [24] GARMINcorporation.GPS25LP Serics Technical Specification,2004. [25] Abel JS.Uniqueness on GPS Soiunons,2005. [26] IgorNikiforov.Statistical analysis of different RAIM schemes of ION GPS,2002.
附錄Ⅰ 電路原理圖file:///C:\Users\ZX\AppData\OICE_15_974FA576_32C1D314_319\msohtmlclip1\01\clip_image046.gif 附錄Ⅱ 程序清單#include<msp430x14x.h> #include"stdio.h" #include"string.h" #include"usart1.h" #define SYS0x01 #define Cre0x02 #defineOpen 0x06 #define Wri0x05 #define Sav0x04 #defineBUSY_SD (P4IN&BIT1)== BIT1 voidSYS_R();//讀取系統(tǒng)狀態(tài) voidsave_file();//保存文件 //向SD卡發(fā)送數(shù)據(jù) voidSto_SD_cmd(unsigned char command/*命令字*/,unsigned int number/*數(shù)據(jù)長(zhǎng)度*/,unsignedchar *date/*待發(fā)送數(shù)據(jù)*/); voidSto_SD_data(unsigned char command/*命令字*/,unsigned int number/*數(shù)據(jù)長(zhǎng)度*/,unsignedlong int addr/*4個(gè)字節(jié)的地址*/,unsignedchar *date/*待發(fā)送數(shù)據(jù)*/); voidSetup_uart1(); ucharFileName[]={"11112222.txt"}; //要建立的文件名 constuchar SYS_state[6]={0x55,0xAA,0x01,0x00,0x00,0x01};//獲取系統(tǒng)狀態(tài) constuchar Cre_files[19]={0x55,0xAA,0x02,0x0D,0x00,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x2E,0x74,0x78,0x74,0x00,0x41}; constuchar Open_files[19]={0x55,0xAA,0x06,0x0D,0x00,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x2E,0x74,0x78,0x74,0x00,0x45}; constuchar Wri_file[19]={0x55,0xAA,0x05,0x0D,0x00,0x00,0x00,0x00,0x00,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0xef,}; constuchar Sav_files[6]={0x55,0xAA,0x04,0x00,0x00,0x04}; uchar Temp_data[50]={0}; ucharDATE_SEND[] = {"09-08-07 25 55 878"}; voiddelay(unsigned long int j) { unsigned long int i ; for(i=0;i<j;i++); } //************************************************************************* // 系統(tǒng)時(shí)鐘初始化 //************************************************************************* /*voidClock_Init() { uchar i; BCSCTL1&=~XT2OFF; //打開(kāi)XT振蕩器 BCSCTL2|=SELM1+SELS; //MCLK為8MHZ,SMCLK為8MHZ do{ IFG1&=~OFIFG; //清除震蕩標(biāo)志 for(i=0;i<100;i++) _NOP(); //延時(shí)等待 } while((IFG1&OFIFG)!=0); //如果標(biāo)志為1,則繼續(xù)循環(huán)等待 IFG1&=~OFIFG; }*/ voidmain(void) { //Clock_Init(); uint num=0; WDTCTL = WDTPW + WDTHOLD; // Stop WDT P4DIR &=~ BIT1; P4SEL &=~ BIT1+BIT0; P4DIR |= BIT0; P4OUT |= BIT0; P2SEL = 0x00; //P2普通I/O P2DIR = 0xFF; //P2輸出 delay(32768); //預(yù)熱1S delay(32768); //預(yù)熱1S delay(32768); //預(yù)熱1S //Setup_uart0(); UART0_Init(); Setup_uart1(); _EINT(); while(1) { //①獲取系統(tǒng)狀態(tài) ⑥⑦⑧⑨ //---------------------------------------------------------------------------- SYS_R();//讀取系統(tǒng)狀態(tài) while(BUSY_SD); //②創(chuàng)建文件 //---------------------------------------------------------------------------- //memcpy(Temp_data,Cre_files,19); //uart_0(19,Temp_data); Sto_SD_cmd(Cre,12,FileName); //while(BUSY_SD); //delay(8000); //③打開(kāi)文件 //---------------------------------------------------------------------------- //memcpy(Temp_data,Open_files,19); //uart_0(19,Temp_data); Sto_SD_cmd(Open,12,FileName); //while(BUSY_SD); //④寫(xiě)入文件 //---------------------------------------------------------------------------- //memcpy(Temp_data,Wri_file,19); //uart_0(19,Temp_data); for(num=0;num<10;num++) { P2OUT=0x00; end_rec=1; while(end_rec); delay(32768); Sto_SD_data(Wri,67,0xffffffff,Gps_Data); //while(BUSY_SD); while(BUSY_SD); P2OUT=0xFF; delay(32768); } //delay(8000); //⑤保存文件 //---------------------------------------------------------------------------- save_file();//保存文件 while(BUSY_SD); for (;;) { delay(65535); P1OUT ^= BIT0; } } } voidSetup_uart1() { P3SEL |= 0xf0; // P3.6,7 = USART1TXD/RXD ME2 |= UTXE1 + URXE1; // Enable USART1 TXD/RXD UCTL1 |= CHAR; // 8-bit character UTCTL1 |= SSEL0; // UCLK = ACLK UBR01 = 0x03; // 32k/9600 - 3.41 UBR11 = 0x00; // UMCTL1 = 0x4A; // Modulation //U1BR1=0x03; //輔助軟件計(jì)算波特率 //U1BR0=0x41; //U1MCTL=0x00; //波特率9600bps UCTL1 &= ~SWRST; // Initialize USARTstate machine //IE2 |= URXIE1; // Enable USART1 RXinterrupt } voiduart_1(int wei,unsigned char *date) { int i=0; while(i<wei) { while (!(IFG2 & UTXIFG1)); // USART1 TX buffer ready? TXBUF1 = date[ i]; //delay(100); i++; } } #pragmavector=UART1RX_VECTOR __interruptvoid usart1_rx (void) { //while (!(IFG2 & UTXIFG1)); // USART1 TX buffer ready? //P2OUT = RXBUF1; // RXBUF1 to TXBUF1 }
//向SD卡發(fā)送命令 voidSto_SD_cmd(unsigned char command/*命令字*/,unsigned int number/*數(shù)據(jù)長(zhǎng)度*/,unsignedchar *date/*待發(fā)送數(shù)據(jù)*/) { unsigned int i=0; unsigned char CRC=0; //發(fā)送報(bào)文頭 55 aa while (!(IFG2 & UTXIFG1)); // USART1 TX buffer ready? TXBUF1 = 0x55; while (!(IFG2 & UTXIFG1)); // USART1 TX buffer ready? TXBUF1 = 0xaa; //發(fā)送命令字 while (!(IFG2 & UTXIFG1)); // USART1 TX buffer ready? TXBUF1 = command; CRC += command; //發(fā)送數(shù)據(jù)長(zhǎng)度 while (!(IFG2 & UTXIFG1)); // USART1 TX buffer ready? TXBUF1 = number%256; CRC += (number%256); while (!(IFG2 & UTXIFG1)); // USART1 TX buffer ready? TXBUF1 = number/256; CRC += (number/256); i=0; //發(fā)送數(shù)據(jù)--串口0 while(i<number) { while (!(IFG2 & UTXIFG1)); // USART1 TX buffer ready? TXBUF1 = date[ i]; CRC += date[ i]; delay(150); i++; } //發(fā)送校驗(yàn)和 while (!(IFG2 & UTXIFG1)); // USART1 TX buffer ready? TXBUF1 = CRC; } //向SD卡發(fā)送數(shù)據(jù) voidSto_SD_data(unsigned char command/*命令字*/,unsigned int number/*數(shù)據(jù)長(zhǎng)度*/,unsignedlong int addr/*4個(gè)字節(jié)的地址*/,unsignedchar *date/*待發(fā)送數(shù)據(jù)*/) { unsigned int i=0; unsigned char CRC=0; //發(fā)送報(bào)文頭 55 aa while (!(IFG2 & UTXIFG1)); // USART1 TX buffer ready? TXBUF1 = 0x55; while (!(IFG2 & UTXIFG1)); // USART1 TX buffer ready? TXBUF1 = 0xaa; //發(fā)送命令字 while (!(IFG2 & UTXIFG1)); // USART1 TX buffer ready? TXBUF1 = command; CRC += command; //發(fā)送數(shù)據(jù)長(zhǎng)度 while (!(IFG2 & UTXIFG1)); // USART1 TX buffer ready? TXBUF1 = number%256; CRC += (number%256); while (!(IFG2 & UTXIFG1)); // USART1 TX buffer ready? TXBUF1 = number/256; CRC += (number/256); //發(fā)送地址 while (!(IFG2 & UTXIFG1)); // USART1 TX buffer ready? TXBUF1 = addr%256; CRC += (addr%256); while (!(IFG2 & UTXIFG1)); // USART1 TX buffer ready? TXBUF1 = (addr/256)%256; CRC += (addr/256)%256; while (!(IFG2 & UTXIFG1)); // USART1 TX buffer ready? TXBUF1 = ((addr/256)/256)%256; CRC += ((addr/256)/256)%256; while (!(IFG2 & UTXIFG1)); // USART1 TX buffer ready? TXBUF1 = ((addr/256)/256)/256; CRC += ((addr/256)/256)/256; i=0; //發(fā)送數(shù)據(jù)--串口0 while(i<number-4) { while (!(IFG2 & UTXIFG1)); // USART1 TX buffer ready? TXBUF1 = date[ i]; CRC += date[ i]; delay(100); i++; } //發(fā)送校驗(yàn)和 while (!(IFG2 & UTXIFG1)); // USART1 TX buffer ready? TXBUF1 = CRC; } voidSYS_R()//讀取系統(tǒng)狀態(tài) { memcpy(Temp_data,SYS_state,6); uart_1(6,Temp_data); } voidsave_file()//保存文件 { memcpy(Temp_data,Sav_files,6); uart_1(6,Temp_data); } |