基于單片機的超聲波測距系統(tǒng)的設(shè)計_第1頁
基于單片機的超聲波測距系統(tǒng)的設(shè)計_第2頁
基于單片機的超聲波測距系統(tǒng)的設(shè)計_第3頁
基于單片機的超聲波測距系統(tǒng)的設(shè)計_第4頁
基于單片機的超聲波測距系統(tǒng)的設(shè)計_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

中文題目:基于單片機的超聲波測距系統(tǒng)的設(shè)計英文題目:Designofultrasonicrangingsystembasedonsingle-chipmicrocomputer提交日期2013年5月18日摘要本課題是基于單片機的超聲波測距系統(tǒng)的設(shè)計,利用超聲波在空氣中以速度v傳播,達(dá)到被測物體時被反射回來,由超聲波接收器接收,計算其自發(fā)送到接收的往返時間,從而得到實測距離。該系統(tǒng)主要由超聲波模塊、單片機、LCD顯示模塊和溫度補償構(gòu)成。通過單片機的綜合處理、電路和程序?qū)崿F(xiàn)各功能模塊的功能。本設(shè)計充分發(fā)揮了單片機的性能,易于做到實時控制,具有一定的使用和參考價值。關(guān)鍵詞單片機超聲波測距Designofultrasonicrangingsystembasedonsingle-chipmicrocomputerAbstractThistopicisthedesignofultrasonicrangingsystembasedonsingle-chipmicrocomputer,byultrasonicwavepropagationataspeedofVinair,achievetheobjectisreflectedback,receivedbytheultrasonicreceiver,calculatethefromsendertoreceiverround-triptime,thusobtainsthemeasureddistance.Thesystemismainlycomposedofultrasonicmodule,MCU,LCDdisplaymoduleandtemperaturecompensation.Theimplementationofeverymodulefunctionthroughcomprehensivetreatment,MCUcircuitandprogram.ThisdesignmakesfulluseoftheMCUperformance,easytoachievereal-timecontrol,withsomereferencevalueand.KeywordsSingleChipMicrocomputerUltrasonicRanging目錄TOC\o"1-3"\h\u296941.緒言 120831.1選題背景和重要意義 1129061.2課題的提出 223361.3課題設(shè)計的任務(wù)和要求 2100601.3.1任務(wù) 2156341.3.2要求 2165542.超聲波測距系統(tǒng)的原理和設(shè)計方案 2164802.1超聲波發(fā)生器及測距原理 287012.1.1超聲波發(fā)生器 2226132.1.2壓電式超聲波發(fā)生器原理 3275072.1.3超聲波測距原理 3308732.2方案的設(shè)計 37272.3超聲波測距誤差的分析 4326343.系統(tǒng)硬件設(shè)計 5261563.1系統(tǒng)控制及外圍模塊簡介 5205313.1.1STC89C516RD簡介 5235473.1.2復(fù)位電路工作原理 7118963.1.3DS18B20溫度傳感器 769603.1.4時鐘電路 859953.1.5LCD模塊 8201633.2超聲波模塊電路 1028383.2.1模塊特點 10152913.2.2超聲波模塊基本工作原理 1048353.3LCD1602顯示電路 11174944系統(tǒng)軟件設(shè)計與調(diào)試 11298664.1系統(tǒng)主程序結(jié)構(gòu) 1264864.2測溫子程序 12161994.2.1初始化時序 13129934.2.2寫時序 13132064.2.3讀時序 14307694.3距離計算子程序 15144104.4LCD顯示程序 15112224.5硬件調(diào)試 207744.5.1電路調(diào)試操作流程 2028067總結(jié) 216771致謝 2122139參考文獻(xiàn) 22421附錄1系統(tǒng)原理圖 2311857附錄2源程序 241.緒言由于超聲波指向性強,能量消耗緩慢,在介質(zhì)中傳播的距離較遠(yuǎn),因而超聲波經(jīng)常用于距離的測量,如測距儀和物位測量儀等都可以通過超聲波來實現(xiàn)。利用超聲波檢測往往比較迅速、方便、計算簡單、易于做到實時控制,并且在測量精度方面能達(dá)到工業(yè)實用的要求,在現(xiàn)場機器人定位系統(tǒng)、車輛自動導(dǎo)航、車輛安全行駛輔助系統(tǒng)、城市交通管理和高速公路管理監(jiān)測系統(tǒng),以及河道、油井和倉庫及料位的探測中都有應(yīng)用。1.1選題背景和重要意義近年來,隨著電子測量技術(shù)的發(fā)展,運用超聲波作出精確測量已成可能。隨著經(jīng)濟(jì)發(fā)展,電子測量技術(shù)應(yīng)用越來越廣泛,而超聲波測量精確高,成本低,性能穩(wěn)定備受青睞。利用超聲波測量已知標(biāo)準(zhǔn)位置與目標(biāo)物體表面之間距離的方法叫做超聲波測距法。隨著機器人技術(shù)在其誕生后短短幾十年中的迅猛發(fā)展,它的應(yīng)用范圍也逐步由工業(yè)生產(chǎn)走向人們的生活。如此廣泛的應(yīng)用使得提高人們對機器人的了解顯得尤為重要。機人通過其感知系統(tǒng)察覺前方障礙物距離和周圍環(huán)境來實現(xiàn)繞障、自動尋線、測距等功能。超聲波測距相對其他測距技術(shù)而言成本低廉,測量精度較高,不受環(huán)境的限制,應(yīng)用方便,將它與紅外、灰度傳感器等結(jié)合共同實現(xiàn)機器人尋線和繞障功能。超聲波由于指向性強、能量消耗緩慢且在介質(zhì)中傳播的距離較遠(yuǎn),因而經(jīng)常用于距離的測量。它主要應(yīng)用于倒車?yán)走_(dá)、測距儀、物位測量儀、移動機器人的研制、建筑施工工地以及一些工業(yè)現(xiàn)場等,例如:距離、液位、井深、管道長度、流速等場合。利用超聲波檢測往往比較迅速、方便,且計算簡單、易于做到實時控制,在測量精度方面也能達(dá)到工業(yè)實用的要求,因此得到了廣泛的應(yīng)用。本課題的研究是非常有實用和有商業(yè)價值的。超聲波測距是一種極有潛力的方法,近距范圍內(nèi)超聲測距有其不受光線影響、結(jié)構(gòu)簡單、成本低等特點。超聲測量另一個突出優(yōu)點是:環(huán)境介質(zhì)可以為空氣、液體或固體,適用范圍廣泛。更重要的是超聲波檢測降低了勞動強度,避免工人在惡劣工作環(huán)境下(高、低溫,高、低壓,強輻射,有毒氣、液體環(huán)境等)受到傷害,還大大提高了測量精度,可靠性高;另外,超聲波測距還可以應(yīng)用到其他的功能系統(tǒng)中,例如在機器人避障系統(tǒng)、移動機器人避障的超聲測距系統(tǒng)、智能機器人管家和簡易智能電動車自動避障系統(tǒng)、車載系統(tǒng)、自動泊車系統(tǒng)、自動剎車系統(tǒng)和倒車?yán)走_(dá)系統(tǒng)中,超聲波測距也有其重要的應(yīng)用。1.2課題的提出測距的原理和方法有很多,根據(jù)其信息載體的不同可歸納為光學(xué)方法、無線電方法和超聲波方法。前兩者在某些地方有局限性,相比之下,超聲波方法具有突出的優(yōu)點,首先,超聲波對色彩、光照度不敏感,可用于測量透明及漫射性差的物體(如玻璃、拋光體);其次,超聲波對外界光線和電磁場不敏感,可用于黑暗、有灰塵或煙霧、電磁干擾強、易于小型化和集成化??偠灾暡ㄓ泻軓姷沫h(huán)境適應(yīng)性,因此超聲波作為非接觸測量手段,已越來越引起人們的重視。1.3課題設(shè)計的任務(wù)和要求1.3.1任務(wù)(1)了解超聲波測距原理;(2)根據(jù)超聲波測距原理,基于單片機設(shè)計超聲波測距電路;(3)設(shè)計一超聲波測距系統(tǒng)。1.3.2要求(1)對設(shè)計的電路進(jìn)行分析,實現(xiàn)超聲波的發(fā)送與接收,從而實現(xiàn)利用超聲波方法測量物體間的距離;(2)對超聲波測距系統(tǒng)進(jìn)行溫度補償;(3)以數(shù)字的形式顯示測量的實際距離。2.超聲波測距系統(tǒng)的原理和設(shè)計方案2.1超聲波發(fā)生器及測距原理超聲波發(fā)生器的可分幾大類,本節(jié)介紹壓電式發(fā)生器的原理和超聲波測距的原理。2.1.1超聲波發(fā)生器為了研究和利用超聲波,人們已經(jīng)設(shè)計和制成了許多超聲波發(fā)生器??傮w上講,超聲波發(fā)生器可以分為兩大類:一類是用電氣方式產(chǎn)生超聲波,一類是用機械方式產(chǎn)生超聲波。電氣方式包括壓電型、磁致伸縮型和電動型等;機械方式有加爾統(tǒng)笛、液哨和氣流旋笛等。它們所產(chǎn)生的超聲波的頻率、功率和聲波特性各不相同,因而用途也各不相同。目前較為常用的是壓電式超聲波發(fā)生器。2.1.2壓電式超聲波發(fā)生器原理壓電式超聲波發(fā)生器實際上是利用壓電晶體的諧振來工作的。超聲波發(fā)生器內(nèi)部結(jié)構(gòu)如圖2-1所示,它有兩個壓電晶片和一個共振板。當(dāng)它的兩極外加脈沖信號,其頻率等于壓電晶片的固有振蕩頻率時,壓電晶片將會發(fā)生共振,并帶動共振板振動,便產(chǎn)生超聲波。反之,如果兩電極間未外加電壓,當(dāng)共振板接收到超聲波時,將壓迫壓電晶片作振動,將機械能轉(zhuǎn)換為電信號,這時它就成為超聲波接收器了。圖2-1超聲波傳感器結(jié)構(gòu)2.1.3超聲波測距原理在超聲探測電路中,在發(fā)射端得到輸出脈沖為一系列方波,這一系列方波的寬度為發(fā)射超聲與接收超聲的時間間隔,顯然被測物距離越大,脈沖寬度越大,輸出脈沖的個數(shù)與被測距離成正比。超聲測距大致有以下兩種方法:

(1)取輸出脈沖的平均值電壓,該電壓(電壓的幅值基本固定)與距離成正比,測量電壓即可測得距離。

(2)測量輸出脈沖的寬度,即發(fā)射超聲波與接收超聲波的時間間隔t。因此,被測距離為S=v*t/2。

本次設(shè)計采用的是第二種方法。2.2方案的設(shè)計本設(shè)計是基于單片機的超聲波測距系統(tǒng)。用單片機控制超聲波的發(fā)射、接收電路以及進(jìn)行數(shù)據(jù)處理,再用LCD液晶顯示屏進(jìn)行數(shù)據(jù)的顯示。因為聲波的速度會隨著溫度的變化而改變,為了更精確的得到測量距離,溫度的影響是不容忽略的,本系統(tǒng)設(shè)計了一個溫度補償網(wǎng)絡(luò),即通過溫度傳感器,本設(shè)計選用的是DS18B20溫度傳感器,把當(dāng)前的溫度信息傳給單片機,再通過計算,從而得到當(dāng)前的超聲波速度,進(jìn)而得出實測距離。本系統(tǒng)采用的是宏晶科技推出的新一代高速、低功耗、超強抗干擾的STC89C516RD單片機做核心控制芯片,指令代碼完全兼容傳統(tǒng)8051單片機;超聲波模塊選用的是HC-SR04,該超聲波模塊包括了超聲波發(fā)射和接收模塊電路,很好地實現(xiàn)了超聲波測距功能的同時也降低了設(shè)計的工作量。本系統(tǒng)由單片機控制HC-SR04超聲波發(fā)生器向某一方向發(fā)射超聲波,同時開始計時,當(dāng)超聲波遇到障礙物后立即返回,當(dāng)超聲波接收器接收到反射波后停止計時,同時DS18B20把采集到的溫度反饋給單片機,經(jīng)過程序的計算可求得被測物體的距離。計算公式如下:S=v*t/22-1其中s表示測量點到障礙物的距離,v表示超聲波在空氣中的傳播速度,t表示自超生發(fā)射到接收的時間。2.3超聲波測距誤差的分析根據(jù)超聲波測距公式s=v*t/2,可知測距的誤差是由測量距離的時間誤差和超聲波的傳播速度誤差引起的。2.3.1時間誤差當(dāng)要求測距誤差小于1mm時,假設(shè)已知超聲波速度C=344m/s(20℃室溫),忽略聲速的傳播誤差。測距誤差s△t<(0.001/344)≈0.000002907s即2.907μ在超聲波的傳播速度是準(zhǔn)確的前提下,測量距離的傳播時間差值精度只要在達(dá)到微秒級,就能保證測距誤差小于1mm的誤差。使用的12MHz晶體作時鐘基準(zhǔn)的89C51單片機定時器能方便的計數(shù)到1μs的精度,因此系統(tǒng)采用89C51定時器能保證時間誤差在1mm的測量范圍內(nèi)。2.3.2超聲波傳播速度誤差由于超聲波在空氣中的傳播速度受溫度的影響比較大,為了測量的精確度,就不得不考慮溫度的影響。因此本設(shè)計采用了溫度補償?shù)姆椒?。利用SA18B20采集溫度反饋給單片機,利用下列公式可減少測量的誤差:S=(331.4+0.607T)*t/22-2S表示測量點到障礙物的距離,T表示當(dāng)前的溫度,t表示超聲波自發(fā)射到接收的時間。下表是超聲波超波速在不同溫度下在空氣中的傳播速度關(guān)系:表1超聲波在空氣中的傳播速度與溫度關(guān)系表溫度(℃)-30-20-100102030100聲速(m/s)313319325332338344349386本設(shè)計的原理框圖如下:溫度補償溫度補償單片機最小系統(tǒng)超聲波發(fā)射器單片機最小系統(tǒng)超聲波發(fā)射器LCDLCD顯示屏超聲波接收器超聲波接收器圖2-2超聲波測距結(jié)構(gòu)框圖2.3.3實驗數(shù)據(jù)分析在超聲波測距系統(tǒng)完成后對其進(jìn)行了調(diào)試測量,下表是實驗測得的溫度補償前和溫度補償后的數(shù)據(jù)對比:表2超聲波測距系統(tǒng)的實驗數(shù)據(jù)實際距離cm102030405060708090100溫度補償前9.619.12938.748.457.467.477.387.397.2溫度補償后9.919.729.839.849.68999由表可知加入了溫度補償后,測得的距離更加準(zhǔn)確了?;旧线_(dá)到了每一百米的誤差是1CM,實際測量,該系統(tǒng)的測量范圍為2CM--400CM,在測量范圍內(nèi)的誤差可控制在4CM,能滿足小范圍內(nèi)的測距要求。理論上,無論是溫度補償前還是溫度補償后測得的數(shù)據(jù)誤差應(yīng)該是呈線性增加的,但實際測出來的數(shù)據(jù)卻有差別,經(jīng)過分析后,我得出了如下結(jié)論:超聲波測距誤差不僅僅是由超聲波傳播速度誤差和時間誤差引起的,人為的一些因素也會造成測量誤差,如操作上的不規(guī)范;還有測量平面的凹凸不平也會造成超聲波測距產(chǎn)生誤差。在實際的測量中操作員應(yīng)該保持規(guī)范的操作,對同一個被測物可進(jìn)行多次測量取它們的平均值,從而減少測量誤差。3.系統(tǒng)硬件設(shè)計系統(tǒng)硬件主要由單片機最小系統(tǒng)及LCD顯示電路、超聲波發(fā)生器電路和溫度補償電路四部分組成。3.1系統(tǒng)控制及外圍模塊簡介3.1.1STC89C516RD簡介本系統(tǒng)采用的是宏晶科技推出的新一代高速、低功耗、超強抗干擾的STC89C516單片機做核心控制芯片,指令代碼完全兼容傳統(tǒng)8051單片機。主要特性如下:增強型8051單片機,6時鐘/機器周期和12時鐘/機器周期可以任意選擇,指令代碼完全兼容傳統(tǒng)8051。工作電壓:3.3V~5.5V(5V單片機)/2.0V~3.8V(3V單片機)。工作頻率范圍:0~40MHz,相當(dāng)于普通8051的0~80MHz,實際工作頻率可達(dá)48MHz。用戶應(yīng)用程序空間為8K字節(jié)。片上集成512字節(jié)RAM。通用I/O口(32個),復(fù)位后為:P1/P2/P3/P4是準(zhǔn)雙向口/弱上拉,P0口是漏極開路輸出,作為總線擴展用時,不用加上拉電阻,作為I/O口用時,需加上拉電阻。ISP(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程),無需專用編程器,無需專用仿真器,可通過串口(RxD/P3.0,TxD/P3.1)直接下載用戶程序,數(shù)秒即可完成一片。具有EEPROM功能。具有看門狗功能。共3個16位定時器/計數(shù)器。即定時器T0、T1、T2。外部中斷4路,下降沿中斷或低電平觸發(fā)電路,PowerDown模式可由外部中斷低電平觸發(fā)中斷方式喚醒。通用異步串行口(UART),還可用定時器軟件實現(xiàn)多個UART。工作溫度范圍:-40~+85℃(工業(yè)級)/0~75℃PDIP封裝。微控制器STC89C516各引腳定義如圖3-1所示:圖3-1STC89C516RD引腳圖3.1.2復(fù)位電路工作原理上電復(fù)位要求接通電源后,單片機自動實現(xiàn)復(fù)位操作。上電瞬間RESET引腳獲得高電平,隨著電容的充電,RERST引腳的高電平將逐漸下降。RERST引腳的高電平只要能保持足夠的時間,單片機就可以進(jìn)行復(fù)位操作。本系統(tǒng)的復(fù)位電路原理圖如圖3-2:圖3-2復(fù)位電路圖3.1.3DS18B20溫度傳感器本設(shè)計采用的是美國Dallas半導(dǎo)體公司的不銹鋼封裝的DS18B20數(shù)字溫度傳感器。DS18B20是采用專門設(shè)計的不銹鋼外殼,僅有0.2mm的壁厚,具有很小的蓄熱量,采用導(dǎo)熱性高的密封膠,保證了溫度傳感器的高靈敏性,極小的溫度延遲。DS18B20支持“一線總線”接口(1-Wire),測量溫度范圍為-55°C~+125°C,在-10~+85°C范圍內(nèi),精度為±本系統(tǒng)主要利用DS18B20進(jìn)行溫度的測量,并把溫度反饋給單片機,由單片進(jìn)行計算當(dāng)前溫度下超聲波的傳播速度。其原理圖如下:圖3-3DS18B203.1.4時鐘電路圖3-4為實時RTC時鐘電路,處理器引腳PC18和PC19外接晶振,構(gòu)成了內(nèi)部振蕩電路。由于單片機內(nèi)部有一個高增益反相放大器,當(dāng)外接晶振后,就構(gòu)成了一個穩(wěn)定的自激振蕩器,并產(chǎn)生振蕩時鐘脈沖。電容器C2、C3起穩(wěn)定振蕩頻率,快速起振作用。本次采用的是12MHZ的晶振,從而能更精確地測得超聲波往返時間t,減少測距誤差。圖3-4時鐘振蕩電路3.2超聲波模塊電路3.2.1模塊特點本系統(tǒng)選用的是HC-SR04發(fā)生波模塊,此模塊包括了超聲波發(fā)射器和超聲波接收器電路??商峁?cm-400cm的非接觸式距離感測功能。測距精度可達(dá)到3mm圖3-5HC-SR04超聲波模塊電路圖3.2.2超聲波模塊基本工作原理1)采用IO口TRIG觸發(fā)測距,給至少10us的高電平信號;2)模塊自動發(fā)送8個40KHZ的方波,自動檢測是否有信號返回;3)有信號返回,通過IO口ECHO輸出一個高電平,高電平持續(xù)的時間就是超聲波從發(fā)射到返回的時間。測試距離=(高電平時間*聲速)/2.即S=v*t超聲波的時序圖如圖3-6所示:圖3-6超聲波時序圖3.3LCD1602顯示電路本系統(tǒng)采用16*2的黑白液晶屏作為當(dāng)前時間,環(huán)境亮度參數(shù)的顯示器。液晶顯示的原理是利用液晶的物理特性,通過電壓對其顯示區(qū)域進(jìn)行控制,有電就有顯示,即可以顯示出圖形。液晶顯示器具有厚度薄,適用于大規(guī)模集成電路直接驅(qū)動,易顯色的特點,目前已被廣泛應(yīng)用。單片機STC89C516處理器通過使用5V電壓直接驅(qū)動LCD。通過可調(diào)電阻調(diào)節(jié)顯示屏的對比度,從而更清晰地顯示數(shù)據(jù)。其電路圖如3-7所示:圖3-7LCD1602顯示電路4系統(tǒng)軟件設(shè)計與調(diào)試4.1系統(tǒng)主程序結(jié)構(gòu)系統(tǒng)軟件設(shè)計主要包括主程序、DS18B20測溫程序、LCD1602顯示程序。主程序完成系統(tǒng)初始化后調(diào)用LCD液晶顯示程序,再通過測溫和測距在內(nèi)的各個程序完成距離測量并通過LCD顯示輸出。DS18B20初始化DS18B20初始化溫度采集單片機最小系統(tǒng)超聲波發(fā)射超聲波接收LCD顯示結(jié)果溫度補償圖4-1系統(tǒng)軟件方框圖4.2測溫子程序測溫的主要器件是DS18B20,現(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,DS18B20中有兩個存測得的溫度值的兩個8位存貯器RAM,用11位存貯溫度值,最高位(5位)為符號位。對應(yīng)的溫度計算:當(dāng)符號位S=0時,直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)S=1時,先將補碼變換為原碼,再計算十進(jìn)制值。并采集到的溫度反饋給單片機。4.2.1初始化時序時序如圖4-3所示。主機總線發(fā)送復(fù)位脈沖(最短為480μS,最高時間為960μS的低電平信號),接著再釋放總線(置總線為高電平)并進(jìn)入接收狀態(tài)。DS18B20在檢測到總線的上升沿后等待15—60μS發(fā)出器件存在脈沖(低電平持續(xù)60—240μS)。初始化程序如下所示:bitInit_DS18B20(void){bitdat=0;DQ=1;//DQ復(fù)位DelayUs2x(5);//稍做延時DQ=0;//單片機將DQ拉低DelayUs2x(200);//精確延時大于480us小于960usDelayUs2x(200);DQ=1;//拉高總線DelayUs2x(50);//15~60us后接收60-240us的存在脈沖dat=DQ;//如果x=0則初始化成功,x=1則初始化失敗DelayUs2x(25);//稍作延時返回returndat;}單片機主動釋放單片機主動釋放60-240μS15-60μS480-960μS圖4-2初始化時序圖4.2.2寫時序當(dāng)主機總線從高電平至低電平時就產(chǎn)生寫時間隙,DS18B20在檢測到下降沿后15μS時開始采樣總線上的電平,所以15μS之內(nèi)應(yīng)將所需寫的位送到總線上,DS18B20再15—60μS間對總線采樣,每寫一位總時間必須在60—120μS之間完成。若低電平寫入的位是0,高電平寫入的位是1,連續(xù)寫時位間的間隙應(yīng)大于1μS。程序如下所示:voidWriteOneChar(unsignedchardat){unsignedchari=0;for(i=8;i>0;i--){DQ=0;DQ=dat&0x01;DelayUs2x(25);DQ=1;dat>>=1;}DelayUs2x(25);}4.2.3讀時序單片機主動產(chǎn)生一個下降沿的啟動信號,并維持低電平大于1μS后釋放總線,15μS后DS18B20占主動權(quán),DS18B20會將數(shù)據(jù)按位放在總線上(低位在先,當(dāng)讀取兩個字節(jié)的溫度值時,低字節(jié)在先),這時單片機可讀取信號,讀取一位的時間應(yīng)在60μS內(nèi)完成。當(dāng)需要讀取下一位時再產(chǎn)生下降沿啟動信號。程序如下:unsignedcharReadOneChar(void){unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i--){DQ=0;//給脈沖信號dat>>=1;DQ=1;//給脈沖信號if(DQ)dat|=0x80;DelayUs2x(25);}return(dat);}4.3距離計算子程序當(dāng)前溫度和超聲波往返時間均測量出來后,用C語言根據(jù)公式計算距離來編程是比較簡單的算法。根據(jù)距離計算公式s=v*t/2設(shè)計算法。為了比較溫度補償前和溫度補償后測出的距離的差別,分別在LCD上顯示出溫度補償前和溫度補償后測量的距離。其算法如下:voidConut(void) { time=TH0*256+TL0; TH0=0; TL0=0; S1=(time*1.7)/10;//算出來是CM未補償 S=(speed+0.607*temperature)*time/1000/2; //溫度補償4.4LCD顯示程序程序開始初始化后,檢查忙信號如果有則寫入命令函數(shù),如果沒有則重新檢查忙信號,至到有信號為止,寫完命令函數(shù)則寫入數(shù)據(jù)函數(shù),通過一定的延時程序,再返回到程序初始代。其流程圖和程序如下:開始開始初始化初始化檢查忙信號檢查忙信號NNY寫數(shù)據(jù)函數(shù)Y寫數(shù)據(jù)函數(shù)寫命令函數(shù)寫命令函數(shù)延時延時圖4-3LCD顯示流程圖LCD1602顯示程序:#include"1602.h"#include"delay.h"#defineRS_CLRRS=0#defineRS_SETRS=1#defineRW_CLRRW=0#defineRW_SETRW=1#defineEN_CLREN=0#defineEN_SETEN=1#defineDataPortP0/*判忙函數(shù)*/bitLCD_Check_Busy(void){DataPort=0xFF;RS_CLR;RW_SET;EN_CLR;_nop_();EN_SET;return(bit)(DataPort&0x80);}/*寫入命令函數(shù)*/voidLCD_Write_Com(unsignedcharcom){while(LCD_Check_Busy());//忙則等待RS_CLR;RW_CLR;EN_SET;DataPort=com;_nop_();EN_CLR;}/*寫入數(shù)據(jù)函數(shù)*/voidLCD_Write_Data(unsignedcharData){while(LCD_Check_Busy());//忙則等待RS_SET;RW_CLR;EN_SET;DataPort=Data;_nop_();EN_CLR;}/*清屏函數(shù)*/voidLCD_Clear(void){LCD_Write_Com(0x01);DelayMs(5);}/*寫入字符串函數(shù)*/voidLCD_Write_String(unsignedcharx,unsignedchary,unsignedchar*s){if(y==0) { LCD_Write_Com(0x80+x);//表示第一行 }else { LCD_Write_Com(0xC0+x);//表示第二行 }while(*s) {LCD_Write_Data(*s);s++; }}/*寫入字符函數(shù)*/voidLCD_Write_Char(unsignedcharx,unsignedchary,unsignedcharData){if(y==0) { LCD_Write_Com(0x80+x); }else { LCD_Write_Com(0xC0+x); }LCD_Write_Data(Data);}/*初始化函數(shù)*/voidLCD_Init(void){LCD_Write_Com(0x38);/*顯示模式設(shè)置*/DelayMs(5);LCD_Write_Com(0x38);DelayMs(5);LCD_Write_Com(0x38);DelayMs(5);LCD_Write_Com(0x38);LCD_Write_Com(0x08);/*顯示關(guān)閉*/LCD_Write_Com(0x01);/*顯示清屏*/LCD_Write_Com(0x06);/*顯示光標(biāo)移動設(shè)置*/DelayMs(5);LCD_Write_Com(0x0C);/*顯示開及光標(biāo)設(shè)置*/}4.5硬件調(diào)試4.5.1電路調(diào)試操作流程1)短路、開路檢測電路焊接完成后,為了確保焊接的正確性,必需進(jìn)行短路、短路的檢測。把萬用表打到二極管檔,用紅、黑筆接到電路的正負(fù)極,檢測電路是否存在短路現(xiàn)象。另外,把萬用表的紅、黑筆分別接到有相連接的回路中,檢測回路中是否存在斷路、虛焊現(xiàn)象。2)確認(rèn)電路連接的正確性把焊接好的電路板和電路原理圖詳細(xì)對照,仔細(xì)觀察各個連接點是否和電路原理圖一致。此外,對于電路中元器件的正負(fù)極性的連接是否正確。下圖為超聲波測距系統(tǒng)設(shè)計完成后運行的實物圖:圖4-4超聲波測距系統(tǒng)實物圖總結(jié)超聲波測距的原理是利用超聲波的發(fā)射和接受,根據(jù)超聲波傳播的時間來計算出傳播距離。本設(shè)計的超聲波測距系統(tǒng)主要包括了超聲波的發(fā)射和接收電路、單片機的最小系統(tǒng)和LCD顯示電路。利用單片機的運算和控制功能,利用超聲波的特性設(shè)計出的一種簡單的測距系統(tǒng)。經(jīng)實際測試證明,該系統(tǒng)工作穩(wěn)定,能滿足一般近距離測距的要求,且成本較低、有良好的性價比。相信隨著超聲波技術(shù)的不斷進(jìn)步,超聲波測距將在更多方面發(fā)揮作用。致謝從畢業(yè)設(shè)計的選題到畢業(yè)設(shè)計的完成這幾個月的時間里,老師和同學(xué)們都給了我很大的幫助和支持。首先要感謝的是我的指導(dǎo)老師周玲老師,周玲老師是一個很負(fù)責(zé)的老師,在畢業(yè)設(shè)計前期就制定了詳細(xì)的工作時間表,嚴(yán)格要求我們按要求完成相應(yīng)的任務(wù)。感謝她這幾個月對我畢業(yè)設(shè)計的悉心指導(dǎo)和各方面的幫助,在畢業(yè)設(shè)計的過程中給了我很多寶貴的建議和意見,使我學(xué)到了很多知識,在此我向周玲老師致以最真誠的感謝和敬意。最后我要深深地感謝我的家人,正是他們含辛茹苦地把我養(yǎng)育成人,在生活和學(xué)習(xí)上給予我無盡的愛、理解和支持,才使我時刻充滿信心和勇氣,克服成長路上的種種困難,順利的完成大學(xué)學(xué)習(xí)。參考文獻(xiàn)[1]李伯成.單片機及嵌入式系統(tǒng)[M].第二版.清華大學(xué)出版社,2008[2]鄭學(xué)堅.周斌.微型計算機原理及應(yīng)用[M].北京:清華大學(xué)出版社,2010[3]吳建平.傳感器原理及應(yīng)用[M].北京:機械工業(yè)出版社,2011[4]閻石.數(shù)字電子技術(shù)[M].西安:西安電子大學(xué)科技出版社,2008[5]譚浩強.C程序設(shè)計[M].第三版.北京:清華大學(xué)出版社,2005[6]邱關(guān)源.電路[M].第五版,高等教育出版社,2009

[7]佚名.帶您走進(jìn)單片機世界[M/CD].普中科技,2001[8]嚴(yán)雨.AVR單片機C語言應(yīng)用100例[M].北京:電子工業(yè)出版社,2012:80-90.[9]李喜孟.超聲波檢頻譜分析技術(shù)及其應(yīng)用[M].機械工業(yè)出版社,2009.8[10]勝全.D18B20數(shù)字溫度計在微機溫度采集系統(tǒng)中的序編制[M].南京:南京大學(xué)出版社1998.3[11]MeyerD,DenzlerJandNiemannH.Modelbasedextractionofarticulatedobjectsinimagesequencesforgaitanalysis[C].InProcIEEEInternationalConferenceonImageProcessing,SantaBarbara,California2007,78—81.[12]LucioDiJasio.Programming30-bitMicriocontroolersinCExploringthePICS32[M].北京:人民郵電出版社,2009:100-120.附錄1系統(tǒng)原理圖附錄2源程序1.脈寬測量.c#include<reg52.h>#include<intrins.h>#include<stdio.h>#include"18b20.h"#include"1602.h"#include"delay.h"#include"hardware.h"#definespeed331.4UnsignedcharcodeASCII[16]={'0','1','2','3','4','5','6','7','8','9','.','-','M','C'};floattemperature;unsignedchardisplay_buff[16];inttemp;staticunsignedcharDisNum=0;//顯示用指針 unsignedinttime=0; unsignedlongS1=0; unsignedlongS=0; bitflag=0; unsignedchardisbuff[4] ={0,0,0,0,};/********************************************************/voidConut(void) { time=TH0*256+TL0; TH0=0; TL0=0; S1=(time*1.7)/10;//算出來是CM未補償 S=(speed+0.607*temperature)*time/1000/2; //溫度補償 if((S>=7000)||flag==1)//超出測量范圍顯示“-” { flag=0; LCD_Write_Char(0,1,ASCII[11]); LCD_Write_Char(1,1,ASCII[10]); //顯示點 LCD_Write_Char(2,1,ASCII[11]); LCD_Write_Char(3,1,ASCII[11]); LCD_Write_Char(4,1,ASCII[12]); //顯示M } else { disbuff[0]=S%10000/1000; disbuff[1]=S%1000/100; disbuff[2]=S%1000%100/10; disbuff[3]=S%1000%10%10; //S LCD_Write_Char(0,1,ASCII[disbuff[0]]); LCD_Write_Char(1,1,ASCII[disbuff[1]]); LCD_Write_Char(2,1,ASCII[disbuff[2]]); LCD_Write_Char(3,1,ASCII[10]); //顯示點 LCD_Write_Char(4,1,ASCII[disbuff[3]]); LCD_Write_Char(5,1,ASCII[13]); //顯示cm LCD_Write_Char(6,1,ASCII[12]); //S1 disbuff[0]=S1%10000/1000; disbuff[1]=S1%1000/100; disbuff[2]=S1%1000%100/10; disbuff[3]=S1%1000%10%10; LCD_Write_Char(0,0,ASCII[disbuff[0]]); LCD_Write_Char(1,0,ASCII[disbuff[1]]); LCD_Write_Char(2,0,ASCII[disbuff[2]]); LCD_Write_Char(3,0,ASCII[10]); //顯示點 LCD_Write_Char(4,0,ASCII[disbuff[3]]); LCD_Write_Char(5,0,ASCII[13]); //顯示cm LCD_Write_Char(6,0,ASCII[12]); //sprintf(display_buff,"time=%5d",time); //LCD_Write_String(0,0,display_buff); } }/********************************************************/voidzd0()interrupt1 //T0中斷用來計數(shù)器溢出,超過測距范圍{flag=1; //中斷溢出標(biāo)志}/********************************************************/voidStartModule() //啟動模塊{ TX=1; //啟動一次模塊 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TX=0;}voidInit_Timer0(){ TMOD=0x01; //設(shè)T0為方式1,GATE=1; TH0=0; TL0=0; ET0=1;//允許T0中斷 EA=1; //開啟總中斷 }voidInit_sys(){ Init_Timer0(); LCD_Init(); Init_DS18B20(); LCD_Clear(); LCD_Write_String(0,0,"HUWEICHENG"); LCD_Write_String(0,1,"090703109");// Delayns(3); LCD_Clear(); temperature=ReadTemperature(); }voidmain(void){ Init_sys();// WDT_CONTR=0x36; while(1) { temp=ReadTemperature(); temperature=(float)temp*0.0625; sprintf(display_buff,"T=%4.1fC",temperature); LCD_Write_String(9,1,display_buff); LCD_Write_String(9,0,"NON"); StartModule(); while(!RX); TR0=1; while(RX); TR0=0; Conut(); DelayMs(80); WDT_CONTR=0x36; }}2.LCD1602程序#include"1602.h"#include"delay.h"#include"hardware.h"#defineRS_CLRRS=0#defineRS_SETRS=1#defineRW_CLRRW=0#defineRW_SETRW=1#defineEN_CLREN=0#defineEN_SETEN=1#defineDataPortP0/*判忙函數(shù)*/bitLCD_Check_Busy(void){DataPort=0xFF;RS_CLR;RW_SET;EN_CLR;_nop_();EN_SET;return(bit)(DataPort&0x80);}/*寫入命令函數(shù)*/voidLCD_Write_Com(unsignedcharcom){while(LCD_Check_Busy());//忙則等待RS_CLR;RW_CLR;EN_SET;DataPort=com;_nop_();EN_CLR;}/*寫入數(shù)據(jù)函數(shù)*/voidLCD_Write_Data(unsignedcharData){while(LCD_Check_Busy());//忙則等待RS_SET;RW_CLR;EN_SET;DataPort=Data;_nop_();EN_CLR;}/*清屏函數(shù)*/voidLCD_Clear(void){LCD_Write_Com(0x01);DelayMs(5);}/*寫入字符串函數(shù)*/voidLCD_Write_String(unsignedcharx,unsignedchary,unsignedchar*s){if(y==0) { LCD_Write_Com(0x80+x);//表示第一行 }else { LCD_Write_Com(0xC0+x);//表示第二行 }while(*s) {LCD_Write_Data(*s);s++; }}/*寫入字符函數(shù)*/voidLCD_Write_Char(unsignedcharx,unsignedchary,unsignedcharData){if(y==0) { LCD_Write_Com(0x80+x); }else { LCD_Write_Com(0xC0+x); }LCD_Write_Data(Data);}/*初始化函數(shù)*/voidLCD_Init(void){LCD_Write_Com(0x38);/*顯示模式設(shè)置*/DelayMs(5);LCD_Write_Com(0x38);DelayMs(5);LCD_Write_Com(0x38);DelayMs(5);LCD_Write_Com(0x38);LCD_Write_Com(0x08);/*顯示關(guān)閉*/LCD_Write_Com(0x01);/*顯示清屏*/LCD_Write_Com(0x06);/*顯示光標(biāo)移動設(shè)置*/DelayMs(5);LCD_Write_Com(0x0C);/*顯示開及光標(biāo)設(shè)置*/}/*設(shè)定二個自定義字符,LCD1602中自定義字符的地址為0x00--0x07,即可定義8個字符這里我們設(shè)定把一個自定義字符放在0x00位置(000),另一個放在0x01位子(001)*//*voidLcd_User_Chr(void){//第一個自定義字符L

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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

提交評論