單片機(jī)課程設(shè)計報告(實(shí)用導(dǎo)盲儀)_第1頁
已閱讀1頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  單片機(jī)系統(tǒng)課程設(shè)計報告</p><p>  設(shè)計題目:實(shí)用導(dǎo)盲儀</p><p><b>  Xxxxxx</b></p><p> 專 業(yè)測控技術(shù)與儀器</p><p> 學(xué) 號Xxxx</p><p> 姓 名Xxxxx</p><p

2、> 小組成員Xxxx</p><p> 指導(dǎo)老師Xxx</p><p> 設(shè)計時間2013年8月23日</p><p> 總評成績</p><p><b>  預(yù)期性能指標(biāo)</b></p><p>  設(shè)計一個以51單片機(jī)開發(fā)板為核心控制器的障礙物檢測報警的導(dǎo)盲系統(tǒng)。</p>

3、<p>  1.超聲波模塊測量范圍障礙要求為0.10~5.00m;</p><p>  2.測量精度為3cm;</p><p>  3.判斷正前方或地面是否有障礙。</p><p>  4.根據(jù)障礙的距離遠(yuǎn)近以及類別報警。</p><p><b>  工作原理</b></p><p>&

4、lt;b>  工作原理概述</b></p><p>  1.1超聲波測距的原理</p><p>  1.1.1超聲波的基本理論</p><p>  隨著科技的發(fā)展和社會的進(jìn)步,人們對于檢測未知世界,開發(fā)未知功能的需求越來越迫切和明顯,新一代科技產(chǎn)品對于人們的關(guān)切程度也日益增加。</p><p>  其中,超聲波檢測技術(shù)就是為

5、了滿足這些需求而應(yīng)運(yùn)而生的一門技術(shù)手段。超聲波是一門以物理、電子、機(jī)械、以及材料科學(xué)為基礎(chǔ)的、各行各業(yè)都要使用的通用技術(shù)之一。該技術(shù)在國民經(jīng)濟(jì)中,對提高產(chǎn)品質(zhì)量,保障生產(chǎn)安全和設(shè)備安全運(yùn)作,降低生產(chǎn)成本,提高生產(chǎn)效率特別具有潛在能力。超聲技術(shù)是通過超聲波的產(chǎn)生、傳播以及接收的物理過程完成的。超聲波具有聚束、定向及反射、投射等特性。按超聲波振動輻射大小不同大致可以分為:用超聲波使物體或物性變化的功率應(yīng)用,稱之為功率超聲;用超聲波獲取信息,

6、稱為檢測超聲。</p><p>  超聲波是聽覺閾值之外的振動,其頻率范圍在10——10Hz,其中通常的頻率大約在10——3×10之間。超聲波在超聲場(被超聲波充滿的范圍)傳播時,如果超聲波的波長與超聲場相比,超聲場很大,超聲波就像處在一種無限的介質(zhì)中,超聲波自由地向外擴(kuò)散;反之,如果超聲波的波長與相鄰介質(zhì)的尺寸相近,則超聲波受到界面限制不能自由的向外擴(kuò)散。于是超聲波在傳播過程中有如下的特性和作用。&l

7、t;/p><p>  1.1.2超聲波的傳播速度</p><p>  超聲波在介質(zhì)中可以產(chǎn)生三中形式的振蕩波:橫波——質(zhì)點(diǎn)振動方向垂直于傳播方向的波;縱波——質(zhì)點(diǎn)振動方向與傳播方向一致的波;表面波——質(zhì)點(diǎn)振動介于縱波和橫波之間,沿表面?zhèn)鞑サ牟?。橫波只能在固體中傳播,縱波能在固體液體中和氣體中傳播,表面波隨深度的增加其衰減很快。為了測量各種狀態(tài)下的物理量多采用縱波形式的超聲波。超聲波的頻率越高,

8、越與光波某些特性相似。</p><p>  1.1.3超聲波的物理性質(zhì)</p><p>  當(dāng)超聲波傳播到兩種特性不同的介質(zhì)的平面上時,一部分被反射;另一部分透射過界面,在相鄰的介質(zhì)內(nèi)部繼續(xù)傳播;這樣的兩種情況稱之為超聲波的反射和折射,如圖2.1所示。</p><p>  圖2.1 超聲波的反射和折射</p><p>  1.1.4超聲波對

