2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  本科生畢業(yè)設(shè)計</b></p><p> 基于52單片機的車用超聲波測距系統(tǒng)設(shè)計與實現(xiàn)</p><p> Based on 52 single-chip ultrasonic distance measurement system for Car reversing</p><p> 學(xué)生姓名</p>

2、<p> 所在專業(yè)電氣工程及其自動化</p><p> 所在班級</p><p> 申請學(xué)位工學(xué)學(xué)士</p><p> 指導(dǎo)教師職稱副教授</p><p> 副指導(dǎo)教師職稱</p><p> 答辯時間2012年 6 月 2 日</p><p><b>  目

3、錄</b></p><p><b>  設(shè)計總說明I</b></p><p>  introductionII</p><p>  1設(shè)計的研究背景及意義1</p><p>  1.1國內(nèi)應(yīng)用于汽車測距地方法對比1</p><p>  2整體方案設(shè)計及器件的選擇1<

4、;/p><p>  2.1超聲波測距的原理1</p><p>  2.2HC-SR04超聲波測距模塊的原理及參數(shù)2</p><p>  2.3數(shù)據(jù)處理的核心:AT89S52芯片3</p><p>  2.4DS18B20芯片介紹5</p><p>  2.5語音報警模塊板載ISD1820芯片6</

5、p><p>  3超聲波電路測距系統(tǒng)的硬件設(shè)計7</p><p>  3.1整體電路設(shè)計7</p><p>  3.2超聲波模塊電路7</p><p>  3.3超聲波顯示電路設(shè)計9</p><p>  3.4超聲波溫度補償?shù)碾娐吩O(shè)計10</p><p>  3.5報警電路設(shè)計

6、語音報警模塊板載ISD1820芯片10</p><p>  4超聲波測距的軟件系統(tǒng)設(shè)計11</p><p>  4.1軟件設(shè)計分析11</p><p>  4.2軟件設(shè)計思路11</p><p>  4.2.1主程序11</p><p>  4.2.2溫度補償流程圖13</p>&l

7、t;p>  5調(diào)試及誤差分析13</p><p>  5.1軟件調(diào)試13</p><p>  5.1.1超聲波發(fā)射啟動:14</p><p>  5.1.2超聲波模塊工作14</p><p>  5.1.3測距計算15</p><p>  5.1.4距離溢出處理及報警15</p>

8、<p>  5.2 測試分析16</p><p>  5.3誤差分析17</p><p><b>  鳴 謝18</b></p><p><b>  參考文獻19</b></p><p><b>  設(shè)計總說明</b></p><p&

9、gt;  隨著汽車產(chǎn)業(yè)的快速發(fā)展和人們生活水平的不斷提高,我國的汽車數(shù)量正逐年增加。同時汽車駕駛?cè)藛T中非職業(yè)汽車駕駛?cè)藛T的比例也逐年增加。在公路、街道、停車場、車庫等擁擠、狹窄的地方倒車時,駕駛員既要前瞻,又要后顧,稍微不小心就會發(fā)生事故。據(jù)相關(guān)調(diào)查統(tǒng)計,15%的汽車碰撞事故是因倒車時汽車的后視能力不良造成的。因此,增加汽車的后視能力,研制汽車后部探測障礙物的倒車報警裝置便成為近些年來的研究熱點。安全避免障礙物的前提是快速、準確地測量障

10、礙物與汽車之間的距離。國內(nèi)外的學(xué)者開始逐步重視倒車報警器在實際方面的應(yīng)用,在低成本的基礎(chǔ)上力求高精度,這對于降低生產(chǎn)成本、促進技術(shù)發(fā)展和普及倒車雷達具有很重要的意義[1]。</p><p>  本設(shè)計采用AT89S52芯片為核心,三個HC-SR04超聲波測距模塊為采樣對象,lcd1602為顯示模塊。三個超聲波模塊分別位于汽車的后方的左中右,實時把汽車后部距離障礙物的距離顯示給駕駛員,當(dāng)某個距離少于10cm時,IS

11、D1820語音報警模塊播報錄音對駕駛員提出預(yù)警。</p><p>  經(jīng)試驗證明,這套系統(tǒng)軟硬件設(shè)計合理,抗干擾能力強,實時性能好,可以有效地解決汽車倒車碰撞,能讓汽車??康母诱R,駕駛員更加輕松、安全地倒車。</p><p>  關(guān)鍵詞:(52單片機;汽車倒車;超聲波模塊)</p><p>  introduction</p><p> 

12、 With the rapid development of industry and the improvement in people's living standards,more and more people have their cars in our country. The proportion of non-occupational car drivers also increased year by year

13、. Reversing in the crowded, narrow roads, streets, parking lots, garages and other places make the drive pay too much attention and it is easily cause traffic accidents. According to surveys, 5% traffic accidents are du

14、e to the drivers can not see what is behind the car. So improving</p><p>  My design is using AT89S52 chip at the core, Three HC-SR04 ultrasonic ranging module as a sample object, cd1602 as the demonstration

15、 module. Three ultrasonic modules which are located in the left rear of the car to the right. Tell the distance to the drivers at anytime. When one of the distances is less than 10cm, ISD1820 voice alarm module broadcast

16、s recorded on driver's early warning.</p><p>  The test proved that this system is reasonable and it has strong anti-interference ability, it is a effective solution to the auto reversing collision. Driv

