版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、超聲波測(cè)距儀設(shè)計(jì)實(shí)驗(yàn)報(bào)告xx大學(xué)電子信息學(xué)院綜合設(shè)計(jì)實(shí)驗(yàn)之-8聲波測(cè)距儀的設(shè)計(jì)與實(shí)現(xiàn)、實(shí)驗(yàn)?zāi)康?) 了解超聲波發(fā)生器原理以及超聲波測(cè)距原理;2)根據(jù)超聲波測(cè)距原理,設(shè)計(jì)超聲波測(cè)距儀硬件電路;3)熟悉PCB®的設(shè)計(jì)與制作;4)熟悉基于單片機(jī)或嵌入式系統(tǒng)的開(kāi)發(fā)編程;5)熟悉電路的綜合調(diào)試。:、實(shí)驗(yàn)內(nèi)容1)認(rèn)真研究有關(guān)理論知識(shí)并大量查閱相關(guān)資料,確定系統(tǒng)的總體設(shè)計(jì)方案,設(shè)計(jì)出系統(tǒng)框圖2)決定各項(xiàng)參數(shù)所需要的硬件設(shè)施,完成電路的理論分析和PCEK設(shè)計(jì)與制作;3)設(shè)計(jì)制作或購(gòu)買單元模塊并對(duì)各單元模塊進(jìn)行調(diào)試與驗(yàn)證;4)將單元電路及相關(guān)零散電子元件整合到 PCB®上并進(jìn)行整體調(diào)試;5)
2、完成原理圖設(shè)計(jì)和硬件制作;6)編寫程序和整體調(diào)試電路;7)完成實(shí)驗(yàn)報(bào)告,將設(shè)計(jì)制作成果以及報(bào)告交給老師驗(yàn)收。三、實(shí)驗(yàn)原理超聲波是一種在彈性介質(zhì)中的機(jī)械振蕩,具指向性強(qiáng),能量消耗緩慢,在空氣中傳播的距離 較遠(yuǎn),因而超聲波經(jīng)常用于距離的測(cè)量。超聲波測(cè)距儀就是以超聲波作為測(cè)量工具的一種儀器。本 實(shí)驗(yàn)的超聲波測(cè)距儀主要由超聲波收發(fā)裝置、單片機(jī)、測(cè)溫裝置、語(yǔ)音報(bào)警裝置、LCD顯示等幾部分組成。系統(tǒng)測(cè)量距離的原理是利用單片機(jī)控制超聲波收發(fā)模塊發(fā)出40khz的方波用,自動(dòng)檢測(cè)接收端能否收到超聲波在遇到障礙物后反射回來(lái)的回波,反射后的超聲波經(jīng)超聲波換能器作為系統(tǒng)的輸 入,鎖相環(huán)對(duì)此信號(hào)鎖定產(chǎn)生鎖定信號(hào)啟動(dòng)單片
3、機(jī)中斷程序,得到時(shí)間To超聲波在空氣中的傳播速度與溫度有關(guān)(C=331.5+0.607叮/ 0c (m/s),因而在檢測(cè)是否能收到回波的同時(shí)還要通過(guò)溫度傳感器 檢測(cè)環(huán)境溫度。單片機(jī)利用超聲波收發(fā)裝置返回的超聲波傳輸時(shí)間和溫度傳感器返回的溫度系數(shù)利 用給定的算法(S=(C*T)/2 )在單片機(jī)程序的控制下得出超聲波傳輸?shù)木嚯x同時(shí)在LCD上顯示距離和溫度,當(dāng)檢測(cè)到的距離低于給定范圍時(shí)單片機(jī)就會(huì)控制超限報(bào)警裝置報(bào)警。(一)壓電式超聲波發(fā)生器原理壓電式超聲波發(fā)生器實(shí)際上是利用壓電晶體的諧振來(lái)工作的。它有兩個(gè)壓電晶片和一個(gè)共振板。當(dāng)它的兩極外加脈沖信號(hào),其頻率等于壓電晶片的固有振蕩頻率時(shí),壓電晶片將會(huì)發(fā)
4、生共振, 并帶動(dòng)共振板振動(dòng),利用逆壓電效應(yīng)產(chǎn)生超聲波。反之,如果兩電極間未外加電壓,當(dāng)共振板接收 到超聲波時(shí),將壓迫壓電晶片作振動(dòng),利用正壓電效應(yīng)將機(jī)械能轉(zhuǎn)換為電信號(hào),這時(shí)它就成為超聲 波接收器了。(二)超聲波測(cè)距原理由于超聲波指向性強(qiáng),能量消耗緩慢,在空氣中傳播的距離較遠(yuǎn),因而超聲波經(jīng)常用于距離 的測(cè)量。利用超聲波檢測(cè)往往比較迅速、方便、計(jì)算簡(jiǎn)單、易于做到實(shí)時(shí)控制,并且在測(cè)量精度方 面能達(dá)到工業(yè)實(shí)用的要求。超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射時(shí)刻的同時(shí)開(kāi)始計(jì)時(shí),超 聲波在空氣中傳播,途中碰到障礙物就立即返回來(lái),超聲波接收器收到反射波就立即停止計(jì)時(shí)。超 聲波在空氣中的傳播速度為 C,根據(jù)計(jì)
5、時(shí)器記錄的時(shí)間T,就可以計(jì)算出發(fā)射點(diǎn)距障礙物的距離S,即S=(C*T)/2.從超聲波特性可知:超聲波在空氣中的傳播速度與溫度相關(guān)C=331.5+0.607t/ 0c (m/s),如果溫度變化不大,則可認(rèn)為聲速是基本不變的,典型的環(huán)境溫度與超聲波的傳播速度的關(guān)系為:溫度(C)-30-20-100102030100聲速(米/稱)313319325323338344349386(三)AT89C51單片機(jī)AT89C51 是一種帶4K字節(jié)flash存儲(chǔ)器的低電壓、高性能 CMOS骯微處理器。它與工業(yè)標(biāo) 準(zhǔn)MCS-51的指令和引腳兼容,因而是一種功能強(qiáng)大的微控制器,它對(duì)很多嵌入式控制應(yīng)用提供了一 個(gè)高度靈
6、活有效的解決方案。AT89C5K以下特點(diǎn):4K字節(jié)flash閃速存儲(chǔ)器,128字節(jié)內(nèi)部RAM,3好I/O 口線,兩個(gè)16定時(shí)/ 計(jì)數(shù)器,一個(gè)5向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),AT89C51 可降至0HZ的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU勺工作,但允許RAM定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAMfr的內(nèi)容,但振蕩器停止工作并禁止其他所有不見(jiàn)工作直到下一個(gè)硬件復(fù)位。具有4.25V至5.5V的電壓工作范12MHz/24MHz工作頻率,同時(shí)還具有加密陣列的二級(jí)程序存儲(chǔ)器加鎖、掉電和時(shí)鐘電路等。AT89C5侑2
7、個(gè)16位計(jì)時(shí)/計(jì)數(shù)器寄存器Timer。/ TimeU。作為一個(gè)定時(shí)器,每個(gè)機(jī)器周期寄存器增加1,這樣寄存器即可計(jì)數(shù)機(jī)器周期。因?yàn)橐粋€(gè)機(jī)器周期有12個(gè)振蕩器周期,所以計(jì)數(shù)率是振蕩器頻率的1/12。作為一 個(gè)計(jì)數(shù)器,該寄存器在相應(yīng)的外部輸入腳 P3.4/T0和P3.5/T1上出現(xiàn)從1至0的變化時(shí)增1。由于需 要二個(gè)機(jī)器周期來(lái)辨認(rèn)一次1到0的變化,所以最大的計(jì)數(shù)率是振蕩器頻率的 1/24 ,可以對(duì)外部的 輸入端P3.2/INT0和P3.3/INT1編程,便于測(cè)量脈沖寬度。101IIJrYSJAl9 一平K.FS.E4E 3 tp型中值值常門JlITXFj_ri、“ r 疝”: ri TmT芮kFJ
8、4'llt fJ.VtlF2jFJ.friWFP2>I * |,T 18 .甥r .ktiXTAI2kJICTAl I歸 3;(四)DS1820測(cè)溫原理DS1820 測(cè)溫原理如圖2所示。圖中低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給計(jì)數(shù)器1。高溫度系數(shù)晶振隨溫度變化其振蕩率明顯改變, 所產(chǎn)生的信號(hào)作為 計(jì)數(shù)器2的脈沖輸入。計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55c所對(duì)應(yīng)的一個(gè)基數(shù)值。計(jì)數(shù)器1對(duì)低 溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)計(jì)數(shù)器1的預(yù)置值減到0時(shí),溫度寄存器的值將加1 , 計(jì)數(shù)器1的預(yù)置將重新被裝入,計(jì)數(shù)器1重新開(kāi)始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖
9、信號(hào)進(jìn)行計(jì)數(shù),如 此循環(huán)直到計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值即為所測(cè)溫 度。圖2中的斜率累加器用于補(bǔ)償和修正測(cè)溫過(guò)程中的非線性,其輸出用于修正計(jì)數(shù)器1的預(yù)置值。圖2 IJS1K2C)油溫原理幡型-3 -四、基于AT89C51單片機(jī)超聲波測(cè)距的方案設(shè)計(jì)LED顯示等5部分組成;(一)系統(tǒng)結(jié)構(gòu)主要由超聲波收發(fā)模塊、單片機(jī)、測(cè)溫裝置、報(bào)警電路、系統(tǒng)框圖如下:xx大學(xué)電子信息學(xué)院綜合設(shè)計(jì)實(shí)驗(yàn)之超聲波測(cè)距儀的設(shè)計(jì)與實(shí)現(xiàn)(二)硬件設(shè)計(jì)1、超聲波收發(fā)模塊在設(shè)計(jì)過(guò)程中采用HC-SR04其特性如下:HC-SR04超聲波測(cè)距模塊可提供2cm-400cm的非接觸式距離感測(cè)功能,測(cè) 距
10、精度可達(dá)高到3n«n;模塊包括超聲波發(fā)射器、接收器與控制電路.基本H作原理:(1)采用TO 口 TRIG觸發(fā)測(cè)距,給最少10ii5的高電平信呈*(2)模塊自動(dòng)發(fā)送8個(gè)40khz的方波,自動(dòng)檢測(cè)是否有信號(hào)返回:(3)有信號(hào)返回,通過(guò)TO 口 ECHO輸出一個(gè)高電平,高電平持續(xù)的時(shí)間就是超聲 波從發(fā)射到返回的時(shí)間口測(cè)試距離=(高電平時(shí)間由聲速(340M/S)/2;因此,直接將trig (觸發(fā)端)和echo(接收端)接在單片機(jī)上即可。此時(shí),p2端口只是I/O 口的 作用,由于內(nèi)部有上拉電阻,所以可以直接相連。xx大學(xué)電子信息學(xué)院綜合設(shè)計(jì)實(shí)驗(yàn)之-8聲波測(cè)距儀的設(shè)計(jì)與實(shí)現(xiàn)模塊內(nèi)等發(fā)出值號(hào)l盾訐
11、安tn s r-回口向由.平播出 與檢測(cè)距兩或上匕例超聲波時(shí)序圖2、溫度補(bǔ)償電路溫度補(bǔ)償電路采用DS18B205片,DS1820具有以下特性:獨(dú)特的單線接口方式,DS1820在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與DS1820勺雙向通訊;DS182僅持多點(diǎn)組網(wǎng)功能,多個(gè) DS182CM以并聯(lián)在唯一的三線上,實(shí)現(xiàn)多點(diǎn)測(cè)溫;DS1820ft使用中不需要任何外圍元件;溫范圍55c+ 125C ,固有測(cè)溫分辨率0.5 C ;測(cè)量結(jié)果以9位數(shù)字量方式串行傳送。DS1820內(nèi)部結(jié)構(gòu)|g圖如圖1所示第1仍應(yīng)。內(nèi)弗“和杞困St1-5 -xx大學(xué)電子信息學(xué)院綜合設(shè)計(jì)實(shí)驗(yàn)之-6聲波測(cè)距儀的設(shè)計(jì)與實(shí)現(xiàn)本系
12、統(tǒng)中DS1820由單片機(jī)P2.7控制,由LED顯示電路動(dòng)態(tài)顯示溫度。電路圖如下:-7 -3、蜂鳴器報(bào)警電路報(bào)警電路由小功率三極管 Q1和蜂鳴器組成。此電路由單片機(jī)產(chǎn)生的脈沖信號(hào)控制晶體管驅(qū)動(dòng)蜂 鳴器緩急報(bào)警,進(jìn)而判斷距離的遠(yuǎn)近。VCC4、LCD128641晶顯示模塊系統(tǒng)的顯示模塊選用12864液晶顯示模塊,能夠顯示128X64像素圖形或4行16X16中文字符。液晶顯示模塊的設(shè)計(jì):xx大學(xué)電子信息學(xué)院綜合設(shè)計(jì)實(shí)驗(yàn)之-7聲波測(cè)距儀的設(shè)計(jì)與實(shí)現(xiàn)本設(shè)計(jì)液晶顯示模塊的設(shè)計(jì)如上圖所示,該電路實(shí)現(xiàn)的功能是:通過(guò)AT89C51的P1.0P1.7八個(gè)口輸出控制信號(hào),控制液晶的 8位雙向數(shù)據(jù)線,通過(guò)單片機(jī)的 P2
13、.0 P2.1向液晶模塊發(fā)送命令, 控制液晶執(zhí)行各種命令,其中P2.2控制液晶的使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊 執(zhí)行命令。當(dāng)P2.0為低電平時(shí)可以寫入指令,當(dāng) P0.2為高電平時(shí)可以寫入數(shù)據(jù)。5、電源設(shè)計(jì)(三)軟件設(shè)計(jì)超聲波測(cè)距的軟件設(shè)計(jì)主要由主程序,超聲波發(fā)生子程序,超聲波接收子程序,顯示子程序, 溫度檢測(cè)與補(bǔ)償子程序,語(yǔ)音報(bào)警子程序五部分組成。主程序首先對(duì)系統(tǒng)環(huán)境初始化,置位總中斷 允許位EA并給顯示端口清零,然后調(diào)用超聲波發(fā)射子程序送出一個(gè)超聲波脈沖,為了避免超聲波從 發(fā)射器直接傳送到接收器引起的直射波觸發(fā),需要延時(shí)0.1ms后才打開(kāi)外中斷0接收返回信號(hào)。一且檢測(cè)到返回信
14、號(hào),立即進(jìn)入中斷程序,結(jié)束計(jì)時(shí),并保存時(shí)間,進(jìn)行計(jì)算、編碼,與發(fā)送編碼比 較,若不符則重發(fā);若小于報(bào)警距離則發(fā)出警報(bào)。若沒(méi)有檢測(cè)到返回信號(hào),則判斷接收限時(shí)是否已 到,若接收限時(shí)未到,則繼續(xù)巡回檢測(cè)接收,否則返回發(fā)射狀態(tài)重發(fā)。程序流程圖如下:實(shí)驗(yàn)代碼見(jiàn)附件xx大學(xué)電子信息學(xué)院綜合設(shè)計(jì)實(shí)驗(yàn)之-8聲波測(cè)距儀的設(shè)計(jì)與實(shí)現(xiàn)五、實(shí)驗(yàn)問(wèn)題及解決1 、在應(yīng)用老師提供的匯編程序的時(shí)候,我們通過(guò)查找資料知道這種在C中調(diào)用匯編函數(shù)是需要將匯編函數(shù)設(shè)置為外部函數(shù)并添加到 group中的,但是在用Keil編譯的時(shí)候還是出現(xiàn)問(wèn)題,始 終無(wú)法解決,所以我們決定自己用 C編寫超聲波發(fā)射程序、嚴(yán)格延時(shí)程序,在到處查找資料后成功
15、 編寫;2 、老師給的顯示函數(shù)對(duì)應(yīng)的是數(shù)碼管的顯示,而且是用匯編編寫,而我們實(shí)際應(yīng)用的是LCD12864勺液晶顯示,所以我們用 C重新編寫顯示函數(shù),最開(kāi)始顯示出來(lái)的是一片亂碼,我們就在 網(wǎng)上查找更多的資料然后整合編寫出能顯示的程序,但第一次能顯示出的是錯(cuò)誤的信息,距離的顯 示和實(shí)際相當(dāng)不吻合,我們發(fā)現(xiàn)是在設(shè)置距離顯示的時(shí)候我們?cè)O(shè)置的位置太靠后導(dǎo)致好多數(shù)據(jù)無(wú)法 顯示,所以我們調(diào)整程序?qū)⒕嚯x顯示的位置提到前面并成功顯示;3 、在驗(yàn)證制作出的PCB與實(shí)際器材是否匹配時(shí),我們發(fā)現(xiàn)有部分元件的封裝明顯不符,有可能會(huì)導(dǎo)致元件無(wú)法安裝的問(wèn)題,我們決定實(shí)際測(cè)量元器件的大小,然后修改PCBH中元件的封裝,使之匹
16、配。對(duì)于有部分元件在 altium designer 中沒(méi)有合適封裝的情況,我們通過(guò)自己畫封裝、下 載合適封裝庫(kù)等方法成功得到合適的封裝。4 、我們發(fā)現(xiàn)在altium designer 自帶的庫(kù)中沒(méi)有LCD12864既沒(méi)有原理圖也沒(méi)封裝,對(duì)于我們第一次使用該軟件而言,畫LCD12864寸裝比較難,易出錯(cuò)。為了避免出錯(cuò),我們自己畫了 LCD12864 的原理圖,并且采用排針代替 LCD12864勺方法。5 、在將元件焊接好后在上電后液晶顯示屏沒(méi)有顯示,在檢查后發(fā)現(xiàn)是數(shù)據(jù)口定義出錯(cuò),將P1 口定義成P0口了,將P0改成P1解決問(wèn)題,實(shí)現(xiàn)顯示。6 、在顯示距離后調(diào)用蜂鳴器的驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn)超限報(bào)警時(shí)發(fā)
17、現(xiàn)剛打開(kāi)就在報(bào)警然后報(bào)警的聲音差距不是很大,在很遠(yuǎn)的地方都在叫,檢查主函數(shù)知道是蜂鳴器驅(qū)動(dòng)函數(shù)的問(wèn)題,檢查后發(fā)現(xiàn) 是if多條件判斷語(yǔ)句運(yùn)用出錯(cuò),將該語(yǔ)句改成 if-else 語(yǔ)句并正確書寫if里面的判斷條件成功解 決剛開(kāi)始在很遠(yuǎn)的地方就報(bào)警的問(wèn)題,然后將延時(shí)差距加大實(shí)現(xiàn)明顯的不同距離段的報(bào)警。六、實(shí)驗(yàn)總結(jié)與提高該綜合實(shí)驗(yàn)是制作一個(gè)帶溫度補(bǔ)償、超限報(bào)警以及數(shù)字顯示功能的超聲波測(cè)距儀,以單片機(jī)作 為核心控制器,編寫程序控制周圍的超聲波收發(fā)模塊、溫度補(bǔ)償模塊、蜂鳴器報(bào)警裝置以及LCD顯示部分。在該實(shí)驗(yàn)中,最開(kāi)始我們根據(jù)老師提供的資料商量確定了系統(tǒng)的框架以及各模塊需要什么 器件,然后我們就上網(wǎng)購(gòu)買相應(yīng)
18、元件,在等待元件來(lái)的過(guò)程中,我們小組有明確的分工,軟硬件部 分分成不同的人來(lái)負(fù)責(zé),由于我們都沒(méi)有學(xué)習(xí)制作PCB板的經(jīng)驗(yàn),所以決定一人負(fù)責(zé)學(xué)習(xí)繪制 PCB板,一人負(fù)責(zé)編寫整合軟件,在成功學(xué)習(xí)繪制PCB以后商量統(tǒng)一 PCB8上各引腳的定義就可以將軟-9 -xx大學(xué)電子信息學(xué)院綜合設(shè)計(jì)實(shí)驗(yàn)之-9聲波測(cè)距儀的設(shè)計(jì)與實(shí)現(xiàn)件和硬件統(tǒng)一起來(lái),從而繪制我們實(shí)驗(yàn)需要的 PCB8。因?yàn)橹谱鱌CB®的實(shí)驗(yàn)條件有限,對(duì)于沒(méi)有 學(xué)習(xí)過(guò)PCB板的制作的我們來(lái)說(shuō)太復(fù)雜考慮到時(shí)間的因素和成功率的高低,我們決定將繪制的PCB圖交由別人制作。在等待 PCB板來(lái)的過(guò)程中,我們利用單片機(jī)學(xué)習(xí)板調(diào)試了程序,經(jīng)過(guò)我們的努力 成
19、功調(diào)試完成并基本完成了實(shí)驗(yàn)報(bào)告。在 PCB板到后,我們將各模塊焊接整合到一起并將程序燒到 單片機(jī)中重新調(diào)試,在解決一個(gè)又一個(gè)的問(wèn)題后最終完成指定要求的超聲波測(cè)距儀的制作并交由老 師驗(yàn)收。該實(shí)驗(yàn)是一個(gè)綜合實(shí)驗(yàn),將以前學(xué)到的一些知識(shí)運(yùn)用起來(lái),并學(xué)習(xí)整合一些新的知識(shí),充分鍛 煉了同學(xué)們的實(shí)際應(yīng)用和動(dòng)手能力,也考驗(yàn)了同學(xué)們處理資料數(shù)據(jù)、查找資料、學(xué)習(xí)新知識(shí)的能力。 通過(guò)該實(shí)驗(yàn),我們都意識(shí)到實(shí)際的應(yīng)用和制作相對(duì)于課本上的理論分析來(lái)說(shuō)還是有很大不同的,也 意識(shí)到我們?cè)趯?shí)際應(yīng)用、解決工程問(wèn)題上的能力還很是欠缺,更加認(rèn)識(shí)到超聲波在實(shí)際生活中有著 很廣泛的應(yīng)用以及發(fā)展?jié)摿ΑMㄟ^(guò)該實(shí)驗(yàn),我們對(duì)自身以及所學(xué)專業(yè)有了
20、更加深刻的了解,相信這 對(duì)我們未來(lái)的發(fā)展有很大幫助。成員分工:xxx :編寫程序及調(diào)試,寫實(shí)驗(yàn)報(bào)告,焊接元件xxx :繪制PC琳及電路原理圖,焊接元件xxx :購(gòu)買元器件,焊接元件附件:1、電路原理圖-# -xx大學(xué)電子信息學(xué)院綜合設(shè)計(jì)實(shí)驗(yàn)之14-波測(cè)距儀的設(shè)計(jì)與實(shí)現(xiàn)-11 -VC:復(fù)佳電路杰A二濘oSh 或片 AT89S51運(yùn)變訃塘趕珞三口電珞工作播示包USB礁電2、PCBSxx大學(xué)電子信息學(xué)院綜合設(shè)計(jì)實(shí)驗(yàn)之建1-波測(cè)距儀的設(shè)計(jì)與實(shí)現(xiàn)LCD1blocCRYSTAL1142051080施富強(qiáng)1142051077 劉圣忠1142051207 翁明飛3、程序代碼#include <reg52
21、.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned char#define ulong unsigned long#define LCD_data P1/ 數(shù)據(jù)口data uint i,t,l,c,a;-13 -xx大學(xué)電子信息學(xué)院綜合設(shè)計(jì)實(shí)驗(yàn)之超波測(cè)距儀的設(shè)計(jì)與實(shí)現(xiàn)uchar time;/設(shè)置全局變量,專用于嚴(yán)格延時(shí)double T_dist;/ 定時(shí)時(shí)間double M_DIS;實(shí)際距離uint T_H,T_L;存?zhèn)鬏敃r(shí)間sbit TEM=P2A7;DS18B20 溫度輸出口sbit
22、 TRIG=P2A0;/超聲波發(fā)射端sbit ECHO=P2A1;超聲波接收端sbit BEEP=P3A6;蜂鳴器報(bào)警sbit RS=P2A6;/LCD12864 數(shù)據(jù)指令控制端sbit RW=P2A5;/LCD12864 讀寫端sbit EN=P2A4;LCD12864 使能端sbit PSB = P2A3;sbit RST = P2A2;液晶復(fù)位端口void Ini_Lcd(void);uchar TN;實(shí)際溫度的整數(shù)部分uchar TD;實(shí)際溫度的小數(shù)部分uchar Tflag,Ttemp; /負(fù)溫度標(biāo)志和臨時(shí)變量uchar data temp_data2=0x00,0x00;/ 讀出溫
23、度暫放uchar code str0="Init”;uchar code str1="四川大學(xué)"uchar code str2口="施富強(qiáng)"uchar code str3口="劉圣忠"uchar code str4口="翁鵬飛"-# -xx大學(xué)電子信息學(xué)院綜合設(shè)計(jì)實(shí)驗(yàn)之14-波測(cè)距儀的設(shè)計(jì)與實(shí)現(xiàn)uchar code str5="1142051080"uchar code str6="1142051077"uchar code str7="114205120
24、7"uchar code str8口="綜合實(shí)驗(yàn)"uchar code num="0123456789"uchar code cnt=0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00;/ 自定義字符uchar dis16=' ',' ','D',T,S,':',;/ 距離顯示uchar tem16=' ',' ',T,'E','M',':',;/ 溫度顯示中斷重啟函數(shù)voi
25、d Restart_int() TMOD = 0X11;/確定定時(shí)器0和1的工作方式,方式1 (工作方式寄存器)TCON = 0X00;/定時(shí)器中斷清零且不允許計(jì)數(shù)(控制寄存器)ET1=1;/允許定時(shí)器1中斷TH1=0;/定時(shí)初值為0TL1=0;延時(shí)程序void delaynus(uint i)uchar j;while(i-)for(j=0;j<57;j+);/ 基準(zhǔn)延時(shí) 500us蜂鳴器驅(qū)動(dòng)程序void beep()uchar i;if(M_DIS>20.0&&M_DIS<=30.0)for(i=0;i<20;i+)BEEP=1;delaynus(1
26、5);BEEP=0;delaynus(15);else if(M_DIS>10.0&&M_DIS<=20.0)for(i=0;i<20;i+)BEEP=1;delaynus(7);BEEP=0;delaynus(7);-15 -xx大學(xué)電子信息學(xué)院綜合設(shè)計(jì)實(shí)驗(yàn)之14-波測(cè)距儀的設(shè)計(jì)與實(shí)現(xiàn)else if(M_DIS<=10.0)for(i=0;i<20;i+)BEEP=1;delaynus(1);BEEP=0;delaynus(1);elseBEEP=0;/液晶Busy狀態(tài)判斷函數(shù),數(shù)據(jù)線的最高位 DB7為1則busybit Read_busy()b
27、it result;RS=0;RW=1;EN=1;_nop_();_nop_();_nop_();_nop_();EN=0;return result;/返回忙碌標(biāo)志,1:忙碌液晶寫指令函數(shù)void WR_Cmd(uchar Cmd)while(Read_busy();RS = 0;RW = 0;EN= 1;delaynus(5);LCD_data=Cmd;delaynus(5);EN= 0;液晶寫數(shù)據(jù)函數(shù)void WR_Data(uchar Data)while(Read_busy();RS=1;RW=0;EN=1;delaynus(5);LCD_data=Data;delaynus(5);
28、EN= 0;void lcd_pos(uchar X,uchar Y)uchar pos;if (X=1)X=0x80;else if (X=2)X=0x90;else if (X=3)X=0x88;else if (X=4)X=0x98;pos=X+Y ;-33 -WR_Cmd(pos);顯示地址/LCD初始化子程序void Ini_Lcd(void)PSB=1;并口方式EN=0;RST=0;delaynus(5);RST=1;WR_Cmd(0x34);delaynus(5);WR_Cmd(0x30);delaynus(5);WR_Cmd(0x01);delaynus(5);WR_Cmd(0
29、x0c);delaynus(5);WR_Cmd(0x06);delaynus(5);void delay1(l)for(;l>0;l-);初始化DS18B20擴(kuò)充指令操作基本指令操作/清除LCD的顯示內(nèi)容顯示開(kāi),關(guān)光標(biāo)/11usow_reset(void) /DS18B20 復(fù)位函數(shù)char presence=1;while(presence)TEM=1;_nop_();_nop_();TEM=0;delay1(50);/550usTEM=1;delay1(3);presence=TEM;/如初始化成功,則返回一個(gè)低電平0,跳出while循環(huán)繼續(xù)執(zhí)行后面的延時(shí)程序delay1(45);T
30、EM=1;uchar read_byte(void) /DS18B20 讀命令函數(shù)uchar i;uchar value=0;for(i=8;i>0;i-)TEM=1;_nop_();_nop_();TEM=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();TEM=1;_nop_();_nop_();_nop_();_nop_();value>>=1;if(TEM) value|=0x80;delay1(6);return (value);void write_byte(uchar val)/DS18B20寫命令函數(shù)(溫度傳感
31、器)uchar i;for(i=8;i>0;i-)TEM=1;_nop_();_nop_();/溫度輸入口 TEM/5usTEM=0;_nop_();_nop_();_nop_();_nop_();_nop_();最低位移出TEM=val&0x01;delay1(6);TEM=1;_nop_();_nop_();val=val/2;/右移1位delay1(1);做好讀取溫度的準(zhǔn)備void TEM_Ready()ow_reset();復(fù)位write_byte(0xcc);/CCH ,忽略64位ROM地址,直接向18B20發(fā)溫度轉(zhuǎn)換命令write_byte(0x44); / 啟動(dòng)溫度
32、轉(zhuǎn)換delay1(200);轉(zhuǎn)換一次需要延時(shí)一定時(shí)間ow_reset();復(fù)位write_byte(0xcc);/CCH ,忽略64位ROM地址,直接向18B20發(fā)溫度轉(zhuǎn)換命令write_byte(0xbe);/BEH ,讀暫存器,讀內(nèi)部 RAM中9字節(jié)的溫度數(shù)據(jù)讀取溫度值并處理函數(shù)void rw_temp()Tflag=0;/負(fù)溫度標(biāo)志TEM_Ready();/讀溫度準(zhǔn)備temp_data0=read_byte();/溫度低 8 位temp_data1=read_byte();/溫度高 8 位if(temp_data1&0XF8)!=0x00)/ 判斷溫度符號(hào)Tflag=1;temp
33、_data0=temp_data0;temp_data1=temp_data1;為負(fù)則處理Ttemp=temp_data0+1;if(Ttemp>255) temp_data1+;TN=temp_data1*16+temp_data0/16; / 計(jì)算溫度整數(shù)部分TD=(temp_data0%16)*10/16; 計(jì)算溫度小數(shù)部分溫度值存儲(chǔ)函數(shù)void tem_sto()uchar i,j,k;if(Tflag=0)/溫度符號(hào)存儲(chǔ)tem6=''elsetem6='-'i=TN/100;/ 百位j=(TN%100)/10;/ 十位k=TN%10;/ 個(gè)位te
34、m7=numi;if(i=0)tem7=' 'tem8=numj;tem9=numk;tem10='.'tem11=numTD;溫度顯示值處理函數(shù)void tem_dis()uchar i;WR_Cmd(0x01);delay1(5);/Set_line(0x00);Set_column(0x00);lcd_pos(2,1);delay1(5);i=0;while(temi!='0')/ 顯示溫度值WR_Data(temi);i+;WR_Data('');WR_Data(0x00);delay1(5);/溫度顯示函數(shù)void te
35、m_msu()rw_temp();tem_sto();tem_dis();距離計(jì)算函數(shù)輸出M_DIS ,單位:cmvoid distance。double Speed;double i;i=T_dist/2.0;超聲傳播時(shí)間Speed=331.4+0.607*TN;計(jì)算超聲傳播速度M_DIS=i*Speed;距離M_DIS=M_DIS/10000.0;測(cè)距函數(shù)void Measure()uint i,j,k,l;double m;uchar tempa;uchar IsOverFlow=0;unsigned long Time;TRIG = 0;/發(fā)送一個(gè)脈沖for(tempa = 0; te
36、mpa < 20; tempa+) TRIG = 1;TRIG = 0;while(1)if(ECHO = 1)/Start Timer;TR1=1;/start timer break;if(TF1 = 1)IsOverFlow = 1;break;overflow;while(1)if(ECHO = 0)/Stop Timer;TR1=0;break;if(TF1 = 1)IsOverFlow = 1;break;overflow;Time = TH1;Time <<= 8;Time = Time+TL1;if(Time>60000)|(Time<1) 不在測(cè)
37、距范圍for(i=10;i<15;i+)disi-4=str4i;/'ERRORdis11=' 'elseT_dist=Time;distance。; 距離計(jì)算函數(shù)m=M_DIS*10.0; / 計(jì)算距離i=(uint)M_DIS/100;/ 百位j=(uint)M_DIS%100)/10; 十位k=(uint)M_DIS%10;/ 個(gè)位l=(uint)m%10; /小數(shù)點(diǎn)后第一位dis6=numi;dis7=numj;dis8=numk;dis9='.'dis10=numl;dis11=''dis12='C'dis
38、13='M'Ttemp=i*100+j*10+k;/ 記錄延時(shí)時(shí)長(zhǎng)距離顯示函數(shù)void DIS_Dis()int i;/ Set_line(0x28);/ Set_column(0x28);lcd_pos(3,1);delaynus(10);i=0;while(disi!='0')/ 顯示距離WR_Data(disi);i+;delaynus(1);開(kāi)機(jī)初始化函數(shù)void Init()uchar i;Ini_Lcd();WR_Cmd(0x01);delaynus(10);/Set_line(0x05);/ Set_column(0x05);lcd_pos(1,1);delaynus(10);i=0;while(str0i!='0')/ InitWR_Data(str0i);i+;delaynus(5);WR_Cmd(0x40);設(shè)定CGRAM地址delaynus(5);i=0;for(i=0;i<8;i+)WR_Data(cnti);寫入自定義圖形EA
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 道路安全學(xué)習(xí)心得體會(huì)
- 護(hù)理人員職業(yè)道德培訓(xùn)
- 油庫(kù)應(yīng)急處理流程
- 初中歷史教案反思
- 布藝扎染教案反思
- 白露主題班會(huì)教案
- 和的認(rèn)識(shí)說(shuō)課稿
- 文化創(chuàng)意承銷協(xié)議書范本
- 水利工程機(jī)械施工合同
- 土建項(xiàng)目協(xié)議書范本
- AI技術(shù)對(duì)文化創(chuàng)意產(chǎn)業(yè)的創(chuàng)新
- 高校物業(yè)物業(yè)管理服務(wù)內(nèi)容及標(biāo)準(zhǔn)
- 人教版pep五年級(jí)英語(yǔ)上下全冊(cè)各課時(shí)教學(xué)反思
- 校車發(fā)展方案
- 重癥監(jiān)護(hù)病房新生兒皮膚管理指南護(hù)理課件
- 戲雪樂(lè)園策劃方案
- 入托入學(xué)兒童查驗(yàn)證培訓(xùn)資料
- 一例新生兒NEC護(hù)理個(gè)案
- 2024年天翼云運(yùn)維工程師認(rèn)證考試復(fù)習(xí)題庫(kù)(含答案)
- 民宿招商引資方案
- 呼吸道疾病防控宣傳教育培訓(xùn)
評(píng)論
0/150
提交評(píng)論