9、聲場產(chǎn)生的作用</p><p><b>  (1) 機(jī)械作用</b></p><p>  超聲波傳播過程中,會引起介質(zhì)質(zhì)點(diǎn)交替的壓縮與伸張,構(gòu)成了壓力的變化,這種壓力的變化將引起機(jī)械效應(yīng)。超聲波引起質(zhì)點(diǎn)的運(yùn)動,雖然位移和速度不大,但是與超聲波振動的頻率的平方成正比的質(zhì)點(diǎn)的加速度卻很大。有時足以達(dá)到破壞介質(zhì)的程度。</p><p><b&g

10、t;  (2) 空化作用</b></p><p>  在流體動力學(xué)指出,存在于液體中的微氣泡在聲場的作用下振動,當(dāng)聲壓達(dá)到一定的值時,氣泡將迅速膨脹,然后突然閉合,在氣泡閉合時產(chǎn)生沖擊波,這種膨脹、閉合、振動等一系列動力學(xué)過程稱為空化。</p><p><b>  (3) 熱學(xué)作用</b></p><p>  如果超聲波作用于介質(zhì)時

11、被介質(zhì)所吸收,實(shí)際上也就是有能量吸收,同時,由于超聲波的振動,使介質(zhì)產(chǎn)生強(qiáng)烈的高頻振蕩介質(zhì)相互摩擦產(chǎn)生熱熱量,這種能量使介質(zhì)溫度升高。 </p><p>  1.1.5超聲波傳感器</p><p>  超聲波傳感器主要有電致伸縮和磁致伸縮兩類,電致伸縮采用雙壓電陶瓷晶片制成,具有可逆特性。</p><p>  壓電陶瓷片具有如下特性:當(dāng)在其兩端加上大小和方向不斷

12、變化的交流電壓時,就會產(chǎn)生“壓電效應(yīng)”,使壓電陶瓷也產(chǎn)生機(jī)械變形,這種機(jī)械變形的大小以及方向與外加電壓的大小和方向成正。反之,如果由超聲波機(jī)械振動作用于陶瓷片使其發(fā)生微小的形變時,那么壓電晶片也會產(chǎn)生與振動頻率相同的微弱的交流信號。超聲波傳感器內(nèi)部結(jié)構(gòu)如圖2.2所示,外部結(jié)構(gòu)如圖2.3所示。</p><p>  圖 2.2 元件內(nèi)部結(jié)構(gòu) 圖 2.3 超聲波外部結(jié)構(gòu)</p&

13、gt;<p>  1.1.6超聲波測距系統(tǒng)原理</p><p>  在超聲探測電路中,發(fā)射端得到輸出脈沖為一系列方波,其寬度為發(fā)射超聲的時間間隔,被測物距離越大,脈沖寬度越大,輸出脈沖個數(shù)與被測距離成正比。1.1.7超聲測距方法</p><p>  (1)取輸出脈沖的平均值電壓,該電壓 (其幅值基本固定 )與距離成正比,測量電壓即可測得距離;</p><p

14、>  (2)測量輸出脈沖的寬度,即發(fā)射超聲波與接收超聲波的時間間隔 t,故被測距離為 S=1/2vt。本測量電路采用第二種方案。由于超聲波的聲速與溫度有關(guān),如果溫度變化不大,則可認(rèn)為聲速基本不變 。如果測距精度要求很高,則應(yīng)通過溫度補(bǔ)償?shù)姆椒右孕U3暡y距適用于高精度的中長距離測量。因?yàn)槌暡ㄔ跇?biāo)準(zhǔn)空氣中的傳播速度為331.45米/秒,由單片機(jī)負(fù)責(zé)計時,單片機(jī)使用12.0M晶振,所以此系統(tǒng)的測量精度理論上可以達(dá)到毫米級。&l

15、t;/p><p>  1.1.7超聲波測距的算法設(shè)計</p><p>  超聲波在空氣中傳播速度為每秒鐘340米(15℃時)。X2是聲波返回的時刻,X1是聲波發(fā)聲的時刻,X2-X1得出的是一個時間差的絕對值,假定X2-X1=0.03S,則有340m×0.03S=10.2m。由于在這10.2m的距離里,超聲波發(fā)出到遇到返射物返回,其測距原理圖如圖2.4所示。</p>&l