17、ers can be more easily and safely reverse while having this system.</p><p>  Keywords: 52 single-chip;Car reversing; Ultrasonic modules</p><p>  基于52單片機的車用超聲波測距系統(tǒng)設(shè)計與實現(xiàn)</p><p>  電氣工程

18、及其自動化,</p><p><b>  指導(dǎo)教師:</b></p><p><b>  畢業(yè)設(shè)計說明書</b></p><p>  設(shè)計的研究背景及意義</p><p>  超聲波是指頻率高于20Khz的聲波,屬于機械波的范疇,遵循一般機械波在彈性介質(zhì)中的傳播規(guī)律,如在介質(zhì)中的分界面處發(fā)生的反射和

19、折射現(xiàn)象,在進入介質(zhì)后被介質(zhì)吸收而發(fā)生的衰減等,正是因為有這些性質(zhì),使得超聲波可以用于距離的測量,隨著經(jīng)濟的發(fā)展,科技水平的不斷提高,電子測量技術(shù)應(yīng)用越來越廣泛,超聲波測量精度高,成本低,性能穩(wěn)定則備受青睞,所以超聲波測距技術(shù)被廣泛應(yīng)用于人們的生活和工作中[1]。</p><p>  超聲波測距是一種非接觸檢測技術(shù),不受光線、被測對象顏色的影響,比其他儀器更加衛(wèi)生,具有不污染、高可靠、壽命長等特點,被廣泛應(yīng)用于紙

20、業(yè)、礦業(yè)等行業(yè)中,可在不同環(huán)境中進行距離測量的準確度的在線標定,可直接用于水、酒精、等液位控制,能達到工業(yè)實用的指標要求。因為超聲波測距具有以上的這些特點,使得其在汽車防碰撞方面有廣泛的應(yīng)用[1]。</p><p>  國內(nèi)應(yīng)用于汽車測距地方法對比</p><p>  目前,運用于汽車的測距的主要有以下四種方式:超聲波測距、毫米波雷達測距、攝像系統(tǒng)測距、激光測距。雷達測距能夠探測多目標,精

21、度高,受天氣影響較少,已達到實用水平。作為車載雷達,卻存在著電磁波的干擾問題,必須防止因雷達間以及其他通訊設(shè)施的電磁波干擾而發(fā)生的誤動作。目前,車載雷達測距主要作為防撞雷達,防止在高速公路上發(fā)生的追尾碰撞。 攝像系統(tǒng)測距模仿人體視覺原理,測量精度高。但目前價格較高,同時由于受軟件和硬件的制約,成像速度較慢。 激光測距儀雖然具有測量時間短,量程大、精度高等優(yōu)點,但同樣被高昂的價格制約著他的發(fā)展。 超聲波測距原理簡單,制作方便,成本較低,

22、雖然受環(huán)境因素不能用于遠距離和高精度測量,但由于其理想的測量距離為4-5米,用于汽車的倒車防碰撞剛好合適[1]。</p><p>  整體方案設(shè)計及器件的選擇</p><p><b>  超聲波測距的原理</b></p><p>  諧振頻率高于20Khz的聲波稱為超聲波。超聲波為直線傳播方式,頻率越高,反射能力越強,而繞射能力越弱。利用超聲波

23、這種特性,常常利用檢測其發(fā)射時間進行測量。其工作原理是:超聲波模塊向介質(zhì)發(fā)射超聲波,聲波遇到目標后必然有反射回波作用在模塊上。若已知介質(zhì)中勝訴為c,回波到達時刻與發(fā)射波的時間差為t,就可以算出發(fā)射點與反射點的距離為s: s=c*t/2. [2]</p><p>  式中的C為超聲波在空氣中的傳播速度340m/s,其與溫度有關(guān)。如果環(huán)境溫度變化顯著,必須考慮進行溫度補償??諝庵新曀倥c溫度的關(guān)系可以表示為:<

24、;/p><p>  c=331.4+0.607t [2] </p><p>  HC-SR04超聲波測距模塊的原理及參數(shù)</p><p>  圖 2-1 HR-SR04超聲波集成模塊正面外觀圖</p><p>  圖2-2 HR-SR04超聲波集成模塊背面外觀圖</p><p>  H

25、C-SR04超聲波測距模塊可提供2cm-400cm的非接觸式距離感應(yīng)測距功能,模塊包括超聲波發(fā)射器、接收器與控制電路。</p><p><b>  基本工作原理:</b></p><p> ?。?)、采用IO口TRIG觸發(fā)測距,至少給出10US的高電平信號;</p><p>  (2)、模塊自動發(fā)送8個40Khz方波,自動檢測是都有信號返回;&

26、lt;/p><p> ?。?)、有信號返回,通過IO口ECHO輸出一個高電平,高電平的持續(xù)時間就是超聲波從發(fā)射到返回的時間。測試距離=(高電平時間*聲速(340m/s))/2;</p><p>  HC-SR04超聲波電氣參數(shù)</p><p>  數(shù)據(jù)處理的核心:AT89S52芯片</p><p>  圖2-3 AT89S52 單片機引腳圖及實

27、物圖</p><p>  AT89S52是一種低功耗、高性能CMOS 8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89S52在眾多嵌入式控制應(yīng)用系統(tǒng)中得到廣泛應(yīng)用[3]。</p

