基于溫度補償?shù)某暡y距設(shè)計_第1頁
基于溫度補償?shù)某暡y距設(shè)計_第2頁
基于溫度補償?shù)某暡y距設(shè)計_第3頁
基于溫度補償?shù)某暡y距設(shè)計_第4頁
基于溫度補償?shù)某暡y距設(shè)計_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

目錄TOC\o"1-3"\h\u58501緒論2200521.1設(shè)計目的 221041.2設(shè)計意義 2124241.3系統(tǒng)功能 343052設(shè)計方案447952.1方案設(shè)計 4228772.2方案論證 4169673硬件設(shè)計5110803.1設(shè)計方案 5139463.2STC89C52外圍電路設(shè)計 6281443.2.1單片機 6310703.2.2復位電路與震蕩電路 7191553.3LCD顯示模塊的設(shè)計 881053.3.1字符型液晶顯示模塊 862013.3.2字符型液晶顯示模塊引腳 844213.3.3字符型液晶顯示模塊內(nèi)部結(jié)構(gòu) 9261393.4溫度傳感器DS18B20電路設(shè)計 10120543.4.1溫度傳感器DS18B20簡介 10100743.4.2DS18B20的主要特性 1120233.5數(shù)據(jù)采集模塊 123773.6HC-SR04超聲波測距模塊 1375653.7報警電路設(shè)計 15244524軟件設(shè)計1712724.1系統(tǒng)軟件設(shè)計說明 1722444.2主程序的設(shè)計 17159594.3超聲波發(fā)射子程序和超聲波接收中斷子程序設(shè)計 18170024.4溫度測量子程序設(shè)計 18206655結(jié)果與結(jié)論21315915.1結(jié)果 21192015.2結(jié)論 2115350致謝 227610參考文獻 237862附錄 241緒論1.1設(shè)計目的隨著國民經(jīng)濟的迅速開展,超聲波在機械制造、石油化工、航空航天等領(lǐng)域發(fā)揮著越來越重要的作用。超聲波測距作為一種非接觸式距離測量方法,具有不受外界光及電磁場等因素影響的優(yōu)點,實現(xiàn)電路簡單、本錢低;同時,還具有易于定向發(fā)射、方向性好、對人體傷害小等特點。上述優(yōu)勢使得與超聲波測距領(lǐng)域相關(guān)的儀器設(shè)備在數(shù)據(jù)處理、檢測性能和工程設(shè)計系統(tǒng)化等方面有了更大的開展空間。利用超聲波定位技術(shù)是蝙蝠等一些無目視能力的生物作為防御天敵及捕獲獵物的生存手段,這些生物體可發(fā)射人們聽不到的超聲波(20KH以上的機械波),借助空氣介質(zhì)傳播,根據(jù)獵物或障礙物反射回來的回波的時間間隔及強弱,判斷獵物的性質(zhì)或障礙物的位置。在影響超聲波測距誤差的因素中,溫度的影響是比擬大的,超聲波的傳播速度在不同的溫度下是不同的,那就要得出其傳播速度與環(huán)境溫度t的關(guān)系式。因此用常溫下的超聲波速度341m/s來計算不同溫度環(huán)境下的超聲波測距的距離是有很大誤差的。為了提高測距精度,我們必須對超聲波的速度進行溫度補償,用溫度傳感器測環(huán)境溫度的數(shù)值,從而得到改環(huán)境下的超聲波速度1.2設(shè)計意義隨著社會經(jīng)濟的快速開展,人們生活水平的不斷提高,交通運輸業(yè)的日益興旺,汽車數(shù)量的越來越多。交通擁擠的狀況也日趨嚴重,撞車事件也經(jīng)常的發(fā)生,造成了很嚴重的人員傷亡和財產(chǎn)損失,針對這一情況,設(shè)計一種響應(yīng)快,可靠性高且較為經(jīng)濟的汽車防撞報警系統(tǒng)事在必行,最常見的一種測量距離的方法是超聲波測距,應(yīng)用于汽車的近距離防撞。還有城市的快速開展,排水系統(tǒng)往往落后于城市建設(shè),經(jīng)常出現(xiàn)已經(jīng)建設(shè)好建筑設(shè)施再重新開挖排水設(shè)施的情況,這樣經(jīng)常會造成城市污水的到處排放,影響城市衛(wèi)生,針對這一情況,設(shè)計污水疏通移動機器人的自動控制系統(tǒng)是非常必要的,而這個自動控制系統(tǒng)核心就是超聲波測距。以上舉得只是超聲波應(yīng)用領(lǐng)域中的一小局部的例子,當今生活中還有很多方面需要用到超聲波測距,來解決人們?nèi)粘I钪杏龅降膯栴},因此設(shè)計一款超聲波測距儀是非常重要的一件事。1.3系統(tǒng)功能超聲波測距儀的設(shè)計要求如下:1)測量范圍小于等于5米2)測量誤差小于0.3cm3)進行溫度補償4)以LCD顯示溫度和距離2設(shè)計方案2.1方案設(shè)計利用超聲波檢測距離,設(shè)計比擬方便,計算處理也較簡單,其測量精度也能到達使用要求。超聲波發(fā)生器可以分為兩大類:一類是用機械方式產(chǎn)生超聲波,一類是用電氣方式產(chǎn)生超聲波。電氣方式包括壓電型、電動型等;機械方式有加爾統(tǒng)笛、液哨和氣流旋笛等。目前在近距離測量方面常用的是壓電式超聲波換能器。根據(jù)設(shè)計要求并綜合各方面因素,本設(shè)計采用AT89C51單片機作為控制器,用動態(tài)掃描法實現(xiàn)LCD數(shù)字顯示,超聲波驅(qū)動信號用單片機的定時器。單片機發(fā)出40kHz的信號經(jīng)放大后通過超聲波發(fā)射器輸出;超聲波接收器將接收到的超聲波信號經(jīng)放大器放大,用鎖相環(huán)電路進行檢波處理后,啟動單片機中斷程序,測得時間為t,再由軟件進行判別、計算,得出距離數(shù)并送LCD顯示。2.2方案論證方案一:基于單片機的超聲波測距方案,基于單片機的超聲波測距是以單片機編程產(chǎn)生40KHZ的頻率,經(jīng)過發(fā)射驅(qū)動放大,使發(fā)射端發(fā)射超聲波,經(jīng)被測物反射回來,通過反射電路,放大,整形,處理,測出距離。方案二:基于CPLD的超聲波測距系統(tǒng)?;贑PLD的超聲波測距系統(tǒng)采用CPLD器件控制超聲波的發(fā)射與接收,從而計算出測量的距離,其運用VHDL編寫程序,并且配合MAX-plusⅡ進行軟硬件的仿真與調(diào)試。利用CPLD具有性能高、本錢低的特點,但是單片機能夠準確計時,測距精度高,而且單片機控制方便,計算簡單,所以綜合更方面因素本文采用STC89C52單片機作為控制器,用動態(tài)掃描法實現(xiàn)LED數(shù)字顯示,超聲波驅(qū)動信號用單片機的定時器。3硬件設(shè)計3.1設(shè)計方案本文介紹了一種采用脈沖回波方式,基于STC89C52單片機的超聲波測距系統(tǒng)。該系統(tǒng)充分利用單片機的硬件和軟件資源,自動實現(xiàn)超聲波的發(fā)射與接收控制。該系統(tǒng)充分考慮了環(huán)境溫度對超聲波傳播速度的影響,通過單片機中計數(shù)器所計超聲波往返所經(jīng)歷的時間,通過公式換算就可以計算出超聲波發(fā)射器與被測物之間的距離。其主要包括單片機控制模塊,超聲波發(fā)射模塊,超聲波接收模塊,LCD1602顯示模塊,溫度補償模塊,報警模塊,和掃描驅(qū)動模塊這幾個局部。其可以實現(xiàn)非接觸測量物體的距離,并通過LCD1602液晶顯示出來,當距離小于1M時實現(xiàn)報警。圖3.1超聲波測距儀總設(shè)計框圖3.2STC89C52外圍電路設(shè)計單片機STC89C52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲器。使用Atmel公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。STC89C52具有以下標準功能:8k字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時器,2個數(shù)據(jù)指針,三個16位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。另外,STC89C52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復位為止。外形及引腳排列如圖3.2所示。鐘電路引腳、I/O引腳、控制線引腳。根據(jù)開發(fā)的需要和單片機的結(jié)構(gòu),我們就可以圖3.2STC89C52的芯片引腳圖STC89C52共有40個引腳,大致可分為4類:電源引腳、時實現(xiàn)單片機的自開工作,即實現(xiàn)自動化!3.2.2復位電路與震蕩電路單片機STC89C52作為主控芯片,控制整個電路的運行。其需要一個復位電路,復位電路的功能是:系統(tǒng)上電時提供復位信號,直至系統(tǒng)電源穩(wěn)定后,撤消復位信號。復位電路的設(shè)計圖如圖3.3所示。圖3.3復位電路圖STC89C52中有一個用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別為該反向放大器的輸入端和輸出端。這個反向放大器與作為反應(yīng)元件的片外石英晶體或陶瓷諧振器一起構(gòu)成自激振蕩器。外接12M振蕩器及電容C1、C2接在放大器的反應(yīng)回路中構(gòu)成并聯(lián)振蕩電路。由于外接電容容量的大小會輕微影響振蕩頻率的上下、振蕩器工作的穩(wěn)定性、起振的難易程度及溫度穩(wěn)定性因此電容選擇30pF10pF。圖3.4振蕩電路圖3.3LCD顯示模塊的設(shè)計字符型液晶顯示模塊圖3.5液晶面板字符型液晶顯示模塊是一類專門用于顯示字母,數(shù)字,符號等的點陣式液晶顯示模塊。在顯示器件上的電極圖型設(shè)計,它是由假設(shè)干個5*7或5*11等點陣符位組成。每一個點陣字符位都可以顯示一個字符。點陣字符位之間有一空點距的間隔起到了字符間距和行距的作用,模塊見圖3.5。3.3.2字符型液晶顯示模塊引腳VSS為地電源,VDD接5V正電源,VL為液晶顯示器比照度調(diào)整端,接正電源時比照度最弱,接地電源時比照度最高,比照度過高時會產(chǎn)生“鬼影〞,使用時可以通過一個10K的電位器調(diào)整比照度。RS為存放器選擇,高電平時選擇數(shù)據(jù)存放器、低電平時選擇指令存放器。RW為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和RW共同為低電平時可以寫入指令或者顯示地址,當RS為低電平RW為高電平時可以讀忙信號,當RS為高電平RW為低電平時可以寫入數(shù)據(jù)。E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。DB0~DB7為8位雙向數(shù)據(jù)線,BLK和BLA是背光燈電源。模塊引腳如表3.1。表3.1字符型液晶顯示模塊引腳編號符號引腳說明編號符號引腳說明1VSS電源地9D2DataI/O2VDD電源正極10D3DataI/O3VL液晶顯示偏壓信號11D4DataI/O4RS數(shù)據(jù)/命令12D5DataI/O5R/W讀/寫13D6DataI/O6E使能信號14D7DataI/O7D0DataI/O45BLA背光源正級8D1DataI/O16BLK背光源負級3.3.3字符型液晶顯示模塊內(nèi)部結(jié)構(gòu)液晶顯示模塊WM-C1602N的內(nèi)部結(jié)構(gòu)如圖3.6分為三部份:一為LCD控制器,二為LCD驅(qū)動器,三為LCD顯示裝置。與單片機接口見圖3.6圖3.6LCD1602內(nèi)部結(jié)構(gòu)圖3.7液晶接口3.4溫度傳感器DS18B20電路設(shè)計3.4.1溫度傳感器DS18B20簡介DS18B20是DALLAS公司生產(chǎn)的一線式數(shù)字溫度傳感器,具有3引腳TO-92小體積封裝形式,溫度測量范圍為-55℃~+125℃,可編程為9位~12位A/D轉(zhuǎn)換精度,測溫分辨率可達0.0625℃,被測溫度用符號擴展的16位數(shù)字量方式串行輸出,其工作電源既可在遠端引入,也可采用寄生電源方式產(chǎn)生,多個DS18B20可以并聯(lián)到3根或2根線上,CPU只需一根端口線就能與諸多DS18B20通信(每個溫度傳感器的ROM里有不同的識別號碼〕,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。以上特點使DS18B20非常適用于遠距離多點溫度檢測系統(tǒng)。DS18B20內(nèi)部結(jié)構(gòu)如圖3.8所示,主要由4局部組成:64位ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置存放器。DS18B20的管腳排列如圖3.9所示,DQ為數(shù)字信號輸入/輸出端;GND為電源地;VDD為外接供電電源輸入端。ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼,每個DS18B20的64位序列號均不相同,ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現(xiàn)一根總線上掛接多個DS18B20的目的。圖3.8DS18B20內(nèi)部結(jié)構(gòu)圖圖3.9DS18B20管腳圖3.4.2DS18B20的主要特性〔1〕適應(yīng)電壓范圍更寬,電壓范圍:3.0~5.5V,在寄生電源方式下可由數(shù)據(jù)線供電?!?〕獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊?!?〕DS18B20支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫?!?〕DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)?!?〕溫范圍-55℃~+125℃,在-10~+85℃時精度為±0.5℃。〔6〕可編程的分辨率為9~12位,對應(yīng)的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃,可實現(xiàn)高精度測溫?!?〕在9位分辨率時最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快?!?〕測量結(jié)果直接輸出數(shù)字溫度信號,以"一線總線"串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力?!?〕負壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作。計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當計數(shù)器1的預(yù)置值減到0時溫度存放器的值將加1,計數(shù)器1的預(yù)置將重新被裝入,重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù)。如此循環(huán)直到計數(shù)器2計數(shù)到0時,停止溫度存放器值的累加,此時溫度存放器中的數(shù)值即為所測溫度。圖3.10中的斜率累加器用于補償和修正測溫過程中振蕩器溫度特性的非線性,以產(chǎn)生高分辨率的溫度測量。其輸出用于修正計數(shù)器的預(yù)置值,只要計數(shù)門仍未關(guān)閉就重復上述過程,直至溫度存放器值到達被測溫度值,這就是DS18B20的測溫原理。圖3.10DS18B20測溫原理圖另外,由于DS18B20單總線通信功能是分時完成的,因此他有嚴格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作必須按協(xié)議進行。操作協(xié)議為:初始化DS18B20(發(fā)復位脈沖)發(fā)ROM功能命令發(fā)存儲器操作命令處理數(shù)據(jù)。3.5數(shù)據(jù)采集模塊DS18B20有4個主要的數(shù)據(jù)部件:A:64位激光ROM。64位激光ROM從高位到低位依次為8位CRC、48位序列號和8位家族代碼(28H)組成。B:溫度靈敏元件。C:非易失性溫度報警觸發(fā)器TH和TL??赏ㄟ^軟件寫入用戶報警上下限值。D:配置存放器。配置存放器為高速暫存存儲器中的第五個字節(jié)。其中R0、R1:溫度計分辨率設(shè)置位,其對應(yīng)四種分辨率如下表所列,出廠時R0、R1置為缺省值:R0=1,R1=1〔即12位分辨率〕,用戶可根據(jù)需要改寫配置存放器以獲得適宜的分辨率。表3.2分辨率關(guān)系表R0R1分辨率/bit最大轉(zhuǎn)換時間/us00993.750110187.510113751112750高速暫存存儲器由9個字節(jié)組成,其分配如表3.2所示。當溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補碼形式存放在高速暫存存儲器的第0和第1個字節(jié)。單片機可通過單線接口讀到該數(shù)據(jù),讀取時低位在前,高位在后,數(shù)據(jù)格式如表3.3所示。對應(yīng)的溫度計算:當符號位S=0時,直接將二進制位轉(zhuǎn)換為十進制;當S=1時,先將補碼變?yōu)樵a,再計算十進制值。表3.3DS18B20存儲器溫度LSB溫度MSBTHTL保存保存計數(shù)存放器計數(shù)存放器8位CRC3.6HC-SR04超聲波測距模塊1.概述HC-SR04超聲波測距模塊可實現(xiàn)2cm~4.5m的非接觸測距功能,擁有2.4~5.5V的寬電壓輸入范圍,靜態(tài)功耗低于2mA,自帶溫度傳感器對測距結(jié)果進行校正,同時具有GPIO,串口等多種通信方式,內(nèi)帶看門狗,工作穩(wěn)定可靠。主要技術(shù)參數(shù)如下表:表3.4主要技術(shù)參數(shù)電氣參數(shù)HC-SR04超聲波測距模塊工作電壓DC2.4V~5.5V靜態(tài)電流2mA工作溫度-20~+70度輸出方式電平或UART〔跳線帽選擇〕感應(yīng)角度小于15度探測距離2cm-450cm探測精度0.3cm+1%UART模式下串口配置波特率9600,起始位1位,停止位1位,數(shù)據(jù)位8位,無奇偶校驗,無流控制。本模塊實物圖及尺寸如圖3.10所示圖3.10HC-SR04正反面圖本模塊的尺寸:45mm*20mm*1.6mm。板上有兩個半徑為1mm的機械孔2.電平觸發(fā)測距工作原理在模塊上電前,首先去掉模式選擇跳線上的跳線帽,使模塊處于電平觸發(fā)模式。電平觸發(fā)測距的時序如圖3.11所示:圖3.11HC-SR04測距時序圖圖3.11說明:只需要在Trig/TX管腳輸入一個10US以上的高電平,系統(tǒng)便可發(fā)出8個40KHZ的超聲波脈沖,然后檢測回波信號。當檢測到回波信號后,模塊將距離值轉(zhuǎn)化為340m/s時的時間值的2倍,通過Echo端輸出一高電平,可根據(jù)此高電平的持續(xù)時間來計算距離值。即距離值為:(高電平時間*340m/s)/2。3.串口觸發(fā)測距工作原理在模塊上電前,首先插上模式選擇跳線上的跳線帽,使模塊處于串口觸發(fā)模式。在此模式下只需要在Trig/TX管腳輸入0X55〔波特率9600〕,系統(tǒng)便可發(fā)出8個40KHZ的超聲波脈沖,然后檢測回波信號。當檢測到回波信號后,模塊還要進行溫度值的測量,然后根據(jù)當前溫度對測距結(jié)果進行校正,將校正后的結(jié)果通過Echo/RX管腳輸出。輸出的距離值共兩個字節(jié),第一個字節(jié)是距離的高8位〔HDate〕,第二個字節(jié)為距離的低8位〔LData〕,單位為毫米。即距離值為〔HData*256+LData〕mm。4.串口觸發(fā)測溫工作原理在模塊上電前,首先插上模式選擇跳線上的跳線帽,使模塊處于串口觸發(fā)模式。在此模式下只需要在Trig/TX管腳輸入0X50〔波特率9600〕,系統(tǒng)便啟動溫度傳感器對當前溫度進行測量,然后將溫度值通過Echo/RX管腳輸出。測量完成溫度后,本模塊會返回一個字節(jié)的溫度值〔TData〕,實際的溫度值為TData-45。例如通過TX發(fā)送完0X50后,在RX端收到0X45,那么此時的溫度值為[69〔0X45的10進制值〕-45]=24度。3.7報警電路設(shè)計如果距離小于1M,那么單片機STC89C52那么給P3.7口一個信號,使得報警電路工作,實現(xiàn)報警。如圖3.11所示。圖3.11報警電路圖4軟件設(shè)計4.1系統(tǒng)軟件設(shè)計說明進行測量控制系統(tǒng)設(shè)計時,除了系統(tǒng)硬件設(shè)計外,大量的工作就是如何根據(jù)每個測量對象的實際需要設(shè)計應(yīng)用程序。因此,軟件設(shè)計在微機測量控制系統(tǒng)設(shè)計中占重要地位。本軟件設(shè)計主要是對距離進行測量、顯示。因此,整個軟件可分為按照硬件電路對單片機位定義;發(fā)射子程序;接收子程序;顯示子程序;延時子程序等。4.2主程序的設(shè)計圖4.1主程序流程圖主程序首先是對系統(tǒng)環(huán)境初始化,設(shè)置定時器T0工作模式為16位定時計數(shù)器模式。置位總中斷允許位EA并給顯示端口P1和P3清0。然后調(diào)用超聲波發(fā)生子程序送出一個超聲波脈沖,為了防止超聲波從發(fā)射器直接傳送到接收器引起的直射波觸發(fā),需要延時約0.1ms后,才翻開外中斷0接收返回的超聲波信號。由于采用的是12MHz的晶振,計數(shù)器每計一個數(shù)就是1μs,當主程序檢測到接收成功的標志位后,將計數(shù)器T0中的數(shù)〔即超聲波來回所用的時間〕按式計L=(△T/2)*V算,即可得被測物體與測距儀之間的距離,設(shè)計時取20℃時的聲速為344m/s那么有:L=(△T/2)*V=172T0/10000cm