16、t;p>  圖 2.4 測距原理</p><p><b>  原理框圖的說明</b></p><p>  本導(dǎo)盲系統(tǒng)由單片機(jī)控制,分別由控制中心、HC—SR04超聲波傳感器模塊、報警模塊等部分構(gòu)成。以下的系統(tǒng)原理框圖是對系統(tǒng)工作的最基本原則進(jìn)行詳細(xì)說明。</p><p><b>  硬件設(shè)計</b></p&g

17、t;<p><b>  器件選型</b></p><p>  1.1超聲波模塊器件選型</p><p>  1.1.1發(fā)射電路部分</p><p>  超聲波發(fā)生器包括超聲波產(chǎn)生電路和超聲波發(fā)射控制電路兩個部分,超聲波發(fā)射探頭其實(shí)就是一個電聲轉(zhuǎn)換器,把電信號轉(zhuǎn)換成聲波信號。在壓電晶片加上交變電壓,加在其上面的交變電壓的頻率要與它的

18、固有諧振頻率一致。超聲傳感器才有較高的靈敏度。超聲波探頭(“也稱為超聲波換能器”)的型號選用CSB40T(其中心頻率為40KHz)??梢圆捎密浖a(chǎn)生40KHz的超聲波信號,通過輸出引腳輸入至驅(qū)動器,經(jīng)過動器驅(qū)動后推動探頭產(chǎn)生超聲波。這種方法的特點(diǎn)是充分利用軟件,靈活性好,但是需要設(shè)計一個驅(qū)動電流為100mA以上的驅(qū)動電路。第二種方法是利用超聲波專用發(fā)生電路或通用發(fā)生電路產(chǎn)生超聲波信號,并直接驅(qū)動超聲波換能器產(chǎn)生超聲波。這種方法的特點(diǎn)是無

19、需驅(qū)動電路,但缺乏靈活性。本次我們采用第一種方法產(chǎn)生超聲波。</p><p>  CD4069反相器支持3路輸入,由其內(nèi)部結(jié)構(gòu)圖可以了解,引腳14接電源,引腳7接地。單片機(jī)由P2.6引腳輸出一連串電流波形為矩形波的電流。經(jīng)過反相器驅(qū)動發(fā)射探頭發(fā)射超聲波。</p><p>  圖3.2 CD4069 的外部圖 圖3.3 CD4069的內(nèi)部結(jié)構(gòu)圖</p>

20、;<p>  1.4.2接收電路部分</p><p>  超聲波接收包括接收探頭,信號放大以及波形變換電路三部分,超聲波接收探頭必須與發(fā)送探頭相同的型號,否則可能導(dǎo)致接收效果甚至不能接收。由于超聲波接收探頭的信號非常弱,所以必須用放大器放大,放大后的正弦波不能被微處理器處理,所以必須經(jīng)過波形變換。本次設(shè)計為了降低調(diào)試難度,減少成本,提供系統(tǒng)可靠性,所以我們采用了一種用在彩色電視機(jī)上面的一種紅外接收檢

21、波芯片CX20106,由于紅外遙控的中心頻率在38KHz,和超聲波的40KHz很接近,所以可以用來做接收電路。CX20106是日本索尼公司的產(chǎn)品,采用單列8引腳的直插式封裝,內(nèi)部包含自動偏置控制電路、前置放大電路、帶通濾波、峰值檢波、積分比較器、斯密特整形輸出電路,配合少量外接元件就可以對38KHz左右的信號的接收與處理,該芯片內(nèi)部如圖3.14所示。</p><p>  圖3.4 CX20106內(nèi)部結(jié)構(gòu)<

22、;/p><p><b>  原理圖及PCB圖</b></p><p>  上圖為本系統(tǒng)所用單片機(jī)芯片原理圖以及所需要用的接口的示意圖。</p><p>  上圖為實(shí)驗(yàn)初期時所設(shè)計的超聲模塊、語音報警模塊的接口示意圖。因所用設(shè)備都為模塊化設(shè)備,故只畫出接口示意圖。</p><p>  3.4系統(tǒng)的PCB圖</p>