28、><p>  P0 口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個TTL邏 輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入。 當(dāng)訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下, P0不具有內(nèi)部上拉電阻。 在flash編程時,P0口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗 時,需要外部上拉電阻。 </p><p>  P1

29、口:P1 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,p1 輸出緩沖器能驅(qū)動4 個 TTL 邏輯電平。對P1 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入 口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。</p><p>  P2 口:P2 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動PLCC封裝4 個 TTL 邏輯電平。對P2 端口寫“

30、1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入 口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。 在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX @DPTR) 時,P2 口送出高八位地址。在這種應(yīng)用中,P2 口使用很強的內(nèi)部上拉發(fā)送1。在使用 8位地址(如MOVX @RI)訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內(nèi)容。 在flash編程和校驗時,P2口也接收高8位地址字節(jié)和

31、一些控制信號。 </p><p>  P3 口:P3 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,p3 輸出緩沖器能驅(qū)動4 個 TTL 邏輯電平。對P3 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入 口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。 P3口亦作為AT89S52特殊功能(第二功能)使用,如下表所示。 在flash編程和校驗時,P3口也接收一些控制信號

32、[4]。</p><p><b>  第二功能:</b></p><p>  P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口)</p><p>  P3.2 INTO(外中斷0) P3.3 INT1(外中斷1)</p><p>  P3.4 T0(定時/計數(shù)器0)

33、 P3.5 T1(定時計數(shù)器1)</p><p>  P3.6 WR(外部數(shù)據(jù)存儲器寫選通)P3.7 RD(外部數(shù)據(jù)存儲器讀選通)</p><p>  ALE/PROG:當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當(dāng)訪問

34、外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。對FLASH存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應(yīng)設(shè)置ALE禁止位無效[5]。 </p><p>  PSEN:程序儲存允許(PSEN)輸出是外部程序存儲器的讀選

35、通信號,當(dāng)AT89S52由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次PSEN有效,即輸出兩個脈沖,在此期間,當(dāng)訪問外部數(shù)據(jù)存儲器,將跳過兩次PSEN信號。 </p><p>  EA/VPP:外部訪問允許,欲使CPU僅訪問外部程序存儲器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時內(nèi)部會鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU則執(zhí)行

36、內(nèi)部程序存儲器的指令。FLASH存儲器編程時,該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。 </p><p>  XTAL1:振蕩器反相放大器和內(nèi)部時鐘發(fā)生電路的輸入端。 </p><p>  XTAL2:振蕩器反相放大器的輸出端[6]。</p><p>  DS18B20芯片介紹</p><p> 

37、 由于考慮到汽車倒車環(huán)境的復(fù)雜性,對聲速進行溫度補償將大大提高數(shù)據(jù)的準確性。</p><p>  DS18B20數(shù)字溫度傳感器接線方便,封裝成后可應(yīng)用于多種場合,如管道式,螺紋式,磁鐵吸附式,不銹鋼封裝式,型號多種多樣,有LTM8877,LTM8874等等。主要根據(jù)應(yīng)用場合的不同而改變其外觀。封裝后的DS18B20可用于電纜溝測溫,高爐水循環(huán)測溫,鍋爐測溫,機房測溫,農(nóng)業(yè)大棚測溫,潔凈室測溫,彈藥庫測溫等各種非極

38、限溫度場合。耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測溫和控制領(lǐng)域[11]。</p><p>  圖 2-4 DS18B20的引腳圖及實物圖</p><p>  特點:獨特的一線接口,只需要一條口線通信 多點能力,簡化了分布式溫度傳感應(yīng)用 無需外部元件 可用數(shù)據(jù)總線供電,電壓范圍為3.0 V至5.5 V 無需備用電源 測量溫度范圍為-55 ° C至+1

39、25 ℃ 。華氏相當(dāng)于是-67 ° F到257華氏度 -10 ° C至+85 ° C范圍內(nèi)精度為±0.5 ° C </p><p>  溫度傳感器可編程的分辨率為9~12位 溫度轉(zhuǎn)換為12位數(shù)字格式最大值為750毫秒 用戶可定義的非易失性溫度報警設(shè)置 應(yīng)用范圍包括恒溫控制,工業(yè)系統(tǒng),消費電子產(chǎn)品溫度計,或任何熱敏感系統(tǒng) </p><p> 

