- 相關(guān)推薦
基于單片機(jī)的超聲波測(cè)距儀的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
基于單片機(jī)的超聲波測(cè)距儀的設(shè)計(jì)與實(shí)現(xiàn)
中文摘要 本設(shè)計(jì)基于單片機(jī)AT89C52,利用超聲波傳感器HC-SR04、LCD顯示屏及蜂鳴器等元件共同實(shí)現(xiàn)了帶溫度補(bǔ)償功能可報(bào)警的超聲波測(cè)距儀。我們以AT89C52作為主控芯片,通過(guò)計(jì)算超聲波往返時(shí)間從而測(cè)量與前方障礙物的距離,并在LCD顯示。單片機(jī)控制超聲波的發(fā)射。然后單片機(jī)進(jìn)行處理運(yùn)算,把測(cè)量距離與設(shè)定的報(bào)警距離值進(jìn)行比較判斷,當(dāng)測(cè)量距離小于設(shè)定值時(shí),AT89C52發(fā)出指令控制蜂鳴器報(bào)警,并且AT89C52控制各部件刷新各測(cè)量值。在不同溫度下,超聲波的傳播速度是有差別的,所以我們通過(guò)DS18B20測(cè)溫單元進(jìn)行溫度補(bǔ)償,減小因溫度變化引起的測(cè)量誤差,提高測(cè)量精度。超聲波測(cè)距儀可以實(shí)現(xiàn)4m以?xún)?nèi)的精確測(cè)距,經(jīng)驗(yàn)證誤差小于3mm。
關(guān)鍵詞:超聲波;測(cè)距儀;AT89C52;DS18B20;報(bào)警
Design and Realization of ultrasonic range finder based
ABSTRACT The design objective is to design and implement microcontroller based ultrasonic range finder. The main use of AT89C52, HC-SR04 ultrasonic sensor alarm system complete ranging production. We AT89C52 as the main chip, by calculating the round-trip time ultrasound to measure the distance to obstacles in front of, and displayed in the LCD. SCM ultrasonic
transmitter. Then the microcontroller for processing operation to measure the distance and set alarm values are compared to judge distance, when measured distance is less than the set value, AT89C52 issue commands to control the buzzer alarm, and control each member refresh AT89C52 measured values. Because at different temperatures, ultrasonic wave propagation velocity is a difference, so we DS18B20 temperature measurement by the temperature
compensation unit, reducing errors due to temperature changes, and improve measurement
accuracy. Good design can achieve precise range ultrasonic distance within 4m, proven error is less than 3mm.
Keywords:Ultrasonic;Location;AT89C52;DS18B20;Alarm
目錄
第一章 前言 ..................................................................................................................................................... 1
1.1 課題背景及意義 .............................................................................................................................. 1
1.1.1超聲波特性 .............................................................................................................................. 1
1.1.2超聲波測(cè)距 .............................................................................................................................. 2
1.2 超聲波模塊基本介紹 ........................................................................................................................ 3
1.2.1 超聲波的電器特性 ............................................................................................................... 3
1.2.2 超聲波的工作原理 ............................................................................................................... 5
1.3主要研究?jī)?nèi)容和關(guān)鍵問(wèn)題 .............................................................................................................. 6
第二章 方案總體設(shè)計(jì) ..................................................................................................................................... 7
2.1 超聲波測(cè)距儀功能 ............................................................................................................................ 7
2.2設(shè)計(jì)要求 ............................................................................................................................................. 8
2.3系統(tǒng)基本方案 ..................................................................................................................................... 9
2.3.1方案比較 .................................................................................................................................. 9
2.3.2方案匯總 ................................................................................................................................. 11
第三章 系統(tǒng)硬件設(shè)計(jì) ................................................................................................................................... 13
3.1 單片機(jī)最小系統(tǒng) .............................................................................................................................. 13
3.2 超聲波測(cè)距模塊 ............................................................................................................................. 13
3.3 顯示模塊 .................................................................... 15
3.4溫度補(bǔ)償電路 ................................................................ 15
3.5 蜂鳴報(bào)警電路 ................................................................................................................................. 16
第四章 系統(tǒng)軟件設(shè)計(jì) ................................................................................................................................... 17
4.1 AT89C52程序流程圖 ...................................................................................................................... 17
4.2 計(jì)算距離程序流程圖 ...................................................................................................................... 19
4.3 報(bào)警電路程序流程圖 ...................................................................................................................... 19
4.4 超聲波回波接收程序流程圖 .......................................................................................................... 20
第五章 系統(tǒng)的調(diào)試與測(cè)試 ......................................................................................................................... 21
5.1 安裝 .................................................................................................................................................. 21
5.2 系統(tǒng)的調(diào)試 ...................................................................................................................................... 21
第六章 總結(jié) ................................................................................................................................................... 23
參考文獻(xiàn)......................................................................................................................................................... 24 致 謝........................................................................................................................... 錯(cuò)誤!未定義書(shū)簽。
附錄 ................................................................................................................................................................ 26
附錄1 整機(jī)電路原理圖 ........................................................................................................................ 26
附錄2 超聲波溫度和速度的關(guān)系 ........................................................................................................ 27
附錄3 部分源程序 ................................................................................................................................ 29
第一章 前言
1.1 課題背景及意義
1.1.1超聲波特性
眾所周知,振動(dòng)產(chǎn)生聲波。通常每秒聲波振動(dòng)的次數(shù)被稱(chēng)為頻率,單位是Hz。人的聽(tīng)覺(jué)范圍為20?20,000Hz,即我們無(wú)法獲取振動(dòng)頻率小于20Hz和大于20,000Hz的聲波。所以科學(xué)家把聲波按照人類(lèi)的聽(tīng)覺(jué)范圍進(jìn)行了分類(lèi):振動(dòng)頻率大于20,000Hz的成為超聲波,小于20Hz的稱(chēng)為次聲波。
超聲波是一種超越人類(lèi)聽(tīng)力極限的聲波,頻率大于20KHz,是在彈性介質(zhì)中的機(jī)械振蕩。超聲波能夠在固體、液體和氣體中傳播,不同的傳播介質(zhì)傳播的速度不相同。超聲波和其他機(jī)械波一樣,在傳播的過(guò)程中也會(huì)因折射和反射而衰減。超聲波有以下特性:
1.波長(zhǎng)
通常我們把波的傳播速度用波長(zhǎng)乘以頻率來(lái)表示。電磁波傳播的速度非常快,高達(dá)3×108m/s,但是聲波傳播的速度很慢,在空氣中常溫常壓下僅為343m/s(20℃、101KPa)。在波傳播的速度比較低的情況下,波長(zhǎng)非常短,更容易辨識(shí),如果用超聲波來(lái)測(cè)距,也就代表著我們能夠在距離和方向上獲得更高的分辨率。有了更高的分辨率,才可能使我們?cè)跍y(cè)量過(guò)程中得到更高的精度。
2.反射特性
通過(guò)捕獲在目標(biāo)上反射的超聲波,從而檢測(cè)到物體的存在。因?yàn)榻饘、水泥、玻璃、木材、橡膠與紙能夠反射將近100%的超聲波,用超聲波能夠很輕易地找到這些對(duì)象。但是像布匹、棉毛等材料,它本身吸收超聲波,用超聲波來(lái)檢測(cè)它們很困難。同時(shí),要想探測(cè)位于凹凸表面和斜坡表面上的物體,由于被測(cè)物的不規(guī)則使得反射波變得不規(guī)則,測(cè)量難度會(huì)加大。超聲波本身的特性決定了空曠的場(chǎng)所是超聲波的理想測(cè)試環(huán)境,并且被測(cè)物體一定要能夠反射超聲波。
3.溫度效應(yīng)
超聲波在空氣中傳播是隨環(huán)境溫度溫度變化的,可以用c =331.5+0.607t(m/s)來(lái)表示聲波的傳播速度。 其中“c”為聲波傳播速度(m/s),“t”表示溫度(℃)。所以,要想精確地測(cè)量障礙物的距離,實(shí)時(shí)檢測(cè)環(huán)境溫度并進(jìn)行補(bǔ)償是非常必要的,尤其冬季
室內(nèi)外溫差較大,對(duì)超聲波測(cè)距的精度影響很大,此時(shí)可用溫度補(bǔ)償模塊來(lái)減小溫度變化所帶來(lái)的測(cè)量誤差?紤]到本設(shè)計(jì)的測(cè)試環(huán)境是在室內(nèi),而且超聲波主要是用于實(shí)現(xiàn)避障功能,對(duì)測(cè)量精度要求不高,所以關(guān)于溫度效應(yīng)對(duì)系統(tǒng)的影響問(wèn)題在這里不做深入的探討。超聲波在空氣中傳播時(shí),溫度與速度的關(guān)系會(huì)在附錄中,供查閱。
4.衰減
在空氣中傳播的超聲波,會(huì)因?yàn)樵谇蛐伪砻嫔习l(fā)生衍射現(xiàn)象導(dǎo)致能量擴(kuò)散損失,也會(huì)因介質(zhì)吸收能量造成吸收損失,并且波強(qiáng)衰減量與距離是成正比的。超聲波的衰減率還與頻率成正比。如圖6所示,超聲波的頻率增高,衰減率就越高,傳播的距離也就越短。由此可見(jiàn)超聲波的衰減特性直接影響了超聲波傳播的有效距離。
1.1.2超聲波測(cè)距
在現(xiàn)實(shí)生活中某些特殊場(chǎng)合,有些傳統(tǒng)的測(cè)距方式存在著難以克服的缺陷,例如電極法測(cè)量液位,運(yùn)用差位分布電極,通過(guò)給電或發(fā)射脈沖來(lái)進(jìn)行液面檢測(cè),由于電極長(zhǎng)時(shí)間浸泡在液體中,非常容易被腐蝕和電解,進(jìn)而失去靈敏性。使用超聲波測(cè)距就能夠很好地解決這些問(wèn)題。當(dāng)下市面上超聲波測(cè)距系統(tǒng)存在體積龐大、價(jià)格昂貴、精度偏低等種種問(wèn)題,使其在一些中小規(guī)模的測(cè)距中難以得到普遍的使用。在這樣的背景下,本文設(shè)計(jì)了一款基于AT89C52單片機(jī)的低成本、高精度、微型化的超聲波測(cè)距儀。
超聲波較之于其他機(jī)械波,具有以下特有性質(zhì):超聲波為定向傳播,繞射少,反射能力強(qiáng);超聲波衰減很小,穿透能力強(qiáng),在空氣中傳播速度較慢,也可在液體固體中傳播;當(dāng)超聲波從一種介質(zhì)入射到另一種介質(zhì)時(shí),由于在兩種介質(zhì)中的傳播速度不同,在介質(zhì)面上會(huì)產(chǎn)生反射、衍射等現(xiàn)象。因此,它在軍用,農(nóng)牧業(yè),醫(yī)學(xué),工業(yè)有廣泛的應(yīng)用。并且能夠?qū)崿F(xiàn)洗滌、焊接、粉碎、測(cè)速測(cè)距等功能。
雖然目前的技術(shù)水平,人類(lèi)利用超聲波傳感器的技術(shù)成果還是很有限的,但是隨著科學(xué)技術(shù)的飛速發(fā)展,超聲波傳感器的應(yīng)用領(lǐng)域?qū)⒃絹?lái)越廣泛。這是一個(gè)蓬勃發(fā)展的技術(shù)和工業(yè)領(lǐng)域,有著無(wú)限的發(fā)展前景。展望未來(lái),超聲波傳感器在各方面都是一個(gè)新的重要的工具,將有巨大的發(fā)展空間。在運(yùn)動(dòng)測(cè)距中將有更高精度的方向定位,以滿(mǎn)足社會(huì)日益增長(zhǎng)的需求。聲納定位的精度的提高,可以滿(mǎn)足未來(lái)秘密武器進(jìn)行打擊的需要。無(wú)需多言,未來(lái)的超聲波傳感器、自動(dòng)化智能集成聯(lián)合其他的傳感器,可以實(shí)現(xiàn)多傳感器的一體化協(xié)同作業(yè)。伴隨傳感器技術(shù)的進(jìn)步,傳感器將具有簡(jiǎn)單的學(xué)習(xí)功能,自動(dòng)確定發(fā)展方向的功能,并最終具有創(chuàng)造性。
2
1.2 超聲波模塊基本介紹
1.2.1 超聲波的電器特性
1.聲壓特性
聲壓級(jí) (S.P.L.) 是表示音量的單位,利用下列公式予以表示。
S.P.L.= 20logP/Pre (dB)式中,“P”為有效聲壓 (μbar),“Pre”為參考聲壓 (2×10-4μbar)如圖1所示為幾種常用超聲波傳感器的聲壓圖。
圖1 超聲波傳感器的聲壓圖
2.靈敏度特性
靈敏度是一個(gè)用來(lái)表示聲音接收級(jí)的單位,如下式所列。
靈敏度= 20log E/P (dB),此式中,“E”是產(chǎn)生的電壓 (V),“P”是輸入的聲壓(μbar)。超聲波收發(fā)器的靈敏度直接決定系統(tǒng)的測(cè)距范圍,如圖8所示為幾種中常見(jiàn)超聲波傳感器的靈敏度圖,從圖中可以發(fā)現(xiàn)40KHz時(shí)傳感器的聲壓級(jí)最高,也就是說(shuō)40KHz時(shí)所對(duì)應(yīng)的靈敏度最高。
3
圖2 超聲波傳感器靈敏度示意圖
3.輻射特性
把超聲波傳感器安裝在臺(tái)面上。然后,測(cè)量角度與聲壓 (靈敏度) 之間的關(guān)系。為了準(zhǔn)確地表達(dá)輻射,與前部相對(duì)比,聲壓 (靈敏度) 級(jí)衰減6dB的角度被稱(chēng)為半衰減角度,用θ1/2表示。超聲波設(shè)備的外表面尺寸較小易于獲得精確的輻射角度。圖3展示的是幾種常見(jiàn)的超聲波傳感器的輻射特性。
圖3 超聲波傳感器的輻射特性
分析以上研究結(jié)果不難看出超聲波傳感器工作在40KHz范圍內(nèi)具有最大的聲壓級(jí)和最高的靈敏度,這為設(shè)計(jì)中選擇合適的超聲波傳感器指明了方向。
4
1.2.2 超聲波的工作原理
市面上常見(jiàn)的超聲波傳感器多為開(kāi)放型,
超聲波傳感器的內(nèi)部結(jié)構(gòu)如圖4所示,復(fù)合式振動(dòng)器巧妙地固定在底座上。這種復(fù)合振動(dòng)器是由諧振器、金屬片和電陶片構(gòu)成的雙壓電晶片的元件振動(dòng)器。諧振器是圓錐形的,目標(biāo)是可以有效輻射因振動(dòng)而產(chǎn)生的超聲波,而且能夠有效地聚合超聲波于振動(dòng)器中心。
當(dāng)電壓被施加到壓電陶瓷,用于機(jī)械形變的電壓與頻率將會(huì)改變。另外,振動(dòng)會(huì)使壓電陶瓷產(chǎn)生電荷。運(yùn)用這個(gè)原理,由兩片壓電陶片或者一片壓電陶片和一片金屬片組成的振子稱(chēng)作雙壓電晶片元件,當(dāng)向其時(shí)間電信號(hào)時(shí),它將彎曲振動(dòng)產(chǎn)生超聲波。反向操作,即將超聲波振動(dòng)施加到雙壓電晶片元件,就會(huì)產(chǎn)生電信號(hào)。
圖4 超聲波傳感器內(nèi)部結(jié)構(gòu)圖
圖5 聲壓在不同距離下的衰減特性
5
1.3主要研究?jī)?nèi)容和關(guān)鍵問(wèn)題
因?yàn)槌暡z測(cè)更加快捷、便利,并且運(yùn)算簡(jiǎn)便,更易完成實(shí)際控制。所以超聲波測(cè)距在移動(dòng)機(jī)器人領(lǐng)域得到廣泛使用。在實(shí)際工業(yè)運(yùn)用中,用超聲波測(cè)距可以使機(jī)器人在移動(dòng)中自動(dòng)避開(kāi)障礙物。也因此要求系統(tǒng)必須能夠及時(shí)獲取障礙物的位置信息(距離和方向)。因?yàn)槌暡y(cè)距系統(tǒng)的這些特點(diǎn),其在車(chē)輛倒車(chē)?yán)走_(dá)的制造上也已被廣泛使用。
本設(shè)計(jì)主要研究通過(guò)單片機(jī)控制各模塊工作,是通過(guò)單片機(jī)來(lái)控制各模塊協(xié)同工作,控制超聲波發(fā)射器發(fā)射超聲波信號(hào),使超聲波接收器捕捉辨識(shí)回波信號(hào),利用發(fā)射回收波信號(hào)的時(shí)間差,再利用溫度補(bǔ)償函數(shù)從而換算測(cè)量距離。
生活中運(yùn)用本設(shè)計(jì)時(shí),測(cè)量距離可能會(huì)隨時(shí)改變,為了及時(shí)捕捉改變的距離值,即提高超聲波測(cè)距儀的靈敏度,通過(guò)設(shè)定采樣周期來(lái)實(shí)現(xiàn)實(shí)時(shí)測(cè)距。
主要有以下問(wèn)題需要解決:
1.超聲波回波檢測(cè)
超聲波信號(hào)發(fā)送后,會(huì)在障礙物表面進(jìn)行反射和衍射,有些反射波可能會(huì)經(jīng)過(guò)多次反射,超聲波接收器會(huì)接收到多個(gè)回波信號(hào),如何在眾多回波中正確辨別是一個(gè)難點(diǎn)。
因?yàn)楸驹O(shè)計(jì)研究的是短距離測(cè)距,那么如果在發(fā)射波后,一段時(shí)間內(nèi)沒(méi)有接收到回射波,我們就判定為超距,結(jié)束本次作業(yè),返回清零,重新開(kāi)始測(cè)距。
2.溫度的影響
超聲波在空氣中傳播時(shí),它的速度是受外部溫度影響的,我仔細(xì)的查閱了不同溫度下對(duì)應(yīng)超聲波速度值,發(fā)現(xiàn)溫度會(huì)嚴(yán)重影響測(cè)量精度。所以使用一種方法將外部溫度對(duì)超聲波測(cè)距精度的影響降到最低顯得十分迫切。
3.如何報(bào)警
當(dāng)測(cè)量距離小于一定范圍時(shí),屬于危險(xiǎn)范圍,因?yàn)椴徽撌菣C(jī)器人還是汽車(chē),在與障礙物距離很近時(shí),由于慣性原因難以避免與其相撞,所以與障礙物相距一定范圍內(nèi)時(shí),要求系統(tǒng)會(huì)自動(dòng)報(bào)警。報(bào)警通過(guò)什么實(shí)現(xiàn),用什么方式,如何判定,這便成為我研究的另一個(gè)問(wèn)題。我們考慮的是設(shè)計(jì)的實(shí)用性,用何種方法簡(jiǎn)便快捷的實(shí)現(xiàn)是研究重點(diǎn)。
6
第二章 方案總體設(shè)計(jì)
2.1 超聲波測(cè)距儀功能
為了實(shí)現(xiàn)測(cè)距,本設(shè)計(jì)由硬件和軟件兩部分組成。主要由MCU控制單元、溫度補(bǔ)償模塊、超聲波模塊、按鍵輸入模塊、顯示模塊、報(bào)警模塊等組成。在這個(gè)設(shè)計(jì)中的核心模塊是單片機(jī)。其中硬件有單片機(jī)、各功能模塊、輸入輸出設(shè)備和各組成電路,軟件是所有工作程序的統(tǒng)稱(chēng)。單片機(jī)通過(guò)系統(tǒng)急性比較處理,從而控制蜂鳴器報(bào)警。系統(tǒng)總體的功能方框圖如圖5所示。
圖5系統(tǒng)功能方框圖
主控制模塊由AT89C52構(gòu)成,就相當(dāng)于人的大腦,主要起到控制協(xié)調(diào)各模塊作業(yè)的作用。通過(guò)超聲波發(fā)射接收的往返時(shí)間差,利用 L= vt/2精確測(cè)量出障礙物的距離,并顯示在液晶屏上,同時(shí)顯示當(dāng)前溫度T及該報(bào)警設(shè)定值。
由AT89C52控制的定時(shí)器負(fù)責(zé)產(chǎn)生超聲波脈沖并計(jì)時(shí),遇到障礙物后反射, 超聲波接收模塊對(duì)聲波進(jìn)行捕捉,再次計(jì)時(shí)。然后根據(jù)超聲波往返的時(shí)間差、當(dāng)前溫度下超聲波傳播的速度代入溫度補(bǔ)償后的算式L=vt/2算得障礙物距離。超聲波接收模塊以及超聲波發(fā)射模塊就相當(dāng)于人的眼睛,是獲取外部信息最主要的通道。
按鍵輸入模塊有四個(gè)按鍵組成,主要作用是設(shè)置超聲波測(cè)距儀的最小報(bào)警距離。 測(cè)溫模塊由主要作用是測(cè)量實(shí)際溫度,把數(shù)據(jù)傳輸?shù)街骺啬K,從而提取出相應(yīng)溫度下超聲波在空氣中傳播的速度
顯示模塊由LCD1602構(gòu)成,主要作用是顯示測(cè)距結(jié)果、溫度、以及最小報(bào)警距離。
7
報(bào)警模塊由蜂鳴報(bào)警器組成,主要作用是在所測(cè)距離小于設(shè)置最小距離時(shí)發(fā)出蜂鳴、報(bào)警。應(yīng)用如倒車(chē)?yán)走_(dá),當(dāng)車(chē)尾離障礙物的實(shí)際距離小于一定值后,倒車(chē)?yán)走_(dá)會(huì)報(bào)警提示。
信號(hào)通過(guò)單片機(jī)的各個(gè)模塊處理進(jìn)行綜合分析,實(shí)現(xiàn)超聲波測(cè)距儀的功能。在此基礎(chǔ)上,完成系統(tǒng)方案的總體設(shè)計(jì),并最后通過(guò)硬件和軟件實(shí)現(xiàn)各功能。并附有硬件電路圖、程序流程圖、功能框圖,特定系統(tǒng)配置、電路的原理與程序設(shè)計(jì)相伴。該系統(tǒng)的控制是很容易的、可靠的、測(cè)距精度高、可讀性和流程明了等優(yōu)勢(shì)。實(shí)現(xiàn)后的作品可用于需要測(cè)量距離參數(shù)的各種應(yīng)用場(chǎng)合。
2.2設(shè)計(jì)要求
考慮到設(shè)計(jì)的應(yīng)用,本設(shè)計(jì)主要有以下設(shè)計(jì)要求:
1.主控模塊
本設(shè)計(jì)旨在設(shè)計(jì)實(shí)現(xiàn)微型超聲波測(cè)距儀,語(yǔ)言要求:C語(yǔ)言
低成本的51單片機(jī)是很好的選擇,要求使用者要熟悉51單片機(jī)集成開(kāi)發(fā)環(huán)境,單片機(jī)的內(nèi)部結(jié)構(gòu)、資源以及硬件和軟件調(diào)試設(shè)備的基本方法和技能,而且可以使用C語(yǔ)言編寫(xiě)項(xiàng)目文件。
2.測(cè)量距離范圍:4m
超聲波測(cè)距儀,由于超聲波方向性強(qiáng)、滲透力強(qiáng)、容易得到聲能等較集中的優(yōu)勢(shì),因?yàn)槁曀p問(wèn)題,因此并不適用于長(zhǎng)距離范圍。目前主要應(yīng)用于倒車(chē)?yán)走_(dá),導(dǎo)航失明,視力矯正等。
盲人導(dǎo)航主要是判斷當(dāng)前方向的障礙物距離,從而幫助盲人選擇正確的路線,此設(shè)計(jì)可以搭配GPS導(dǎo)航、語(yǔ)音播報(bào)等系統(tǒng)共同協(xié)助視力障礙者選擇正確的前進(jìn)路線。
視力矯正主要適用于坐姿不正確,讀書(shū)、看電視、玩電腦離書(shū)本和屏幕太近的人群,首先根據(jù)實(shí)際需要設(shè)定報(bào)警距離,當(dāng)使用者超過(guò)報(bào)警距離后自動(dòng)報(bào)警。
以上都是短距測(cè)距,所以本設(shè)計(jì)4m的測(cè)量距離完全可以滿(mǎn)足測(cè)量需要。
3.誤差范圍:3mm
超聲波測(cè)距可能因?yàn)檎系K物不規(guī)則、溫度影響等原因影響測(cè)量精度,本設(shè)計(jì)添加了
8
溫度補(bǔ)償模塊,大大提高了測(cè)量精度,知道老師要求精度優(yōu)于1%,考慮到在實(shí)際中的應(yīng)用,我查取了相關(guān)資料,覺(jué)得控制在3mm誤差范圍內(nèi)是比較合適且可實(shí)現(xiàn)的。
4.溫度補(bǔ)償
自行構(gòu)建基于單片機(jī)的最小系統(tǒng),完成相關(guān)硬件電路的設(shè)計(jì)實(shí)現(xiàn)
5.顯示
利用數(shù)顯裝置顯示障礙物的距離值(以cm為單位,誤差不超過(guò)1cm);了解超聲波測(cè)距原理,溫度補(bǔ)償實(shí)現(xiàn)方法。
6.報(bào)警
當(dāng)被測(cè)距離小于預(yù)定的距離時(shí),向蜂鳴器發(fā)送信號(hào)報(bào)警。
2.3系統(tǒng)基本方案
2.3.1方案比較
1. 主控制器模塊
方案1:
系統(tǒng)的核心部件選擇一塊CPLD(復(fù)雜可編程邏輯器件,諸如EPM7128LC84-15),以實(shí)現(xiàn)功能的控制和處理。 CPLD具有速度快、易于編程、資源豐富、開(kāi)發(fā)周期短等優(yōu)點(diǎn),可以用VHDL語(yǔ)言開(kāi)發(fā)編寫(xiě)。與單片機(jī)相比,CPLD在控制上有很大的不足。還有,CPLD的處理速度是異常迅速的,但是超聲波測(cè)距處理速度的要求不會(huì)太高,則對(duì)系統(tǒng)處理信息的要求也不會(huì)過(guò)高,在這一點(diǎn)上,MCU足以勝任了。使用該方案,在控制上會(huì)遇到很多困難。出于這個(gè)原因,我們不使用這種方案的,所以產(chǎn)生第二個(gè)方案。 方案2:
機(jī)為系統(tǒng)的核心,用其超聲數(shù)據(jù)處理,以實(shí)現(xiàn)其既定的性能指標(biāo)。進(jìn)行系統(tǒng)的全面分析,關(guān)鍵在于實(shí)現(xiàn)超聲波測(cè)距,但在這一點(diǎn)上,單片機(jī)展示了其優(yōu)勢(shì)——控制簡(jiǎn)單、方便、快捷。其結(jié)果是,該微控制器可以充分發(fā)揮其資源豐富,有更強(qiáng)大的控制功能和位尋址的操作功能,價(jià)格低廉等特點(diǎn)。所以,較為理想的是第二個(gè)方案。
綜上所述,我們選擇了方案2。
2. 超聲波模塊
9
方案1:
由一塊T40-16作為超聲波模塊。此模塊具有1-1000cm非接觸式的測(cè)距功能,但其造價(jià)高,很難有更廣泛的應(yīng)用。故放棄此方案。
方案2:
使用HC-SR04來(lái)實(shí)現(xiàn)超聲波的收發(fā),它可以進(jìn)行2—400cm的非接觸式距離檢測(cè),其測(cè)距誤差不超過(guò)3mm。該模塊包含反射超聲波的超聲波發(fā)射器、接收回波的接收器和控制電路。其物美價(jià)廉,測(cè)距精度高,故采用第2方案。
3. 電源模塊
出于本設(shè)計(jì)使用便捷性的考慮,選擇便攜電源供電,故提出以下兩種供電方案。 方案1:
采用12V蓄電池向系統(tǒng)供電。蓄電池?fù)碛泻軓?qiáng)的電流驅(qū)動(dòng)能力,和穩(wěn)定的電壓輸出性能。但是蓄電池的體積太大,使用非常不方便。所以我們放棄了這個(gè)方案。
方案2:
采用3節(jié)1.5 V干電池共4.5做電源,經(jīng)過(guò)實(shí)驗(yàn)驗(yàn)證系統(tǒng)工作時(shí),單片機(jī)、傳感器的工作電壓穩(wěn)定能夠滿(mǎn)足系統(tǒng)的要求,而且電池更換方便。
綜上所述采用第2套方案。
4. 顯示模塊
方案1:
數(shù)碼管顯示。由于數(shù)字顯示速度快、簡(jiǎn)單易用、簡(jiǎn)潔的顯示等特點(diǎn)使它得到廣泛應(yīng)用。在這里我們需要顯示的是測(cè)得的距離值和溫度值以及報(bào)警距離的設(shè)置,不足以滿(mǎn)足使用需要,因此我們放棄了此方案。
方案2:
使用LCD1602液晶顯示屏。由于其清晰的液晶顯示屏、豐富的內(nèi)容、清晰地顯示信息、便于使用、顯示速度快等優(yōu)點(diǎn)已被廣泛使用。對(duì)于此系統(tǒng)我們要求不僅能顯示測(cè)量距離、溫度,還要顯示報(bào)警距離的設(shè)定,故用物美價(jià)廉的LCD1602顯示,充分發(fā)揮出LCD的顯示優(yōu)勢(shì)。因此我們選擇了此方案。
10
5. 溫度補(bǔ)償模塊
方案1:
使用PT100溫度傳感器用于溫度補(bǔ)償電路。 PT100鉑電阻傳感器是利用其隨溫度變化的阻值、并顯現(xiàn)出一定的函數(shù)關(guān)系的特點(diǎn)來(lái)進(jìn)行溫度補(bǔ)償?shù),具有抗震?dòng)性、穩(wěn)定性、精度高、耐高壓等特點(diǎn)。但其操作較為復(fù)雜。
方案2:
溫度補(bǔ)償電路使用DS18B20作為溫度傳感器。通過(guò)“一線”總線(1-Wire是一種獨(dú)特的數(shù)字信號(hào)的總線協(xié)議,獨(dú)特的電源線和信號(hào)線的復(fù)合一起只使用一個(gè)口線;每個(gè)芯片獨(dú)有的編碼,支持網(wǎng)絡(luò)尋址和零功耗等待等,這條總線需要的硬件連線最少)。DS18B20數(shù)字溫度輸出這種獨(dú)特的方法允許多個(gè)DS18B20容易建立傳感器網(wǎng)絡(luò),從而提供更多地可能性給整個(gè)測(cè)量系統(tǒng)的建立和組合。這已經(jīng)比其他的溫度傳感器在轉(zhuǎn)換時(shí)間、測(cè)量精度、分辨率、傳輸距離等有了長(zhǎng)足的進(jìn)步,為用戶(hù)提供了更便捷的使用和更讓人滿(mǎn)意的結(jié)果。
相比之下,DS18B20數(shù)字溫度直接輸出,無(wú)需采取糾正措施,故選擇方案2。
6. 報(bào)警模塊
方案1:
使用語(yǔ)音芯片進(jìn)行提示,優(yōu)點(diǎn)可以自由設(shè)定要提示的聲音。缺點(diǎn)使用復(fù)雜,需要專(zhuān)門(mén)的編程軟件,成本高控制復(fù)雜,不便于普及。
方案2:
采用蜂鳴器提示,電路簡(jiǎn)單實(shí)用,可靠性高。
綜上所述我們選擇方案2。
2.3.2方案匯總
我們最終確定了如下方案:
1、 主控芯片采用AT89C52單片機(jī)作為主控制器。
2、 使用HC—SR04超聲波模塊
11
3、用3節(jié)干電池供電。
4、用LCD1602顯示。
5、采用DS18B20做溫度補(bǔ)償。
6、使用蜂鳴報(bào)警器報(bào)警
12
第三章 系統(tǒng)硬件設(shè)計(jì)
3.1 單片機(jī)最小系統(tǒng)
對(duì)單片機(jī)的認(rèn)識(shí)源于大一時(shí)電子愛(ài)好者協(xié)會(huì)的一次講座。當(dāng)時(shí)大三的學(xué)長(zhǎng)們?cè)谧鲋悄苘?chē),精彩的演講和有趣的知識(shí)吸引了我,也讓我對(duì)單片機(jī)產(chǎn)生了興趣。他告訴我,單片機(jī)就相當(dāng)于人的大腦,它不能像電腦那樣做出特別復(fù)雜的運(yùn)算,但它足以完成很多操作任務(wù)。他當(dāng)時(shí)用的也是51單片機(jī),因?yàn)楦杏X(jué)性能比較穩(wěn)定,運(yùn)算速度快,而且物美價(jià)廉。后來(lái)通過(guò)大三對(duì)單片機(jī)課程的學(xué)習(xí),進(jìn)一步對(duì)AT89C52了解,因此本次設(shè)計(jì)選用AT89C52作為主控制器。主控制系統(tǒng)電路如圖6所示。
圖6 單片主控電路
單片機(jī)通過(guò)發(fā)送信號(hào)來(lái)控制主控制電路協(xié)調(diào)超聲波發(fā)射模塊,超聲波接收模塊,顯示模塊,溫度模塊,報(bào)警模塊。
超聲波測(cè)距儀中各模塊主要由單片機(jī)主控電路進(jìn)行控制和協(xié)調(diào),從而有條不紊的進(jìn)行工作。
3.2 超聲波測(cè)距模塊
使用現(xiàn)成的超聲波模塊HC—SR04, 它的工作原理是:向IO口TRIG發(fā)送信號(hào),加大于10us的高電平;該模塊能夠自動(dòng)發(fā)送8個(gè)頻率40KHz 的方波,且處于工作狀態(tài)是檢測(cè)是否有回波信號(hào);如有返回信號(hào),會(huì)在IO口向ECHO傳輸一個(gè)高電平信號(hào),此高電平延續(xù)的時(shí)間便是超聲波的往返時(shí)間。l(測(cè)試距離)=v(聲速)t(高電平時(shí)間)/2。實(shí)物如下圖7。其中VCC能夠提供4.5V電源,GND為接地,TRIG可以觸發(fā)輸入信號(hào),
ECHO
13
則為含有回波信號(hào)的四條線。
圖7 超聲波模塊實(shí)物 圖8 超聲波接口
T/R-40-12型超聲波傳感器的震蕩頻率為40KHz,傳播10米超聲波信號(hào)強(qiáng)度便衰減到40個(gè)聲壓級(jí),此時(shí)超聲波接收探頭就很難接收到回波信號(hào)。因此,從理論上分析,本設(shè)計(jì)超聲波測(cè)距部分的實(shí)際范圍是10cm—400cm,理想的避障范圍是10cm—100cm,所以實(shí)際壁障安全距離應(yīng)設(shè)在50cm—80cm之間。
圖9 避障原理
圖9中,超聲波指向性地發(fā)送一段超聲波并計(jì)時(shí),超聲波經(jīng)過(guò)在空氣中傳播后,遇到障礙物反射回來(lái)被超聲波接收器捕捉到,同時(shí)停止計(jì)時(shí)。利用時(shí)間差計(jì)算法算出距離。
14
圖10 超聲波接口電路圖
3.3 顯示模塊
顯示模塊采用數(shù)LCD1602,連接圖如圖所示
圖11 LCD顯示電路
顯示模塊主要用來(lái)顯示測(cè)量的距離值、溫度傳感器測(cè)量的溫度值以及最小的報(bào)警距離。
3.4溫度補(bǔ)償電路
溫度補(bǔ)償電路采用DS18B20傳感器,P2.4接DS18B20數(shù)據(jù)總線,由單片機(jī)控制DS18B20溫度轉(zhuǎn)換和數(shù)據(jù)的傳輸,并且將10k的上拉電阻連接到數(shù)據(jù)總線。該系統(tǒng)采用外接電源
15
DS18B20的優(yōu)點(diǎn)是I / O接口不需要強(qiáng)拉,總線控制器并不需要在溫度很高的情況下轉(zhuǎn)換。因此轉(zhuǎn)換在可以允許的范圍內(nèi),單線總線上附加數(shù)據(jù)的傳輸,如圖15所示的硬件結(jié)構(gòu)。
圖12溫度補(bǔ)償電路DS18B20
3.5 蜂鳴報(bào)警電路
如圖13所示,蜂鳴報(bào)警電路由蜂鳴器、三極管、接到單片機(jī)上P13引腳上的電阻組成。
圖13 蜂鳴報(bào)警電路圖
16
第四章 系統(tǒng)軟件設(shè)計(jì)
4.1 AT89C52程序流程圖
如圖14所示為超聲波測(cè)距單片機(jī)AT89C52程序流程圖。
圖14 系統(tǒng)軟件的整體流程圖
17
流程圖具體細(xì)分如下:
1、系統(tǒng)初始化
單片機(jī)AT89C52、LCD1602、蜂鳴報(bào)警器、超聲波測(cè)距模塊通過(guò)上電復(fù)位并自行運(yùn)行單片機(jī)清零程序。
2、發(fā)射超聲波
自動(dòng)讀取超聲波測(cè)距程序,AT89C52控制HC—SR04指向性地發(fā)射超聲波并且記錄時(shí)間,待捕捉到回波時(shí)終止計(jì)時(shí),算得回波時(shí)間。
3、判斷是否檢測(cè)到回波
超聲波接收電路出于運(yùn)行狀態(tài)。如超聲波接收電路收到回波,則將信號(hào)發(fā)送到單片機(jī)并再次計(jì)時(shí),通過(guò)溫度補(bǔ)償后的算式算得障礙物當(dāng)前距離;如超聲波接收電路未在設(shè)定時(shí)間收到回波,則返回。
4、顯示
顯示距離、當(dāng)前溫度、設(shè)置的報(bào)警距離。
5、是否小于超聲波報(bào)警距離
將測(cè)得距離與報(bào)警值進(jìn)行比較,如小于報(bào)警值,則進(jìn)行報(bào)警。
6、再次檢測(cè)等待下次報(bào)警
18
4.2 計(jì)算距離程序流程圖
圖15 計(jì)算距離程序流程圖
首先調(diào)用溫度函數(shù)進(jìn)行溫度補(bǔ)償,得到當(dāng)前溫度下的超聲波傳播速度v;然后調(diào)用時(shí)間函數(shù)t,即超聲波發(fā)射與超聲波回波的時(shí)間差;再將以上函數(shù)代入算式=vt/2算得當(dāng)前溫度下障礙物的距離;最后返回。
4.3 報(bào)警電路程序流程圖
首先調(diào)用測(cè)量函數(shù)l,然后與報(bào)警設(shè)定值進(jìn)行比較,如測(cè)量值l小于報(bào)警設(shè)定值0.5m,則向蜂鳴器發(fā)送報(bào)警信號(hào),蜂鳴器進(jìn)行報(bào)警;如測(cè)量值l大于報(bào)警距離0.5m,則不報(bào)警,返回調(diào)用測(cè)量函數(shù)。
19
圖16報(bào)警電路程序流程圖 圖17 超聲波回波接收程序流程圖
4.4 超聲波回波接收程序流程圖
如圖17所示,首先單片機(jī)控制超聲波發(fā)射器發(fā)射超聲波,同時(shí)計(jì)時(shí)開(kāi)始,超聲波接收器處于工作狀態(tài),如接收到回波,則再次計(jì)時(shí),計(jì)算超聲波往返時(shí)間差t;如未收到超聲波回波,則返回超聲波放射,重新發(fā)射并計(jì)時(shí)。
20
第五章 系統(tǒng)的調(diào)試與測(cè)試
5.1 安裝
1.檢查元件
按電路圖購(gòu)買(mǎi)好元件后,首先需要檢測(cè)元件是否完好。按照各種元件檢測(cè)的方法分別進(jìn)行檢測(cè),這項(xiàng)任務(wù)雖然重復(fù)繁瑣,但是我覺(jué)得這是必做的工作,因?yàn)橹灰幸粋(gè)元件出了問(wèn)題,設(shè)計(jì)就不能實(shí)現(xiàn)它的功能。同時(shí)需要細(xì)心對(duì)照原理圖,使其一一對(duì)應(yīng),多次檢查確保正確后才可以上件、焊件,以防因元件錯(cuò)誤不便修正,導(dǎo)致功能無(wú)法實(shí)現(xiàn)。
2.放置、焊接各元件
出于對(duì)本設(shè)計(jì)便攜的要求,選用了正好可以容納所有器件的小塊洞洞板。然后依照原理圖對(duì)應(yīng)放置各元件,此過(guò)程中先安放、焊接低層元件,最后焊高層的和要求較高的元件。特別要注意易損元件的焊接,我把它們放在最后,同時(shí)要注意集成芯片上焊接不能連續(xù)焊接超過(guò)10s,并且注意芯片的安裝方向。
5.2 系統(tǒng)的調(diào)試
打開(kāi)電源開(kāi)關(guān),電源指示燈亮起,LCD1602正常顯示。距離0.90m,溫度28°C,設(shè)定報(bào)警距離0.5m。向障礙物進(jìn)一步靠近。
21
當(dāng)靠近后,距離顯示為0.44m,發(fā)出蜂鳴警報(bào)。
軟件調(diào)試正常,屏幕正常顯示,正常工作。
經(jīng)過(guò)多次測(cè)試調(diào)試,與實(shí)際溫度對(duì)比、實(shí)際距離對(duì)比,該設(shè)計(jì)能夠在一定范圍內(nèi)穩(wěn)定的工作,并測(cè)出距離,并且誤差小于3毫米。設(shè)計(jì)成功。
22
第六章 總結(jié)
在臺(tái)老師的悉心指導(dǎo)下,自己從初拿題目的一頭霧水,到一步步地學(xué)習(xí)、設(shè)計(jì)、改正,再改正,到最后完成本設(shè)計(jì),這個(gè)過(guò)程讓我收獲良多。
這是我16年的學(xué)生生涯中最后一次完成作業(yè),一份特別的作業(yè)。學(xué)校的教育是有限的,更重要的是我在這個(gè)過(guò)程中培養(yǎng)的獨(dú)立思考、獨(dú)立完成任務(wù)的能力以及終生學(xué)習(xí)的信念。我覺(jué)得這才是一所高等學(xué)府應(yīng)有的教育模式,人腦不是計(jì)算機(jī),也不是儲(chǔ)存器,比起存儲(chǔ),我相信現(xiàn)在的一臺(tái)普通電腦就比人一輩子記憶量還大。我認(rèn)為大腦是一個(gè)特殊的信息加工處理器,較之電腦,它擁有更多地創(chuàng)造性以及無(wú)限可能。我想求學(xué)這么多年,可能學(xué)習(xí)、鍛煉的正是這種能力。在信息爆炸的年代,知識(shí)在飛速的更新,有可能我們現(xiàn)在學(xué)習(xí)的知識(shí)已經(jīng)過(guò)時(shí)很多年,但為什么還要學(xué)習(xí)這些知識(shí),這種行為并不是沒(méi)有意義的,它讓我們學(xué)會(huì)了學(xué)習(xí)方法,在掌握前人知識(shí)的基礎(chǔ)上,我們可以更好更快地創(chuàng)造。
這次經(jīng)歷,對(duì)于我個(gè)人的成長(zhǎng)來(lái)說(shuō)意義深遠(yuǎn)。這個(gè)過(guò)程不像我最初想的那么簡(jiǎn)單,原以為可以一邊工作一邊完成設(shè)計(jì)的我,也辭掉了剛剛?cè)腴T(mén)的工作,專(zhuān)心地投入其中。專(zhuān)注本身就是一種歷練,本身也是人的一種優(yōu)秀的品質(zhì)。
大一的時(shí)候,自己對(duì)于大學(xué)的一切都很新鮮,著迷,先后參加院學(xué)生會(huì),創(chuàng)業(yè)大賽等組織及活動(dòng),豐富了自己的課余生活,也在實(shí)踐與學(xué)習(xí)中加深了對(duì)世界、人生、價(jià)值的思考。大二經(jīng)歷了一年的頹廢,基本上課余時(shí)間都在寢室打游戲,掛了科,付出了代價(jià)。大三時(shí)迷戀上了市場(chǎng)營(yíng)銷(xiāo)、心理學(xué),先是看了三十二本世界各領(lǐng)域名人的傳記,從初中高中時(shí)的模仿到了總結(jié)分析,認(rèn)識(shí)到成功的路雖不同,但是成功者的許多特質(zhì)都是相同的,然后開(kāi)始全心扎入市場(chǎng)營(yíng)銷(xiāo)的學(xué)習(xí)中,拜讀了科特勒、泰勒、德魯克等名師大家的許多著作,同時(shí)自己的三觀有了新的提升,但這期間由于想法極端,耽誤了大學(xué)學(xué)業(yè)。由于大三的積累,到了大四就有些急于求成了,想盡快融入社會(huì),實(shí)現(xiàn)自我價(jià)值。卻忘記了應(yīng)該先把應(yīng)該走的路走好,才能走自己想走的路。
這次寶貴的經(jīng)歷,讓我明白,路是走出來(lái)的,不是想出來(lái)的。我會(huì)把我對(duì)夢(mèng)想的渴望,拆分成一步步可以執(zhí)行的計(jì)劃,按部就班地完成。
23
參考文獻(xiàn)
[1] 宋文緒. 傳感器與檢測(cè)技術(shù)[M]. 北京: 高等教育出版社, 2004.
[2] 余錫存. 單片機(jī)原理及接口技術(shù)[M]. 西安: 西安電子科技大學(xué)出版社, 2000.
[3] 李全利. 單片機(jī)原理及接口技術(shù)[M]. 北京: 北京航空航天大學(xué)出版社, 2004.
[4] 薛均義, 張彥斌. MCS-51系列單片微型計(jì)算機(jī)及其應(yīng)用[M]. 西安: 西安交通大學(xué)出版社, 2005.
[5] 徐愛(ài)鈞, 彭秀華. 單片機(jī)高級(jí)語(yǔ)言C51應(yīng)用程序設(shè)計(jì)[M]. 北京: 北京航空航天大學(xué)出版社, 2006.
[6] 康華光. 電子技術(shù)基礎(chǔ)(模擬部分)[M]. 北京: 高等教育出版社, 2004.
[7] 胡萍.超聲波測(cè)距儀的研制[J]. 計(jì)算機(jī)與現(xiàn)代化,2003,7(10):21~23.
[8] 時(shí)德剛,劉嘩. 超聲波測(cè)距的研究[J]. 計(jì)算機(jī)測(cè)量與控制,2002,9(10):31~33.
[9] [美]J.馬庫(kù)斯. 電子電路大全[M]:卷1,日用電路. 北京:計(jì)量出版社,1985.
[10] 蘇長(zhǎng)贊. 紅外線與超聲波遙控[M]. 北京:人民郵電出版社,1993.7.
[11] 張謙琳. 超聲波檢測(cè)原理和方法[M]. 北京:中國(guó)科技大學(xué)出版社,1993.10.
[12] 九州. 放大電路實(shí)用設(shè)計(jì)手冊(cè)[M]. 沈陽(yáng):遼寧科學(xué)技術(shù)出版社,2002.5.
[13] 樊昌元,丁義元. 高精度測(cè)距雷達(dá)研究[J]. 電子測(cè)量與儀器學(xué)報(bào),2000,9(8):3537.
[14] 蘇偉,鞏壁建. 超聲波測(cè)距誤差分析[J]. 傳感器技術(shù),2004,3(4):17~20.
[15] 趙保全. 中國(guó)集成電路大全[M].北京:國(guó)防工業(yè)出版社,1985.
[16] 肖景和. 數(shù)字集成電路應(yīng)用精粹[M]. 北京:人民郵電出版社,2003. [17] 陳曉文. 電子線路課程設(shè)計(jì)[M].北京:北京電子工業(yè)出版社.2004.
[17] 陳卿,侯薇. 家電控制與檢測(cè)用集成電路[M].北京:中國(guó)計(jì)量出版社,2005. [20] 何希才. 傳感器技術(shù)及應(yīng)用[M]. 北京:北京航空航天大學(xué)出版社,2005.
[18] 余成波. 傳感器與自動(dòng)檢測(cè)技術(shù)[M]. 北京:高等教育出版社,2004.
24
25
附錄
附錄1 整機(jī)電路原理圖
26
附錄2 超聲波溫度和速度的關(guān)系
27
28
附錄3 部分源程序
溫度補(bǔ)償程序 void init2() {
//T2CON=0x0c;
RCAP2H=(65536-5)/256; RCAP2L=(65536-5)%256; TH2=(65536-5)/256; TL2=(65536-5)%256; EA=1; ET2=1; TR2=1;
// PT2=1; //T2}
void main() {
init1(); //xianshi(); //init2(); //T2tx=0;
IT0=0; //init(); //while(1); }
void timer1() interrupt 3 {
tx=~tx; k++; if(k==3) { k=0; TR0=0;
設(shè)為高優(yōu)先級(jí) 液晶初始化 溫度字母 初始化 外部中斷低電平觸發(fā)定時(shí)器初始化 29
TR0=1;
delaynus(6); //除共振 EX0=1;
//for(d=0;d
void int0() interrupt 0 {
IE0=0; //中斷觸發(fā)位 EX0=0; //關(guān)中斷 TR1=0; ET1=0; TR0=0; ET0=0;
date=TH0*256+TL0; date+=500; if(TZ>=0&&TZ
jl=(date*0.161); }
if(TZ>10&&TZ
jl=(date*0.169); }
if(TZ>20&&TZ
jl=(date*0.172); }
if(TZ>30&&TZ
jl=(date*0.174); }
30
if(TZ>40&&TZ
jl=(date*0.175); }
xianshic();
for(d=800;d>0;d--); TH0=0x00; TL0=0x00; ET1=1; TR1=1; O++; if(O==100) { O=0; TR1=0; ET1=0; TR2=1; ET2=1; }
}
void timer0() interrupt 1 //{ TR1=0; TR0=0; TH0=0X00; TL0=0X00; TR1=1; }
void timer2() interrupt 5 { TF2=0; EXF2=0; TR2=0;
31
計(jì)時(shí)
ET2=0;
xianshi(); //溫度字母 readyread(); TL=readonechar(); TH=readonechar(); TZ=TH*16+TL/16; xianshiwen(TZ); delay(10); TR1=1; }
#include //調(diào)用單片機(jī)頭文件
#define uchar unsigned char //無(wú)符號(hào)字符型 宏定義 變量范圍0~255 #define uint unsigned int #include #include
//數(shù)碼管段選定義 0 1 2 3 4 5 6
0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
7 8 9 //斷碼
uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, //數(shù)碼管位選定義
uchar code smg_we[]={0xe0,0xd0,0xb0,0x70};
uchar dis_smg[8] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8}; uint code wendu_buchang1[46] = {
//溫度補(bǔ)償表格
// 0-9度 //10-19度 //20-29度 //30-39度
//40-45度
331,332,333,333,334,334,335,336,336,337, 337,338,339,339,340,341,341,342,342,343, 343,344,345,345,346,346,347,348,348,349, 349,350,351,351,352,352,353,354,354,355, 355,356,357,357,358,358 };
sbit smg_we1 = P3^4; sbit smg_we2 = P3^5; sbit smg_we3 = P3^6; sbit smg_we4 = P3^7;
32
ET1=1;
//無(wú)符號(hào)整型 宏定義 變量范圍0~65535
//數(shù)碼管位選定義
sbit dq = P2^4; //18b20 IO口的定義 uint temperature ; // sbit c_send = P3^2; sbit c_recive = P3^3;
//超聲波發(fā)射 //超聲波接收
sbit beep = P2^3; //蜂鳴器IO口定義 uchar smg_i = 3; //顯示數(shù)碼管的個(gè)位數(shù) bit flag_300ms ;
long distance; //距離 uint set_d; //距離 uchar flag_csb_juli; //超聲波超出量程
uint flag_time0; //用來(lái)保存定時(shí)器0的時(shí)候的 uchar menu_1; //菜單設(shè)計(jì)的變量
/***********************小延時(shí)函數(shù)*****************************/ void delay_uint(uint q) { while(q--); }
/**********************1ms延時(shí)函數(shù)****************************/ void delay_1ms(uint q) { uint i,j; for(i=0;i
/**********************處理距離函數(shù)***************************/ void smg_display() {
dis_smg[0] = smg_du[distance % 10]; dis_smg[1] = smg_du[distance / 10 % 10]; dis_smg[2] = smg_du[distance / 100 % 10] & 0x7f; }
/***************把數(shù)據(jù)保存到單片機(jī)內(nèi)部eeprom中****************/ void write_eeprom()
33
{
SectorErase(0x2000);
byte_write(0x2000, set_d % 256); byte_write(0x2001, set_d / 256); byte_write(0x2058, a_a); }
/******************把數(shù)據(jù)從單片機(jī)內(nèi)部eeprom中讀出來(lái)*****************/ void read_eeprom() {
set_d = byte_read(0x2001); set_d
set_d |= byte_read(0x2000); a_a = byte_read(0x2058); }
/**************開(kāi)機(jī)自檢eeprom初始化*****************/ void init_eeprom() {
read_eeprom(); if(a_a != 1) { set_d = 50; a_a = 1; write_eeprom(); } }
/********************獨(dú)立按鍵程序*****************/ uchar key_can; //按鍵值 void key() //獨(dú)立按鍵程序 {
static uchar key_new;
key_can = 20; //按鍵值還原 P2 |= 0x07;
if((P2 & 0x07) != 0x07)
//按鍵按下
34
//先讀
//新的單片機(jī)初始單片機(jī)內(nèi)問(wèn)eeprom
{
delay_1ms(1); //按鍵消抖動(dòng) if(((P2 & 0x07) != 0x07) && (key_new == 1)) {
//確認(rèn)是按鍵按下
key_new = 0; switch(P2 & 0x07) {
case 0x06: key_can = 3; break; case 0x05: key_can = 2; break; case 0x03: key_can = 1; break; } } } else key_new = 1; }
/*******************數(shù)碼管的位選******************/ void smg_we_switch(uchar i) { switch(i) {
case 0: smg_we1 = 0; smg_we2 = 1; smg_we3 = 1; smg_we4 = 1; break; case 1: smg_we1 = 1; smg_we2 = 0; smg_we3 = 1; smg_we4 = 1; break; case 2: smg_we1 = 1; smg_we2 = 1; smg_we3 = 0; smg_we4 = 1; break; case 3: smg_we1 = 1; smg_we2 = 1; smg_we3 = 1; smg_we4 = 0; break; } }
/***********************數(shù)碼顯示函數(shù)***************************/ void display() {
static uchar i; i++; if(i >= smg_i)
35
//得到k2鍵值 //得到k3鍵值 //得到k4鍵值
i = 0;
smg_we_switch(i); P1 = dis_smg[i]; }
/***********************18b20初始化函數(shù)************************/ void init_18b20() { bit q; dq = 1; dq = 0; dq = 1; q = dq; dq = 1; }
/*******************寫(xiě)18b20內(nèi)的數(shù)據(jù)*********************/ void write_18b20(uchar dat) { uchar i; for(i=0;i
//寫(xiě)數(shù)據(jù)是低位開(kāi)始
dq = 0;
//把總線拿低寫(xiě)時(shí)間隙開(kāi)始
//把總線拿高 //給復(fù)位脈沖 //750us
//把總線拿高 等待 //110us
//讀取18b20初始化信號(hào) //200us
//把總線拿高 釋放總線
delay_uint(1); //15us delay_uint(80); delay_uint(10); delay_uint(20);
//位選 //段選
dq = dat & 0x01; //向18b20總線寫(xiě)數(shù)據(jù)了 delay_uint(5); // 60us dq = 1; dat >>= 1; } }
/*******************讀取18b20內(nèi)的數(shù)據(jù)*********************/ uchar read_18b20()
36
//釋放總線
{
uchar i,value; for(i=0;i
//把總線拿低讀時(shí)間隙開(kāi)始 //讀數(shù)據(jù)是低位開(kāi)始 //釋放總線 //開(kāi)始讀寫(xiě)數(shù)據(jù)
value >>= 1; if(dq == 1) value |= 0x80;
delay_uint(5); //60us 讀一個(gè)時(shí)間隙最少要保持60us的時(shí)間 }
return value; }
/******************讀取溫度的值、讀出來(lái)的是小數(shù)***************/ uint read_temp() { uint value; uchar low; init_18b20();
//在讀取溫度的時(shí)候如果中斷的太頻繁了,就應(yīng)該把中斷給關(guān) //初始化18b20
了,否則會(huì)影響到18b20的時(shí)序
write_18b20(0xcc); //跳過(guò)64位ROM write_18b20(0x44); //啟動(dòng)一次溫度轉(zhuǎn)換命令 delay_uint(50); init_18b20();
//500us //初始化18b20
//返回?cái)?shù)據(jù)
write_18b20(0xcc); //跳過(guò)64位ROM write_18b20(0xbe); //發(fā)出讀取暫存器命令 EA = 0;
low = read_18b20(); //讀溫度低字節(jié) value = read_18b20(); //讀溫度高字節(jié) EA = 1; value
//把溫度的高位左移8位
//把讀出的溫度低位放到value的低八位中 //轉(zhuǎn)換到溫度值
37
value *= 0.0625;
return value; }
//返回讀出的溫度
/*********************小延時(shí)函數(shù)********************/ void delay() {
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); }
/*********************超聲波測(cè)距程序************************/ void send_wave() {
c_send = 1; delay(); c_send = 0; TH0 = 0; TL0 = 0; TR0 = 0; TR0=1; while(c_recive) {
flag_time0 = TH0 * 256 + TL0;
if((flag_time0 > 40000)) //當(dāng)超聲波超過(guò)測(cè)量范圍時(shí),顯示3個(gè)888 {
38 //執(zhí)行一條_nop_()指令就是1us
//10us的高電平觸發(fā)
//給定時(shí)器0清零
//關(guān)定時(shí)器0定時(shí) //當(dāng)c_recive為零時(shí)等待
while(!c_recive);
//當(dāng)c_recive為1計(jì)數(shù)并等待
TR0 = 0; flag_csb_juli = 2; distance = 888; break ; } else {
flag_csb_juli = 1; } }
if(flag_csb_juli == 1) { TR0=0; //
//關(guān)定時(shí)器0定時(shí) //讀出定時(shí)器0的時(shí)間
distance =flag_time0; 0.017M 算出來(lái)是米
if(temperature
distance *= wendu_buchang1[temperature] / 2.0 * 0.0001; // 0.017 = 340M / 2 = 170M = 0.017M 算出來(lái)是米
else
distance *= 358 / 2.0 * 0.0001; // 0.017 = 340M / 2 = 170M = 0.017M 算出來(lái)是米
if((distance > 500)) {
distance = 888; } } }
/*********************定時(shí)器0、定時(shí)器1初始化******************/ void time_init() {
EA = 1;
//開(kāi)總中斷
TMOD = 0X11; //定時(shí)器0、定時(shí)器1工作方式1
39
distance *= 340 / 2 * 0.0001; // 0.017 = 340M / 2 = 170M =
//距離 = 速度 * 時(shí)間
//如果大于3.8m就超出超聲波的量程
ET0 = 1; TR0 = 1; ET1 = 1; TR1 = 1; }
//開(kāi)定時(shí)器0中斷 //允許定時(shí)器0定時(shí) //開(kāi)定時(shí)器1中斷 //允許定時(shí)器1定時(shí) 1
/****************按鍵處理數(shù)碼管顯示函數(shù)***************/ void key_with() {
if(key_can == 1) //設(shè)置鍵
{
menu_1 ++; if(menu_1 >= 3) {
menu_1 = 0; smg_i = 3; //只顯示3位數(shù)碼管 }
if(menu_1 == 1) {
smg_i = 4; //只顯示4位數(shù)碼管 } }
if(menu_1 == 1) //設(shè)置報(bào)警
{
if(key_can == 2) {
set_d ++ ; //加1
if(set_d > 400) set_d = 400; }
if(key_can == 3) { set_d -- ;
//減1
if(set_d
40
set_d = 1; }
dis_smg[0] = smg_du[set_d % 10];
//取小數(shù)顯示
dis_smg[1] = smg_du[set_d / 10 % 10] ; //取個(gè)位顯示 dis_smg[2] = smg_du[set_d / 100 % 10] & 0x7f ; //取十位顯示 dis_smg[3] = 0x88; //a write_eeprom(); } }
/****************報(bào)警函數(shù)***************/ void clock_h_l() {
static uchar value; if(distance
value ++; //消除實(shí)際距離在設(shè)定距離左右變化時(shí)的干擾 if(value >= 2) {
beep = ~beep; //蜂鳴器報(bào)警 } } else {
value = 0; beep = 1; } }
/****************主函數(shù)***************/ void main() { beep = 0;
//開(kāi)機(jī)叫一聲
delay_1ms(150); P0 = P1 = P2 = P3 = 0xff;
41 //保存數(shù)據(jù)
//取消報(bào)警
send_wave(); //測(cè)距離函數(shù)
smg_display(); //處理距離顯示函數(shù) time_init(); //定時(shí)器初始化程序 init_eeprom(); //開(kāi)始初始化保存的數(shù)據(jù) send_wave(); send_wave(); while(1) {
if(flag_300ms == 1) {
flag_300ms = 0;
temperature = read_temp(); //先讀出溫度的值 clock_h_l(); //報(bào)警函數(shù) send_wave();
//測(cè)距離函數(shù)
if(menu_1 == 0)
smg_display(); //處理距離顯示函數(shù) if(menu_1 == 2) {
dis_smg[0] = 0xff;
dis_smg[1] = smg_du[temperature % 10]; //取溫度的個(gè)位顯示 dis_smg[2] = smg_du[temperature / 10 % 10] ; //取溫度的十位顯示 dis_smg[3] = 0xff; } } key(); {
key_with(); } } }
/********************定時(shí)器1中斷服務(wù)程序********************/ void time1_int() interrupt 3
42 //測(cè)距離函數(shù) //測(cè)距離函數(shù)
//顯示溫度
//按鍵函數(shù)
if(key_can
//按鍵處理函數(shù)
{
static uchar value;
//定時(shí)2ms中斷一次
TH1 = 0xf8;
TL1 = 0x30; //2ms display(); //數(shù)碼管顯示函數(shù)
value++; if(value >= 150) { value = 0; flag_300ms = 1; } }
43
畢業(yè)設(shè)計(jì)(論文)原創(chuàng)性聲明和使用授權(quán)說(shuō)明
原創(chuàng)性聲明
本人鄭重承諾:所呈交的畢業(yè)設(shè)計(jì)(論文),是我個(gè)人在指導(dǎo)教師的指導(dǎo)下進(jìn)行的研究工作及取得的成果。盡我所知,除文中特別加以標(biāo)注和致謝的地方外,不包含其他人或組織已經(jīng)發(fā)表或公布過(guò)的研究成果,也不包含我為獲得 及其它教育機(jī)構(gòu)的學(xué)位或?qū)W歷而使用過(guò)的材料。對(duì)本研究提供過(guò)幫助和做出過(guò)貢獻(xiàn)的個(gè)人或集體,均已在文中作了明確的說(shuō)明并表示了謝意。
作 者 簽 名: 日 期: 指導(dǎo)教師簽名: 日 期:
使用授權(quán)說(shuō)明
本人完全了解 大學(xué)關(guān)于收集、保存、使用畢業(yè)設(shè)計(jì)(論文)的規(guī)定,即:按照學(xué)校要求提交畢業(yè)設(shè)計(jì)(論文)的印刷本和電子版本;學(xué)校有權(quán)保存畢業(yè)設(shè)計(jì)(論文)的印刷本和電子版,并提供目錄檢索與閱覽服務(wù);學(xué)?梢圆捎糜坝、縮印、數(shù)字化或其它復(fù)制手段保存論文;在不以贏利為目的前提下,學(xué)校可以公布論文的部分或全部?jī)?nèi)容。
作者簽名: 日 期:
44
學(xué)位論文原創(chuàng)性聲明
本人鄭重聲明:所呈交的論文是本人在導(dǎo)師的指導(dǎo)下獨(dú)立進(jìn)行研究所取得的研究成果。除了文中特別加以標(biāo)注引用的內(nèi)容外,本論文不包含任何其他個(gè)人或集體已經(jīng)發(fā)表或撰寫(xiě)的成果作品。對(duì)本文的研究做出重要貢獻(xiàn)的個(gè)人和集體,均已在文中以明確方式標(biāo)明。本人完全意識(shí)到本聲明的法律后果由本人承擔(dān)。
作者簽名: 日期: 年 月 日
學(xué)位論文版權(quán)使用授權(quán)書(shū)
本學(xué)位論文作者完全了解學(xué)校有關(guān)保留、使用學(xué)位論文的規(guī)定,同意學(xué)校保留并向國(guó)家有關(guān)部門(mén)或機(jī)構(gòu)送交論文的復(fù)印件和電子版,允許論文被查閱和借閱。本人授權(quán) 大學(xué)可以將本學(xué)位論文的全部或部分內(nèi)容編入有關(guān)數(shù)據(jù)庫(kù)進(jìn)行檢索,可以采用影印、縮印或掃描等復(fù)制手段保存和匯編本學(xué)位論文。
涉密論文按學(xué)校規(guī)定處理。
作者簽名: 日期: 年 月 日
45
導(dǎo)師簽名: 日期: 年 月 日
46
【基于單片機(jī)的超聲波測(cè)距儀的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文】相關(guān)文章:
基于單片機(jī)的交通燈控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)05-02
基于.NET的教學(xué)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)04-29
基于超聲波的汽車(chē)防撞報(bào)警系統(tǒng)的設(shè)計(jì)04-26
基于PDA的管線測(cè)量系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)04-27
基于WebGIS的稅務(wù)征管系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)04-28
基于ARCGIS的數(shù)字校園系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)05-02
基于WebGIS的稅務(wù)征管系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)04-29
基于超聲波測(cè)距的自適應(yīng)倒車(chē)?yán)走_(dá)設(shè)計(jì)05-02