23、<p><b>  設(shè)計體會</b></p><p>  本次課程設(shè)計,從選題到設(shè)計再到最后一步一步實(shí)現(xiàn),一點(diǎn)一點(diǎn)優(yōu)化,都是由我們自行完成。同時,在整個過程中也得到了老師與同學(xué)的幫助,為我們解決問題提供了很多的思路,也有很多有價值的意見,為作品品質(zhì)的進(jìn)一步提升提供了寶貴意見。</p><p>  通過本次課程設(shè)計,首先,是學(xué)習(xí)到了幾個精神。第一,是團(tuán)結(jié)協(xié)作

24、精神。幾個人的力量一定比一個人的力量大。在設(shè)計開始時,就依據(jù)每個人的特點(diǎn),將整個工作分為硬件設(shè)計,軟件設(shè)計,論文撰寫三個部分。通過我們的通力合作,圓滿的完成了此次課程設(shè)計任務(wù)。第二,是刻苦鉆研精神。雖然這只是簡單的課程設(shè)計,但對于我們這些“新手”,很多問題并沒有很好的解決辦法,甚至找不到問題的原因。這就需要我們能仔細(xì)分析問題,刻苦鉆研,找到問題的根源,對癥下藥,不能輕言放棄。</p><p>  其次,是在本次課

25、程設(shè)計中學(xué)習(xí)到的知識。我主要負(fù)責(zé)軟件的設(shè)計,根據(jù)我們前期提出的目標(biāo),在單片機(jī)例程的基礎(chǔ)上,編寫軟件。前期,由于經(jīng)驗(yàn)不足,整個設(shè)計過程變成了“邊做邊改”,一次一次的嘗試,沒有堅實(shí)的理論基礎(chǔ)作為指導(dǎo)。之后,認(rèn)識到這個問題之后,從單片機(jī)各管腳作用,各寄存器的使用等方面入手,在對單片機(jī)有了更深了解的同時,對編程也有了新的認(rèn)識。在豐富理論知識,構(gòu)成了小體系之后,再著手實(shí)現(xiàn)功能就感覺游刃有余了。</p><p>  最后,在

26、完成課程設(shè)計之后,看到自己做的導(dǎo)盲儀能夠幫助“盲人”上下臺階,并能夠提醒“盲人”前方是否有障礙,有一種成就感。同時,也認(rèn)識到要實(shí)現(xiàn)真正的導(dǎo)盲,這是遠(yuǎn)遠(yuǎn)不夠的。要用電子設(shè)備代替眼睛,讓盲人感知這世界,還有很長的路要走。</p><p><b>  軟件設(shè)計</b></p><p><b>  軟件框圖</b></p><p>

27、;<b>  流程圖</b></p><p><b>  說明</b></p><p>  本設(shè)計系統(tǒng)軟件采用模塊化結(jié)構(gòu),由主程序﹑定時子程序、預(yù)警燈子程序﹑實(shí)時中斷子程序、定時中斷子程序、蜂鳴器子程序﹑標(biāo)定子程序構(gòu)成。程序流程圖如圖所示。其中:標(biāo)定功能為本系統(tǒng)的一個特色。</p><p><b>  調(diào)試試驗(yàn)&

28、lt;/b></p><p><b>  試驗(yàn)驗(yàn)證方法</b></p><p>  1.1超聲波模塊測距性能試驗(yàn)驗(yàn)證方法</p><p>  我們調(diào)試使用的超生波模塊是買來的HC—SR04超聲波測距模塊。</p><p>  利用信號源產(chǎn)生頻率為50HZ,占空比為20%的矩形波信號作為觸發(fā)信號。然后,通過示波器觀察

29、在不同的障礙情況下收到的回波信號的脈寬。根據(jù)脈寬與距離的關(guān)系即可知道超聲波模塊工作是否正常。</p><p>  1.2標(biāo)定裝置試驗(yàn)驗(yàn)證方法</p><p>  在檢測標(biāo)定裝著是否工作以及標(biāo)定的距離是否準(zhǔn)確的過程中,只需將系統(tǒng)開啟,首先,以一個適當(dāng)?shù)木嚯x將傳感器對準(zhǔn)障礙物,按下標(biāo)定按鈕,然后在標(biāo)定距離的前后進(jìn)行移動,觀察傳感器電平輸出變化即可判斷標(biāo)定是否成功。 </p>