40、 描述該DS18B20的數(shù)字溫度計提供9至12位(可編程設(shè)備溫度讀數(shù)。信息被發(fā)送到/從DS18B20 通過1線接口,所以中央微處理器與DS18B20只有一個一條口線連接。為讀寫以及溫度轉(zhuǎn)換可以從數(shù)據(jù)線本身獲得能量,不需要外接電源。 因為每一個DS18B20的包含一個獨特的序號,多個ds18b20s可以同時存在于一條總線。這使得溫度傳感器放置在許多不同的地方。它的用途很多,包括空調(diào)環(huán)境控制,感測建筑物內(nèi)溫設(shè)備或機器,并進行過程監(jiān)測和控制[

41、18]。</p><p>  語音報警模塊板載ISD1820芯片</p><p>  板載ISD1820語音模塊具有接線簡單,容易控制等特點,只需在PLAYE引腳上連上單片機的某個IO口,當(dāng)給出一個有效電平時,語音模塊即可播放預(yù)先錄制的聲音。</p><p>  1、板載咪頭,可以直接錄音</p><p>  2、可以進行10秒左右的語音錄放

42、</p><p>  3、高質(zhì)量自然的語音還原,可用作喊話器模塊</p><p>  4、帶循環(huán)播放,點動播放,單遍播放功能</p><p>  5、芯片主要的引腳已經(jīng)引出,可以通過單片機控制操作</p><p>  6、工作電壓:3~5V</p><p>  圖2-4 板載ISD1820芯片模塊的正面實物圖<

43、/p><p>  整體電路的控制核心為單片機AT89S52,三個超聲波發(fā)射和接收模塊HC-SR04對汽車的左、中、右數(shù)據(jù)進行采集并發(fā)送到芯片處理。DS18B20則對實時溫度采集保證聲速誤差盡量減少。所測得的數(shù)據(jù)全部顯示在LED1602上面,當(dāng)某個數(shù)據(jù)顯示的距離少于10cm時,ISD1820語音報警模塊播報錄音對駕駛員提出預(yù)警。</p><p>  超聲波電路測距系統(tǒng)的硬件設(shè)計</p>

44、;<p><b>  整體電路設(shè)計</b></p><p>  圖3-1 整體電路設(shè)計系統(tǒng)框圖</p><p>  三個HC-SR04超聲波模塊發(fā)出40kHz的信號,遇到障礙物后返回并發(fā)給單片機一個有效電平,單片機內(nèi)部定時器記錄期間的時間T,結(jié)合被DS18B20修正了的聲速計算出距離并顯示在LED1602,一同顯示的還有實時的溫度。當(dāng)某個測

45、量距離少于10cm時,ISD1820語音報警芯片播報預(yù)先錄制的聲音對駕駛員提出預(yù)警。</p><p><b>  超聲波模塊電路</b></p><p>  圖3-2 超聲波模塊發(fā)射電路</p><p>  圖3-3 超聲波模塊接收電路</p><p>  圖3-4 超聲波時序圖 </p><

46、;p>  以上時序圖表明只要提供一個10us以上的脈沖觸發(fā)信號,該模塊內(nèi)部將發(fā)出8個40kHz周期電平并檢測回波。一旦檢測到有回波信號則輸出回響信號?;仨懶盘柕拿}沖寬度與所測距離成正比。由此通過發(fā)射信號到回收的回響信號時間間隔可以計算得到距離。</p><p>  超聲波顯示電路設(shè)計 </p><p>  圖 3-5 LCD1602 模塊正面圖</p><p

47、>  圖3-6 LCD1602模塊的電路引腳接線</p><p>  由于本設(shè)計連接三個超聲波模塊,一個溫度檢測芯片,要顯示的內(nèi)容較多,綜合考慮采用LED1602顯示。1602液晶也叫1602字符型液晶它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊它有若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符。每位之間有一個點距的間隔每行之間也有間隔起到了字符間距和行間距的作用。1

48、602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等。</p><p>  1602采用標準的16腳接口,其中: </p><p>  第1腳:VSS為電源地 </p><p>  第2腳:VDD接5V電源正極 </p><p>  第3腳:V

49、0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會 產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度)。 </p><p>  第4腳:RS為寄存器選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇指令寄存器。 </p><p>  第5腳:RW為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。 </p><p&g

50、t;  第6腳:E(或EN)端為使能(enable)端。 </p><p>  第7~14腳:D0~D7為8位雙向數(shù)據(jù)端。 </p><p>  第15~16腳:空腳或背燈電源。15腳背光正極,16腳背光負極。</p><p>  超聲波溫度補償?shù)碾娐吩O(shè)計</p><p>  DS18B20是美國DALLAS半導(dǎo)體公司推出的一種改進型智能溫度

51、傳感器。與傳統(tǒng)的熱敏電阻相比,它能夠直接讀出被測溫度并且可以根據(jù)實際要求通過簡單的編程實現(xiàn)9-12位數(shù)字式讀數(shù)方式??梢栽?3.75ms和750ms內(nèi)完成9位和12位的數(shù)字量,并且從DS18B20讀出的信息或?qū)懭隓S18B20的信息僅需要一根接線的讀寫,溫度變換功率來源于數(shù)據(jù)總線,總線本線也可以向所掛接的DS18B20供電,無需額外電源。因而使用DS18B20可以使系統(tǒng)結(jié)構(gòu)更加簡單,可靠性更高。由于聲速受氣溫的影響比較大,所以通過IO口

52、控制該芯片來對超聲波測距中的聲速進行校正,盡量減少測距中的誤差。</p><p>  圖3-7 DS18B20的引腳接線</p><p>  報警電路設(shè)計語音報警模塊板載ISD1820芯片</p><p>  圖3-8 ISD1820語音報警模塊的引腳接線</p><p>  當(dāng)測量的距離少于系統(tǒng)設(shè)定的值(本系統(tǒng)預(yù)設(shè)值為10cm),給BE

53、EP引腳一個高低電平(專門用于出發(fā)ISD1820),語音芯片收到信號,開始播報預(yù)先錄制的音樂。</p><p>  語音報警模塊板載ISD1820芯片內(nèi)部電路</p><p>  圖3-9 ISD1820語音報警模塊的內(nèi)部結(jié)構(gòu)</p><p>  超聲波測距的軟件系統(tǒng)設(shè)計</p><p><b>  軟件設(shè)計分析</b>

