輪胎壓力監(jiān)測系統(tǒng)的設(shè)計畢業(yè)論文_第1頁
輪胎壓力監(jiān)測系統(tǒng)的設(shè)計畢業(yè)論文_第2頁
輪胎壓力監(jiān)測系統(tǒng)的設(shè)計畢業(yè)論文_第3頁
輪胎壓力監(jiān)測系統(tǒng)的設(shè)計畢業(yè)論文_第4頁
輪胎壓力監(jiān)測系統(tǒng)的設(shè)計畢業(yè)論文_第5頁
已閱讀5頁,還剩106頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

本科畢業(yè)論文(設(shè)計)輪胎壓力監(jiān)測系統(tǒng)的設(shè)計(部)信息工程系測控技術(shù)與儀器學(xué)生姓名指導(dǎo)教師劉秀敏提交日期I摘要隨著汽車工業(yè)的發(fā)展和道路交通網(wǎng)絡(luò)的不斷擴(kuò)展,隨之引起的交通事故在不斷增多,輪胎內(nèi)部的壓力異常已經(jīng)成為汽車能否安全行駛的重要因素之一,汽車的行駛安全問題也越來越受到大眾的關(guān)注。經(jīng)過大量的實驗研究表明,當(dāng)汽車行駛在正常的輪胎充氣壓力和溫度下,可以最大限度的防止爆胎的發(fā)生?,F(xiàn)階段,TPMS的研究方法有兩種:間接式TPMS和直接式TPMS。本設(shè)計是基于STC89C52單片機(jī)的直接式輪胎壓力監(jiān)測系統(tǒng),通過壓力傳感器BMP085來采集壓力、溫度信號,然后采用無線通信發(fā)射接收模塊nRF24L01進(jìn)行數(shù)據(jù)傳輸,數(shù)據(jù)經(jīng)過STC89C52處理后,顯示在LCD12864液晶屏上,實現(xiàn)氣壓、溫度的無線測量與顯示,并且當(dāng)壓力值高于或低于允許正常范圍值時發(fā)出報警。對于設(shè)計本身而言具有使用方便,數(shù)據(jù)準(zhǔn)確,便于維修等特點(diǎn)。而且設(shè)計還具有二度開發(fā)的潛在性。關(guān)鍵詞:STC89C52,輪胎壓力,無線通信,監(jiān)測Withthecontinuousexpansionofthedevelopmentoftheautomotiveindustryandroadtransportnetwork,trafficaccidentsconsequentontherise,abnormaltirepressurehasbecomeanimportantfactorinwhetheramotorvehiclesafety,securityissuesaremoreandmorecarspublicconcern.Afteranumberofexperimentalstudieshaveshownthatwhencarswithtiresinflatedatnormalpressureandtemperature,cangreatlyreducetheincidenceofpuncture.Stage,TPMSsolutionsintwoways:IndirectandDirectTPMSTPMS.ThedesignisbasedmicrocontrollerSTC89C52directtirepressuremonitoringsystem,throughthepressuresensorBMP085tocollectpressure,temperaturesignalandthentransmittingandreceivingmodulenRF24L01wirelesscommunicationsfordatatransmission,dataprocessingafterSTC89C52,LCD12864displayedontheLCDscreen,achievepressure,wirelesstemperaturemeasurementanddisplay,andanalarmwhenthepressureisaboveorbelowthenormalrangeallowed.Forthedesignitselfiseasytouse,accuratedataforeasymaintenance.Andthedesignalsohasthepotentialtodevelopasecondtime.Keywords:STC89C52tirepressurewirelesscommunicationsmonitoring1 21.1選題目的和意義 1.2本選題在國內(nèi)外的研究狀況及發(fā)展趨勢 2第2章系統(tǒng)功能介紹 42.1系統(tǒng)功能設(shè)計 42.2系統(tǒng)總體設(shè)計方案 4第3章硬件電路設(shè)計 53.1主控模塊 3.1.1STC89C52介紹 3.1.2STC89C52單片機(jī)最小系統(tǒng) 6 3.3氣壓、溫度檢測模塊 73.4無線發(fā)射接收模塊 8 83.4.2nRF24L01工作原理 93.4.3無線發(fā)射接收電路圖 93.5顯示模塊 3.6按鍵模塊 3.7報警模塊 3.8串口通訊模塊 第4章系統(tǒng)軟件設(shè)計 4.1主程序流程圖 4.2子程序流程圖 4.2.1氣壓及溫度模塊子程序 4.2.2無線通信發(fā)送接收模塊子程序 4.2.3顯示子程序 參考文獻(xiàn) 中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)2第1章引言汽車時代的到來,改變的不僅僅是人們的代步方式,更有人們的生活方式乃至整個社會的文化。同樣,一個時代的典型核心技術(shù)產(chǎn)品也帶動著整個產(chǎn)業(yè)的技術(shù)發(fā)展趨勢。隨著家用汽車對現(xiàn)代家庭日常生活的沖擊,汽車的行駛安全,不僅僅體現(xiàn)了汽車的性能,更代表著未來汽車工程技術(shù)與相關(guān)科技的發(fā)展方向。智能化系統(tǒng)在我們?nèi)粘I钪械膽?yīng)用越來越廣泛,為社會的文明進(jìn)步、經(jīng)濟(jì)的繁榮發(fā)展保駕護(hù)航,同時也被大量地應(yīng)用到汽車等相關(guān)產(chǎn)品上口。把現(xiàn)代電子科學(xué)技術(shù)的發(fā)展成果應(yīng)用到汽車電子技術(shù)當(dāng)中,必將大大增加汽車行駛的穩(wěn)定性和安全性。1.1選題目的和意義輪胎是汽車重要的組成部分之一,有實驗表明,行駛在道路上的車輛,影響輪胎性能的主要因素來自于是汽車輪胎內(nèi)部的充氣壓力。輪胎內(nèi)部的充氣壓力偏高或者偏低,都會使輪胎的整體性能和使用壽命帶來很大的影響。輪胎內(nèi)部的氣壓過高時,輪胎與地面接觸面積變小,輪胎外表面的中部區(qū)域承受的壓力增高,磨損加劇,輪胎的底部花紋開裂。此時輪胎的剛度增大,起不到應(yīng)有的緩沖作用,汽車的穩(wěn)定性降低,輪胎的回正力矩變小,從而促使汽車的可操作性能降低。在行駛途中如果遇到障礙物,容易致使輪胎發(fā)生破裂,導(dǎo)致輪胎的整體性能下降和使用壽命縮短。而輪胎與行駛路面之間動載荷增大,表明輪胎與路面之間的最小正壓力減小,從而降低車輪本身的地面附著力,影響汽車的行駛安全性。氣壓不足同樣對輪胎有很大的影響,有資料表明,約有85%有缺陷的輪胎始于慢滲氣(自然滲透),有25%的輪胎損壞是由于慢滲氣造成的。因此由輪胎氣壓引起的交通事故比例較高,也是突發(fā)性交通事故發(fā)生的重要原因。怎樣防止爆胎已成為安全駕駛的一個重要課題。使得人們對輪胎內(nèi)部的充氣壓力關(guān)注日益密切。輪胎壓力監(jiān)測技術(shù)是一種能切實有效的防止和減少由于輪胎引起交通事故的方法。通過在汽車行駛過程中時實時的對輪胎氣壓進(jìn)行監(jiān)測,對輪胎內(nèi)部的低氣壓值進(jìn)行顯示報警,從而達(dá)到保持標(biāo)準(zhǔn)的車胎內(nèi)部氣壓和及時發(fā)現(xiàn)車胎漏氣的目的。進(jìn)而才能保障行車安全,保障司機(jī)、乘客的生命安全。1.2本選題在國內(nèi)外的研究狀況及發(fā)展趨勢據(jù)有關(guān)專家的分析,防止爆胎的關(guān)鍵在于應(yīng)該實時保持在正常的輪胎氣壓下行駛。據(jù)美國汽車相關(guān)調(diào)查機(jī)構(gòu)調(diào)查,在美國由于輪胎內(nèi)部的氣壓低或漏氣所引發(fā)的交通事故每年大約有26萬起,所以美國政府要加大了對汽車相關(guān)制造商的支持力3度,加速發(fā)展了TPMS系統(tǒng),以便挽回巨大的經(jīng)濟(jì)損失和重大的人員傷亡國外許多國家(像美國、日本等)已先后立法,要求在今后幾年內(nèi)實現(xiàn)汽車全部安裝TPMS,美國TPMS裝備已經(jīng)非常普及。目前,已經(jīng)有了相關(guān)傳感器模塊將所要測試的各個數(shù)據(jù)的傳感器與微控制單元合二為一的智能傳感器模塊,如GENPX,以便滿足TPMS對IC高可靠性和高整合度的要求2TPMS的研究在中國剛剛起步。目前大部分廠家都處在研究開發(fā)階段,出貨量不高。全國開展TPMS研究的廠家接近200家,專業(yè)的TPMS廠家大約為30家。TPMS零組件主要靠進(jìn)口,缺乏自主知識產(chǎn)權(quán)的產(chǎn)品。目前國外帶電池的TPMS系統(tǒng)相對己經(jīng)比較成熟,主要在進(jìn)行無源TPMS系統(tǒng)的研究,如利用SAW這類無源器件頻率的變化來監(jiān)測輪胎壓力變化。上海交通大學(xué)也開始基于聲表面波技術(shù)的TPMS開發(fā)研究,這種能同時測量輪胎內(nèi)壓力、溫度和發(fā)射數(shù)據(jù)的SAW傳感器,不僅可實現(xiàn)智能輪胎信息的無源測量和無線發(fā)送,并且將擁有中國人自主的知識產(chǎn)權(quán)。隨著高新技術(shù)的發(fā)展和現(xiàn)代汽車不斷趨向高性能化,汽車用的輪胎也從長期的性能時代,開始進(jìn)入功能化的新時期。當(dāng)然,現(xiàn)代汽車的安全配置也在不斷得到完善,如安全帶、安全氣囊、防撞桿等被廣泛運(yùn)用,不過這些都是屬于交通事故發(fā)生后,才能對人、車起到保護(hù)作用的被動安全裝置。然而輪胎爆胎預(yù)警系統(tǒng),則不同于上述的裝置,它在輪胎一出現(xiàn)危險征兆時就能夠及時發(fā)現(xiàn)并同時報警,最大限度地將事故消滅在萌芽狀態(tài),從而極大地提升了車輛高速行駛的安全性,這一優(yōu)勢在高速公路上表現(xiàn)更為明顯3]。中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)4第2章系統(tǒng)功能介紹(1)采用壓力、溫度傳感器來監(jiān)測汽車輪胎內(nèi)的壓力和溫度;(2)顯示當(dāng)前輪胎的壓力及溫度值;(3)通過無線發(fā)射模塊將測量值發(fā)射出去,用接收模塊接收壓力溫度信息,并通過液晶屏顯示;(4)當(dāng)壓力值高于或低于允許正常范圍值時發(fā)出報警;(5)控制最大探測壓強(qiáng):0.99MPa該系統(tǒng)設(shè)計以STC89C52為主控芯片實現(xiàn)壓力采集及其壓力控制,壓力、溫度信號采集使用BMP085壓力傳感器,信號發(fā)送采用NRF24L01無線發(fā)送接收芯片,利用LCD12864進(jìn)行液晶顯示。當(dāng)輪胎漏氣和低氣壓情況時,蜂鳴器報警,LED指示燈點(diǎn)亮。按鍵設(shè)計采用復(fù)位按鍵進(jìn)行對壓力上下限的調(diào)節(jié)。輪胎壓力無線監(jiān)測系統(tǒng)包括無線發(fā)射部分和無線接收部分。無線發(fā)射部分包括壓力傳感器模塊、單片機(jī)主控制模塊。無線接收部分包括無線接收模塊、單片機(jī)主控制模塊。系統(tǒng)整體設(shè)計框圖如圖2-1所示。按鍵電路調(diào)節(jié)壓力上下限按鍵電路調(diào)節(jié)壓力上下限BMP085采集壓力溫度數(shù)據(jù)LCD12864顯示溫度壓力報警電路線通信數(shù)據(jù)發(fā)送線通信數(shù)據(jù)接收STC89C52STC89C5圖2-1系統(tǒng)框圖中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)5第3章硬件電路設(shè)計3.1主控模塊STC89C52是STC公司生產(chǎn)的一種具有低功耗、高性能的CMOS8位微控制器。STC89C52使用和MCS-51一樣的內(nèi)核,但做了很多的改進(jìn)使得芯片具有傳統(tǒng)51單片機(jī)不具備的功能。STC89C52在很多嵌入式控制系統(tǒng)中提供了高靈活、高效率的解決方案。其具有的標(biāo)準(zhǔn)功能:8k字節(jié)的Flash,512字節(jié)的RAM,32位I/O口線,內(nèi)置4KBEEPROM,看門狗定時器,MAX810復(fù)位電路,3個16位定時器/計數(shù)器,全雙工串行口。4個外部中斷,一個7向量4級中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級中斷的結(jié)構(gòu))。本設(shè)計電路中STC89C52單片機(jī)的電路圖如圖3-1所示。PLC(T2)P11T2E)P11P13P+SMOSJP3:2/INTOP3.5T1)EAVPPXTAEIESIB7D59P0058P0133P0434P0535P0s2290721_P20?2224?2525~P2425P25 11P1IXD(AD0)P0.0(AD1)PD.1(AD2)P02(AD5)PU3(AD4)P04(AD5)P05(AD6)P0.6(AD7^P0.7(AS)P20(A1)P2svcCRXD)P3.0TXDP31AEERGPSENP10TPTPPPP2P32vccXTAL!2361了6Ⅱ1在設(shè)計過程當(dāng)中,單片機(jī)的PO口用于LCD12864顯示,P1.0-P1.4無線發(fā)射模接氣壓監(jiān)測模塊,P2.0連接蜂鳴報警器,XTAL1和XTAL2是晶振模塊等。工作過程:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,之所以它可用作對外部輸出的脈沖或用于定時目的,因為此頻率為振蕩器頻率的1/6?]。中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)6晶振電路晶振電路STC89C52單片機(jī)在整個電路板的連接中起主導(dǎo)控制作用,STC89C52是一種高性價比的CMOS8位微控制器,具有8K可編程FLASH存儲器。512字節(jié)RAM,32位I/O口線,看門狗定時器,內(nèi)置4KBEEPROM,MAX810復(fù)位電路,3個16位定時器/計數(shù)器,4個外部中斷,一個7向量4級中斷結(jié)構(gòu)全雙工串行口。最小系統(tǒng)由復(fù)位電路以及晶振電路組成。當(dāng)單片機(jī)復(fù)位端口有高電平信號并且超過2個機(jī)器周期的時單片機(jī)復(fù)位。復(fù)位電路如圖3-2所示。晶振電路常采用12M晶振作為系統(tǒng)的時鐘。晶振電路如圖3-3所示。XTALI圖3-3晶振電路中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)7本次設(shè)計需要采用5V電源為單片機(jī)、傳感器、蜂鳴報警器等一系列元件供電。但無線接收發(fā)送模塊需要以3.3V電源供電,故需要用型號為AMS1117的3.3V穩(wěn)壓芯片將5V電源轉(zhuǎn)換成3.3V電源供無線接收發(fā)送模塊使用。AMS1117系列穩(wěn)壓器在我們?nèi)粘?yīng)用中有可調(diào)版式與其他多種固定電壓版式,本次設(shè)計工程中用AMS1117用于提供工作壓差可低至1V且為1A的輸出電流。在輸出最大電流時,AMS器件的電壓差最大不能超過1.3V,并且跟隨負(fù)載電流的減小而減小0。本設(shè)計采用的AMS固定電壓版式。在AMS1117固定電壓版式3.3V的片上把基準(zhǔn)電壓進(jìn)行微調(diào)整,直到誤差控制到1.5%以內(nèi),以便盡量降低因電源電路超載和穩(wěn)壓器而帶來的負(fù)荷。AMS1117器件的引腳上兼容其他三端SCSI穩(wěn)壓器,提供使用貼片安裝的SOT-223,8引腳SOIC,和TO-252(DPAK)塑料封裝。AMS1117內(nèi)部集成過熱保護(hù)和限流電路,是電池供電和便攜式計算機(jī)的最佳選擇。有以下特點(diǎn):1、固定輸出電壓為1.5V、1.8V、2.5V、2.85V、3.0V、3.3V、5.0V和可調(diào)版本,2、具有1%的精度。4、低漏失電壓:1A輸出電流時僅為1.2V本次電源模塊選用ASM1117,其三端可調(diào)或固定電壓3.3V輸出電流為1A,工作結(jié)溫范圍:-40-125°C。電源模塊如圖3-4所示。圖3-4電源模塊3.3氣壓、溫度檢測模塊本次壓力、溫度監(jiān)測模塊采用BMPO85數(shù)字氣壓傳感器,可以直接通過編程讀中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)8VDDDVDDDXCLR取氣壓溫度數(shù)據(jù),并且是一款高精度、超低能耗的壓力傳感器,在移動設(shè)備中都有應(yīng)用。它的性能優(yōu)越,絕對精度最低可以達(dá)到0.03hPa,極低的功耗,只有3uA。BMPO85采用強(qiáng)大的8-pin陶瓷無引線芯片承載(LCC)超薄封裝,可以通過IIC總線直接與多種微處理器進(jìn)行相連。BMPO85氣壓、溫度傳感器是利用電壓電阻技術(shù)對EMC的穩(wěn)定性,線性度,高準(zhǔn)確度和長期穩(wěn)定性。BMPO85應(yīng)用程序被廣泛在、航位推測、GPS導(dǎo)航的增強(qiáng)、內(nèi)外部導(dǎo)航、健康監(jiān)測、天氣預(yù)測、風(fēng)機(jī)功率控XCLRXCLR氣壓溫度檢測模塊7VDDA寸KK652NO氣壓溫度檢測模塊如圖3-5所示。圖3-5氣壓溫度檢測模塊3.4無線發(fā)射接收模塊無線發(fā)射接收模塊是連接數(shù)據(jù)采集發(fā)射部分和數(shù)據(jù)接收控制部分的重要元件,也是單片機(jī)之間傳送數(shù)據(jù)的重要組成。本設(shè)計中為方便使用,成本低而且使用方便。故設(shè)計中無線發(fā)送接收模塊采用nRF24L01,它是一款無線通信發(fā)送接收芯片,工作頻率為2.4~2.5GHz。是通過SPI接口設(shè)置輸出功率、頻道選擇以及協(xié)議。nRF24L01在發(fā)射模式下的發(fā)射功率為-6dBm時電流的消耗僅為為9mA,在接收模式時電流的消耗為12.3mA。在待機(jī)模式和掉電模式時電流消耗更低。2、具有自動應(yīng)答和自動再發(fā)射功能;中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)93、數(shù)據(jù)傳輸率為1Mb/s或2Mb/s;4、SPI速率為0Mb/s~10Mb/s;(2)nRF24L01引腳簡介如表3-1所示。表3-1nRF24L01引腳功能使能端發(fā)射或接收CSNSPI引腳端,微處理器可通過此引腳配置nRF24L01中斷標(biāo)志位VDD電源輸入端VSS電源地晶體振蕩器引腳VDDPA晶體振蕩器引腳為功率放大器供電,輸出為1.8V參考電流輸入在發(fā)射經(jīng)過單片機(jī)處理后的數(shù)據(jù)時,先將nRF24L01設(shè)置為發(fā)射模式,然后把接收節(jié)點(diǎn)的地址TXADDR和有效數(shù)據(jù)TXPLD按照時序由SPI口寫入nRF24L01緩存區(qū),TXPLD必須在CSN為低時連續(xù)寫入,TXADDR在發(fā)射時寫入一次即可,然后CE置為高電平并保持至少10μs,延遲130μs后發(fā)射數(shù)據(jù);如果自動應(yīng)答開啟,那么nRF24L01在發(fā)射數(shù)據(jù)后直接進(jìn)入接收模式,接收應(yīng)答信號(自動應(yīng)答接收地址應(yīng)該與接收節(jié)點(diǎn)地址TXADDR一致)。如果收到應(yīng)答,則認(rèn)為此次通信成射該數(shù)據(jù)(自動重發(fā)已開啟),若重發(fā)次數(shù)(ARC)達(dá)到上限,MAX_RT置高,TXFIFO中數(shù)據(jù)保留以便在次重發(fā);MAX_RT或TX_DS置高時,使IRQ變低,產(chǎn)生中斷,通知MCU。最后發(fā)射成功時,若CE為低則nRF24L01進(jìn)入空閑模式1;若發(fā)送堆棧中有數(shù)據(jù)且CE為高,則進(jìn)入下一次發(fā)射;若發(fā)送堆棧中無數(shù)據(jù)且CE為高10]。無線發(fā)射接收模塊如圖3-6所示。圖3-6無線發(fā)射接收模塊3.5顯示模塊顯示電路部分采用LCD12864。選用LCD12864的主要原因是LCD12864自帶漢字庫可以直接顯示漢字,并且屏幕較大。LCD12864是一種具有4位和8位并行、2線或3線串行的多種接口方式,含有國標(biāo)一級、二級簡體中文字庫的點(diǎn)陣圖形的液晶顯示模塊。其顯示的分辨率為128×64,內(nèi)置8192個16*16點(diǎn)漢字,和128個16*8的點(diǎn)ASCⅡ字符集。利用該模塊靈活的接口方式和方便的操作指令,可構(gòu)成全中文人機(jī)交互圖形界面,可以顯示8×4行16×16的點(diǎn)陣漢字,也可完成圖形顯示。低電壓低功耗是其又一顯著特點(diǎn),由該模塊構(gòu)成的液晶顯示方案與同類型的圖形點(diǎn)陣液晶顯示模塊相比,不論硬件電路結(jié)構(gòu)或顯示程序都要簡潔得多,且該模塊的價格也略低于相同點(diǎn)陣的圖形液晶模塊。顯示模塊LCD12864實現(xiàn)電路圖如圖3-7所示。中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)圖3-7顯示模塊按鍵設(shè)計采用的是復(fù)位按鍵,用來調(diào)節(jié)壓力上下限。單片機(jī)上電后所有I/0口均為高電平,故當(dāng)檢測到低電平的時候單片機(jī)就會相應(yīng)的做出動作。由于軟件設(shè)計使用的是外部中斷1作為按鍵程序的入口,所以按鍵公共端口為地端。按鍵電路如圖3-8所示2]。KEY?KEY?XEY]n按鍵電路圖3-8按鍵模塊報警電路采用的無源蜂鳴器,無源蜂鳴器是流控器件,低電平觸發(fā)。在額定范圍內(nèi)蜂鳴器的響度隨著電流的增大而增大。通過編程控制來固定頻率。設(shè)計采用的S8550PNP型三極管,理論放大值為128倍容易實現(xiàn)深度飽和。采用1K電阻作為限流電阻防止三極管燒毀。報警電路如圖3-9所示。中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)報警電路R15P20WP20Res1PNP圖3-9報警模塊3.8串口通訊模塊串口通信,是指外設(shè)和計算機(jī)間,通過數(shù)據(jù)信號線、地線、控制線等,按位進(jìn)行傳輸數(shù)據(jù)的一種通訊方式。設(shè)計當(dāng)中串口通訊電路采用MAX232,該芯片是美信公司專門為電腦的RS-232標(biāo)準(zhǔn)串口設(shè)計的單電源電平轉(zhuǎn)換芯片,使用+5v單電源供電。利用串口可以實現(xiàn)與PC機(jī)的通訊,對于系統(tǒng)的二度開發(fā)有一定的意義。串口通訊電路如圖3-10所示[3]。圖3-10串口通訊電路中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)第4章系統(tǒng)軟件設(shè)計先由數(shù)字氣壓傳感器BMP085讀取當(dāng)前氣壓值和溫度值,并且使用IC數(shù)據(jù)傳輸協(xié)議將氣壓和溫度的數(shù)字信號傳輸?shù)絾纹瑱C(jī)中。STC89C52單片機(jī)經(jīng)過運(yùn)算處理之后將所得到的二進(jìn)制數(shù)字信號轉(zhuǎn)換成十進(jìn)制數(shù)據(jù),隨后單片機(jī)控制無線收發(fā)模塊nRF24L01將數(shù)據(jù)發(fā)送至另一塊無線收發(fā)模塊,由另一塊nRF24L01模塊進(jìn)行數(shù)據(jù)接收,然后將接收到的數(shù)據(jù)傳入單片機(jī)由單片機(jī)進(jìn)行數(shù)據(jù)解析,并且在LCD12864液晶顯示屏上進(jìn)行顯示。單片機(jī)可以根據(jù)所接受到的數(shù)據(jù)與程序設(shè)定的溫度和壓力范圍進(jìn)行比較,如果超出溫度和壓力的范圍則單片機(jī)會控制蜂鳴器報警,直到接收到的數(shù)據(jù)正常為止。主程序流程圖如圖41所示。LLCD128G設(shè)置NRF24L01為發(fā)射模C號設(shè)置NRF24LO1據(jù)角軍析采集壓力、溫?fù)?jù)YLO1居NRF24LO1圖4-1主程序流程圖中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)4.2子程序流程圖氣壓、溫度模塊子程序流程圖如下圖4-2所示。圖4-2氣壓、溫度模塊子程序流程圖BMP085使用的是IC通訊協(xié)議,該通訊協(xié)議使用廣泛,格式固定。所以對于該部分的程序設(shè)計也會相對容易一些,但是由于IC協(xié)議對于時序的要求較高所以在程序設(shè)計方面更加注重延時程序的設(shè)計,以保證程序可以順利運(yùn)行。IC協(xié)議從START信號開始,STOP信號結(jié)束,通過SCL和SDA來控制數(shù)據(jù)的傳輸,開始時SCL拉高,SDA拉低,延時一段時間后從器件將會發(fā)送地址到主控器件,在7位地址之后就可以進(jìn)行控制讀寫位的操作,如果從器件接收到信號則會回發(fā)一個相應(yīng)的應(yīng)答信號,第九個時鐘信號結(jié)束SDA拉低,SCL保持高電平。中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)則這次數(shù)據(jù)傳輸結(jié)束15。時序圖如圖43所示。condton圖4-3IIC讀寫時序圖conaiton參考程序如下:{{//移出數(shù)據(jù)的最高位從IC總線接收一個字節(jié)數(shù)據(jù)BYTEBMP085_RecvByte)BYTEi;中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)for(i=0;i<8;i++)Delay5us();//拉低時鐘線Delay5us();4.2.2無線通信發(fā)送接收模塊子程序無線通信發(fā)送接收模塊子程序流程圖如下圖4-4所示。開始設(shè)置發(fā)射數(shù)據(jù)格式設(shè)置發(fā)射地址發(fā)送數(shù)NRF24發(fā)送數(shù)據(jù)設(shè)置接收地址接收數(shù)NRF24接收數(shù)據(jù)數(shù)據(jù)解析圖4-4無線通信發(fā)送接收模塊子程序流程圖中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)無線通訊模塊nRF24L01使用的是SPI方式進(jìn)行輸出的傳輸,由于無線傳輸?shù)母蓴_性在一定情況下較強(qiáng),所以就需要在程序設(shè)計方面進(jìn)行一些控制,實現(xiàn)數(shù)據(jù)的校驗以及數(shù)據(jù)發(fā)射數(shù)據(jù)接收后的能夠及時的相應(yīng)或者發(fā)射成功的信號,這樣可以保證程序的穩(wěn)定性,SPI讀時序如圖4-5所示。NNMKMC*|包口四四口回應(yīng)口根據(jù)SPI讀時序圖可知,控制SPI總線的四個端口即可是實現(xiàn)對數(shù)據(jù)的寫入,這樣程序只要在開始讀取時序時將CSN由高拉低CSN,并且拉低時鐘線SCK,然后通過產(chǎn)生時鐘信號就可以實現(xiàn)對MISO口的數(shù)據(jù)讀取,每個時鐘信號就可以讀出一位數(shù)據(jù),八個時鐘周期即可完成對一個字節(jié)數(shù)據(jù)的讀取,然后延時一段時間后就可以實現(xiàn)對第二個字節(jié)數(shù)據(jù)的讀取,讀出數(shù)據(jù)結(jié)束后需要將,SCN拉高,這樣就可以完成一個完整的數(shù)據(jù)讀取。參考程序如下:ucharSPI_Read_Buf(ucharreg,uchar*pBuf,ucharbytes)for(i=0;i<bytes;i++)pBuf[i]=SPI_RW(0);return(status);SPI寫時序圖如圖4-6所示。//CSN置低,開始傳輸數(shù)據(jù)//選擇寄存器,同時返回狀態(tài)字//逐個字節(jié)從nRF24L01讀出//CSN拉高,結(jié)束數(shù)據(jù)傳輸//返回狀態(tài)寄存器sckUUUUUUULLUUUUuMSO—口口國回回Uuuuu中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)同讀取數(shù)據(jù)類似,也許開始時將CSN拉低,并且產(chǎn)生固定的時鐘信號,這樣就可以在每個時鐘信號的上升沿將一位數(shù)據(jù)從MOSI口寫入,重復(fù)發(fā)次時鐘信號就可以完成對一個字節(jié)數(shù)據(jù)的寫入。同樣寫入完成后需要將CSN口拉高,完成本次ucharSPI_Write_Buf(ucharreg,uchar*pBuf,ucharbytes)ucharstatus,i;status=SPI_RW(reg);for(i=0;i<bytes;i++)SPI_RW(pBuf[])CSN=1;return(status);//CSN置低,開始傳輸數(shù)據(jù)//選擇寄存器,同時返回狀態(tài)字//逐個字節(jié)寫入nRF24L01//CSN拉高,結(jié)束數(shù)據(jù)傳輸//返回狀態(tài)寄存器顯示模塊使用LCD12864液晶顯示,支持串行數(shù)據(jù)傳輸及并行數(shù)據(jù)傳輸。顯示子程序使用的是LCD12864并行數(shù)據(jù)傳輸方式。根據(jù)LCD12864讀寫時序圖即可完成對LCD12864的控制。顯示子程序流程圖如下圖4-7所示。開始開始圖4-7顯示模塊子程序流程圖中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)由于對于程序并沒有用到對LCD12864的寫入操作,不在過多敘述,但是對于LCD12864的數(shù)據(jù)寫入及其顯示是該程序設(shè)計部分的重點(diǎn)。LCD12864寫入時序圖LCD12864寫時序圖如圖4-8所示??谟傻碗娖嚼?。并且經(jīng)過一段延時后將數(shù)據(jù)寫入在并行接口上。數(shù)據(jù)寫入后經(jīng)過一段時間將RS拉高,R/W拉高,E端口拉低。完成一個字節(jié)的數(shù)據(jù)寫同時寫入程序分為寫入命令和寫入所顯示數(shù)據(jù),寫入命令是直接更改LCD12864內(nèi)部寄存器的參數(shù),而寫入所顯示數(shù)據(jù)則寫入的數(shù)據(jù)相應(yīng)的ASCLL碼或者漢字庫里自帶的漢字。參考程序如下:while(lcd_busy0);/************************************************/voidlcd_wemd(ucharcmd)中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)while(lcd_busyO);LCD_RS=0;LCDRW=0;LCDEN=0;LCDEN=1;delayNOP();LCDEN=0;中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)結(jié)論工作總結(jié)本次畢業(yè)設(shè)計是以汽車輪胎為應(yīng)用對象,是以提高在行駛過程中的汽車的安全性和穩(wěn)定性。設(shè)計中介紹了TPMS的應(yīng)用種類以及它們各自的優(yōu)缺點(diǎn),對各項影響輪胎安全性能的原因做出了分析,從而設(shè)計出汽車輪胎壓力監(jiān)測系統(tǒng)。該系統(tǒng)以該系統(tǒng)設(shè)計以STC89C52為主控芯片實現(xiàn)壓力采集及其壓力控制,壓力、溫度信號的采集使用BMP085數(shù)字氣壓傳感器,信號發(fā)送采用NRF24L01無線發(fā)送接收芯片,利用LCD12864進(jìn)行液晶顯示。當(dāng)輪胎漏氣和低氣壓情況時,蜂鳴器報警,LED指示燈點(diǎn)亮。該系統(tǒng)達(dá)到了畢業(yè)設(shè)計任務(wù)書當(dāng)中所要求的性能指標(biāo)。本次所做的主要工作有:查閱了大量的文獻(xiàn)和資料之后,深入了解了國內(nèi)外相關(guān)技術(shù)和應(yīng)用,以及未來的發(fā)展趨勢。通過了解當(dāng)前輪胎壓力監(jiān)測系統(tǒng)的分類和技術(shù)特點(diǎn),分析了一些輪胎壓力檢測系統(tǒng)的工作原理,由于輪胎壓力異常對汽車行駛安全的影響,對輪胎的監(jiān)測機(jī)理和工作性能進(jìn)行了分析,確定了要從監(jiān)測輪胎壓力和溫度入手。給出了自己的設(shè)計方案。硬件電路設(shè)計當(dāng)中,首先介紹了設(shè)計的核心組成部分單片機(jī)STC89C52的的基本構(gòu)成和原理,簡要的說明了單片機(jī)的最小系統(tǒng),各引腳的功能介紹。然后介紹了氣壓監(jiān)測模塊BMP085,無線通信收發(fā)模塊NRF24L01,給出了主要模塊電路的結(jié)構(gòu)。簡要介紹了按鍵電路,報警電路,以及串口通訊電路,為下面的軟件電路的設(shè)計做準(zhǔn)備。系統(tǒng)軟件設(shè)計部分,給出了主程序以及各個子程序的軟件流程圖,以便更好最終程序調(diào)試正常,焊接成品,硬件運(yùn)行正常,滿足了初步設(shè)計要求,達(dá)到了對輪胎壓力監(jiān)測的目的。但是在實際應(yīng)用中保證準(zhǔn)確收集壓力溫度信號,并進(jìn)行準(zhǔn)確無誤的無線數(shù)據(jù)傳輸,還是存在一些干擾。由于研究時間和條件的限制,仍有許多問題需要深入研究。中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)參考文獻(xiàn)[1]陳法國,陳偉,周鵬等。無線接口電路設(shè)計及其在TPMS中的應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2005[2]雷旖旎,盧益民。輪胎壓力直接監(jiān)測系統(tǒng)的設(shè)計[J].計算機(jī)與數(shù)字工程,2005[3]劉桂飄,羅玉濤。輪胎氣壓對汽車性能影響的研究[J].廣東公安科技,003[4]顏重光。汽車胎壓監(jiān)視系統(tǒng)的設(shè)計方案思考[J].理論與研究,2005[5]秦晰,王景成。胎壓監(jiān)測系統(tǒng)的實現(xiàn)[J].微型電腦應(yīng)用,2005[6]閆利文。基于MEMS技術(shù)的胎壓監(jiān)測系統(tǒng)的實現(xiàn)[J].微計算機(jī)信息,2006[7]周航慈。單片機(jī)應(yīng)用程序設(shè)計技術(shù)[M].北京:北京航天航空大學(xué)出版社,1992(2):80-128[8]韓建保,陳厲兵。汽車輪胎氣壓電子實時監(jiān)測系統(tǒng)[J].汽車技術(shù),2002[9]胡漢才。單片機(jī)原理及其接口技術(shù)[M].北京:清華大學(xué)出版社,2003[10]孫雨耕,張靜,孫永進(jìn),房朝暉。無線自組傳感器網(wǎng)絡(luò)[J].傳感技術(shù)學(xué)報,2004,(02)[11]呂惠民,田敬民。壓力傳感器的研究現(xiàn)狀與發(fā)展趨勢[J].半導(dǎo)體技術(shù),1998,(02)[12]汪卓飛。一種高精度角度傳感器的研究[D].浙江工業(yè)大學(xué),2009[13]RTPMPressureSensorNPX-CO1780,GENovaSensor,2006[14]MC33594/DPLLtunedUHFReceiverforDataTransferApplications,Motorola,Rev1.1[15]CURTSCHURGERS,TirePressureMonitoringSystemUser'sGuide[EB].MicrochipTechnologyInc.,2006[16]KOWALEWSKI,MARCIN.Moniroringandmanagingtirpressure[J].IEEEPotentials,2005,3:8-10中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)致謝此次為期四個月的畢業(yè)設(shè)計已順利完成。首先要感謝我的指導(dǎo)老師-劉秀敏老師,··在老師的悉心指導(dǎo)下,我才得以順利按時完成畢業(yè)設(shè)計。老師嚴(yán)謹(jǐn)?shù)慕虒W(xué)態(tài)度,豐富的閱歷,都給我留下了深刻的印象。當(dāng)然,在畢業(yè)設(shè)計的過程當(dāng)中,有實驗室里的很多同學(xué)給予了我很大的幫助。畢業(yè)設(shè)計剛開始的時候,我的第一感覺是茫然,根本不知道從哪里下手,甚至懷疑自己的能力,是否能順利完成任務(wù)。我為我擁有一位出色而且非常敬業(yè)的指導(dǎo)老師而感到幸運(yùn)。在畢業(yè)設(shè)計過程當(dāng)中,劉老師給我提供了很大的幫助,老師不厭其煩的為我們講解了畢業(yè)設(shè)計當(dāng)中可能出現(xiàn)的任何問題。從畢業(yè)設(shè)計開始時的畢業(yè)實習(xí)報告、開題報告、外文翻譯、一直到最后論文多次的修改,劉老師總是以專業(yè)的標(biāo)準(zhǔn)來嚴(yán)格要求我們,為我們出色的完成畢業(yè)設(shè)計任務(wù)打下了堅實的基礎(chǔ),在很大程度上提升我的專業(yè)能力。通過此次畢業(yè)設(shè)計,使我深刻認(rèn)識到學(xué)習(xí)好專業(yè)知識的重要性,也深深體會到了理論與實踐相結(jié)合的含義。同時,此次畢業(yè)設(shè)計也檢驗了我大學(xué)四年的學(xué)習(xí)成果,對于此次設(shè)計當(dāng)中對于專業(yè)知識的運(yùn)用不夠熟練,我將在以后的學(xué)習(xí)和實踐當(dāng)中,繼續(xù)努力和不斷完善。四個月的設(shè)計過程是對過去所學(xué)知識的系統(tǒng)的提高和擴(kuò)展的過程,也是對自己實踐能力的一次考驗。雖然經(jīng)歷了很多困難,但最終還是順利完成。在發(fā)現(xiàn)問題,解決問題的過程當(dāng)中令我獲益匪淺,為日后的發(fā)展提供了有利條件。畢業(yè)臨近,回首這四個月,感慨萬千,最后由衷的感謝在畢業(yè)設(shè)計當(dāng)中給予我莫大幫助的老師和同學(xué)們。牛牛附錄I原理圖甲甲留TimF蒸maug林C1U卷u城復(fù)AAsiWea¥P高nW算SmtK.Wovt#u上2址taTia中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)附錄ⅡPCB圖0曾R5uJ屬生驗親屬州工出說并半2中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)附錄Ⅲ程序發(fā)射#include<reg52.h>#include<api.h>#include<math.h>//Keillibrary#include<stdlib.h>//Keillibrary#include<stdio.h>//Keillibrary#include<INTRINS.H>//Keillibrary#defineucharunsignedchar#defineuintunsignedint#defineTX_ADR_WIDTH5//5字節(jié)寬度的發(fā)送/接收地址#defineTXPLOADWIDTH4//數(shù)據(jù)通道有效數(shù)據(jù)寬度ucharcodeTX_ADDRESS[TX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01};//定義一個靜態(tài)發(fā)送地址ucharRX_BUF[TX_PLOAD_WIDTH];ucharTX_BUF[TX_PLOAD_WIDTH];sbitSCL=P2^4;//IIC時鐘引腳定義sbitSDA=P2^3;//IIC數(shù)據(jù)引腳定義sbitbee=P2^0;ucharbdatasta;sbitMAXRT=sta^4;#defineBMP085SlaveAddress0xee//定義器件在IC總線中的從地址#defineOSS0//OversamplingSetting(note:codeisnotsetuptouseotherOSSvalues)typedefunsignedcharBYTE;typedefunsignedshortWORD;ucharge,shi,bai,qian,wan,shiwan;//顯示變量中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)unsignedshortac4;unsignedshortac5;unsignedshortac6;shortb1;shortb2;shortmb;shortmc;shortmd;初始化IOvoidinitio(void)CSN=1;IRQ=1;3//待機(jī)//SPI禁止//SPI時鐘置低//中斷復(fù)位//關(guān)閉指示燈延遲x毫秒voiddelay_ms(ucharx)uchari,j;中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)for(i=0;i<x;i++)while(--j);while(--j);while(ms--)for(i=0;i<150;i++)_nop_();_nop_();_nop_();根據(jù)SPI協(xié)議,寫一字節(jié)數(shù)據(jù)到nRF24L01,同時從nRF24L01讀出一字節(jié)ucharSPI_RW(ucharbyte)uchari;for(i=0;i<8;i++){//循環(huán)8次MOSI=(byte&0x80);//byte最高位輸出到MOSIbyte<<=1;//低一位移位到最高位//拉高SCK,nRF24L01從MOSI讀入1中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)位數(shù)據(jù),同時從MISO輸出1位數(shù)據(jù)//SCK置低return(byte);//返回讀出的一字節(jié)寫數(shù)據(jù)value到reg寄存器ucharSPI_RW_Reg(ucharreg,ucharvalue)ucharstatus;CSN=0;status=SPI_RW(reg);SPIRW(value);return(status);//CSN置低,開始傳輸數(shù)據(jù)//選擇寄存器,同時返回狀態(tài)字//然后寫數(shù)據(jù)到該寄存器//CSN拉高,結(jié)束數(shù)據(jù)傳輸//返回狀態(tài)寄存器從reg寄存器讀一字節(jié)ucharSPI_Read(ucharreg)ucharreg_val;CSN=0;reg_val=SPI_RW(0);CSN=1;return(reg_val);//CSN置低,開始傳輸數(shù)據(jù)//選擇寄存器//然后從該寄存器讀數(shù)據(jù)//CSN拉高,結(jié)束數(shù)據(jù)傳輸//返回寄存器數(shù)據(jù)從reg寄存器讀出bytes個字節(jié),通常用來讀取接收通道ucharSPI_Read_Buf(ucharreg,uchar*pBuf,ucharbytes)ucharstatus,i;status=SPI_RW(reg);for(i=0;i<bytes;it+)pBuf[i]=SPI_RW(0);return(status);//CSN置低,開始傳輸數(shù)據(jù)//選擇寄存器,同時返回狀態(tài)字//逐個字節(jié)從nRF24L01讀出//CSN拉高,結(jié)束數(shù)據(jù)傳輸//返回狀態(tài)寄存器把pBuf緩存中的數(shù)據(jù)寫入到nRF24L01,通常用來寫入發(fā)ucharSPI_Write_Buf(ucharreg,uchar*pBuf,ucharbytes)ucharstatus,i;status=SPI_RW(reg);for(i=0;i<bytes;i++)SPI_RW(pBuf[i]);return(status);//CSN置低,開始傳輸數(shù)據(jù)//選擇寄存器,同時返回狀態(tài)字//CSN拉高,結(jié)束數(shù)據(jù)傳輸//返回狀態(tài)寄存器這個函數(shù)設(shè)置nRF24L01為接收模式,等待接收發(fā)送設(shè)備的數(shù)據(jù)包voidRXMode(void)SPIWriteBuf(WRITEREG+TX_ADR_WIDTH);//接收設(shè)備接收通道0使用和發(fā)送設(shè)備相同的發(fā)送地址SPI_RW_Reg(WRITE_REG+EN_AA,0x01);通道0自動應(yīng)答SPI_RW_Reg(WRITE_REG+EN_RXADDR,0x01);通道0SPI_RW_Reg(WRITE_REG+RF_CH,40);通道0x40SPI_RW_Reg(WRITE_REG+RX_PW_P0,TX_PLOAD_WIDTH);通道0選擇和發(fā)送通道相同有效數(shù)據(jù)寬度SPI_RW_Reg(WRITE_REG+RF_SETUP,0x07);率1Mbps,發(fā)射功率0dBm,低噪聲放大器增益SPI_RW_Reg(WRITE_REG+CONFIG,Ox0f);16位CRC校驗,上電,接收模式接收設(shè)備//使能接收//使能接收//選擇射頻//數(shù)據(jù)傳輸/1拉高CE啟動}這個函數(shù)設(shè)置nRF24L01為發(fā)送模式,(CE=1持續(xù)至少10us),130us后啟動發(fā)射,數(shù)據(jù)發(fā)送結(jié)束后,發(fā)送模塊自動轉(zhuǎn)入接收voidTX_Mode(uchar*BUF){SPI_Write_Buf(WRITE_REG+TX_ADDR,TXADDRESS,TXADRWIDTH);//寫入發(fā)送地址SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,TX_ADDRESS,TXADRWIDTH);//為了應(yīng)答接收設(shè)備,接收通道0地址和發(fā)送地址相同中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)SPIWriteBuf(WRTXPLOAD,BUF,//寫數(shù)據(jù)包到TXFIFOSPI_RW_Reg(WRITE_REG+EN_AA,Ox01);應(yīng)答SPI_RW_Reg(WRITE_REG+EN_RXADDR,0x01);SPI_RW_Reg(WRITE_REG+SETUP_RETR,OxOa);//250us+86us,自動重發(fā)10次SPI_RW_Reg(WRITE_REG+RF_CH,40);SPI_RW_Reg(WRITE_REG+RF_SETUP,0x07);發(fā)射功率0dBm,低噪聲放大器增益SPI_RW_Reg(WRITE_REG+CONFIGOx0e);校驗,上電TXPLOADWIDTH);//使能接收通道0自動//使能接收通道0自動重發(fā)延時等待//選擇射頻通道0x40//數(shù)據(jù)傳輸率1Mbps:檢查接收設(shè)備有無接收到數(shù)據(jù)包,設(shè)定沒有收到應(yīng)答信號是否重發(fā)ucharCheck_ACK(bitclear)while(IRQ);sta=SPIRW(NOP);//返回狀態(tài)寄存器if(clear)//是否清除TXFIFO,沒有清除在復(fù)位MAXRT中斷標(biāo)志后重發(fā)SPIRW(FLUSHTX);SPI_RW_Reg(WRITE_REG+STATUS,sta);//清除TX_DS或MAX_RT中斷標(biāo)志IRQ=1;return(0x00);中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)/******************BMP085*********voidconversion(longtemp_data)shiwan=temp_data/100000+0x30;temp_data=temp_data%100000;wan=temp_data/10000+0x30;temp_data=temp_data%10000;qian-temp_data/1000+0x30;temp_data=temp_data%1000;bai=temp_data/100+0x30temp_data=temp_data%100;shi=temp_data/10+0x30temp_data=temp_data%10;ge=temp_data+0x30;延時5微秒(STC90C52RC@12M)voidDelay5us()nop_();_nop_();_nop_();_nop_();nop_();_nop_();_nop_();_nop_();延時5毫秒(STC90C52RC@12M)中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)voidDelay5ms()WORDn=560;while(n--);起始信號voidBMP085Start()SDA=1;Delay5us();SDA=0;Delay5us();//拉高數(shù)據(jù)線停止信號voidBMP085_StopOSDA=0;Delay5us();SDA=1;Delay5us();〈發(fā)送應(yīng)答信號voidBMP085_SendACK(bitack){SDA=ack;Delay5us();//拉低數(shù)據(jù)線Delay5us();}接收應(yīng)答信號bitBMP085RecvACK)Delay5us();Delay5us();}向IC總線發(fā)送一個字節(jié)數(shù)據(jù){for(i=0;i<8;i++)1/8位計數(shù)器Delay5us();Delay5us();BMP085RecvACK();}從IC總線接收一個字節(jié)數(shù)據(jù)BYTEBMP085_RecvByte)中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)BYTEi;BYTEdat=0;SDA=1;for(i=0;i<8;i++)dat<<=1;Delay5us();Delay5us()voidSingle_Write(ucharSlaveAddress,ucharREG_Address,ucharREG_data)BMP085Start():BMP085_SendByte(SlaveAddress);BMP085_SendByte(REG_Address);BMP085_SendByte(REG_data);BMP085_Stop()//發(fā)送設(shè)備地址+寫信號//單字節(jié)讀取BMP085內(nèi)部數(shù)據(jù)********************************ucharSingle_Read(ucharREG_Address)BMP085_Start();//起始信號BMP085_SendByte(BMP085_SlaveAddress);//發(fā)送設(shè)備地址+寫信號BMP085_SendByte(REG_Address);BMP085Start();BMP085_SendByte(BMPO85_SlaveAddress+1);/1發(fā)送設(shè)備地址+讀信號//讀出寄存器數(shù)據(jù)BMP085_Stop();returnREG_data;ucharmsb,lsb;BMP085_SendByte(BMP085_SlaveAddress);//發(fā)送設(shè)備地址+寫信號BMP085_SendByte(ST_Address);//發(fā)送存儲讀信號msb=BMP085_RecvByte();BMP085_SendACK(0);lsb=BMP085_RecvByte();NOACK//最后一個數(shù)據(jù)需要回BMP085Stop();Delay5ms();BMPO85_SendByte(BMPO85_SlaveAddress);11發(fā)送設(shè)備地址+寫信號BMP085_SendByte(0xF4);BMP085_SendByte(0x2E);BMP085_Stop();delay(10);//maxtimeis4.5ms//writeregisteraddress//writeregisterdatafortempreturn(long)Multiple_read(0xF6);longbmp085ReadPressure(void)longpressure=0;BMP085_SendByte(BMP085_SlaveAddress);11發(fā)送設(shè)備地址+寫信號BMP085_SendByte(0xF4);//writeregisteraddressBMP085_SendByte(0x34);//writeregisterdataforpressureBMP085_Stop();delay(10);//maxtimeis4.5mspressure=Multiple_read(0xF6);pressure&=0x0000FFFF;returnpressure;//return(long)bmp085ReadShort(0xF6):voidInitBMP085)ac1=Multiple_read(0xAA);ac2=Multiple_read(0xAC);中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)ac4=Multiple_read(0xB0);ac5=Multiple_read(0xB2);b1=Multiple_read(0xB6);b2=Multiple_read(0xB8);/lunsignedintut;unsignedlongup;longx1,x2,b5,b6,x3,b3,p;unsignedlongb4,b7;//ut=bmp085ReadTemp();//讀取溫度//ut=bmp085ReadTemp();//讀取溫度up=bmp085ReadPressure();//讀取壓強(qiáng)/*x1=(((long)ut-(long)ac6)*(long)ac5)>>15;x2=((long)mc<<11)/(x1+md);b5=x1+x2;//temperature=60000;TX_Mode(TX_BUF);CheckACK(1);//數(shù)據(jù)送到緩存中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)//delay(50);TX_BUF[0]=low;//數(shù)據(jù)送到緩存//conversion(temperature);//CalculateB3x1=(b2*(b6*b6)>>12)>>11;b3=(((((long)ac1)*4+x3)<<OSS)+2)>>2;x2=(b1*((b6*b6)>>12))>>16;x3=((x1+x2)+2)>>2;b4=(ac4*(unsignedlong)(x3+32768))>>15;b7=((unsignedlong)(up-b3)*(5000O>>OSS));p=(b7<<1)/b4;p=(b7/b4)<<1;x1=(p>>8)*(p>>8);x2=(-7357*p)>>16;pressure=p+((x1+x2+3791)>>4);high=pressure/256:TXBUF[0]=high;中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)TXMode(TXBUF);CheckACK(1);delay(50);TX_BUF[0]=low;TX_Mode(TX_BUF);CheckACK(1);//數(shù)據(jù)送到緩存voidmain()delay(100);init_io();while(1)//初始化IOInitBMP085();bmp085Convert();delay(100);//TXBUF[0]=pressure://pressure=10000;//low=240;/*high=pressure/256;low=pressure%256;TX_BUF[0]=high;TX_Mode(TX_BUF);CheckACK(1);delay(50);TXBUF[0]=low;TX_Mode(TX_BUF);delay(50);*//*high=temperature/256;low=temperature%256;TX_BUF[0]=high;TXMode(TXBUF);//數(shù)據(jù)送到緩存//數(shù)據(jù)送到緩存//數(shù)據(jù)送到緩存//數(shù)據(jù)送到緩存CheckACK(1);delay(50);delay(50);*///數(shù)據(jù)送到緩存#include<reg51.h>#include<api.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#defineDATAP0#definedelayNOP();{_nop_(;_nop_();_nop_(0;_nop_();};sbitbee=P2^0;sbitLCDRS=P2^2;sbitLCDRW=P2^3;sbitLCDEN=P2^4;sbitLCD_PSB=P2^6;sbitLCDRST=P2^5;//液晶復(fù)位端口#defineTX_ADR_WIDTH5//5字節(jié)寬度的發(fā)送/接收地址#defineTXPLOADWIDTH4//數(shù)據(jù)通道有效數(shù)據(jù)寬度ucharcodeTX_ADDRESS[TX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01};//定義一個靜態(tài)發(fā)送地址uchartable[];ucharRX_BUF[TX_PLOAD_WIDTH];ucharTX_BUF[TX_PLOAD_WIDTH];ucharcodeDIS1[J={"氣壓上限:"};中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)ucharcodeDIS2[]={"氣壓下限:"};ucharcodeDIS3[]={"當(dāng)前氣壓:"};ucharcodeDIS4[]={"注意!危險!"};ucharflag,num;longlow,high;ucharge,shi,bai,qian,wan,shiwan;ucharbdatasta;sbitRXDR=sta^6;sbitMAXRT=sta^4;voidinitio(void)CSN=1;IRQ=1;J/LED=0xff;//待機(jī)//SPI禁止//SPI時鐘置低//中斷復(fù)位//關(guān)閉指示燈延遲x毫秒voiddelay_ms(ucharx)uchari,j;for(i=0;i<x;i++)中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)while(--j);while(--j);根據(jù)SPI協(xié)議,寫一字節(jié)數(shù)據(jù)到nRF24L01,同時從nRF24L01讀出一字節(jié)for(i=0;i<8;i++)//循環(huán)8次MOSI=(byte&0x80);//byte最高位輸出到MOSIbyte<<=1;//低一位移位到最高位SCK=1;//拉高SCK,nRF24L01從MOSI讀入1位數(shù)據(jù),同時從MISO輸出1位數(shù)據(jù)byte|=MISO;SCK=0;}return(byte);//讀MISO到byte最低位//SCK置低寫數(shù)據(jù)value到reg寄存器(ucharstatus;CSN=0;status=SPI_RW(reg);//CSN置低,開始傳輸數(shù)據(jù)//選擇寄存器,同時返回狀態(tài)字//然后寫數(shù)據(jù)到該寄存器//CSN拉高,結(jié)束數(shù)據(jù)傳輸//返回狀態(tài)寄存器從reg寄存器讀一字節(jié)ucharSPI_Read(ucharreg)reg_val=SPI_RW(0);//CSN置低,開始傳輸數(shù)據(jù)//選擇寄存器//然后從該寄存器讀數(shù)據(jù)//CSN拉高,結(jié)束數(shù)據(jù)傳輸//返回寄存器數(shù)據(jù)從reg寄存器讀出bytes個字節(jié),通常用來讀取接收通道ucharSPI_Read_Buf(ucharreg,uchar*pBuf,ucharbytes){status=SPI_RW(reg);for(i=0;i<bytes;i++)pBuf[i]=SPI_RW(0);CSN=1;return(status);//CSN置低,開始傳輸數(shù)據(jù)//選擇寄存器,同時返回狀態(tài)字//逐個字節(jié)從nRF24L01讀出//CSN拉高,結(jié)束數(shù)據(jù)傳輸//返回狀態(tài)寄存器中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)把pBuf緩存中的數(shù)據(jù)寫入到nRF24L01,通常用來寫入發(fā)ucharstatus,i;status=SPI_RW(reg);for(i=0;i<bytes;i++)SPI_RW(pBuf[i]);//CSN置低,開始傳輸數(shù)據(jù)//選擇寄存器,同時返回狀態(tài)字//逐個字節(jié)寫入nRF24L01//CSN拉高,結(jié)束數(shù)據(jù)傳輸這個函數(shù)設(shè)置nRF24L01為接收模式,等待接收發(fā)送設(shè)備的數(shù)據(jù)包voidRX_Mode(void){SPI_Write_Buf(WRITE_REG+RXADDRPO,TX_ADDRESS,TX_ADR_WIDTH);//接收設(shè)備接收通道0使用和發(fā)送設(shè)備相同的發(fā)送地址SPI_RW_Reg(WRITE_REG+EN_AA,Ox01)通道0自動應(yīng)答SPI_RW_Reg(WRITE_REG+EN_RXADDR,0x01);通道0SPI_RW_Reg(WRITE_REG+RF_CH,40);通道0x40SPI_RW_Reg(WRITE_REG+RX_PW_P0,TX_PLOAD_WIDTH);通道0選擇和發(fā)送通道相同有效數(shù)據(jù)寬度//使能接收SPI_RW_Reg(WRITE_REG+RF_SETUP,0x07);率1Mbps,發(fā)射功率0dBm,低噪聲放大器增益SPI_RW_Reg(WRITE_REG+CONFIGOx0f);16位CRC校驗,上電,接收模式//數(shù)據(jù)傳輸中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)接收設(shè)備}這個函數(shù)設(shè)置nRF24L01為發(fā)送模式,(CE=1持續(xù)至少10us),130us后啟動發(fā)射,數(shù)據(jù)發(fā)送結(jié)束后,發(fā)送模塊自動轉(zhuǎn)入接收模式等待應(yīng)答信號。voidTX_Mode(uchar*BUF)CE=0;SPIWriteBuf(WRITEREG十TXADDR,TXADDRESS,TX_ADR_WIDTH);//寫入發(fā)送地址SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,TXADDRESS,TX_ADR_WIDTH);//為了應(yīng)答接收設(shè)備,接收通道0地址和發(fā)送地址相同SPI_Write_Buf(WR_TX_PLOAD,BUF,TXPLOADWIDTH);//寫數(shù)據(jù)包到TXFIFOSPI_RW_Reg(WRITE_REG+EN_AA,0x01);應(yīng)答SPI_RW_Reg(WRITE_REG+EN_RXADDR,0x01);SPI_RW_Reg(WRITE_REG+SETUP_RETR,Ox0a);//250us+86us,自動重發(fā)10次SPI_RW_Reg(WRITE_REG+RF_CH,40);SPI_RW_Reg(WRITE_REG+RF_SETUP,Ox07);發(fā)射功率0dBm,低噪聲放大器增益SPI_RW_Reg(WRITE_REG+CONFIG,Ox0e);校驗,上電CE=1;//使能接收通道0自動//使能接收通道0自動重發(fā)延時等待//選擇射頻通道0x40//數(shù)據(jù)傳輸率1Mbps,//CRC使能,16位CRC中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)論文(設(shè)計)檢查接收設(shè)備有無接收到數(shù)據(jù)包,設(shè)定沒有收到應(yīng)答信號是否重發(fā)ucharCheck_ACK(bitclear)while(IRQ);if(MAX_RT)if(clear)復(fù)位MAX_RT中斷標(biāo)志后重發(fā)//返回狀態(tài)寄存器/1是否清除TXFIFO,沒有清除在SPI_RW(FLUSH_TX);SPI_RW_Reg(WRITE_REG+STATUS,sta);//清除TX_DS或MAX_RT中斷標(biāo)志if(

溫馨提示

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

最新文檔

評論

0/150

提交評論