30、<p>  1.3系統(tǒng)報警性能試驗(yàn)驗(yàn)證方法</p><p>  本功能為系統(tǒng)使用性的核心功能,在現(xiàn)場演示時效果比較理想,現(xiàn)將演示步驟展示如下:將系統(tǒng)佩戴在模擬的盲人身上,以有臺階和行人的樓道為例測試系統(tǒng)。當(dāng)前方有行人走來時,系統(tǒng)判斷距離在預(yù)警范圍之內(nèi),就根據(jù)距離不同進(jìn)行不同的報警,距離越近,警報聲音越急促。在測試臺階時,標(biāo)定距離起到了很重要的作用,當(dāng)傳感器距離地面在標(biāo)定距離附近時,盲人正常行走,不會報警

31、,但是一旦遠(yuǎn)或者近(模擬上下臺階)即會出發(fā)系統(tǒng)進(jìn)行預(yù)警,十分敏感。</p><p><b>  遇到問題及解決方法</b></p><p>  在系統(tǒng)功能實(shí)現(xiàn)的過程中我們還是遇到了很多的問題,例如如何設(shè)計算法能讓報警功能更加準(zhǔn)確。我們在實(shí)際生活中找到了答案,我們根據(jù)盲人的反映速度和行動能力,算出了傳感器應(yīng)該設(shè)置的預(yù)警范圍,使得既不過早預(yù)警,又能讓用戶安全躲避障礙。有如

32、關(guān)于標(biāo)定距離,這個問題的提出是為了更好地適應(yīng)不同的用戶身高和佩戴高度而采取的措施。</p><p><b>  總結(jié)分析</b></p><p><b>  性能分析</b></p><p>  1.1超聲波模塊的性能分析</p><p>  為了檢驗(yàn)超聲波模塊的測距性能,對模塊進(jìn)行了簡單的測距實(shí)驗(yàn)

33、。 </p><p>  表 6.1 超聲波模塊測距性能</p><p>  從以上看出,整機(jī)誤差率不超過0.03%,但是從試驗(yàn)數(shù)據(jù)來看,在測量距離小于300時誤差很小,而當(dāng)300以上時,誤差已經(jīng)比較大,雖然誤差率不大,但是在精確測量下是不能容忍的,從設(shè)計的方案來看,這個誤差的造成是有多方面原因的。首先,超聲波發(fā)射和接收頭安裝之間有一個夾角,如圖所示6.1所示:</p>

34、<p>  圖 6.1 測量夾角</p><p>  這樣測量的值就是一個斜邊的距離。所以程序中應(yīng)該進(jìn)行修正。</p><p>  1.2系統(tǒng)預(yù)警性能分析</p><p>  一開始,程序設(shè)定的是一旦測得正前方障礙物的距離小于0.5米系統(tǒng)就會發(fā)出預(yù)警聲音,并隨著距離的縮短而變得短促,在走廊的現(xiàn)場測試發(fā)現(xiàn)系統(tǒng)能在障礙前及時報警,無論障礙物是墻壁、行人還是

35、門窗、木桿等。不過在</p><p><b>  試驗(yàn)結(jié)果分析</b></p><p>  測距模塊的精度非常好,但由于硬件的限制,精度很難進(jìn)一步提高。如果采用一體化收發(fā)探頭,可以減小三角誤差。小車基本實(shí)現(xiàn)了避障,但由于控制策略的原因,避障的反應(yīng)時間以及路徑規(guī)劃還有很大提升空間。</p><p><b>  自我評價</b>

36、;</p><p><b>  設(shè)計總結(jié)</b></p><p>  本實(shí)用導(dǎo)盲系統(tǒng)的設(shè)計基于單片機(jī)原理和傳感器原理,以51單片機(jī)為主控芯片,采用HC—SR04產(chǎn)生不測距模塊為核心部件,通過軟件編程制作了一整套結(jié)構(gòu)完整,功能模塊化,反應(yīng)較為靈敏的導(dǎo)盲系統(tǒng)。經(jīng)過對該系統(tǒng)的測試實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果證明該系統(tǒng)能夠準(zhǔn)確地測出障礙物的距離并且能夠準(zhǔn)確靈敏地為用戶進(jìn)行預(yù)警。效果顯著,功