54、</p><p>  完成了系統(tǒng)的硬件設(shè)計之后,接下來就是系統(tǒng)的軟件設(shè)計,此設(shè)計所需要完成的主要是針對系統(tǒng)功能的實現(xiàn)及數(shù)據(jù)的處理和應(yīng)用。由以上所述系統(tǒng)硬件設(shè)計和各個電路功能,系統(tǒng)軟件需要實現(xiàn)以下功能:</p><p>  信號控制。在系統(tǒng)硬件中,已經(jīng)完成了hc-sr04與單片機的連接。在系統(tǒng)軟件設(shè)計中只需要完成循環(huán)控制觸發(fā)或接收各個超聲波模塊的信號。</p><p>

55、;  數(shù)據(jù)的存儲。測量系統(tǒng)中需要得到發(fā)射信號和接收回波的時間差,需要讀出計數(shù)器的值,然后存儲在RAM中,在發(fā)射下一個信號前,需要對定時器以及存儲參數(shù)清零。</p><p>  數(shù)據(jù)處理以及顯示。RAM中的計數(shù)值通過程序得到真實值*CM,再通過LCD顯示出來,必要時啟動語音芯片。</p><p><b>  軟件設(shè)計思路 </b></p><p&

56、gt;<b>  主程序</b></p><p>  主程序的流程圖如下圖所示。主程序首先對系統(tǒng)各個連接的硬件進行初始化,包括設(shè)置T0的工作方式,開中斷,1602的初始化等。然后控制給超聲波模塊觸發(fā)管腳一個TRIG一個持續(xù)10us的有效信號,超聲波模塊開始發(fā)射8個40Hkz的周期電平信號,一旦檢測到有回波信號則輸出回響信號?;仨懶盘柕拿}沖寬度與所測距離成正比?;仨懶盘杽傋兏唠娖綍r,開啟定時器

57、,等到電平拉低,關(guān)閉定時器并記錄時間T。程序進入計算子程序,中間首先執(zhí)行記速程序,利用DS18B20修正當(dāng)時速度。通過一系列判斷(超過4m發(fā)生溢出,低于設(shè)定的10cm,啟動語音報警)顯示在lcd1602上面。 </p><p>  圖4-1 系統(tǒng)程序流程圖</p><p><b>  溫度補償流程圖</b></p><p>  圖4-2

58、 溫度補償流程圖</p><p>  考慮到溫度對聲速的影響,程序在一開始就進行溫度采集,在關(guān)閉定時器后,修正聲速后再進行數(shù)據(jù)處理。</p><p><b>  調(diào)試及誤差分析 </b></p><p><b>  5.1軟件調(diào)試</b></p><p>  由于本設(shè)計采用的是模塊連接,連接前首先保

59、證GND都已連接,有萬用表可以測試一下它們是否已經(jīng)有效連接。連接前,可以先測試各個模塊是否能夠工作,其功能能否達到要求。硬件測試好后,便可以將程序便已下載到單片機中試運行。根據(jù)實際情況可以修改超聲波發(fā)生子程序每次發(fā)送的脈沖寬度和兩次測量的時間間隔,以適應(yīng)不同距離的測量需要。根據(jù)所設(shè)計的電路參數(shù)和程序,測距儀能測量的范圍為0.04-----4m,測距儀最大的誤差不應(yīng)超過1cm。系統(tǒng)調(diào)試完后應(yīng)對測量誤差和重復(fù)一致性進行多次實驗分析,不斷優(yōu)化

60、系統(tǒng)使其達到實際使用效果要求。本設(shè)計使用KEIL3編譯。</p><p>  圖5-1 Keil3的程序編譯界面 </p><p>  設(shè)計采用調(diào)用多個頭文件的方法,這樣層次和思路比較清晰,其中的包括LED1602.h是以前就編譯后的,這讓調(diào)用起來比較節(jié)省時間,修改也很方便。</p><p><b>  超聲波發(fā)射啟動:&

61、lt;/b></p><p>  void StartModule1() //啟動模塊1</p><p><b>  {</b></p><p>  unsigned char nop ;</p><p>  TX1=1; //啟動一次模塊&

62、lt;/p><p>  for(nop=0;nop<21;nop++)</p><p><b>  {</b></p><p><b>  _nop_(); </b></p><p><b>  } </b></p><p><b>  

63、TX1=0;</b></p><p><b>  }</b></p><p>  根據(jù)模塊工作的時序圖,要求啟動模塊的前提是給TRIG引腳提供至少10us的高電平。程序利用循環(huán)執(zhí)行空語句,達到21us延時以上,從而啟動超聲波模塊工作。</p><p><b>  超聲波模塊工作 </b></p>

64、<p>  while(!RX);//當(dāng)RX為零時等待</p><p>  TR0=1; //開啟計數(shù)</p><p>  while(RX);//當(dāng)RX為1計數(shù)并等待</p><p>  TR0=0;//關(guān)閉計數(shù)</p><p>  當(dāng)模塊收到回響信號時,ECHO管腳輸出一個高電平,脈沖的寬度與距離