其中,T0為計數(shù)器T0的計算值。

測出距離后結(jié)果將以十進制BCD碼方式送往LCD顯示約0.5s,然后再發(fā)超聲波脈沖重復測量過程。4.3超聲波發(fā)射子程序和超聲波接收中斷子程序設(shè)計超聲波測距儀主程序利用外中斷0檢測返回超聲波信號,一旦接收到返回超聲波信號〔即INT0引腳出現(xiàn)低電平〕,立即進入中斷程序。進入中斷后就立即關(guān)閉計時器T0停止計時,并將測距成功標志字賦值1。如果當計時器溢出時還未檢測到超聲波返回信號,那么定時器T0溢出中斷將中斷0關(guān)閉,并將測距成功標志字賦值2以表示此次測距不成功。圖4.2外部中斷流程圖4.4溫度測量子程序設(shè)計DS18B20對時序和電性參數(shù)要求很高,所以單片機在通過單總線接口訪問DS18B20時,其工作流程必需要遵守嚴格的操作時序,如果順序中任意一步缺少或順序錯亂,DS18B20將不會響應(yīng)。DS18B20的操作順序是:第一步:對DS18B20初始化;第二步:發(fā)送ROM命令;第三步:發(fā)送功能命令。超聲波測距系統(tǒng)上電后,單片機開始初始化DS18B20,檢測現(xiàn)場溫度,軟件控制DS18B20的具體流程如圖4.3所示。圖4.3DS18B20總體操作流程4.5報警子程序如果距離小于下限或大于上限,那么單片機STC89C52那么給IO口一個信號,使得報警電路工作,實現(xiàn)報警。圖4.4報警子程序4.6距離計算子程序本段程序中temp是從DS18BB0讀取的16位二進制溫度數(shù)值,在對速度進行溫度補償?shù)臅r候需要根據(jù)DS18B20協(xié)議轉(zhuǎn)換成浮點數(shù)tp。voidcalculater(){floatv;//聲速floattp;//溫度time=TH0*256+TL0;TH0=0;TL0=0;if(temp<0x8000)//溫度為正直tp=temp*0.0625;else//溫度為負值tp=temp*(-0.0625);c=331.4+0.61*tp;//溫度補償distance=(time*c/(2*100))/100;}5結(jié)果與結(jié)論5.1結(jié)果設(shè)計的最終結(jié)果是使超聲波測距儀能夠產(chǎn)生超聲波,實現(xiàn)超聲波的發(fā)送與接收,從而實現(xiàn)利用超聲波方法測量物體間的距離,以數(shù)字的形式顯示測量距離。經(jīng)過實驗說明,這套系統(tǒng)軟硬件設(shè)計合理、抗干擾能力較好、實時性良好,實驗結(jié)果比擬符合預(yù)期要求。5.2結(jié)論采用高精度的溫度傳感器DS18B20可實現(xiàn)對超聲波測距系統(tǒng)的溫度測量和補償,即根據(jù)經(jīng)驗公式,對波速進行校正。通過引入DS18B20,使超聲波測距系統(tǒng)的測量精度有了很大的提高,使得應(yīng)用領(lǐng)域也有所擴展,其不僅可用于倒車雷達、物位測量等一般場合,且在移動機器人領(lǐng)域?qū)袕V泛的應(yīng)用前景。致謝隨著論文的完成,我的大學生活,也得以劃下了完美的句點。經(jīng)過幾個月的查找資料、整理材料、設(shè)計方案和寫論文,今天終于可以順利的完成論文的最后的謝辭了。設(shè)計得以完成,要感謝的人實在太多了,在本次畢業(yè)設(shè)計的過程中非常感謝周榮生老師的細心指導。導師淵博的專業(yè)知識,嚴謹?shù)闹螌W態(tài)度,精益求精的工作作風,對我影響深遠,不僅使我樹立了遠大的學術(shù)目標、掌握了根本的研究方法,還使我明白了許多待人接物與為人處世的道理。本論文從選題到完成,每一步都是在周老師的指導下完成的,傾注了大量的心血。在此,謹向趙老師表示崇高的敬意和衷心的感謝!趙老師要指導很多同學的設(shè)計,加上本來就有的教學任務(wù),工作量之大可想而知,但在一次次的教導中,使我在設(shè)計之外明白了做學問所應(yīng)有的態(tài)度。同時,設(shè)計的順利完成,離不開其它各位老師、同學和朋友的關(guān)心和幫助,感謝徐靜、胡燕同學給予我的幫助。在整個的設(shè)計中,各位老師、同學和朋友積極的幫助我查資料,提供有利于論文寫作的建議和意見,在他們的幫助下,設(shè)計得以不斷的完善,最終幫助我順利的寫完論文。通過此次的設(shè)計,我學到了很多知識,在設(shè)計過程中,通過查資料和搜集有關(guān)的文獻,培養(yǎng)了自學能力和動手能力,由被動的接受知識轉(zhuǎn)換為主動的尋求知識,這是學習方法上的一個很大的突破。通過畢業(yè)設(shè)計,我們學會了如何將學到的知識轉(zhuǎn)化為自己的東西,學會了怎么更好的處理知識和實踐相結(jié)合的問題。最后再一次感謝所有在畢業(yè)設(shè)計中曾經(jīng)幫助過我的良師益友和同學,以及在設(shè)計中被我引用或參考的論著的作者。參考文獻[1]趙曉安.MCS-51單片機原理及應(yīng)用.天津:天津大學出版社,2001.3[2]夏繼強.單片機實驗與實踐教程.北京:北京航空航天大學出版社,2001[3]余錫存、曹國華,單片機原理及接口技術(shù),陜西:西安電子科技大學出版社,2002.8[4]李建忠,單片機原理及應(yīng)用,陜西:西安電子科技大學出版社,2004.1[5]肖來勝、馮建蘭,單片機技術(shù)實用教程,武漢:華中科技大學出版社,2004.10[6]蔡美琴、張為民,MSC-51系列單片機系統(tǒng)及其應(yīng)用,北京:高等教育出版社〔第二版〕,北京,2005.7v[7]李華.MCS-51系列單片機實用接口技術(shù)[M].北京:北京航空航天大學出版社,1993[8]周航慈.單片機應(yīng)用程序設(shè)計技術(shù)[M].北京:北京航空航天大學出版社,1991附錄附錄一:總原理圖附錄二:程序清單#include<reg52.h>#include<intrins.h>#defineuintunsignedint#defineucharunsignedchartypedefunsignedcharUchar;typedefunsignedintUint16;#defineyh0x80//LCD第一行的初始位置,因為LCD1602字符地址首位D7恒定為1〔100000000=80〕#defineer0x80+0x40//LCD第二行初始位置〔因為第二行第一個字符位置地址是0x40〕//液晶屏的與C51之間的引腳連接定義〔顯示數(shù)據(jù)線接C51的P0口〕sbiten=P1^0;sbitrs=P1^1;sbitDQ_A=P3^7;//溫度數(shù)據(jù)線//校時按鍵與C51的引腳連接定義sbitqh=P2^0; //切換鍵sbitset=P2^1; //設(shè)置鍵sbitadd=P2^2; //加鍵sbitdec=P2^3; //減鍵sbitalarm=P2^7; //蜂鳴器,通過三極管9012驅(qū)動,端口低電平響sbitred=P2^4;sbitgreen=P2^6;sbitRX=P3^3;sbitTX=P3^2;ucharcodetab1[]={"Systemloading"};ucharcodetab2[]={"Distancesystem"}; ucharcodewd[]={"Temp:"};ucharcodejl[] ={"Dis:CM"};ucharcodeyz[] ={"SH:CMSL:CM"};//閾值固定符ucharcodeqk[]={""}; uinttempa,temp;//tempa用于讀取溫度值intsh=400,sl=2;uinttime;unsignedlongdis;floatrate;ucharflag_qh,key_num;bitflag_set=0,flag=0;//延時函數(shù),后面經(jīng)常調(diào)用voiddelayms(uintxms)//延時函數(shù),有參函數(shù){ uintx,y; for(x=xms;x>0;x--) for(y=110;y>0;y--);}/********液晶寫入指令函數(shù)與寫入數(shù)據(jù)函數(shù),以后可調(diào)用**************/voidwrite_com(ucharcom)//****液晶寫入指令函數(shù)****{ rs=0;//數(shù)據(jù)/指令選擇置為指令 //rw=0;//讀寫選擇置為寫 P0=com;//送入數(shù)據(jù) delayms(1); en=1;//拉高使能端,為制造有效的下降沿做準備 delayms(1); en=0;//en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令}voidwrite_data(uchardat)//***液晶寫入數(shù)據(jù)函數(shù)****{ rs=1;//數(shù)據(jù)/指令選擇置為數(shù)據(jù) //rw=0;//讀寫選擇置為寫 P0=dat;//送入數(shù)據(jù) delayms(1); en=1;//en置高電平,為制造下降沿做準備 delayms(1); en=0;//en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令}voidLcd_cls(){uchari; write_com(er); for(i=0;i<16;i++) { write_data(qk[i])}}//**************************************DS18B20溫度采集時序程序voiddelay_us(Uint16t)//12MHz晶振{while(t--);}voidInit_18b20_A(void){Ucharn; DQ_A=1; delay_us(8);DQ_A=0; delay_us(80);//600us左右 DQ_A=1; delay_us(8); n=DQ_A; delay_us(4);}voidwrite_byte_A(Uchardat){ Uchari; for(i=0;i<8;i++) { DQ_A=0; DQ_A=dat&0x01;delay_us(4);//40-50us DQ_A=1; dat>>=1; } delay_us(4);}Ucharread_byte_A(void){Uchari,value; for(i=0;i<8;i++) { DQ_A=0; value>>=1; DQ_A=1;//線與 if(DQ_A) value|=0x80; delay_us(4);} returnvalue;}voidget_temp_A(void){uchara,b; Init_18b20_A(); write_byte_A(0xcc); write_byte_A(0x44);//啟動測量 delay_us(300); Init_18b20_A(); write_byte_A(0xcc); write_byte_A(0xbe); a=read_byte_A();//lsb b=read_byte_A();//msb temp=b*256+a;//26.8 tempa=temp*0.625;//268}//=======================兩聲提示音========================voidTwoAlarm(void){ green=1; alarm=0;red=0; delayms(50);alarm=1;red=1; delayms(50); alarm=0;red=0; delayms(50);alarm=1;red=1;}//第一個界面程序//voidfir_disp(void){ uchari; Lcd_cls(); write_com(er); for(i=0;i<16;i++) { write_data(jl[i]); }}//第二個界面程序//voidsec_disp(){uchari; alarm=1;red=1; Lcd_cls(); write_com(er); for(i=0;i<16;i++) {write_data(yz[i]);}}//第三個界面程序//voidthi_disp(){uchari; Lcd_cls(); write_com(er); for(i=0;i<16;i++) {write_data(wd[i]);} write_com(er+10); write_data(0xdf); write_data(0x43); }//切換鍵掃描程序//voidkeyscan_qh(){if(qh==0) {delayms(5); if(qh==0) {flag_qh++;} while(qh==0);} if(flag_qh==3) {flag_qh=0;}}voidkeyscan_set(){if(set==0) {delayms(5); if(set==0) {while(set==0); key_num++; if(key_num==1) {flag_set=1; write_com(er+5); write_com(0x0f);//光標顯示并閃爍} if(key_num==2) { write_com(er+13);} if(key_num==3) {key_num=0; write_com(0x0c);//光標關(guān)閉 flag_set=0;}}} if(key_num!=0) {if(add==0) {delayms(5); if(add==0) {while(add==0); if(key_num==1) {sh++; if(sh>=400) sh=0; write_com(er+3); write_data(0x30+sh/100); write_data(0x30+sh%100/10); write_data(0x30+sh%10); write_com(er+5);} if(key_num==2) {sl++; if(sl>=400) sl=0; write_com(er+11); write_data(0x30+sl/100); write_data(0x30+sl%100/10); write_data(0x30+sl%10);; write_com(er+13);}}} if(dec==0) {delayms(5); if(dec==0) {while(dec==0); if(key_num==1) {sh--; if(sh<-1) sh=400; write_com(er+3); write_data(0x30+sh/100); write_data(0x30+sh%100/10); write_data(0x30+sh%10); write_com(er+5);} if(key_num==2) {sl--; if(sl<-1) sl=400; write_com(er+11); write_data(0x30+sl/100); write_data(0x30+sl%100/10); write_data(0x30+sl%10);; write_com(er+13);}}}}}voidwrite_TA(ucharaddr,uintdat){write_com(er+addr); write_data(0x30+dat/100); write_data(0x30+dat%100/10); write_data(0x2e); write_data(0x30+dat%10);}/********************************************************/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;}/********************************************************/voidConut(void){ucharnum;time=TH0*256+TL0; TH0=0; TL0=0; //if(100<tempa<200) //rate=1.7f; //if(200<tempa<300) //rate=1.8f; //if(300<tempa<999) //rate=1.9f; rate=331.4+0.61*temp; dis=(time*rate/(2*100))/100;//算出來是CM //dis=(time*1.7)/100; if((dis>=700)||flag==1)//超出測量范圍顯示“-〞 { red=1;alarm=1;flag=0; write_com(er+6); for(num=0;num<6;num++) write_data(0x2e);//顯示點} else {write_com(e

溫馨提示

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

評論

0/150

提交評論