37、能完善,實(shí)用價值強(qiáng)。</p><p>  但是該導(dǎo)盲系統(tǒng)還存在著許多的不足,比如說只能對正前方一定角度內(nèi)進(jìn)行探測,使用的是一路超聲波而不是多路超聲波探測,并且為了簡化,對于斜前方地面的坑和突起物檢測效果比較差。這些都是有待進(jìn)一步發(fā)展和提高的。盡管后來開發(fā)了標(biāo)定功能,但是其靈敏度與準(zhǔn)確還是受到環(huán)境復(fù)雜程序的限制。</p><p>  本次課程設(shè)計只有短短的兩周,所以我們雖然設(shè)計了電路,但沒有

38、時間自己制板。在調(diào)試中,我們采用買來的超聲波模塊對算法和進(jìn)行了測試。最后,通過自己的努力讓導(dǎo)盲系統(tǒng)能實(shí)現(xiàn)正常的基礎(chǔ)的功能。兩周的課程設(shè)計,再加上暑假在家準(zhǔn)備的時間,在這段時間里,我們一起討論,一起研究,解決了一個又一個起初看來無法逾越的障礙,收獲頗豐。</p><p><b>  進(jìn)一步改進(jìn)措施</b></p><p>  系統(tǒng)經(jīng)過測試,預(yù)警效果良好。硬件上沒有錯誤,

39、主要瓶頸在于探測模塊的靈敏度以及個數(shù),因?yàn)檐浖耆刻綔y模塊返回的信號作為依據(jù)進(jìn)行下一步控制的操作,無法確認(rèn)該信號是否準(zhǔn)確.我們認(rèn)為可以做如下改進(jìn):</p><p> ?。?)增加傳感器的種類和個數(shù),讓本系統(tǒng)真正的更加貼近地模仿視覺系統(tǒng),為盲人用戶開發(fā)前所未有的體驗(yàn)。</p><p>  (2)增加語音提醒模塊的應(yīng)用,讓用戶對于障礙物的判斷更加清楚,更加方便使用。</p>&

40、lt;p> ?。?)集成電源模塊,使得系統(tǒng)真正能投入日常的應(yīng)用。</p><p><b>  附錄 </b></p><p>  # include<reg51.h></p><p>  #include <intrins.H></p><p>  #define uchar un

41、signed char</p><p>  #define uint unsigned int </p><p>  uchar distance_H0,distance_L0,distance_H1,distance_L1;</p><p><b>  //特殊寄存器定義</b></p><p>  sfr CLK_D

42、IV =0x97;</p><p>  //STC MCU IO register define total way</p><p>  sfr P1M1= 0x91;</p><p>  sfr P1M0= 0x92;</p><p>  sfr P3M1= 0xB1;</p><p>  sfr P3M0= 0xB

43、2;</p><p><b>  //IO口引腳說明</b></p><p>  sbit Trig0 =P1^0;</p><p>  sbit Echo0 =P3^2;</p><p>  sbit Trig1 =P0^1;</p><p>  sbit Echo1 =P3^3;</p&

44、gt;<p>  sbit SPK = P1^5;</p><p>  uint range;</p><p>  uint mark=0;</p><p>  sbit key=P3^1;</p><p>  sbit led1_5 =P1^1; </p><p>  sbit led5_10 =P1

45、^2;</p><p>  sbit led10_15 =P1^3;</p><p>  sbit led15_20 =P1^4;</p><p>  void IO_inint(void);</p><p>  void sys_inint(void);</p><p>  void delay_nop(uint t

46、imer);</p><p>  void led_out(void);</p><p>  /*------------------------------------------------</p><p><b>  函數(shù)聲明</b></p><p>  ------------------------------

47、------------------*/</p><p>  void DelayUs2x(unsigned char t);//函數(shù)聲明 </p><p>  void DelayMs(unsigned char t);</p><p>  void IO_inint(void)</p><p><b>  { </b>