65、成比例。</p><p><b>  測距計算</b></p><p>  Time =TH0*256+TL0;</p><p><b>  TH0=0;</b></p><p><b>  TL0=0;</b></p><p>  Speed =(33

66、1.4+0.607* wenduzhi )/200;</p><p>  S=(time*speed)/100; //算出來是CM</p><p>  定時器把計算好的值傳給Time然后清零,通過DS18B20修正聲速。由于定時器返回值單位為us,所以把聲速連續(xù)除以10000,使其單位為cm/us,符合設(shè)計以厘米為單位,在于Time相乘,得到以cm為單位的距離。</p>

67、<p><b>  距離溢出處理及報警</b></p><p>  當(dāng)返回的距離超出大于400cm或者定時器的值發(fā)生溢出,使中斷標志位flag置1,定時器清零,1602顯示“-.--M”</p><p>  當(dāng)返回值少于10cm時,啟動語音報警模塊。</p><p>  距離正常或者少于10cm都會顯示出來。</p>

68、<p>  void Conut2(void) //m</p><p><b>  { </b></p><p><b>  speed();</b></p><p>  if((S>=400)||flag==1) //超出測量范圍顯示“-”</p><p><b&

69、gt;  { </b></p><p><b>  flag=0;</b></p><p>  DisplayOneChar(2, 1, ASCII[11]);</p><p>  DisplayOneChar(3, 1, ASCII[10]);//顯示點</p><p>  DisplayOneChar

70、(4, 1, ASCII[11]);</p><p>  DisplayOneChar(5, 1, ASCII[11]);</p><p>  DisplayOneChar(6, 1, ASCII[12]);//顯示M</p><p><b>  }</b></p><p><b>  else</b&

71、gt;</p><p><b>  {</b></p><p>  disbuff[0]=S%1000/100;//定義距離數(shù)組</p><p>  disbuff[1]=S%1000%100/10;</p><p>  disbuff[2]=S%1000%10 %10;</p><p>  

72、DisplayOneChar(2, 1, ASCII[disbuff[0]]);</p><p>  DisplayOneChar(3, 1, ASCII[10]);//顯示點</p><p>  DisplayOneChar(4, 1, ASCII[disbuff[1]]);</p><p>  DisplayOneChar(5, 1, ASCII[disbuf

73、f[2]]);</p><p>  DisplayOneChar(6, 1, ASCII[12]);//顯示M</p><p>  S1=disbuff[0]*10+disbuff[1]+0.1* disbuff[2];</p><p>  if(S1<10)</p><p><b>  {</b></p

74、><p><b>  speak1();</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  5.2 測試分析</b

75、></p><p>  基于上面設(shè)計的硬件電路和軟件,連接好電路后,裝在HEX文件,對系統(tǒng)進行測試。由于本設(shè)計針對的是車用倒車裝置,所以測量距離集中于4-40cm。實際測試距離如表所示</p><p><b>  左超聲波模塊:</b></p><p><b>  左超聲波模塊:</b></p><

76、;p><b>  左超聲波模塊:</b></p><p>  圖5-2 車用超聲波實物演示圖</p><p>  由于超聲波模塊沒有把他們固定在電路板上,所以在放置測距上面由于角度上的問題,造成同一型號的模塊測出的距離有所不同,但就總體上而言,對倒車造成的影響可以忽略。</p><p><b>  5.3誤差分析</b&

77、gt;</p><p>  經(jīng)過調(diào)試分析,發(fā)現(xiàn)非常適用4-40cm的測量距離。距離長于60cm時,誤差開始變大。經(jīng)過分析,超聲波測距在實際應(yīng)用中也有局限性,一是超聲波在空氣中衰減極大,測量距離的不同,造成回波信號的起伏,使回波到達時間的測量產(chǎn)生了較大的誤差;二是環(huán)境因素,諸如風(fēng)速等。以上的因素都限制了超聲波測距在一些對測距精度要求較高、適合長距離測距的場合的應(yīng)用。本系統(tǒng)的適合倒車的范圍內(nèi)誤差基本可以忽略,所以綜合

78、各種因素,非常適合裝載在汽車上使用。 </p><p><b>  鳴 謝</b></p><p>  首先,我要感謝我的導(dǎo)師在畢業(yè)設(shè)計中對我給予的悉心指導(dǎo)和嚴格的要求,同時也感謝本校的一些老師在畢業(yè)設(shè)計期間給予我的幫助。在我畢業(yè)論文寫作期間,各位老師給我提供的各種專業(yè)知識上的指導(dǎo)和日常生活上的關(guān)懷,沒有您們這樣的幫助,我的設(shè)計不會這么順利的完成,借此機會,向您們表

79、示由衷的感激。同時還要謝謝宿舍各位舍友在試驗期間給我提供的幫助。在畢業(yè)設(shè)計的短短3個月里,你們給我提供的寶貴意見,給了我不少工作上的支持,在此也真誠地感謝你們。最后我要深深地感謝我的家人,真是他們含辛茹苦地把我養(yǎng)育成人,在生活和學(xué)習(xí)上給予我無盡的愛、理解和支持,這才使我時刻充滿信心和勇氣,克服成長路上的種種困難,順利完成學(xué)業(yè)。還有許許多多給予我學(xué)業(yè)上的鼓勵和幫助的朋友,在此無法一一列舉,在此也一并便是感謝。</p><

80、;p><b>  參考文獻</b></p><p>  [1] 胡萍.超聲波測距儀的研制.計算機與現(xiàn)代化,2003.10 </p><p>  [2] 時德剛,劉嘩.超聲波測距的研究.計算機測量與控制,2002.10 </p><p>  [3] 華兵.MCS-51單片機原理應(yīng)用.武漢:武漢華中科技大學(xué)出版社,2002 .5 </

