1、<p> 本科畢業(yè)論文(設(shè)計(jì))</p><p> 輪胎壓力監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)</p><p> 系 (部)信息工程系</p><p> 專(zhuān) 業(yè)測(cè)控技術(shù)與儀器</p><p> 學(xué) 號(hào)201007064233</p><p> 學(xué)生姓名</p><p> 指導(dǎo)教師</
2、p><p> 提交日期年 月 日</p><p><b> 摘要</b></p><p> 隨著汽車(chē)工業(yè)的發(fā)展和道路交通網(wǎng)絡(luò)的不斷擴(kuò)展,隨之引起的交通事故在不斷增多,輪胎內(nèi)部的壓力異常已經(jīng)成為汽車(chē)能否安全行駛的重要因素之一,汽車(chē)的行駛安全問(wèn)題也越來(lái)越受到大眾的關(guān)注。經(jīng)過(guò)大量的實(shí)驗(yàn)研究表明,當(dāng)汽車(chē)行駛在正常的輪胎充氣壓力和溫度下,可以最大
3、限度的防止爆胎的發(fā)生?,F(xiàn)階段,TPMS的研究方法有兩種:間接式TPMS和直接式TPMS。本設(shè)計(jì)是基于STC89C52單片機(jī)的直接式輪胎壓力監(jiān)測(cè)系統(tǒng),通過(guò)壓力傳感器BMP085來(lái)采集壓力、溫度信號(hào),然后采用無(wú)線通信發(fā)射接收模塊nRF24L01進(jìn)行數(shù)據(jù)傳輸,數(shù)據(jù)經(jīng)過(guò)STC89C52處理后,顯示在 LCD12864液晶屏上,實(shí)現(xiàn)氣壓、溫度的無(wú)線測(cè)量與顯示,并且當(dāng)壓力值高于或低于允許正常范圍值時(shí)發(fā)出報(bào)警。</p><p>
4、; 對(duì)于設(shè)計(jì)本身而言具有使用方便,數(shù)據(jù)準(zhǔn)確,便于維修等特點(diǎn)。而且設(shè)計(jì)還具有二度開(kāi)發(fā)的潛在性。</p><p> 關(guān)鍵詞:STC89C52,輪胎壓力,無(wú)線通信,監(jiān)測(cè)</p><p> Tire Pressure Monitoring System</p><p><b> Abstract</b></p><p>
5、 With the continuous expansion of the development of the automotive industry and road transport network , traffic accidents consequent on the rise , abnormal tire pressure has become an important factor in whether a mot
6、or vehicle safety , security issues are more and more cars public concern . After a number of experimental studies have shown that when cars with tires inflated at normal pressure and temperature , can greatly reduce the
7、 incidence of puncture . Stage , TPMS solutions in two ways : </p><p> For the design itself is easy to use , accurate data for easy maintenance . And the design also has the potential to develop a second t
8、ime .</p><p> Keywords: STC89C52 tire pressure wireless communications monitoring</p><p><b> 目錄</b></p><p><b> 第1章 引言2</b></p><p> 1.1
9、 選題目的和意義2</p><p> 1.2 本選題在國(guó)內(nèi)外的研究狀況及發(fā)展趨勢(shì)2</p><p> 第2章 系統(tǒng)功能介紹4</p><p> 2.1 系統(tǒng)功能設(shè)計(jì)4</p><p> 2.2 系統(tǒng)總體設(shè)計(jì)方案4</p><p> 第3章 硬件電路設(shè)計(jì)5</p><p
10、> 3.1 主控模塊5</p><p> 3.1.1 STC89C52介紹5</p><p> 3.1.2 STC89C52單片機(jī)最小系統(tǒng)6</p><p> 3.2 電源模塊7</p><p> 3.3 氣壓、溫度檢測(cè)模塊7</p><p> 3.4 無(wú)線發(fā)射接收模塊8&l
11、t;/p><p> 3.4.1 nRF24L01概述8</p><p> 3.4.2 nRF24L01工作原理9</p><p> 3.4.3 無(wú)線發(fā)射接收電路圖9</p><p> 3.5 顯示模塊10</p><p> 3.6 按鍵模塊11</p><p> 3.7
12、 報(bào)警模塊11</p><p> 3.8 串口通訊模塊12</p><p> 第4章 系統(tǒng)軟件設(shè)計(jì)13</p><p> 4.1 主程序流程圖13</p><p> 4.2 子程序流程圖14</p><p> 4.2.1 氣壓及溫度模塊子程序14</p><p>
13、; 4.2.2 無(wú)線通信發(fā)送接收模塊子程序16</p><p> 4.2.3 顯示子程序18</p><p><b> 結(jié)論21</b></p><p><b> 參考文獻(xiàn)22</b></p><p><b> 致謝23</b></p>&
14、lt;p><b> 附錄24</b></p><p><b> 第1章 引言</b></p><p> 汽車(chē)時(shí)代的到來(lái),改變的不僅僅是人們的代步方式,更有人們的生活方式乃至整個(gè)社會(huì)的文化。同樣,一個(gè)時(shí)代的典型核心技術(shù)產(chǎn)品也帶動(dòng)著整個(gè)產(chǎn)業(yè)的技術(shù)發(fā)展趨勢(shì)。隨著家用汽車(chē)對(duì)現(xiàn)代家庭日常生活的沖擊,汽車(chē)的行駛安全,不僅僅體現(xiàn)了汽車(chē)的性能,更
15、代表著未來(lái)汽車(chē)工程技術(shù)與相關(guān)科技的發(fā)展方向。智能化系統(tǒng)在我們?nèi)粘I钪械膽?yīng)用越來(lái)越廣泛,為社會(huì)的文明進(jìn)步、經(jīng)濟(jì)的繁榮發(fā)展保駕護(hù)航,同時(shí)也被大量地應(yīng)用到汽車(chē)等相關(guān)產(chǎn)品上[1]。把現(xiàn)代電子科學(xué)技術(shù)的發(fā)展成果應(yīng)用到汽車(chē)電子技術(shù)當(dāng)中,必將大大增加汽車(chē)行駛的穩(wěn)定性和安全性。</p><p> 1.1 選題目的和意義 </p><p> 輪胎是汽車(chē)重要的組成部分之一,有實(shí)驗(yàn)表明,行駛在道路
16、上的車(chē)輛,影響輪胎性能的主要因素來(lái)自于是汽車(chē)輪胎內(nèi)部的充氣壓力。輪胎內(nèi)部的充氣壓力偏高或者偏低,都會(huì)使輪胎的整體性能和使用壽命帶來(lái)很大的影響。輪胎內(nèi)部的氣壓過(guò)高時(shí),輪胎與地面接觸面積變小,輪胎外表面的中部區(qū)域承受的壓力增高,磨損加劇,輪胎的底部花紋開(kāi)裂。此時(shí)輪胎的剛度增大,起不到應(yīng)有的緩沖作用,汽車(chē)的穩(wěn)定性降低,輪胎的回正力矩變小,從而促使汽車(chē)的可操作性能降低。在行駛途中如果遇到障礙物,容易致使輪胎發(fā)生破裂,導(dǎo)致輪胎的整體性能下降和使用
17、壽命縮短。而輪胎與行駛路面之間動(dòng)載荷增大,表明輪胎與路面之間的最小正壓力減小,從而降低車(chē)輪本身的地面附著力,影響汽車(chē)的行駛安全性。氣壓不足同樣對(duì)輪胎有很大的影響,有資料表明,約有85%有缺陷的輪胎始于慢滲氣(自然滲透),有25%的輪胎損壞是由于慢滲氣造成的。</p><p> 因此由輪胎氣壓引起的交通事故比例較高,也是突發(fā)性交通事故發(fā)生的重要原因。怎樣防止爆胎已成為安全駕駛的一個(gè)重要課題。使得人們對(duì)輪胎內(nèi)部的充
18、氣壓力關(guān)注日益密切。輪胎壓力監(jiān)測(cè)技術(shù)是一種能切實(shí)有效的防止和減少由于輪胎引起交通事故的方法。通過(guò)在汽車(chē)行駛過(guò)程中時(shí)實(shí)時(shí)的對(duì)輪胎氣壓進(jìn)行監(jiān)測(cè),對(duì)輪胎內(nèi)部的低氣壓值進(jìn)行顯示報(bào)警,從而達(dá)到保持標(biāo)準(zhǔn)的車(chē)胎內(nèi)部氣壓和及時(shí)發(fā)現(xiàn)車(chē)胎漏氣的目的。進(jìn)而才能保障行車(chē)安全,保障司機(jī)、乘客的生命安全。</p><p> 1.2 本選題在國(guó)內(nèi)外的研究狀況及發(fā)展趨勢(shì)</p><p> 據(jù)有關(guān)專(zhuān)家的分析,防止爆胎
19、的關(guān)鍵在于應(yīng)該實(shí)時(shí)保持在正常的輪胎氣壓下行駛。據(jù)美國(guó)汽車(chē)相關(guān)調(diào)查機(jī)構(gòu)調(diào)查,在美國(guó)由于輪胎內(nèi)部的氣壓低或漏氣所引發(fā)的交通事故每年大約有26萬(wàn)起,所以美國(guó)政府要加大了對(duì)汽車(chē)相關(guān)制造商的支持力度,加速發(fā)展了 TPMS 系統(tǒng),以便挽回巨大的經(jīng)濟(jì)損失和重大的人員傷亡。</p><p> 國(guó)外許多國(guó)家(像美國(guó)、日本等)已先后立法,要求在今后幾年內(nèi)實(shí)現(xiàn)汽車(chē)全部安裝TPMS,美國(guó)TPMS裝備已經(jīng)非常普及。目前,已經(jīng)有了相關(guān)傳感
20、器模塊將所要測(cè)試的各個(gè)數(shù)據(jù)的傳感器與微控制單元合二為一的智能傳感器模塊,如GE NPX,以便滿(mǎn)足TPMS對(duì)IC高可靠性和高整合度的要求[2]。</p><p> TPMS的研究在中國(guó)剛剛起步。目前大部分廠家都處在研究開(kāi)發(fā)階段,出貨量不高。全國(guó)開(kāi)展 TPMS 研究的廠家接近 200家,專(zhuān)業(yè)的TPMS廠家大約為30家。TPMS 零組件主要靠進(jìn)口,缺乏自主知識(shí)產(chǎn)權(quán)的產(chǎn)品。目前國(guó)外帶電池的 TPMS 系統(tǒng)相對(duì)己經(jīng)比較成
21、熟,主要在進(jìn)行無(wú)源TPMS 系統(tǒng)的研究,如利用 SAW 這類(lèi)無(wú)源器件頻率的變化來(lái)監(jiān)測(cè)輪胎壓力變化。上海交通大學(xué)也開(kāi)始基于聲表面波技術(shù)的 TPMS 開(kāi)發(fā)研究,這種能同時(shí)測(cè)量輪胎內(nèi)壓力、溫度和發(fā)射數(shù)據(jù)的 SAW 傳感器,不僅可實(shí)現(xiàn)智能輪胎信息的無(wú)源測(cè)量和無(wú)線發(fā)送,并且將擁有中國(guó)人自主的知識(shí)產(chǎn)權(quán)。</p><p> 隨著高新技術(shù)的發(fā)展和現(xiàn)代汽車(chē)不斷趨向高性能化,汽車(chē)用的輪胎也從長(zhǎng)期的性能時(shí)代,開(kāi)始進(jìn)入功能化的新時(shí)期。
22、當(dāng)然,現(xiàn)代汽車(chē)的安全配置也在不斷得到完善,如安全帶、安全氣囊、防撞桿等被廣泛運(yùn)用,不過(guò)這些都是屬于交通事故發(fā)生后,才能對(duì)人、車(chē)起到保護(hù)作用的被動(dòng)安全裝置。然而輪胎爆胎預(yù)警系統(tǒng),則不同于上述的裝置,它在輪胎一出現(xiàn)危險(xiǎn)征兆時(shí)就能夠及時(shí)發(fā)現(xiàn)并同時(shí)報(bào)警,最大限度地將事故消滅在萌芽狀態(tài),從而極大地提升了車(chē)輛高速行駛的安全性,這一優(yōu)勢(shì)在高速公路上表現(xiàn)更為明顯[3]。</p><p> 第2章 系統(tǒng)功能介紹</p&g
23、t;<p> 2.1 系統(tǒng)功能設(shè)計(jì)</p><p> (1)采用壓力、溫度傳感器來(lái)監(jiān)測(cè)汽車(chē)輪胎內(nèi)的壓力和溫度; </p><p> ?。?)顯示當(dāng)前輪胎的壓力及溫度值; </p><p> ?。?)通過(guò)無(wú)線發(fā)射模塊將測(cè)量值發(fā)射出去,用接收模塊接收壓力溫度信息,并通過(guò)液晶屏顯示;</p><p&g
24、t; ?。?)當(dāng)壓力值高于或低于允許正常范圍值時(shí)發(fā)出報(bào)警;</p><p> (5)控制最大探測(cè)壓強(qiáng):0.99MPa;</p><p> 2.2 系統(tǒng)總體設(shè)計(jì)方案</p><p> 該系統(tǒng)設(shè)計(jì)以STC89C52為主控芯片實(shí)現(xiàn)壓力采集及其壓力控制,壓力、溫度信號(hào)采集使用BMP085壓力傳感器,信號(hào)發(fā)送采用NRF24L01無(wú)線發(fā)送接收芯片,利用LCD12864進(jìn)
25、行液晶顯示。當(dāng)輪胎漏氣和低氣壓情況時(shí),蜂鳴器報(bào)警,LED指示燈點(diǎn)亮。按鍵設(shè)計(jì)采用復(fù)位按鍵進(jìn)行對(duì)壓力上下限的調(diào)節(jié)。輪胎壓力無(wú)線監(jiān)測(cè)系統(tǒng)包括無(wú)線發(fā)射部分和無(wú)線接收部分。無(wú)線發(fā)射部分包括壓力傳感器模塊、單片機(jī)主控制模塊。無(wú)線接收部分包括無(wú)線接收模塊、單片機(jī)主控制模塊。系統(tǒng)整體設(shè)計(jì)框圖如圖2-1所示[4]。</p><p> 圖 2-1 系統(tǒng)框圖</p><p> 第3章 硬件電路設(shè)計(jì)<
26、;/p><p><b> 3.1 主控模塊</b></p><p> 3.1.1 STC89C52介紹</p><p> STC89C52是STC公司生產(chǎn)的一種具有低功耗、高性能的CMOS 8位微控制器。STC89C52使用和MCS-51一樣的內(nèi)核,但做了很多的改進(jìn)使得芯片具有傳統(tǒng)51單片機(jī)不具備的功能。STC89C52在很多嵌入式控制系
27、統(tǒng)中提供了高靈活、高效率的解決方案。 其具有的標(biāo)準(zhǔn)功能: 8k字節(jié)的Flash,512字節(jié)的RAM, 32 位I/O 口線,內(nèi)置4KB EEPROM,看門(mén)狗定時(shí)器,MAX810復(fù)位電路,3個(gè)16 位定時(shí)器/計(jì)數(shù)器,全雙工串行口。4個(gè)外部中斷,一個(gè)7向量4級(jí)中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級(jí)中斷的結(jié)構(gòu))。</p><p> 本設(shè)計(jì)電路中STC89C52單片機(jī)的電路圖如圖3-1所示。</p><
28、p> 圖 3-1 STC89C52引腳圖</p><p> 在設(shè)計(jì)過(guò)程當(dāng)中,單片機(jī)的P0口用于LCD12864顯示,P1.0-P1.4無(wú)線發(fā)射模塊,P3.1-P3.2接電源模塊,P3.3-P3.6為獨(dú)立式鍵盤(pán)接口作為人工按鈕,P2.4-P2.7接氣壓監(jiān)測(cè)模塊,P2.0連接蜂鳴報(bào)警器,XTAL1和XTAL2是晶振模塊等。</p><p> 工作過(guò)程:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允
29、許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),之所以它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的,因?yàn)榇祟l率為振蕩器頻率的1/6[5]。</p><p> 3.1.2 STC89C52單片機(jī)最小系統(tǒng)</p><p> STC89C52單片機(jī)在整個(gè)電路板的連接中起主導(dǎo)控制作用,STC89C52是一種高性?xún)r(jià)比
30、的CMOS 8位微控制器,具有8K可編程FLASH存儲(chǔ)器。512字節(jié)RAM, 32 位I/O 口線,看門(mén)狗定時(shí)器,內(nèi)置4KB EEPROM,MAX810復(fù)位電路,3個(gè)16 位定時(shí)器/計(jì)數(shù)器,4個(gè)外部中斷,一個(gè)7向量4級(jí)中斷結(jié)構(gòu)全雙工串行口。最小系統(tǒng)由復(fù)位電路以及晶振電路組成。</p><p> 當(dāng)單片機(jī)復(fù)位端口有高電平信號(hào)并且超過(guò)2個(gè)機(jī)器周期的時(shí)單片機(jī)復(fù)位。</p><p> 復(fù)位電路
31、如圖3-2所示。</p><p> 圖 3-2 復(fù)位電路 </p><p> 晶振電路常采用12M晶振作為系統(tǒng)的時(shí)鐘。</p><p> 晶振電路如圖3-3所示。</p><p> 圖 3-3 晶振電路</p><p><b> 3.2 電源模塊</b></p><
32、p> 本次設(shè)計(jì)需要采用5V電源為單片機(jī)、傳感器、蜂鳴報(bào)警器等一系列元件供電。但無(wú)線接收發(fā)送模塊需要以3.3V電源供電,故需要用型號(hào)為AMS1117的3.3V穩(wěn)壓芯片將5V電源轉(zhuǎn)換成3.3V電源供無(wú)線接收發(fā)送模塊使用。AMS1117系列穩(wěn)壓器在我們?nèi)粘?yīng)用中有可調(diào)版式與其他多種固定電壓版式,本次設(shè)計(jì)工程中用AMS1117用于提供工作壓差可低至1V且為1A的輸出電流。在輸出最大電流時(shí),AMS器件的電壓差最大不能超過(guò)1.3V,并且跟隨
33、負(fù)載電流的減小而減小[6]。本設(shè)計(jì)采用的AMS固定電壓版式。在AMS1117固定電壓版式3.3V的片上把基準(zhǔn)電壓進(jìn)行微調(diào)整,直到誤差控制到1.5%以?xún)?nèi),以便盡量降低因電源電路超載和穩(wěn)壓器而帶來(lái)的負(fù)荷。AMS1117器件的引腳上兼容其他三端SCSI穩(wěn)壓器,提供使用貼片安裝的SOT-223,8引腳SOIC,和TO-252(DPAK)塑料封裝。</p><p> AMS1117內(nèi)部集成過(guò)熱保護(hù)和限流電路,是電池供電和
34、便攜式計(jì)算機(jī)的最佳選擇。有以下特點(diǎn):</p><p> 1、固定輸出電壓為1.5V、1.8V、2.5V、2.85V、3.0V、3.3V、5.0V和可調(diào)版本, </p><p> 2、具有1%的精度。</p><p> 3、固定輸出電壓為 1.2V的 精度為 2% </p&g
35、t;<p> 4、低漏失電壓:1A輸出電流時(shí)僅為 1.2V </p><p> 5、限流功能 , 過(guò)熱切斷 ,溫度范圍:-40°C~ 125°C</p><p> 本次電源模塊選用ASM1117,其三端可調(diào)或固定電壓3.3V輸出電流為1A,工作結(jié)溫范圍:-40-125°C。電源模塊
36、如圖3-4所示。</p><p> 圖 3-4 電源模塊</p><p> 3.3 氣壓、溫度檢測(cè)模塊</p><p> 本次壓力、溫度監(jiān)測(cè)模塊采用BMP085數(shù)字氣壓傳感器,可以直接通過(guò)編程讀取氣壓溫度數(shù)據(jù),并且是一款高精度、超低能耗的壓力傳感器,在移動(dòng)設(shè)備中都有應(yīng)用[7]。它的性能優(yōu)越,絕對(duì)精度最低可以達(dá)到0.03hPa,極低的功耗,只有3uA。BMP0
37、85采用強(qiáng)大的8-pin陶瓷無(wú)引線芯片承載(LCC)超薄封裝,可以通過(guò)IIC總線直接與多種微處理器進(jìn)行相連。BMP085 氣壓、溫度傳感器是利用電壓電阻 MEMS 技術(shù)對(duì) EMC 的穩(wěn)定性,線性度,高準(zhǔn)確度和長(zhǎng)期穩(wěn)定性。BMP085應(yīng)用程序被廣泛在、航位推測(cè)、GPS 導(dǎo)航的增強(qiáng)、內(nèi)外部導(dǎo)航、健康監(jiān)測(cè)、天氣預(yù)測(cè)、風(fēng)機(jī)功率控制、垂著速度跡象等[8]。</p><p> 氣壓溫度檢測(cè)模塊如圖3-5所示。</p&
38、gt;<p> 圖 3-5 氣壓溫度檢測(cè)模塊</p><p> 3.4 無(wú)線發(fā)射接收模塊</p><p> 3.4.1 nRF24L01概述</p><p> 無(wú)線發(fā)射接收模塊是連接數(shù)據(jù)采集發(fā)射部分和數(shù)據(jù)接收控制部分的重要元件,也是單片機(jī)之間傳送數(shù)據(jù)的重要組成。本設(shè)計(jì)中為方便使用,成本低而且使用方便。故設(shè)計(jì)中無(wú)線發(fā)送接收模塊采用nRF24L
39、01,它是一款無(wú)線通信發(fā)送接收芯片,工作頻率為2.4~2.5GHz。是通過(guò) SPI 接口設(shè)置輸出功率、頻道選擇以及協(xié)議[9]。nRF24L01在發(fā)射模式下的發(fā)射功率為-6dBm 時(shí)電流的消耗僅為為9mA,在接收模式時(shí)電流的消耗為12.3 mA。在待機(jī)模式和掉電模式時(shí)電流消耗更低。</p><p> ?。?)nRF24L01主要特性如下: </p><p>
40、 1、GFSK調(diào)制; </p><p> 2、具有自動(dòng)應(yīng)答和自動(dòng)再發(fā)射功能;</p><p> 3、數(shù)據(jù)傳輸率為l Mb/s或2Mb/s;</p><p> 4、SPI速率為0 Mb/s~10 Mb/s;</p><p> 5、QFN20引腳4 mm³4 mm封裝
41、;</p><p> 6、供電電壓為1.9 V~3.6 V;</p><p> (2)nRF24L01 引腳 簡(jiǎn)介如表3-1所示。</p><p> 表 3-1 nRF24L01引腳功能</p><p> 3.4.2 nRF24L01工作原理</p><p> 在發(fā)射經(jīng)過(guò)單片機(jī)處理后的數(shù)
42、據(jù)時(shí),先將nRF24L01設(shè)置為發(fā)射模式,然后把接收節(jié)點(diǎn)的地址TX_ADDR和有效數(shù)據(jù)TX_PLD按照時(shí)序由SPI口寫(xiě)入nRF24L01緩存區(qū),TX_PLD必須在CSN為低時(shí)連續(xù)寫(xiě)入,TX_ADDR在發(fā)射時(shí)寫(xiě)入一次即可,然后CE置為高電平并保持至少10μs,延遲130μs后發(fā)射數(shù)據(jù);如果自動(dòng)應(yīng)答開(kāi)啟,那么nRF24L01在發(fā)射數(shù)據(jù)后直接進(jìn)入接收模式,接收應(yīng)答信號(hào)(自動(dòng)應(yīng)答接收地址應(yīng)該與接收節(jié)點(diǎn)地址TX_ADDR一致)。如果收到應(yīng)答,則認(rèn)
43、為此次通信成功,TX_DS置高,同時(shí)TX_PLD從TX FIFO中清除;若未收到應(yīng)答,則自動(dòng)重新發(fā)射該數(shù)據(jù)(自動(dòng)重發(fā)已開(kāi)啟),若重發(fā)次數(shù)(ARC)達(dá)到上限,MAX_RT置高,TX FIFO中數(shù)據(jù)保留以便在次重發(fā);MAX_RT或TX_DS置高時(shí),使IRQ變低,產(chǎn)生中斷,通知MCU。最后發(fā)射成功時(shí),若CE為低則nRF24L01進(jìn)入空閑模式1;若發(fā)送堆棧中有數(shù)據(jù)且CE為高,則進(jìn)入下一次發(fā)射;若發(fā)送堆棧中無(wú)數(shù)據(jù)且CE為高[1
44、0]。</p><p> 3.4.3 無(wú)線發(fā)射接收電路圖</p><p> 無(wú)線發(fā)射接收模塊如圖3-6所示。</p><p> 圖 3-6 無(wú)線發(fā)射接收模塊</p><p><b> 3.5 顯示模塊</b></p><p> 顯示電路部分采用LCD12864。選用LCD12864的主
45、要原因是LCD12864自帶漢字庫(kù)可以直接顯示漢字,并且屏幕較大。LCD12864是一種具有4位和8位并行、2線或3線串行的多種接口方式,含有國(guó)標(biāo)一級(jí)、二級(jí)簡(jiǎn)體中文字庫(kù)的點(diǎn)陣圖形的液晶顯示模塊。其顯示的分辨率為128×64,內(nèi)置8192個(gè)16*16點(diǎn)漢字,和128個(gè)16*8的點(diǎn)ASCII字符集。利用該模塊靈活的接口方式和方便的操作指令,可構(gòu)成全中文人機(jī)交互圖形界面,可以顯示8×4行16×16的點(diǎn)陣漢字,也可
46、完成圖形顯示。低電壓低功耗是其又一顯著特點(diǎn),由該模塊構(gòu)成的液晶顯示方案與同類(lèi)型的圖形點(diǎn)陣液晶顯示模塊相比,不論硬件電路結(jié)構(gòu)或顯示程序都要簡(jiǎn)潔得多,且該模塊的價(jià)格也略低于相同點(diǎn)陣的圖形液晶模塊[11]。</p><p> 顯示模塊LCD12864實(shí)現(xiàn)電路圖如圖3-7所示。</p><p> 圖 3-7 顯示模塊</p><p><b> 3.6 按鍵
47、模塊</b></p><p> 按鍵設(shè)計(jì)采用的是復(fù)位按鍵,用來(lái)調(diào)節(jié)壓力上下限。單片機(jī)上電后所有I/0口均為高電平,故當(dāng)檢測(cè)到低電平的時(shí)候單片機(jī)就會(huì)相應(yīng)的做出動(dòng)作。由于軟件設(shè)計(jì)使用的是外部中斷1作為按鍵程序的入口,所以按鍵公共端口為地端。按鍵電路如圖3-8所示[12]。</p><p> 圖 3-8 按鍵模塊</p><p><b> 3.
48、7 報(bào)警模塊</b></p><p> 報(bào)警電路采用的無(wú)源蜂鳴器,無(wú)源蜂鳴器是流控器件,低電平觸發(fā)。在額定范圍內(nèi)蜂鳴器的響度隨著電流的增大而增大。通過(guò)編程控制來(lái)固定頻率。設(shè)計(jì)采用的S8550PNP型三極管,理論放大值為128倍容易實(shí)現(xiàn)深度飽和。采用1K電阻作為限流電阻防止三極管燒毀。報(bào)警電路如圖3-9所示。</p><p> 圖 3-9 報(bào)警模塊</p>&
49、lt;p> 3.8 串口通訊模塊</p><p> 串口通信,是指外設(shè)和計(jì)算機(jī)間,通過(guò)數(shù)據(jù)信號(hào)線 、地線、控制線等,按位進(jìn)行傳輸數(shù)據(jù)的一種通訊方式。設(shè)計(jì)當(dāng)中串口通訊電路采用MAX232,該芯片是美信公司專(zhuān)門(mén)為電腦的 RS-232 標(biāo)準(zhǔn)串口設(shè)計(jì)的單電源電平轉(zhuǎn)換芯片,使用+5v 單電源供電。利用串口可以實(shí)現(xiàn)與PC機(jī)的通訊,對(duì)于系統(tǒng)的二度開(kāi)發(fā)有一定的意義。串口通訊電路如圖3-10所示[13]。</p&
50、gt;<p><b> 圖3-8-1</b></p><p> 圖 3-10 串口通訊電路</p><p> 第4章 系統(tǒng)軟件設(shè)計(jì)</p><p> 4.1 主程序流程圖</p><p> 先由數(shù)字氣壓傳感器BMP085讀取當(dāng)前氣壓值和溫度值,并且使用IIC數(shù)據(jù)傳輸協(xié)議將氣壓和溫度的數(shù)字信號(hào)傳
51、輸?shù)絾纹瑱C(jī)中。STC89C52單片機(jī)經(jīng)過(guò)運(yùn)算處理之后將所得到的二進(jìn)制數(shù)字信號(hào)轉(zhuǎn)換成十進(jìn)制數(shù)據(jù),隨后單片機(jī)控制無(wú)線收發(fā)模塊nRF24L01將數(shù)據(jù)發(fā)送至另一塊無(wú)線收發(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ī)會(huì)控制蜂鳴器報(bào)警,直到接收到的數(shù)據(jù)正常為
52、止[14]。主程序流程圖如圖4-1所示。</p><p> 圖 4-1 主程序流程圖</p><p> 4.2 子程序流程圖</p><p> 4.2.1 氣壓及溫度模塊子程序</p><p> 氣壓、溫度模塊子程序流程圖如下圖4-2所示。</p><p> 圖 4-2 氣壓、溫度模塊子程序流程圖<
53、/p><p> BMP085使用的是IIC通訊協(xié)議,該通訊協(xié)議使用廣泛,格式固定。所以對(duì)于該部分的程序設(shè)計(jì)也會(huì)相對(duì)容易一些,但是由于IIC協(xié)議對(duì)于時(shí)序的要求較高所以在程序設(shè)計(jì)方面更加注重延時(shí)程序的設(shè)計(jì),以保證程序可以順利運(yùn)行。</p><p> IIC協(xié)議從START信號(hào)開(kāi)始,STOP信號(hào)結(jié)束,通過(guò)SCL和SDA來(lái)控制數(shù)據(jù)的傳輸,開(kāi)始時(shí)SCL拉高,SDA拉低,延時(shí)一段時(shí)間后從器件將會(huì)發(fā)送地
54、址到主控器件,在7位地址之后就可以進(jìn)行控制讀寫(xiě)位的操作,如果從器件接收到信號(hào)則會(huì)回發(fā)一個(gè)相應(yīng)的應(yīng)答信號(hào),第九個(gè)時(shí)鐘信號(hào)結(jié)束SDA拉低,SCL保持高電平。則這次數(shù)據(jù)傳輸結(jié)束[15]。時(shí)序圖如圖4-3所示。</p><p> 圖 4-3 IIC讀寫(xiě)時(shí)序圖</p><p><b> 參考程序如下:</b></p><p> 向IIC總線發(fā)送一
55、個(gè)字節(jié)數(shù)據(jù)</p><p> void BMP085_SendByte(BYTE dat)</p><p><b> {</b></p><p><b> BYTE i;</b></p><p> for (i=0; i<8; i++) //8位計(jì)數(shù)器</p
56、><p><b> {</b></p><p> dat <<= 1; //移出數(shù)據(jù)的最高位</p><p> SDA = CY; //送數(shù)據(jù)口</p><p> SCL = 1; //拉高時(shí)鐘線</p>&
57、lt;p> Delay5us(); //延時(shí)</p><p> SCL = 0; //拉低時(shí)鐘線</p><p> Delay5us(); //延時(shí)</p><p><b> }</b></p><p> BMP085_Recv
58、ACK();</p><p><b> }</b></p><p> 從IIC總線接收一個(gè)字節(jié)數(shù)據(jù)</p><p> BYTE BMP085_RecvByte()</p><p><b> {</b></p><p><b> BYTE i;</b&
59、gt;</p><p> BYTE dat = 0;</p><p> SDA = 1; //使能內(nèi)部上拉,準(zhǔn)備讀取數(shù)據(jù),</p><p> for (i=0; i<8; i++) //8位計(jì)數(shù)器</p><p><b> {</b></p>
60、<p> dat <<= 1;</p><p> SCL = 1; //拉高時(shí)鐘線</p><p> Delay5us(); //延時(shí)</p><p> dat |= SDA; //讀數(shù)據(jù) </p><p&g
61、t; SCL = 0; //拉低時(shí)鐘線</p><p> Delay5us(); //延時(shí)</p><p><b> }</b></p><p> return dat;</p><p><b> }</b></p>&l
62、t;p> 4.2.2 無(wú)線通信發(fā)送接收模塊子程序</p><p> 無(wú)線通信發(fā)送接收模塊子程序流程圖如下圖4-4所示。</p><p> 圖 4-4 無(wú)線通信發(fā)送接收模塊子程序流程圖</p><p> 無(wú)線通訊模塊nRF24L01使用的是SPI方式進(jìn)行輸出的傳輸,由于無(wú)線傳輸?shù)母蓴_性在一定情況下較強(qiáng),所以就需要在程序設(shè)計(jì)方面進(jìn)行一些控制,實(shí)現(xiàn)數(shù)據(jù)的校
63、驗(yàn)以及數(shù)據(jù)發(fā)射數(shù)據(jù)接收后的能夠及時(shí)的相應(yīng)或者發(fā)射成功的信號(hào),這樣可以保證程序的穩(wěn)定性,SPI讀時(shí)序如圖4-5所示。</p><p> 圖 4-5 SPI讀時(shí)序</p><p> 根據(jù)SPI讀時(shí)序圖可知,控制SPI總線的四個(gè)端口即可是實(shí)現(xiàn)對(duì)數(shù)據(jù)的寫(xiě)入,這樣程序只要在開(kāi)始讀取時(shí)序時(shí)將CSN由高拉低CSN,并且拉低時(shí)鐘線SCK,然后通過(guò)產(chǎn)生時(shí)鐘信號(hào)就可以實(shí)現(xiàn)對(duì)MISO口的數(shù)據(jù)讀取,每個(gè)時(shí)鐘信
64、號(hào)就可以讀出一位數(shù)據(jù),八個(gè)時(shí)鐘周期即可完成對(duì)一個(gè)字節(jié)數(shù)據(jù)的讀取,然后延時(shí)一段時(shí)間后就可以實(shí)現(xiàn)對(duì)第二個(gè)字節(jié)數(shù)據(jù)的讀取,讀出數(shù)據(jù)結(jié)束后需要將,SCN拉高,這樣就可以完成一個(gè)完整的數(shù)據(jù)讀取。參考程序如下:</p><p> uchar SPI_Read_Buf(uchar reg, uchar * pBuf, uchar bytes)</p><p><b> {</b>
65、;</p><p> uchar status, i;</p><p> CSN = 0; // CSN置低,開(kāi)始傳輸數(shù)據(jù)</p><p> status = SPI_RW(reg); // 選擇寄存器,同時(shí)返回狀態(tài)字</p><p> for(i=0; i<bytes; i++
66、)</p><p> pBuf[i] = SPI_RW(0); // 逐個(gè)字節(jié)從nRF24L01讀出</p><p> CSN = 1; // CSN拉高,結(jié)束數(shù)據(jù)傳輸</p><p> return(status); // 返回狀態(tài)寄存器</p><p> SPI寫(xiě)
67、時(shí)序圖如圖4-6所示。</p><p> 圖 4-6 SPI寫(xiě)時(shí)序圖</p><p> 同讀取數(shù)據(jù)類(lèi)似,也許開(kāi)始時(shí)將CSN拉低,并且產(chǎn)生固定的時(shí)鐘信號(hào),這樣就可以在每個(gè)時(shí)鐘信號(hào)的上升沿將一位數(shù)據(jù)從MOSI口寫(xiě)入,重復(fù)發(fā)次時(shí)鐘信號(hào)就可以完成對(duì)一個(gè)字節(jié)數(shù)據(jù)的寫(xiě)入。同樣寫(xiě)入完成后需要將CSN口拉高,完成本次的寫(xiě)入操作[16]。</p><p><b> 參
68、考程序如下:</b></p><p> uchar SPI_Write_Buf(uchar reg, uchar * pBuf, uchar bytes)</p><p><b> {</b></p><p> uchar status, i;</p><p> CSN = 0;
69、 // CSN置低,開(kāi)始傳輸數(shù)據(jù)</p><p> status = SPI_RW(reg); // 選擇寄存器,同時(shí)返回狀態(tài)字</p><p> for(i=0; i<bytes; i++)</p><p> SPI_RW(pBuf[i]); // 逐個(gè)字節(jié)寫(xiě)入nRF24L01</p><p
70、> CSN = 1; // CSN拉高,結(jié)束數(shù)據(jù)傳輸</p><p> return(status); // 返回狀態(tài)寄存器</p><p><b> }</b></p><p> 4.2.3 顯示子程序</p><p> 顯示模塊使用LCD
71、12864液晶顯示,支持串行數(shù)據(jù)傳輸及并行數(shù)據(jù)傳輸。顯示子程序使用的是LCD12864并行數(shù)據(jù)傳輸方式。根據(jù)LCD12864讀寫(xiě)時(shí)序圖即可完成對(duì)LCD12864的控制。顯示子程序流程圖如下圖4-7所示。</p><p> 圖 4-7 顯示模塊子程序流程圖</p><p> 由于對(duì)于程序并沒(méi)有用到對(duì)LCD12864的寫(xiě)入操作,不在過(guò)多敘述,但是對(duì)于LCD12864的數(shù)據(jù)寫(xiě)入及其顯示是該程
72、序設(shè)計(jì)部分的重點(diǎn)。LCD12864寫(xiě)入時(shí)序圖如下:</p><p> LCD12864寫(xiě)時(shí)序圖如圖4-8所示。</p><p> 圖 4-8 寫(xiě)時(shí)序圖</p><p> 根據(jù)寫(xiě)時(shí)序圖可知:RS在VIN1時(shí)刻由高電平拉低,R/W由高電平拉低,E端口由低電平拉高。并且經(jīng)過(guò)一段延時(shí)后將數(shù)據(jù)寫(xiě)入在并行接口上。數(shù)據(jù)寫(xiě)入后經(jīng)過(guò)一段時(shí)間將RS拉高,R/W拉高,E端口拉低。完
73、成一個(gè)字節(jié)的數(shù)據(jù)寫(xiě)入到LCD12864。同時(shí)寫(xiě)入程序分為寫(xiě)入命令和寫(xiě)入所顯示數(shù)據(jù),寫(xiě)入命令是直接更改LCD12864內(nèi)部寄存器的參數(shù),而寫(xiě)入所顯示數(shù)據(jù)則寫(xiě)入的數(shù)據(jù)相應(yīng)的ASCLL碼或者漢字庫(kù)里自帶的漢字。參考程序如下:</p><p> void lcd_wdat(uchar dat)</p><p> { </p>&l
74、t;p> while(lcd_busy());</p><p> LCD_RS = 1;</p><p> LCD_RW = 0;</p><p> LCD_EN = 0;</p><p><b> P0 = dat;</b></p><p> delayNOP();</p
75、><p> LCD_EN = 1;</p><p> delayNOP();</p><p> LCD_EN = 0; </p><p><b> }</b></p><p> /************************************************/ </p
76、><p> void lcd_wcmd(uchar cmd)</p><p> { </p><p> while(lcd_busy());</p><p> LCD_RS = 0;</p><p> LCD_RW = 0;</p><p>
77、; LCD_EN = 0;</p><p><b> P0 = cmd;</b></p><p> delayNOP();</p><p> LCD_EN = 1;</p><p> delayNOP();</p><p> LCD_EN = 0; </p><p
78、><b> }</b></p><p><b> 結(jié)論</b></p><p> 工作總結(jié)本次畢業(yè)設(shè)計(jì)是以汽車(chē)輪胎為應(yīng)用對(duì)象,是以提高在行駛過(guò)程中的汽車(chē)的安全性和穩(wěn)定性。設(shè)計(jì)中介紹了TPMS的應(yīng)用種類(lèi)以及它們各自的優(yōu)缺點(diǎn),對(duì)各項(xiàng)影響輪胎安全性能的原因做出了分析,從而設(shè)計(jì)出汽車(chē)輪胎壓力監(jiān)測(cè)系統(tǒng)。該系統(tǒng)以該系統(tǒng)設(shè)計(jì)以STC89C52為主控
79、芯片實(shí)現(xiàn)壓力采集及其壓力控制,壓力、溫度信號(hào)的采集使用BMP085數(shù)字氣壓傳感器,信號(hào)發(fā)送采用NRF24L01無(wú)線發(fā)送接收芯片,利用LCD12864進(jìn)行液晶顯示。當(dāng)輪胎漏氣和低氣壓情況時(shí),蜂鳴器報(bào)警,LED指示燈點(diǎn)亮。該系統(tǒng)達(dá)到了畢業(yè)設(shè)計(jì)任務(wù)書(shū)當(dāng)中所要求的性能指標(biāo)。</p><p> 本次所做的主要工作有:</p><p> 查閱了大量的文獻(xiàn)和資料之后,深入了解了國(guó)內(nèi)外相關(guān)技術(shù)和應(yīng)用,
80、以及未來(lái)的發(fā)展趨勢(shì)。通過(guò)了解當(dāng)前輪胎壓力監(jiān)測(cè)系統(tǒng)的分類(lèi)和技術(shù)特點(diǎn),分析了一些輪胎壓力檢測(cè)系統(tǒng)的工作原理,由于輪胎壓力異常對(duì)汽車(chē)行駛安全的影響,對(duì)輪胎的監(jiān)測(cè)機(jī)理和工作性能進(jìn)行了分析,確定了要從監(jiān)測(cè)輪胎壓力和溫度入手。給出了自己的設(shè)計(jì)方案。</p><p> 硬件電路設(shè)計(jì)當(dāng)中,首先介紹了設(shè)計(jì)的核心組成部分單片機(jī)STC89C52的的基本構(gòu)成和原理,簡(jiǎn)要的說(shuō)明了單片機(jī)的最小系統(tǒng),各引腳的功能介紹。然后介紹了氣壓監(jiān)測(cè)模塊
81、BMP085,無(wú)線通信收發(fā)模塊NRF24L01,給出了主要模塊電路的結(jié)構(gòu)。簡(jiǎn)要介紹了按鍵電路,報(bào)警電路,以及串口通訊電路,為下面的軟件電路的設(shè)計(jì)做準(zhǔn)備。 </p><p> 系統(tǒng)軟件設(shè)計(jì)部分,給出了主程序以及各個(gè)子程序的軟件流程圖,以便更好的理解。 </p><p> 最終程序調(diào)試正常,焊接成品,硬件運(yùn)行正常,滿(mǎn)足了初步設(shè)計(jì)要求,達(dá)到了對(duì)輪胎壓力監(jiān)測(cè)的目的。但是在實(shí)
82、際應(yīng)用中保證準(zhǔn)確收集壓力溫度信號(hào),并進(jìn)行準(zhǔn)確無(wú)誤的無(wú)線數(shù)據(jù)傳輸,還是存在一些干擾。由于研究時(shí)間和條件的限制,仍有許多問(wèn)題需要深入研究。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 陳法國(guó),陳偉,周鵬等。無(wú)線接口電路設(shè)計(jì)及其在TPMS中的應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2005</p><p> [2] 雷旖旎
83、,盧益民。輪胎壓力直接監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)與數(shù)字工程,2005</p><p> [3] 劉桂飄,羅玉濤。輪胎氣壓對(duì)汽車(chē)性能影響的研究[J].廣東公安科技,003</p><p> [4] 顏重光。汽車(chē)胎壓監(jiān)視系統(tǒng)的設(shè)計(jì)方案思考[J].理論與研究,2005</p><p> [5] 秦晰,王景成。胎壓監(jiān)測(cè)系統(tǒng)的實(shí)現(xiàn)[J].微型電腦應(yīng)用,2005<
84、/p><p> [6] 閆利文?;贛EMS技術(shù)的胎壓監(jiān)測(cè)系統(tǒng)的實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2006</p><p> [7] 周航慈。單片機(jī)應(yīng)用程序設(shè)計(jì)技術(shù)[M].北京:北京航天航空大學(xué)出版社,1992(2):80-128</p><p> [8] 韓建保,陳厲兵。汽車(chē)輪胎氣壓電子實(shí)時(shí)監(jiān)測(cè)系統(tǒng)[J].汽車(chē)技術(shù),2002</p><p>
85、[9] 胡漢才。單片機(jī)原理及其接口技術(shù)[M]. 北京:清華大學(xué)出版社,2003</p><p> [10] 孫雨耕,張靜,孫永進(jìn),房朝暉。無(wú)線自組傳感器網(wǎng)絡(luò)[J]. 傳感技術(shù)學(xué)報(bào), 2004,(02) </p><p> [11] 呂惠民,田敬民。壓力傳感器的研究現(xiàn)狀與發(fā)展趨勢(shì)[J]. 半導(dǎo)體技術(shù), 1998,(02) </p><p> [12] 汪卓飛。一
86、種高精度角度傳感器的研究[D]. 浙江工業(yè)大學(xué), 2009 </p><p> [13] RTPM Pressure Sensor NPX-CO1780,GE Nova Sensor,2006</p><p> [14] MC33594/D PLL tuned UHF Receiver for Data Transfer Applications,Motorola,Rev 1.1&
87、lt;/p><p> [15] CURT SCHURGERS,Tire Pressure Monitoring System User's Guide[EB].Microchip Technology Inc.,2006</p><p> [16] KOWALEWSKI ,MARCIN . Moniroring and managing tirpressure [J].IE
88、EE Potentials,2005,3:8-10</p><p><b> 致謝</b></p><p> 此次為期四個(gè)月的畢業(yè)設(shè)計(jì)已順利完成。首先要感謝我的指導(dǎo)老師-劉秀敏老師,正是在老師的悉心指導(dǎo)下,我才得以順利按時(shí)完成畢業(yè)設(shè)計(jì)。老師嚴(yán)謹(jǐn)?shù)慕虒W(xué)態(tài)度,豐富的閱歷,都給我留下了深刻的印象。當(dāng)然,在畢業(yè)設(shè)計(jì)的過(guò)程當(dāng)中,有實(shí)驗(yàn)室里的很多同學(xué)給予了我很大的幫助。<
89、;/p><p> 畢業(yè)設(shè)計(jì)剛開(kāi)始的時(shí)候,我的第一感覺(jué)是茫然,根本不知道從哪里下手,甚至懷疑自己的能力,是否能順利完成任務(wù)。我為我擁有一位出色而且非常敬業(yè)的指導(dǎo)老師而感到幸運(yùn)。在畢業(yè)設(shè)計(jì)過(guò)程當(dāng)中,劉老師給我提供了很大的幫助,老師不厭其煩的為我們講解了畢業(yè)設(shè)計(jì)當(dāng)中可能出現(xiàn)的任何問(wèn)題。從畢業(yè)設(shè)計(jì)開(kāi)始時(shí)的畢業(yè)實(shí)習(xí)報(bào)告、開(kāi)題報(bào)告、外文翻譯、一直到最后論文多次的修改,劉老師總是以專(zhuān)業(yè)的標(biāo)準(zhǔn)來(lái)嚴(yán)格要求我們,為我們出色的完成畢業(yè)設(shè)
90、計(jì)任務(wù)打下了堅(jiān)實(shí)的基礎(chǔ),在很大程度上提升我的專(zhuān)業(yè)能力。</p><p> 通過(guò)此次畢業(yè)設(shè)計(jì),使我深刻認(rèn)識(shí)到學(xué)習(xí)好專(zhuān)業(yè)知識(shí)的重要性,也深深體會(huì)到了理論與實(shí)踐相結(jié)合的含義。同時(shí),此次畢業(yè)設(shè)計(jì)也檢驗(yàn)了我大學(xué)四年的學(xué)習(xí)成果,對(duì)于此次設(shè)計(jì)當(dāng)中對(duì)于專(zhuān)業(yè)知識(shí)的運(yùn)用不夠熟練,我將在以后的學(xué)習(xí)和實(shí)踐當(dāng)中,繼續(xù)努力和不斷完善。</p><p> 四個(gè)月的設(shè)計(jì)過(guò)程是對(duì)過(guò)去所學(xué)知識(shí)的系統(tǒng)的提高和擴(kuò)展的過(guò)程,也
91、是對(duì)自己實(shí)踐能力的一次考驗(yàn)。雖然經(jīng)歷了很多困難,但最終還是順利完成。在發(fā)現(xiàn)問(wèn)題,解決問(wèn)題的過(guò)程當(dāng)中令我獲益匪淺,為日后的發(fā)展提供了有利條件。</p><p> 畢業(yè)臨近,回首這四個(gè)月,感慨萬(wàn)千,最后由衷的感謝在畢業(yè)設(shè)計(jì)當(dāng)中給予我莫大幫助的老師和同學(xué)們。</p><p><b> 附錄</b></p><p><b> 附錄I 原
92、理圖</b></p><p><b> 附錄II PCB圖</b></p><p><b> 附錄III程序</b></p><p><b> 發(fā)射</b></p><p> #include <reg52.h></p><p
93、> #include <api.h></p><p> #include <math.h> //Keil library </p><p> #include <stdlib.h> //Keil library </p><p> #include <stdio.h> //Keil
94、library</p><p> #include <INTRINS.H> //Keil library </p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> #define TX_ADR_WIDT
95、H 5 // 5字節(jié)寬度的發(fā)送/接收地址</p><p> #define TX_PLOAD_WIDTH 4 // 數(shù)據(jù)通道有效數(shù)據(jù)寬度</p><p> uchar code TX_ADDRESS[TX_ADR_WIDTH] = {0x34,0x43,0x10,0x10,0x01}; // 定義一個(gè)靜態(tài)發(fā)送地址</p><p> uchar RX_
96、BUF[TX_PLOAD_WIDTH];</p><p> uchar TX_BUF[TX_PLOAD_WIDTH];</p><p> sbit SCL=P2^4; //IIC時(shí)鐘引腳定義</p><p> sbit SDA=P2^3; //IIC數(shù)據(jù)引腳定義</p><p> sbit bee=P2^0;<
97、;/p><p> uchar bdata sta;</p><p> sbit RX_DR = sta^6;</p><p> sbit TX_DS = sta^5;</p><p> sbit MAX_RT = sta^4;</p><p> #defineBMP085_SlaveAddress
98、 0xee //定義器件在IIC總線中的從地址 </p><p> #define OSS 0// Oversampling Setting (note: code is not set up to use other OSS values)</p><p> typedef unsigned char BYTE;&l
99、t;/p><p> typedef unsigned short WORD;</p><p> uchar ge,shi,bai,qian,wan,shiwan; //顯示變量</p><p> int dis_data; //變量</p><p> shor
100、t ac1;</p><p> short ac2; </p><p> short ac3; </p><p> unsigned short ac4;</p><p> unsigned short ac5;</p><p> unsigned short ac6;</p><p>
101、; short b1; </p><p><b> short b2;</b></p><p><b> short mb;</b></p><p><b> short mc;</b></p><p><b> short md;</b><
102、;/p><p> 函數(shù): init_io()</p><p><b> 描述:</b></p><p><b> 初始化IO</b></p><p> void init_io(void)</p><p><b> {</b></p>
103、<p> CE = 0; // 待機(jī)</p><p> CSN = 1; // SPI禁止</p><p> SCK = 0; // SPI時(shí)鐘置低</p><p> IRQ = 1; // 中斷復(fù)位</p><p> //LED = 0xff;// 關(guān)閉指
104、示燈</p><p><b> }</b></p><p> 函數(shù):delay_ms()</p><p><b> 描述:</b></p><p><b> 延遲x毫秒</b></p><p> void delay_ms(uchar x)&l
105、t;/p><p><b> {</b></p><p> uchar i, j;</p><p><b> i = 0;</b></p><p> for(i=0; i<x; i++)</p><p><b> {</b></p>
106、<p><b> j = 250;</b></p><p> while(--j);</p><p><b> j = 250;</b></p><p> while(--j);</p><p><b> }</b></p><p&g
107、t;<b> }</b></p><p> void delay(int ms)</p><p><b> {</b></p><p> while(ms--)</p><p><b> {</b></p><p><b> uch
108、ar i;</b></p><p> for(i=0;i<150;i++) </p><p><b> {</b></p><p> _nop_(); </p><p><b> _nop_();</b></p><p><b>
109、; _nop_();</b></p><p><b> _nop_();</b></p><p><b> }</b></p><p> 函數(shù):SPI_RW()</p><p><b> 描述:</b></p><p> 根據(jù)SP
110、I協(xié)議,寫(xiě)一字節(jié)數(shù)據(jù)到nRF24L01,同時(shí)從nRF24L01</p><p><b> 讀出一字節(jié)</b></p><p> uchar SPI_RW(uchar byte)</p><p><b> {</b></p><p><b> uchar i;</b>&l
111、t;/p><p> for(i=0; i<8; i++) // 循環(huán)8次</p><p><b> {</b></p><p> MOSI = (byte & 0x80); // byte最高位輸出到MOSI</p><p> byte <<= 1;
112、 // 低一位移位到最高位</p><p> SCK = 1; // 拉高SCK,nRF24L01從MOSI讀入1位數(shù)據(jù),同時(shí)從MISO輸出1位數(shù)據(jù)</p><p> byte |= MISO; // 讀MISO到byte最低位</p><p> SCK = 0; // SCK置低<
113、/p><p><b> }</b></p><p> return(byte); // 返回讀出的一字節(jié)</p><p><b> }</b></p><p> 函數(shù):SPI_RW_Reg()</p><p><b> 描述:</b
114、></p><p> 寫(xiě)數(shù)據(jù)value到reg寄存器</p><p> uchar SPI_RW_Reg(uchar reg, uchar value)</p><p><b> {</b></p><p> uchar status;</p><p> CSN = 0;
115、 // CSN置低,開(kāi)始傳輸數(shù)據(jù)</p><p> status = SPI_RW(reg); // 選擇寄存器,同時(shí)返回狀態(tài)字</p><p> SPI_RW(value); // 然后寫(xiě)數(shù)據(jù)到該寄存器</p><p> CSN = 1; // CSN拉高,結(jié)束數(shù)
116、據(jù)傳輸</p><p> return(status); // 返回狀態(tài)寄存器</p><p><b> }</b></p><p> 函數(shù):SPI_Read()</p><p><b> 描述:</b></p><p> 從reg寄存器讀一字
117、節(jié)</p><p> uchar SPI_Read(uchar reg)</p><p><b> {</b></p><p> uchar reg_val;</p><p> CSN = 0; // CSN置低,開(kāi)始傳輸數(shù)據(jù)</p><p> SP
118、I_RW(reg); // 選擇寄存器</p><p> reg_val = SPI_RW(0); // 然后從該寄存器讀數(shù)據(jù)</p><p> CSN = 1; // CSN拉高,結(jié)束數(shù)據(jù)傳輸</p><p> return(reg_val); // 返回
119、寄存器數(shù)據(jù)</p><p><b> }</b></p><p> 函數(shù):SPI_Read_Buf()</p><p><b> 描述:</b></p><p> 從reg寄存器讀出bytes個(gè)字節(jié),通常用來(lái)讀取接收通道</p><p> 數(shù)據(jù)或接收/發(fā)送地址<
120、;/p><p> uchar SPI_Read_Buf(uchar reg, uchar * pBuf, uchar bytes)</p><p><b> {</b></p><p> uchar status, i;</p><p> CSN = 0; // CSN置低,開(kāi)始