48、;</p><p>  CLK_DIV=0x02;//系統(tǒng)時鐘四分之一分頻 </p><p>  P1M1= 0x00; //0000 0000</p><p>  P1M0= 0x1e; //0001 1110</p><p>  P1=0x00; //0000 0000 </p><p>  P

49、3M1= 0x04; //0000 0100</p><p>  P3M0= 0x00; //0000 0000</p><p><b>  }</b></p><p>  //定時中斷初始化設(shè)定</p><p>  void sys_inint0(void)</p><p><b&

50、gt;  {</b></p><p>  TMOD=0x10;</p><p><b>  TH0=0;</b></p><p><b>  TL0=0;</b></p><p><b>  TR0=0;</b></p><p><b&

51、gt;  IT0=0;</b></p><p><b>  EX0=0;</b></p><p><b>  EA=1; </b></p><p><b>  }</b></p><p>  void sys_inint1(void)</p><

52、p><b>  {</b></p><p>  TMOD=0x10;</p><p><b>  TH1=0;</b></p><p><b>  TL1=0;</b></p><p><b>  TR1=0;</b></p><

53、p><b>  IT1=0;</b></p><p><b>  EX1=0;</b></p><p><b>  EA=1; </b></p><p><b>  }</b></p><p><b>  //NOP延時</b>

54、</p><p>  void delay_nop(uint timer)</p><p><b>  {</b></p><p>  while(timer--){_nop_();}</p><p><b>  }</b></p><p>  //外部中斷0,用做判斷回波電