81、p><p>  [4] 李華.MCU-51系列單片機實用接口技術(shù).北京航空航天大學(xué)出版社1993.6 </p><p>  [5] 陳光東.單片機微型計算機原理與接口技術(shù).華中理工大學(xué)出版社,1999.4 </p><p>  [6] 徐淑華,姚萬生.單片機微型機原理及應(yīng)用.哈爾濱工業(yè)大學(xué)出版社,1999. 6. </p><p>  [7] 蘇

82、長贊.紅外線與超聲波遙控.北京:人民郵電出版社,1993.7 </p><p>  [8] 張謙琳.超聲波檢測原理和方法.北京:中國科技大學(xué)出版社,1993.10 </p><p>  [9] 樊昌元,丁義元. 高精度測距雷達研究.電子測量與儀器學(xué)報,2000.10 </p><p>  [10] 蘇偉,鞏壁建.超聲波測距誤差分析.傳感器技術(shù),2004. </

83、p><p>  [11] 永學(xué)等.1-Wire總線數(shù)字溫度傳感器DS18B20及應(yīng)用.電子產(chǎn)品世界,2003.12 </p><p>  [12] 勝全.D18B20數(shù)字溫度計在微機溫度采集系統(tǒng)中的序編制.1998. 3 </p><p>  [13] 恒清,張靖.加強單片機系統(tǒng)抗干擾能力的方法.通化師范學(xué)院學(xué)報,2004 .10 </p><p&g

84、t;  [14] 晗曉,袁慧梅.單片機系統(tǒng)的印制板設(shè)計與抗干擾技術(shù).電子工藝技術(shù),2004 .6 </p><p>  [15] 占操,梁厚琴,曹燕.單片機系統(tǒng)中的軟件抗干擾技術(shù).電子技術(shù),2003.3 </p><p>  [16] 華兵.MCS-51單片機原理應(yīng)用.武漢:武漢華中科技大學(xué)出版社,2002 .5 </p><p>  [17] 繼興,劉霞.單片機系

85、統(tǒng)軟件抗干擾措施分析.電子測量技術(shù)出版社,2003 </p><p>  [18] 田華等.可編程單總線數(shù)字式溫度傳感器DS18B2的原理與應(yīng)用.2004.7</p><p>  [19] Guiyun Tian .Foumdation and Application pf Microcontroller.</p><p>  高等教育出版社 2003.4 <

86、;/p><p>  [20] Vizimuller, P AT89C51 DATA SHEEP Philips Semiconductors 1999.dec</p><p><b>  附 錄</b></p><p><b>  程序:</b></p><p>  *===============

87、==============================================*/</p><p>  #include <AT89x51.H>//主體程序</p><p>  #include <intrins.h></p><p>  #include <1602.h></p><p>

88、;  #include <ds18b20.h></p><p>  #include <count.h></p><p>  #include <display.h></p><p>  void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DDat

89、a);</p><p>  void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData); </p><p>  void Decode(unsigned char ScanCode);/****************************************

90、****************/</p><p>  void zd0() interrupt 1 //T0中斷用來計數(shù)器溢出,超過測距范圍</p><p><b>  {</b></p><p>  flag=1; //中斷溢出標志</p><p><b>  }</b>&l

91、t;/p><p>  /*********************************************************/</p><p>  void main(void)</p><p><b>  {</b></p><p>  unsigned char delay;</p><

92、;p>  int ds18b20_temp;</p><p>  Delay400Ms(); //啟動等待,等LCM講入工作狀態(tài)</p><p>  LCMInit(); //LCM初始化</p><p>  Delay5Ms(); //延時片刻(可不要)</p><p>  designer_display_initial() ;&

93、lt;/p><p>  for (delay=0; delay<5; delay++) </p><p><b>  {</b></p><p>  Delay400Ms(); //延時</p><p><b>  }</b></p><p>  DisplayLis

94、tChar(0, 1, Cls);</p><p>  DisplayListChar(0, 0, Cls);</p><p>  display_tempture();</p><p><b>  while(1)</b></p><p><b>  {</b></p><

95、p>  TMOD=0x01; //設(shè)T0為方式1,GATE=1; </p><p><b>  TH0=0;</b></p><p>  TL0=0; </p><p>  ET0=1; //允許T0中斷</p><p>  EA=1;

96、 //開啟總中斷</p><p>  direction_display_initial() ;</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  display_tempture();</p><p&g

97、t;  StartModule0();</p><p>  while(!RX);//當(dāng)RX為零時等待</p><p>  TR0=1; //開啟計數(shù)</p><p>  while(RX);//當(dāng)RX為1計數(shù)并等待</p><p>  TR0=0;//關(guān)閉計數(shù) </p><p>  

98、Conut();//計算</p><p>  delayms(80);//80MS </p><p>  StartModule1();</p><p>  while(!RX1);//當(dāng)RX為零時等待</p><p>  TR0=1; //開啟計數(shù)</p><p>  while(RX

99、1);//當(dāng)RX為1計數(shù)并等待</p><p>  TR0=0;//關(guān)閉計數(shù) </p><p>  Conut1();//計算</p><p>  delayms(80);//80MS </p><p>  StartModule2();</p><p>  while(!RX2);

100、//當(dāng)RX為零時等待</p><p>  TR0=1; //開啟計數(shù)</p><p>  while(RX2);//當(dāng)RX為1計數(shù)并等待</p><p>  TR0=0;//關(guān)閉計數(shù) </p><p>  Conut2();//計算</p><p>  delayms(80);/

101、/80MS </p><p><b>  }</b></p><p><b>  } </b></p><p><b>  } </b></p><p>  /******* 1602的子程序

102、 *****/</p><p>  #define Busy 0x80 //用于檢測LCM狀態(tài)字中的Busy標識</p><p>  #define RX P0_0</p><p>  #define TX P0_3</p><p>  #define RX1 P0_1</p><p>

