版權(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ù)姆椒右孕U3暡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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)系統(tǒng)課程設(shè)計--實(shí)用測速儀
- 單片機(jī)課程設(shè)計報告
- 《單片機(jī)課程設(shè)計》報告
- 單片機(jī)課程設(shè)計報告
- 單片機(jī)課程設(shè)計報告
- 單片機(jī)課程設(shè)計報告
- 單片機(jī)課程設(shè)計報告
- 單片機(jī)課程設(shè)計報告
- 單片機(jī)課程設(shè)計報告
- 單片機(jī)測速儀課程設(shè)計
- 單片機(jī)課程設(shè)計報告---單片機(jī)數(shù)字時鐘
- 單片機(jī)課程設(shè)計報告---單片機(jī)秒表系統(tǒng)設(shè)計
- 單片機(jī)課程設(shè)計報告——單片機(jī)控制步進(jìn)電機(jī)
- 單片機(jī)課程設(shè)計報告---單片機(jī)控制秒表系統(tǒng)
- 單片機(jī)課程設(shè)計報告doc
- 單片機(jī)課程設(shè)計課題報告
- btec單片機(jī)課程設(shè)計報告
- 單片機(jī)應(yīng)用課程設(shè)計報告
- 單片機(jī)課程設(shè)計報告 (2)
- 單片機(jī)課程設(shè)計報告-日歷
評論
0/150
提交評論