55、平 </p><p>  void int0_routine0(void) interrupt 0 </p><p><b>  { </b></p><p><b>  EX1=0;</b></p><p>  distance_H0 =TH0; //取出定時器0的值 &

56、lt;/p><p>  distance_L0 =TL0; //取出定時器0的值 </p><p>  EX0=0; //關(guān)閉外部中斷 </p><p><b>  }</b></p><p>  void int0_routine1(void) interrupt 2

57、</p><p><b>  { </b></p><p><b>  EX0=0;</b></p><p>  distance_H1 =TH1; //取出定時器1的值 </p><p>  distance_L1 =TL1; //取出定時器1的值 </p>

58、<p>  EX1=0; //關(guān)閉外部中斷 </p><p><b>  }</b></p><p>  void DelayUs2x(unsigned char t)</p><p><b>  { </b></p><p>  while(--t);&l

59、t;/p><p><b>  }</b></p><p>  /*void DelayMs(unsigned char t)</p><p><b>  {</b></p><p>  while(t--)</p><p><b>  {</b></p

60、><p><b>  //大致延時1mS</b></p><p>  DelayUs2x(200);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  */</b></p&

61、gt;<p><b>  //LED輸出控制</b></p><p>  void led_out0(void)</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  uint distance0;</

62、p><p>  distance0=distance_H0; //測量結(jié)果的高8位</p><p>  distance0<<=8; //放入16位的高8位</p><p>  distance0=distance0|distance_L0; //與低8位合并成為16位結(jié)果數(shù)據(jù)</p>

63、;<p>  // distance0*=4; //因?yàn)槎〞r器默認(rèn)為12分頻</p><p>  distance0/=58; //一厘米就是58us</p><p>  if(distance0>2&&distance0<150)//測量距離在2到50厘米時,led1

64、_5亮</p><p><b>  {</b></p><p><b>  led1_5=0;</b></p><p>  for(i=0;i<distance0*20;i++)</p><p><b>  {</b></p><p>  Dela

65、yUs2x(600);</p><p><b>  SPK=!SPK;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b

66、>  {</b></p><p><b>  led1_5=1;</b></p><p><b>  }</b></p><p>  if(distance0>200&&distance0<400)//測量距離在50到100厘米時,led5_10燈亮</p>&l

67、t;p><b>  {</b></p><p>  led5_10=0;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  led

68、5_10=1;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void led_out1(void)</p><p><b>  {</b></p><p><b>  int i;<

69、/b></p><p>  uint distance1;</p><p>  distance1=distance_H1; //測量結(jié)果的高8位</p><p>  distance1<<=8; //放入16位的高8位</p><p>  distance1=di

70、stance1|distance_L1; //與低8位合并成為16位結(jié)果數(shù)據(jù)</p><p>  distance1*=4; //因?yàn)槎〞r器默認(rèn)為12分頻</p><p>  distance1/=58; //一厘米就是58us</p><p>  if(distance1>range

71、-60&&distance1<range-20)//有臺階</p><p><b>  {</b></p><p>  led10_15=0;</p><p>  for(i=0;i<200;i++)</p><p><b>  {</b></p><

72、p>  DelayUs2x(400);</p><p><b>  SPK=!SPK;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><

73、;p><b>  {</b></p><p>  led10_15=1;</p><p><b>  }</b></p><p>  /* if(distance1>100&&distance1<150)//測量距離在150到200厘時,led15_20燈亮</p>&l

74、t;p><b>  {</b></p><p>  led15_20=0;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  le

75、d15_20=1;</p><p><b>  }</b></p><p><b>  */</b></p><p>  if(distance1>range+20&&distance1<range+60)//測量距離在150——200厘米時,led15_20燈亮</p><

76、;p><b>  {</b></p><p>  led15_20=0;</p><p>  for(i=0;i<200;i++)</p><p><b>  {</b></p><p>  DelayUs2x(500);</p><p><b>  S

77、PK=!SPK;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  led1

78、5_20=1;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void led_out1_1(void)</p><p><b>  {</b></p><p>  uint distance;&l

79、t;/p><p>  distance=distance_H1; //測量結(jié)果的高8位</p><p>  distance<<=8; //放入16位的高8位</p><p>  distance=distance|distance_L1; //與低8位合并成為16位結(jié)果數(shù)據(jù)</p>

80、<p>  distance*=4; //因?yàn)槎〞r器默認(rèn)為12分頻</p><p>  distance/=58; //一厘米就是58us</p><p>  range=distance;</p><p><b>  }</b></p><

81、;p>  void DelayMs(unsigned char t)</p><p><b>  {</b></p><p>  while(t--)</p><p><b>  {</b></p><p><b>  //大致延時1mS</b></p>&

82、lt;p>  DelayUs2x(245);</p><p>  DelayUs2x(245);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //系統(tǒng)主程序</b></p><p> 

83、 void main(void)</p><p><b>  {</b></p><p>  int mark=0;</p><p>  key=1; //按鍵輸入端口電平置高</p><p>  IO_inint();</p><p>  sys_inint0(); </p>&

84、lt;p>  sys_inint1();</p><p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  Trig0=1;</b></p><p>  delay_nop(20);</p><p

85、><b>  Trig0=0;</b></p><p>  while(!Echo0);</p><p>  TR0=1; //啟動定時器0 </p><p>  EX0=1; //打開外部中斷1</p><p>  while(TH0<40);<

86、/p><p>  TR0=0; //關(guān)閉定時器1</p><p>  TH0=0; //定時器1清零 </p><p>  TL0=0; //定時器1清零</p><p>  led_out0();</p><p><b>  Trig1=1;</b

87、></p><p>  delay_nop(20);</p><p><b>  Trig1=0;</b></p><p>  while(!Echo1);</p><p>  TR1=1; //啟動定時器0 </p><p>  EX1=1;

88、 //打開外部中斷1</p><p>  while(TH1<40);</p><p>  TR1=0; //關(guān)閉定時器1</p><p>  TH1=0; //定時器1清零 </p><p>  TL1=0; //定時器1清零</p><p> 

89、 if(!key) //如果檢測到低電平,說明按鍵按下</p><p><b>  {</b></p><p>  DelayMs(10); //延時去抖,一般10-20ms</p><p>  if(!key) //再次確認(rèn)按鍵是否按下,沒有按下則退出</p><p><b>  {</b&g

90、t;</p><p>  while(!key);//如果確認(rèn)按下按鍵等待按鍵釋放,沒有釋放則一直等待</p><p><b>  {</b></p><p>  led_out1_1();//釋放則執(zhí)行需要的程序</p><p><b>  mark=1;</b></p><p

91、><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  if(key)</b></p><p><b>  { </b></p>&l

92、t;p><b>  if(mark)</b></p><p>  led_out1();</p><p><b>  else;</b></p><p><b>  }</b></p><p><b>  }</b></p><p

溫馨提示

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

評論

0/150

提交評論