103、;  #define TX1 P0_4</p><p>  #define RX2 P0_2</p><p>  #define TX2 P3_0</p><p>  #define LCM_RW P0_6 //定義LCD引腳</p><p>  #define LCM_RS P0_5</p><p>

104、  #define LCM_E P0_7</p><p>  #define LCM_Data P2</p><p>  #define Key_Data P3_2 //定義Keyboard引腳</p><p>  #define Key_CLK P3_3 </p><p>  void LCMInit(void);</p>

105、;<p>  void Delay5Ms(void);</p><p>  void Delay400Ms(void);</p><p>  unsigned char ReadDataLCM(void);</p><p>  unsigned char ReadStatusLCM(void);</p><p>  void W

106、riteDataLCM(unsigned char WDLCM);</p><p>  void WriteCommandLCM(unsigned char WCLCM,BuysC);</p><p><b>  //寫數(shù)據(jù)</b></p><p>  void WriteDataLCM(unsigned char WDLCM) </p&

107、gt;<p><b>  {</b></p><p>  ReadStatusLCM(); //檢測忙</p><p>  LCM_Data = WDLCM;</p><p>  LCM_RS = 1;</p><p>  LCM_RW = 0;</p><p>  LCM_E =

108、0; //若晶振速度太高可以在這后加小的延時</p><p>  LCM_E = 0; //延時</p><p>  LCM_E = 1;</p><p><b>  }</b></p><p><b>  //寫指令</b></p><p>  void WriteComm

109、andLCM(unsigned char WCLCM,BuysC) //BuysC為0時忽略忙檢測</p><p><b>  {</b></p><p>  if (BuysC) ReadStatusLCM(); //根據(jù)需要檢測忙</p><p>  LCM_Data = WCLCM;</p><p>  LCM_R

110、S = 0;</p><p>  LCM_RW = 0;</p><p>  LCM_E = 0;</p><p>  LCM_E = 0;</p><p>  LCM_E = 1;</p><p><b>  }</b></p><p><b>  //讀數(shù)

111、據(jù)</b></p><p>  unsigned char ReadDataLCM(void)</p><p><b>  {</b></p><p>  LCM_RS = 1; </p><p>  LCM_RW = 1;</p><p>  LCM_E = 0;</p>

112、<p>  LCM_E = 0;</p><p>  LCM_E = 1;</p><p>  return(LCM_Data);</p><p><b>  }</b></p><p><b>  //讀狀態(tài)</b></p><p>  unsigned ch

113、ar ReadStatusLCM(void)</p><p><b>  {</b></p><p>  LCM_Data = 0xFF; </p><p>  LCM_RS = 0;</p><p>  LCM_RW = 1;</p><p>  LCM_E = 0;</p>&l

114、t;p>  LCM_E = 0;</p><p>  LCM_E = 1;</p><p>  while (LCM_Data & Busy); //檢測忙信號</p><p>  return(LCM_Data);</p><p><b>  }</b></p><p>  voi

115、d LCMInit(void) //LCM初始化</p><p><b>  {</b></p><p>  LCM_Data = 0;</p><p>  WriteCommandLCM(0x38,0); //三次顯示模式設(shè)置,不檢測忙信號</p><p>  Delay5Ms(); </p><p

116、>  WriteCommandLCM(0x38,0);</p><p>  Delay5Ms(); </p><p>  WriteCommandLCM(0x38,0);</p><p>  Delay5Ms(); </p><p>  WriteCommandLCM(0x38,1); //顯示模式設(shè)置,開始要求每次檢測忙信號</

117、p><p>  WriteCommandLCM(0x08,1); //關(guān)閉顯示</p><p>  WriteCommandLCM(0x01,1); //顯示清屏</p><p>  WriteCommandLCM(0x06,1); // 顯示光標移動設(shè)置</p><p>  WriteCommandLCM(0x0F,1); // 顯示開及光標設(shè)

118、置</p><p><b>  }</b></p><p>  //按指定位置顯示一個字符</p><p>  void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)</p><p><b>  {</b>

119、</p><p><b>  Y &= 0x1;</b></p><p>  X &= 0xF; //限制X不能大于15,Y不能大于1</p><p>  if (Y) X |= 0x40; //當(dāng)要顯示第二行時地址碼+0x40;</p><p>  X |= 0x80; //算出指令碼</p>

120、;<p>  WriteCommandLCM(X, 1); //發(fā)命令字</p><p>  WriteDataLCM(DData); //發(fā)數(shù)據(jù)</p><p><b>  }</b></p><p>  //按指定位置顯示一串字符</p><p>  void DisplayListChar(unsig

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論