摘 要 在空氣介質(zhì)中超聲測(cè)距傳感器因其性能好,價(jià)格低廉、使用方便,在現(xiàn)場(chǎng)機(jī)器人定位系統(tǒng)、車輛自動(dòng)導(dǎo)航、車輛安全行駛輔助系統(tǒng)、城市交通管理和高速公路管理監(jiān)測(cè)系統(tǒng),以及河道、油井和倉(cāng)庫(kù)及料位的探測(cè)中都有應(yīng)用。由于超聲波傳播不易受干擾,能量消耗緩慢,在介質(zhì)中傳播的距離較遠(yuǎn),因而超聲波經(jīng)常用于距離的測(cè)量,如測(cè)距和物位測(cè)量等都可以通過(guò)超聲波來(lái)實(shí)現(xiàn)。為此,深入研究超聲波的產(chǎn)生與傳播規(guī)律、開(kāi)發(fā)高性能超聲波換能器及其收發(fā)電路,對(duì)于超聲波檢測(cè)技術(shù)的發(fā)展具有十分重要的現(xiàn)實(shí)意義。 本設(shè)計(jì)介紹了基于單片機(jī)控制的超聲測(cè)距的原理:由STC89C52控制定時(shí)器產(chǎn)生一定頻率脈沖,計(jì)算從發(fā)射到接收回波時(shí)間,從而得到實(shí)測(cè)距離,數(shù)據(jù)處理采用,lcd1602顯示距離,WTD588D語(yǔ)音播報(bào)。
目錄
摘 要 Abstract 第一章 緒論 1.1 課題設(shè)計(jì)目的及意義 1.1.1設(shè)計(jì)的目的 1.1.2設(shè)計(jì)的意義 1.2 國(guó)內(nèi)外研究動(dòng)態(tài) 1.3 本課題研究的主要內(nèi)容 第二章 總體方案 2.1 方案選擇 2.2 超聲波測(cè)距儀的設(shè)計(jì)思路 2.2.1 超聲波測(cè)距原理 2.2.2 超聲波測(cè)距原理框圖 2.3 使用元件選擇 第三章 系統(tǒng)的硬件結(jié)構(gòu)設(shè)計(jì) 3.1 STC89C52單片機(jī)的功能及特點(diǎn) 3.2單片機(jī)最小系統(tǒng) 3.4 語(yǔ)音播報(bào) 3.5 顯示單元 第四章 系統(tǒng)的軟件設(shè)計(jì) 4.1 主程序流程圖 4.2 超聲波發(fā)生子程序和超聲波接收中斷程序 第五章超聲波測(cè)距接收 5.1 HC-SR04模塊 5.2 T40、R40超聲波傳感器簡(jiǎn)介 5.2.1 超聲波傳感器的基本介紹 5.2.2 超聲波傳感器的主要應(yīng)用 5.2.3 超聲波傳感器的工作原理 5.3 超聲波發(fā)射電路 5.4 超聲波接收電路 5.5 超聲波接收過(guò)程 5.6 接收數(shù)據(jù)處理 第六章總結(jié) 致 謝 參考資料 附錄1原理圖 附錄2主要源程序
第一章 緒論 1.1 課題設(shè)計(jì)目的及意義 1.1.1設(shè)計(jì)的目的 隨著科學(xué)技術(shù)的快速發(fā)展,超聲波在測(cè)距中的應(yīng)用越來(lái)越廣。但就目前的急速水平來(lái)說(shuō),人們可以具體利用的測(cè)距技術(shù)還十分有限,因此,這是一個(gè)正在蓬勃發(fā)展而又有無(wú)限前景的技術(shù)及產(chǎn)業(yè)領(lǐng)域。由于超聲波指向性強(qiáng),能量消耗緩慢,在介質(zhì)中傳播的距離較遠(yuǎn),因此超聲波經(jīng)常用于距離測(cè)量,如超聲波測(cè)距和物位測(cè)量等都可以通過(guò)超聲波來(lái)實(shí)現(xiàn)。利用超聲波檢測(cè)往往比較迅速、方便、計(jì)算簡(jiǎn)單、易于做到實(shí)時(shí)控制。為了研究和利用超聲波,人們已經(jīng)設(shè)計(jì)和制成了許多超聲波發(fā)生器。研制具有更高定位精度的被動(dòng)測(cè)距聲納,以滿足水中武器實(shí)施全隱蔽攻擊的需求;繼續(xù)發(fā)展采用低頻線譜檢測(cè)的潛艇拖拽線列陣聲納,實(shí)現(xiàn)超遠(yuǎn)程的被動(dòng)探測(cè)和識(shí)別;研制更適合與前還工作的潛艇聲納,特別是解決淺海水中目標(biāo)識(shí)別問(wèn)題;搭理降低潛艇自噪聲,改善潛艇聲納的工作環(huán)境。毋庸置疑,無(wú)線的超聲波測(cè)距將于自動(dòng)化智能化接軌,與其他的測(cè)距儀集成和融合,形成多測(cè)距。隨著測(cè)距儀的技術(shù)進(jìn)步,測(cè)距儀將從具有單純判斷功能發(fā)展到具有學(xué)習(xí)功能,最終發(fā)展到具有創(chuàng)造力。在新的世紀(jì)里,面貌一新的測(cè)距儀將發(fā)揮更大的作用。 1.1.2設(shè)計(jì)的意義 由于超聲測(cè)距是一種非接觸檢測(cè)技術(shù),不受光線、被測(cè)對(duì)象顏色等的影響,較其它儀器更衛(wèi)生,更耐潮濕、粉塵、高溫、腐蝕氣體等惡劣環(huán)境,具有少維護(hù)、不污染、高可靠、長(zhǎng)壽命等特點(diǎn),所以超聲波測(cè)距系統(tǒng)主要應(yīng)用于汽車的倒車?yán)走_(dá)、機(jī)器人自動(dòng)避障行走、建筑施工工地以及一些工業(yè)現(xiàn)場(chǎng)中的液位、井深、管進(jìn)長(zhǎng)度測(cè)量等場(chǎng)合。因此研究超聲波測(cè)距系統(tǒng)有著很大的現(xiàn)實(shí)意義。對(duì)本課題的研究與設(shè)計(jì),還能進(jìn)一步提高自己的電路設(shè)計(jì)水平,深入對(duì)單片機(jī)的理解和應(yīng)用。 1.2 國(guó)內(nèi)外研究動(dòng)態(tài) 國(guó)外在提高超聲波測(cè)距方面做了大量的研究,國(guó)內(nèi)一些學(xué)者也作了相關(guān)的研究。目前超聲波測(cè)距方法主要有三種:(1)相位檢測(cè)法:精度高,但檢測(cè)范圍有限;(2)聲波幅值檢測(cè)法:易受反射波的影響;(3)渡越時(shí)間法:工作方式簡(jiǎn)單,直觀。現(xiàn)在對(duì)超聲波測(cè)距的精度主要取決于所測(cè)的超聲波傳輸時(shí)間和超聲波在介質(zhì)中的傳輸速度,二者中以傳輸時(shí)間的精度影響較大,所以大部分文獻(xiàn)采用降低傳輸時(shí)間的不確定度來(lái)提高測(cè)距精度。溫度對(duì)傳感器的影響也很大,因此,需要用溫度傳感器進(jìn)行校正,目前相位探測(cè)法和聲譜輪廓分析法或二者結(jié)合起來(lái)的方法是主要的降低探測(cè)傳輸不確定度的方法。 1.3 本課題研究的主要內(nèi)容 超聲波是指頻率高于20KHz的機(jī)械波。為了以超聲波作為檢測(cè)手段,必須產(chǎn)生超生波和接收超聲波。完成這種功能的裝置就是超聲波換能器。超聲波傳感器有發(fā)送器和接收器,但一個(gè)超聲波換能器也可具有發(fā)送和接收聲波的雙重作用。超聲波換能器是利用壓電效應(yīng)的原理將電能和超聲波相互轉(zhuǎn)化,即在發(fā)射超聲波的時(shí)候,將電能轉(zhuǎn)換,發(fā)射超聲波;而在收到回波的時(shí)候,則將超聲振動(dòng)轉(zhuǎn)換成電信號(hào)。 超聲波測(cè)距的原理一般采用渡越時(shí)間法TOF(time of flight)。首先測(cè)出超聲波從發(fā)射到遇到障礙物返回所經(jīng)歷的時(shí)間,再乘以超聲波的速度就得到二倍的聲源與障礙物之間的距離,擬應(yīng)用以下三種技術(shù): a、單片機(jī)技術(shù):STC89C52系列的單片機(jī)具有體積小,重量輕,結(jié)構(gòu)較為簡(jiǎn)單,成本低廉,可以實(shí)現(xiàn)一般的控制功能的優(yōu)點(diǎn)。而且單片機(jī)更適用應(yīng)用于小型的嵌入式系統(tǒng),因此它得到了廣泛的應(yīng)用。現(xiàn)代人類生活大部分電子和機(jī)械產(chǎn)品中都會(huì)集成有單片機(jī)。 b、超聲波測(cè)距技術(shù):超聲波測(cè)距技術(shù)與一般測(cè)距技術(shù)相比,具有操作方便、系統(tǒng)簡(jiǎn)單以及計(jì)算簡(jiǎn)單的優(yōu)點(diǎn)。 c、顯示技術(shù):數(shù)據(jù)處理,數(shù)碼管顯示測(cè)出與物體之間的距離。 d、語(yǔ)音模塊技術(shù):ISD1730A芯片來(lái)語(yǔ)音播報(bào)距離。
第二章 總體方案 2.1 方案選擇 采用單片機(jī)來(lái)控制超聲波測(cè)距,信號(hào)線發(fā)射到與超聲波發(fā)射器相連的信號(hào)端,超聲波發(fā)射器向既定方向發(fā)射,在發(fā)射的同時(shí)開(kāi)始計(jì)時(shí),超聲波在空氣中傳播,途中碰到障礙物將產(chǎn)生回波。 2.2 超聲波測(cè)距儀的設(shè)計(jì)思路 2.2.1 超聲波測(cè)距原理 超聲波測(cè)距的方法有多種,如相位檢測(cè)法、聲波幅值檢測(cè)法和渡越時(shí)間檢測(cè)法等。相位檢測(cè)法雖然精度高,但檢測(cè)范圍有限,聲波幅值檢測(cè)法易受反射波的影響。 本測(cè)距系統(tǒng)采用超聲波渡越時(shí)間檢測(cè)法。其原理為:檢測(cè)從發(fā)射傳感器發(fā)射的超聲波經(jīng)氣體介質(zhì)傳播到接收傳感器的時(shí)間t,這個(gè)時(shí)間就是渡越時(shí)間,然后求出距離l。設(shè)l為測(cè)量距離,t為往返時(shí)間差,超聲波的傳播速度為c,則有l(wèi)=ct/2。超聲波接收器收到反射波就立即停止計(jì)時(shí)。再由單機(jī)計(jì)算出距離,送數(shù)碼管顯示測(cè)量結(jié)果。 超聲波測(cè)距的算法設(shè)計(jì): 超聲波在空氣中傳播速度為每秒鐘340米(15℃時(shí))。t2是接收超聲波時(shí)刻,t1是超聲波聲波發(fā)射時(shí)刻,t2-t1得出的是一個(gè)時(shí)間差的絕對(duì)值,假定t2-t1=0.03S,則有340m×0.03S=10.2m。由于在這10.2m的時(shí)間里,超聲波發(fā)出到遇到返射物返回的距離如下: 如圖2-2-1為測(cè)距原理[4] 因?yàn)棣?2角度較小,可以忽略不計(jì),所以L≈S。 超聲波發(fā)出到遇到返射物返回的距離如下: L=C x ( t2 -t1 )/ 2 由于超聲波也是一種聲波,其聲速c與空氣溫度有關(guān),一般來(lái)說(shuō),溫度每升高1攝氏度,聲速增加0.6米/秒。表2-1列出了幾種溫度下的聲速。
表2-1 聲速與溫度的關(guān)系表
在使用時(shí),如果溫度變化不大,則可認(rèn)為聲速c是基本不變的,計(jì)算時(shí)取c為340m/s。如果測(cè)距精度要求很高,則可通過(guò)改變硬件電路增加溫度補(bǔ)償電路的方法或者在硬件電路基本不變的情況下通過(guò)軟件改進(jìn)算法的方法來(lái)加以校正。 2.2.2 超聲波測(cè)距原理框圖 超聲波測(cè)距模塊用HC-SR04,溫度傳感器使用DS18B20,微處理器使用STC89C52單片機(jī),顯示部分采用共陽(yáng)數(shù)碼管。HC-SR04集成的發(fā)射電路模塊發(fā)出超聲波,遇到障礙物產(chǎn)生回波,被接收電路模塊接收,STC89C52單片機(jī)統(tǒng)計(jì)出聲波傳輸所用時(shí)間,經(jīng)過(guò)溫度補(bǔ)償溫,計(jì)算出正確的待測(cè)距離,同時(shí)ISD1730A根據(jù)相關(guān)數(shù)據(jù)處理進(jìn)行組合播報(bào)當(dāng)前測(cè)試距離,并且由數(shù)碼管顯示。 | 圖2-2 超聲波測(cè)距系統(tǒng)結(jié)構(gòu)圖 |
2.3 使用元件選擇由于測(cè)量距離的精度和長(zhǎng)度要求不是很高,精度達(dá)到2cm,測(cè)量距離達(dá)到2m即可,因此超聲波模塊選用價(jià)格低廉且實(shí)用的HC-SR04即可。 控制核心部分選擇實(shí)用的STC89C52單片機(jī)即可滿足計(jì)算和控制要求。 溫度補(bǔ)償?shù)臏囟葌鞲衅鬟x擇普遍且實(shí)用的DS18B20。 語(yǔ)音播報(bào):ISD1730A是華邦公司新推出的語(yǔ)音芯片,用來(lái)替代已經(jīng)停產(chǎn)的ISD1400 系列及ISD2500 系列芯片。ISD1730A不僅在錄音時(shí)間上有更多的選擇(從20秒到240 秒),而且在功能上繼承14及25系列的所有錄放功能,并增加了一些更加人性化的提示功能及對(duì)存儲(chǔ)地址的精確操作。根據(jù)我們經(jīng)營(yíng) ISD 系列芯片多年的經(jīng)驗(yàn)來(lái)看,ISD1700 的音質(zhì)也較14及25系列有明顯的提高 ISD1700 系列芯片是華邦公司新推出的單片優(yōu)質(zhì)語(yǔ)音錄放電路,該芯片提供多項(xiàng)新功能,包括內(nèi)置專利的多信息管理系統(tǒng),新信息提示(vAlert ),雙運(yùn)作模式(獨(dú)立&嵌入式),以及可定制的信息操作指示音效。芯片內(nèi)部包含有自動(dòng)增益控制、麥克風(fēng)前置擴(kuò)大器、揚(yáng)聲器驅(qū)動(dòng)線路、振蕩器與內(nèi) 存等的全方位整合系統(tǒng)功能。。 顯示部分:選擇了四位數(shù)碼管。
第三章 系統(tǒng)的硬件結(jié)構(gòu)設(shè)計(jì) 3.1 STC89C52單片機(jī)的功能及特點(diǎn) STC89C52單片機(jī)是宏晶科技推出的新一代高速/低功耗/超強(qiáng)抗干擾的單片機(jī),指令代碼完全兼容傳統(tǒng) 8051 單片機(jī),12 時(shí)鐘/機(jī)器周期和 6 時(shí)鐘/機(jī)器周 期可以任意選擇。 主要特性如下: 增強(qiáng)型 8051 單片機(jī),6 時(shí)鐘/機(jī)器周期和 12 時(shí)鐘/機(jī)器周期可以任 意選擇,指令代碼完全兼容傳統(tǒng) 8051. 工作電壓:5.5V~3.3V(5V 單片機(jī))/3.8V~2.0V(3V 單片機(jī)) 工作頻率范圍:0~40MHz,相當(dāng)于普通 8051 的 0~80MHz,實(shí)際工 作頻率可達(dá) 48MHz 用戶應(yīng)用程序空間為 8K 字節(jié) 片上集成 512 字節(jié) RAM 通用 I/O 口(32 個(gè))復(fù)位后為:P1/P2/P3/P4 是準(zhǔn)雙向口/弱上拉,P0口是漏極開(kāi)路輸出,作為總線擴(kuò)展用時(shí),不用加上拉電阻,作為 I/O 口用時(shí),需加上拉電阻。 ISP(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程) ,無(wú)需專用編程器,無(wú) 需專用仿真器,可通過(guò)串口(RxD/P3.0,TxD/P3.1)直接下載用戶程 序,數(shù)秒即可完成一片 具有 EEPROM 功能 具有看門狗功能 共 3 個(gè) 16 位定時(shí)器/計(jì)數(shù)器。即定時(shí)器 T0、T1、T2 外部中斷 4 路,下降沿中斷或低電平觸發(fā)電路,Power Down 模式可由外部中斷低電平觸發(fā)中斷方式喚醒 通用異步串行口(UART),還可用定時(shí)器軟件實(shí)現(xiàn)多個(gè)UART 工作溫度范圍:-40~+85℃(工業(yè)級(jí))/0~75℃(商業(yè)級(jí)) STC89C52RC單片機(jī)的工作模式 掉電模式:典型功耗<0.1μA,可由外部中斷喚醒,中斷返回后,繼續(xù)執(zhí)行原 程序
空閑模式:典型功耗 2mA 典型功耗 正常工作模式:典型功耗 4Ma~7mA 典型功耗 掉電模式可由外部中斷喚醒,適用于水表、氣表等電池供電系統(tǒng)及便攜設(shè)備
STC89C52RC 引腳功能說(shuō)明 VCC(40 引腳):電源電壓 VSS(20 引腳):接地 P0 端口(P0.0~P0.7 P0.7,39~32 引腳) :P0口是一個(gè)漏極開(kāi)路的 8 位雙向 I/O 口。作為輸出端口,每個(gè)引腳能驅(qū)動(dòng) 8 個(gè) TTL 負(fù)載,對(duì)端口 P0 寫入 每個(gè)引腳能驅(qū)動(dòng) 寫入“1”時(shí),可 以作為高阻抗輸入。在訪問(wèn)外部程序和數(shù)據(jù)存儲(chǔ)器時(shí) 在訪問(wèn)外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0 口也可以提供低 8 位 地址和 8 位數(shù)據(jù)的復(fù)用總線 位數(shù)據(jù)的復(fù)用總線。此時(shí),P0 口內(nèi)部上拉電阻有效。在 Flash ROM編在程時(shí),P0 端口接收指令字節(jié) 端口接收指令字節(jié);而在校驗(yàn)程序時(shí),則輸出指令字節(jié) 則輸出指令字節(jié)。驗(yàn)證時(shí),要求外接上拉電阻。 P1 端口(P1.0~P1.7,1~8 引腳) :P1口是一個(gè)帶內(nèi)部上拉電阻的 8 位雙向 I/O 口。P1 的輸出緩沖器可驅(qū)動(dòng)(吸收或者輸出電流方式)4 個(gè) TTL 輸入。對(duì)端 口寫入 1 時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高電位,這是可用作輸入口。P1 口作輸入口使用時(shí),因?yàn)橛袃?nèi)部上拉電阻,那些被外部拉低的引腳會(huì)輸出一個(gè)電 流( ) 。 此外,P1.0 和 P1.1 還可以作為定時(shí)器/計(jì)數(shù)器 2 的外部技術(shù)輸入(P1.0/T2)和定時(shí)器/計(jì)數(shù)器 2 的觸發(fā)輸入(P1.1/T2EX),具體參見(jiàn)下表: 在對(duì) Flash ROM 編程和程序校驗(yàn)時(shí),P1接收低 8 位地址。 表 XX P1.0 和 P1.1引腳復(fù)用功能 P2 端口(P2.0~P2.7,21~28 引腳) :P2 口是一個(gè)帶內(nèi)部上拉電阻的 8 位雙向 I/O 端口。P2 的輸出緩沖器可以驅(qū)動(dòng)(吸收或輸出電流方式)4個(gè)TTL輸入。對(duì)端口寫入 1 時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,這時(shí)可用作輸入口。P2 作為輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號(hào)拉低的引腳會(huì) 輸出一個(gè)電流(I) 。 在訪問(wèn)外部程序存儲(chǔ)器和16位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行“MOVX @DPTR”指令)時(shí),P2 送出高 8 位地址。在訪問(wèn) 8 位地址的外部數(shù)據(jù)存儲(chǔ)器(如 執(zhí)行“MOVX @R1”指令)時(shí),P2口引腳上的內(nèi)容(就是專用寄存器(SFR)區(qū) 中的 P2 寄存器的內(nèi)容),在整個(gè)訪問(wèn)期間不會(huì)改變。 在對(duì) Flash ROM 編程和程序校驗(yàn)期間,P2也接收高位地址和一些控制信號(hào)。 P3 端口(P3.0~P3.7,10~17 引腳) :P3 是一個(gè)帶內(nèi)部上拉電阻的 8 位雙向 I/O 端口。P3 的輸出緩沖器可驅(qū)動(dòng)(吸收或輸出電流方式)4 個(gè) TTL 輸入。對(duì)端 口寫入 1 時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高電位,這時(shí)可用作輸入口。P3 做輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號(hào)拉低的引腳會(huì)輸入一 個(gè)電流( ) 。
在對(duì) Flash ROM 編程或程序校驗(yàn)時(shí),P3 還接收一些控制信號(hào)。
P3 口除作為一般 I/O 口外,還有其他一些復(fù)用功能,如下表所示: 表XX P3口引腳復(fù)用功能 復(fù)用功能 RST(9 引腳) :復(fù)位輸入。當(dāng)輸入連續(xù)兩個(gè)機(jī)器周期以上高電平時(shí)為有效,用來(lái)完成單片機(jī)單片機(jī)的復(fù)位初始化操作。看門狗計(jì)時(shí)完成后,RST 引腳輸出 96 個(gè)晶振周期的高電平。特殊寄存器 AUXR(地址 8EH)上的 DISRTO 位可以使此功 能無(wú)效。DISRTO 默認(rèn)狀態(tài)下,復(fù)位高電平有效。 ALE/ ROG(30 引腳) 地址鎖存控制信號(hào) :(ALE)是訪問(wèn)外部程序存儲(chǔ)器時(shí), 鎖存低 8 位地址的輸出脈沖。在 Flash 編程時(shí),此引腳( ROG)也用作編程輸入 脈沖。 在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可用來(lái)作為外部 定時(shí)器或時(shí)鐘使用。然而,特別強(qiáng)調(diào),在每次訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),ALE 脈沖 將會(huì)跳過(guò)。 如果需要,通過(guò)將地址位 8EH 的 SFR 的第 0 位置“1”,ALE 操作將無(wú)效。這 一位置“1”,ALE 僅在執(zhí)行 MOVX 或 MOV 指令時(shí)有效。否則,ALE 將被微弱拉 高。這個(gè) ALE 使能標(biāo)志位(地址位 8EH 的 SFR 的第 0 位)的設(shè)置對(duì)微控制器處于 外部執(zhí)行模式下無(wú)效。
外部程序存儲(chǔ)器選通信號(hào)(SEN)是外部程序存儲(chǔ)器選 SEN(29引腳)
通信號(hào)。當(dāng) STC89C52RC 從外部程序存儲(chǔ)器執(zhí)行外部代碼時(shí),SEN在每個(gè)機(jī)器周 期被激活兩次,而訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí), SEN將不被激活。A/VPP(31引腳) 訪問(wèn)外部程序存儲(chǔ)器控制信號(hào)。為使能從 0000H 到 FFFFH 的外部程序存儲(chǔ)器讀取指令,A必須接 GND。注意加密方式 1 時(shí), A將內(nèi)部鎖 定位 RESET。為了執(zhí)行內(nèi)部程序指令, A應(yīng)該接 VCC。在 Flash 編程期間, A也接收 12 伏 VPP 電壓。 XTAL1(19 引腳) :振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。 XTAL2(18 引腳):振蕩器反相放大器的輸入端。
3.2單片機(jī)最小系統(tǒng) 單片機(jī)最小系統(tǒng),或者稱為最小應(yīng)用系統(tǒng),是指用最少的元件組成的單片機(jī)可以工作的系統(tǒng).
對(duì)52系列單片機(jī)來(lái)說(shuō),最小系統(tǒng)一般應(yīng)該包括:單片機(jī)、晶振電路、復(fù)位電路. 單片機(jī)最小系統(tǒng)電路介紹
52單片機(jī)最小系統(tǒng)復(fù)位電路的極性電容C1的大小直接影響單片機(jī)的復(fù)位時(shí)間,一般采用10~30uF,51單片機(jī)最小系統(tǒng)容值越大需要的復(fù)位時(shí)間越短。
52單片機(jī)最小系統(tǒng)晶振Y1也可以采用12MHz,在正常工作的情況下可以采用更高頻率的晶振,51單片機(jī)最小系統(tǒng)晶振的振蕩頻率直接影響單片機(jī)的處理速度,頻率越大處理速度越快。
52單片機(jī)最小系統(tǒng)起振電容C2、C3一般采用15~33pF,并且電容離晶振越近越好,晶振離單片機(jī)越近越好4.P0口為開(kāi)漏輸出,作為輸出口時(shí)需加上拉電阻,阻值一般為10k。
設(shè)置為定時(shí)器模式時(shí),加1計(jì)數(shù)器是對(duì)內(nèi)部機(jī)器周期計(jì)數(shù)(1個(gè)機(jī)器周期等于12個(gè)振蕩周期,即計(jì)數(shù)頻率為晶振頻率的1/12)。計(jì)數(shù)值N乘以機(jī)器周期Tcy就是定時(shí)時(shí)間t。
設(shè)置為計(jì)數(shù)器模式時(shí),外部事件計(jì)數(shù)脈沖由T0或T1引腳輸入到計(jì)數(shù)器。在每個(gè)機(jī)器周期的S5P2期間采樣T0、T1引腳電平。當(dāng)某周期采樣到一高電平輸入,而下一周期又采樣到一低電平時(shí),則計(jì)數(shù)器加1,更新的計(jì)數(shù)值在下一個(gè)機(jī)器周期的S3P1期間裝入計(jì)數(shù)器。由于檢測(cè)一個(gè)從1到0的下降沿需要2個(gè)機(jī)器周期,因此要求被采樣的電平至少要維持一個(gè)機(jī)器周期。當(dāng)晶振頻率為12MHz時(shí),最高計(jì)數(shù)頻率不超過(guò)1/12MHz,即計(jì)數(shù)脈沖的周期要大于2 ms。
3.4 語(yǔ)音播報(bào) 語(yǔ)音模塊采用WT588D語(yǔ)音模塊,WT588D是廣州唯創(chuàng)與臺(tái)灣華邦合作研發(fā)的一款語(yǔ)音芯片(單片機(jī))。WT588D不僅可以作為一般語(yǔ)音芯片,當(dāng)從片發(fā)聲,而且因?yàn)镮/O口多,帶控制功能和外置FLASH存儲(chǔ)器,所以能做FLASH單片機(jī);最重要的是還可以按照樣品直接投掩膜,管腳完全不用改動(dòng),價(jià)錢便宜一半。WT588D性能卓越,簡(jiǎn)單易用,與51單片機(jī)有著極為相似的性能。WT588D語(yǔ)音芯片是一款功能強(qiáng)大的可重復(fù)擦除燒寫的語(yǔ)音單片機(jī)芯片。配套WT588D VioceChip上位機(jī)操作軟件可隨意更換WT588D語(yǔ)音單片機(jī)芯片的任何一種控制模式,把信息下載到SPI-Flash上即可。軟件操作方式簡(jiǎn)潔易懂,撮合了語(yǔ)音組合技術(shù),大大減少了語(yǔ)音編輯的時(shí)間。 MP3控制模式下,完全迎合市場(chǎng)上MP3的播放/暫停、停止、上一曲、下一曲、音量+、音量-等功能; 按鍵控制模式下觸發(fā)方式靈活,可隨意設(shè)置任意按鍵為脈沖可重復(fù)觸發(fā)、脈沖不可重復(fù)觸發(fā)、無(wú)效按鍵、電平保持不循環(huán)、電平保持可循環(huán)、非電平保持可循環(huán)、單鍵向前不循環(huán)、單鍵向后不循環(huán)、單鍵向前可循環(huán)、單鍵向后可循環(huán)、音量+、音量-、播放/暫停、停止、播放/停止等15種觸發(fā)方式,最多可控制10個(gè)按鍵觸發(fā)輸出; 3×8按鍵組合控制模式下能以脈沖可重復(fù)觸發(fā)的方式觸發(fā)24個(gè)地址位語(yǔ)音,所觸發(fā)地址位語(yǔ)音可在0~219之間設(shè)置;并口控制模式最多可用8個(gè)I/O口進(jìn)行控制; 一線串口控制模式可通過(guò)發(fā)碼端控制語(yǔ)音播放、停止、循環(huán)播放和音量大小,或者直接觸發(fā)0~219地址位的任意語(yǔ)音,發(fā)碼速度600us~2000us; 三線串口控制模式和三線串口控制I/O口擴(kuò)展輸出模式之間可通過(guò)發(fā)碼切換,三線串口控制模式下,能控制語(yǔ)音播放、停止、循環(huán)播放和音量大小,或者直接觸發(fā)0~219地址位的任意語(yǔ)音,三線串口控制I/O口擴(kuò)展輸出可以擴(kuò)展輸出8位,在兩種模式下切換,能讓上一個(gè)模式的最后一種狀態(tài)保持著進(jìn)入下一個(gè)模式。 PWM和DAC輸出方式,PWM輸出可直接推動(dòng)0.5W/8Ω的揚(yáng)聲器,DAC輸出外接功放,音質(zhì)好。 應(yīng)用范圍廣,幾乎可以涉及到所有的語(yǔ)音場(chǎng)所,如報(bào)站器、報(bào)警器、提醒器、鬧鐘、學(xué)習(xí)機(jī)、智能家電、治療儀、電子玩具、電訊、以及各種自動(dòng)控制裝置等場(chǎng)所,工藝上達(dá)到工業(yè)應(yīng)用的要求。
WT588D的特性: 1.外掛2M~32M的Flash,時(shí)間從32—1054秒。掩膜為內(nèi)置ROM,最長(zhǎng)支持400秒(@6K采樣)。采樣率支持6K~22K 2.DAC輸出:13Bit,PWM輸出:12Bit 3.內(nèi)置0.5W功放,可直接推動(dòng)0.5W/8Ω揚(yáng)聲器 4.支持加載MP3/WAV/WMA三種音頻格式 5.工作電壓:DC2.8V~5.5V 6.靜態(tài)休眠電流:<10uA 7.可通過(guò)電腦軟件,隨意組合語(yǔ)音,可插入靜音,插入的靜音不占用內(nèi)存的容量,一個(gè)已加載語(yǔ)音可重復(fù)調(diào)用到多個(gè)地址,重復(fù)調(diào)用的,不占空間,這是其它芯片所不具備的 8.USB下載方式,支持在線下載/ISP下載 9.7種控制方式: MP3控制模式、按鍵控制模式、3×8矩陣控制模式、并口控制模式、一線串口控制模式、三線串口控制模式以及三線串口控制I/O口擴(kuò)展輸出模式 10.掩膜后的管腳與原來(lái)一致,性能一樣,音質(zhì)一樣。不用更改電路。且不用焊接FLASH 11.最多可加載500段語(yǔ)音;210段可控制地址位,單個(gè)地址位最多可加載128段語(yǔ)音,地址位內(nèi)的語(yǔ)音組合播放; 12.插入的靜音時(shí)間范圍10ms~25min;靜音不占用存儲(chǔ)空間; 語(yǔ)音提示模塊電路圖如圖17所示
3.5 顯示單元 本設(shè)計(jì)在接收端部分采用LCD1602液晶顯示模塊來(lái)顯示溫度,,P1由上拉電阻提高驅(qū)動(dòng)能力,作為數(shù)據(jù)輸出并作為L(zhǎng)CD的驅(qū)動(dòng),P2口的P2.7-P2.6分別作為液晶顯示模塊的使能信號(hào)E,數(shù)據(jù)/命令選擇RS,R/W端則配置成寫。具體電路如圖2.11所示。
第四章 系統(tǒng)的軟件設(shè)計(jì) 超聲波測(cè)距儀的軟件設(shè)計(jì)主要有主程序、超聲波發(fā)生程序、超聲波接收中斷程序及顯示子程序組成。我們知道C語(yǔ)言程序有利于實(shí)現(xiàn)較復(fù)雜的算法,匯編語(yǔ)言程序則具有較高的效率且容易精細(xì)計(jì)算程序運(yùn)行的時(shí)間,而超聲波測(cè)距儀的程序需要有較復(fù)雜的計(jì)算(計(jì)算距離時(shí)),所以控制程序可采用C語(yǔ)言編程。 4.1 主程序流程圖 軟件分為兩部分,主程序和中斷服務(wù)程序,如圖4-1、圖4-2、圖4-3所示。主程序完成初始化工作、各路超聲波發(fā)射和接收順序的控制。 定時(shí)中斷服務(wù)子程序完成單方向超聲波的發(fā)射,外部中斷服務(wù)子程序主要完成時(shí)間值的讀取、距離計(jì)算、結(jié)果的輸出等工作。 主程序首先是對(duì)系統(tǒng)環(huán)境初始化,設(shè)置定時(shí)器T0工作模式為16位定時(shí)計(jì)數(shù)器模式。置位總中斷允許位EA并給顯示端口P0和P1清0。然后調(diào)用超聲波發(fā)生子程序送出一個(gè)超聲波脈沖,為了避免超聲波從發(fā)射器直接傳送到接收器引起的直射波觸發(fā),需要延時(shí)約0.1ms(這也就是超聲波測(cè)距儀會(huì)有一個(gè)最小可測(cè)距離的原因)后,才打開(kāi)外中斷1接收返回的超聲波信號(hào).
由于采用的是12MHz的晶振,計(jì)數(shù)器每計(jì)一個(gè)數(shù)就是1μs,當(dāng)主程序檢測(cè)到接收成功的標(biāo)志位后,將計(jì)數(shù)器T0中的數(shù)(即超聲波來(lái)回所用的時(shí)間)按式(4-1)計(jì)算,即可得被測(cè)物體與測(cè)距儀之間的距離,設(shè)計(jì)時(shí)取20℃時(shí)的聲速為344m/s則有: d=(c t)/2=172T0/10000cm (4-1) 其中,T0為計(jì)數(shù)器T0的計(jì)算值。 測(cè)出距離后結(jié)果將傳給LCD數(shù)碼顯示約5s,同時(shí)測(cè)量距離送語(yǔ)音模塊播報(bào)。然后再發(fā)超聲波脈沖重復(fù)測(cè)量過(guò)程。為了有利于程序結(jié)構(gòu)化和容易計(jì)算出距離,主程序采用C語(yǔ)言編寫。 4.2 超聲波發(fā)生子程序和超聲波接收中斷程序 超聲波發(fā)生子程序的作用是通過(guò)P1.1端口發(fā)送2個(gè)左右超聲波脈沖信號(hào)(頻率約40kHz的方波),脈沖寬度為20μs左右,同時(shí)把計(jì)數(shù)器T0打開(kāi)進(jìn)行計(jì)時(shí)。超聲波發(fā)生子程序較簡(jiǎn)單,但要求程序運(yùn)行準(zhǔn)確。
超聲波測(cè)距儀主程序利用外中斷1檢測(cè)返回超聲波信號(hào),一旦接收到返回超聲波信號(hào)(即INT1引腳出現(xiàn)低電平),立即進(jìn)入中斷程序。進(jìn)入中斷后就立即關(guān)閉計(jì)時(shí)器T0停止計(jì)時(shí),并將測(cè)距成功標(biāo)志字賦值1。如果當(dāng)計(jì)時(shí)器溢出時(shí)還未檢測(cè)到超聲波返回信號(hào),則定時(shí)器T0溢出中斷將外中斷1關(guān)閉,并將測(cè)距成功標(biāo)志字賦值2以表示此次測(cè)距不成功。 1
1
第五章超聲波測(cè)距接收 5.1 HC-SR04模塊 HC-SR04超聲波測(cè)距模塊可提供2cm-400cm的非接觸式距離感測(cè)功能,其結(jié)構(gòu)簡(jiǎn)單,使用單片機(jī)控制電路簡(jiǎn)單容易,而且價(jià)格便宜。該模塊包括超聲波發(fā)射、接收與控制電路。實(shí)物如圖5-1。
基本工作原理 ①采用IO口TRIG觸發(fā)測(cè)距,給至少10us的高電平信號(hào); ②模塊自動(dòng)發(fā)送8個(gè)40khz的方波,自動(dòng)檢測(cè)是否有信號(hào)返回; ③有信號(hào)返回,通過(guò)IO口ECHO輸出一個(gè)高電平,高電平持續(xù)時(shí)間就是超 聲波從發(fā)射到返回的時(shí)間。 電氣參數(shù) HC-SR04模塊參數(shù)如下表5-1所示。
表5-1模塊參數(shù)
超聲波時(shí)序圖 超聲波時(shí)序圖如圖5-2所示
以上時(shí)序圖表明只需要提供一個(gè)10us以上脈沖信號(hào),該模塊內(nèi)部將發(fā)出8個(gè)40khz周期電平并檢測(cè)回波。一旦檢測(cè)到有回波信號(hào)則輸出回響信號(hào)。回響信號(hào)的脈沖寬度與測(cè)量的距離成正比。由此通過(guò)發(fā)射信號(hào)到收到的回響信號(hào)時(shí)間間隔可以計(jì)算得到距離: 距離=高電平時(shí)間*聲速(340m/s)/2。 為防止發(fā)射信號(hào)對(duì)回響信號(hào)的影響,測(cè)量周期一般要60ms以上。 模塊主要由Em78p153單片機(jī)、MAX232、TL074、超聲波傳感器:T40-16、R40-16組成。 Em78p153單片機(jī) ①概況描述 Em78p153是采用高速CMOS工藝制造的8位單片機(jī)。其內(nèi)部有512*13位一次性ROM(OTPROM)。因此,用戶可以方便改進(jìn)完善程序。程序代碼可用EMC編程器寫入芯片。有13位選項(xiàng)位可滿足用戶要求,其中的保護(hù)位可用來(lái)防止程序被讀出。 ②功能特點(diǎn) 工作電壓范圍:2.0V~6.0V; 工作溫度范圍:0℃~70℃; 工作頻率范圍:DC~8MHz; 512×13位片內(nèi)ROM;32×8位片內(nèi)寄存器(SDRAM); 片內(nèi)有4MHz校準(zhǔn)RC振蕩器; 2個(gè)雙向I/O端口; 8位實(shí)時(shí)定時(shí)/計(jì)數(shù)器(TCC),信號(hào)源、觸發(fā)沿可編程選擇,溢出產(chǎn)生中斷; 掉電模式(SLEEP模式); 3個(gè)中斷源:TCC溢出中斷、輸入引腳狀態(tài)變化中斷、外部中斷; EM78P153為14腳封裝;封裝形式:SOP、SSOP和DIP。 ③引腳分配 Em78p153單片機(jī)引腳分配如圖5-3。
MAX232 MAX232芯片是美信公司專門為電腦的RS-232標(biāo)準(zhǔn)串口設(shè)計(jì)的單電源電平轉(zhuǎn)換芯片,使用+5v單電源供電。MAX232多用于串口通信,起到電平轉(zhuǎn)換的作用,而本設(shè)計(jì)只用到其電平轉(zhuǎn)換,將40kHz的方波由5V轉(zhuǎn)換成20V,提高發(fā)射功率。超聲波發(fā)射頭采用共振頻率為40kHz的TCT40-16探頭,接收頭采用RCT40-16。 ①M(fèi)AX232引腳圖 芯片引腳如圖5-4。
②引腳介紹 第一部分是電荷泵電路。由1、2、3、4、5、6腳和4只電容構(gòu)成。功能是產(chǎn)生+12v和-12v兩個(gè)電源,提供給RS-232串口電平的需要。 第二部分是數(shù)據(jù)轉(zhuǎn)換通道。由7、8、9、10、11、12、13、14腳構(gòu)成兩個(gè)數(shù)據(jù)通道。其中13腳(R1IN)、12腳(R1OUT)、11腳(T1IN)、14腳(T1OUT)為第一數(shù)據(jù)通道;8腳(R2IN)、9腳(R2OUT)、10腳(T2IN)、7腳(T2OUT)為第二數(shù)據(jù)通道。 第三部分是供電。15腳GND、16腳VCC(+5v)。 TL074 常用的低噪聲JFET輸入運(yùn)算放大器,引腳如圖5-5。
1、2、3腳是通道1的輸出端、反相輸入端、同相輸入端,5、6、7腳是通道2的同相輸入端、反相輸入端、輸出端,8、9、10腳是通道3的輸出端、反相輸入端、同相輸入端,12、13、14腳是通道4的同相輸入端、反相輸入端、輸出端,4腳是正電源,11腳是負(fù)電源。TL074內(nèi)部組件數(shù)量如下表5-2所示 表5-2 TL074組件
T40-16與R40-16 為了研究和利用超聲波,人們已經(jīng)設(shè)計(jì)和制成了許多超聲波發(fā)生器。總體上講,超聲波發(fā)生器可以分為兩大類: 電氣方式產(chǎn)生超聲波, 主要包括壓電型、磁致伸縮型和電動(dòng)型等; 機(jī)械方式產(chǎn)生超聲波,主要包括加爾統(tǒng)笛、液哨和氣流旋笛等。 它們所產(chǎn)生的超聲波的頻率、功率和聲波特性各不相同,因而用途也各不相同。目前較為常用的是壓電式超聲波發(fā)生器。 壓電式超聲波發(fā)生器實(shí)際上是利用壓電晶體的諧振來(lái)工作的。其內(nèi)部有兩個(gè)壓電晶片和一個(gè)共振板。當(dāng)它的兩極外加脈沖信號(hào),其頻率等于壓電晶片的固有振蕩頻率時(shí),壓電晶片發(fā)生共振,帶動(dòng)共振板振動(dòng),便產(chǎn)生超聲波。反之,如果兩電極間未外加電壓,當(dāng)共振板接收到超聲波時(shí),將壓迫壓電晶片作振動(dòng),將機(jī)械能轉(zhuǎn)換為電信號(hào),這時(shí)它就成為超聲波接收器了。模塊使用T40-16T/R超聲波換能器即為壓電型。 ①器件說(shuō)明 名 稱:壓電陶瓷超聲波傳感器; 型 號(hào):T40-16T/R; 類 別:通用型; 中心頻率:40KHZ; 外 徑:16mm; 使用方式:T為發(fā)射頭,R為接收頭,TR為收發(fā)兼用; 適用范圍:家用電器及其它電子設(shè)備的超聲波遙控裝置;超聲波測(cè)距及汽車倒車防撞裝置;液面探測(cè);超聲波接近開(kāi)關(guān)及其它應(yīng)用的超聲波發(fā)射與接收。 ②器件性能 1.標(biāo)稱頻率(KHz):40KHz; 2.發(fā)射電壓at10V(0dB=0.02mPa):≥110dB; 3.接收靈敏度at40KHz(0dB=V/ubar):≥-70dB; 4.靜電容量at1KHz,<1V(PF):2000±30%; 5.探測(cè)距離(m):0.02-10。 傳感器實(shí)物如圖5-5 所示。
HC-SR04模塊集成了發(fā)射和接受電路,硬件上不必再自行設(shè)計(jì)繁復(fù)的發(fā)射及接收電路,軟件上也無(wú)需再通過(guò)定時(shí)器產(chǎn)生40Khz的方波引起壓電陶瓷共振從而產(chǎn)生超聲波。使用時(shí),只要在控制端‘Trig’發(fā)一個(gè)大于10us寬度的高電平,就可以在接收端‘Echo’等待高電平輸出。單片機(jī)一旦檢測(cè)到有輸出就打開(kāi)定時(shí)器開(kāi)始計(jì)時(shí)。當(dāng)此口變?yōu)榈碗娖綍r(shí)就停止計(jì)時(shí)并讀出定時(shí)器的值,此值就為此次測(cè)距的時(shí)間,再根據(jù)傳播速度方可算出障礙物的距離。 5.2 T40、R40超聲波傳感器簡(jiǎn)介 | | 5-7 元件內(nèi)部結(jié)構(gòu) | |
5.2.1 超聲波傳感器的基本介紹 超聲波測(cè)距換能器是利用超聲波的特性研制而成的換能器。超聲波是一種振動(dòng)頻率高于聲波的機(jī)械波,由換能晶片在電壓的激勵(lì)下發(fā)生振動(dòng)產(chǎn)生的,它具有頻率高、波長(zhǎng)短、繞射現(xiàn)象小,特別是方向性好、能夠成為射線而定向傳播等特點(diǎn)。超聲波對(duì)液體、固體的穿透本領(lǐng)很大,尤其是在陽(yáng)光不透明的固體中,它可穿透幾十米的深度。超聲波碰到雜質(zhì)或分界面會(huì)產(chǎn)生顯著反射形成反射成回波,碰到活動(dòng)物體能產(chǎn)生多普勒效應(yīng)。因此超聲波檢測(cè)廣泛應(yīng)用在工業(yè)、國(guó)防、生物醫(yī)學(xué)等方面。 以超聲波作為檢測(cè)手段,必須產(chǎn)生超聲波和接收超聲波。完成這種功能的裝置就是超聲波換能器,或者探頭。 超聲波換能器主要由壓電晶片組成,既可以發(fā)射超聲波,也可以接收超聲波。小功率超聲探頭多作探測(cè)作用。它有許多不同的結(jié)構(gòu),可分直探頭(縱波)、斜探頭(橫波)、表面波探頭(表面波)、蘭姆波探頭(蘭姆波)、雙探頭(一個(gè)探頭反射、一個(gè)探頭接收)等。 5.2.2 超聲波傳感器的主要應(yīng)用 超聲波傳感技術(shù)應(yīng)用在生產(chǎn)實(shí)踐的不同方面,而醫(yī)學(xué)應(yīng)用是其最主要的應(yīng)用之一,下面以醫(yī)學(xué)為例子說(shuō)明超聲波傳感技術(shù)的應(yīng)用。超聲波在醫(yī)學(xué)上的應(yīng)用主要是診斷疾病,它已經(jīng)成為了臨床醫(yī)學(xué)中不可缺少的診斷方法。超聲波診斷的優(yōu)點(diǎn)是:對(duì)受檢者無(wú)痛苦、無(wú)損害、方法簡(jiǎn)便、顯像清晰、診斷的準(zhǔn)確率高等。因而推廣容易,受到醫(yī)務(wù)工作者和患者的歡迎。超聲波診斷可以基于不同的醫(yī)學(xué)原理,我們來(lái)看看其中有代表性的一種所謂的A型方法。這個(gè)方法是利用超聲波的反射。當(dāng)超聲波在人體組織中傳播遇到兩層聲阻抗不同的介質(zhì)界面是,在該界面就產(chǎn)生反射回聲。每遇到一個(gè)反射面時(shí),回聲在示波器的屏幕上顯示出來(lái),而兩個(gè)界面的阻抗差值也決定了回聲的振幅的高低。 在工業(yè)方面,超聲波的典型應(yīng)用是對(duì)金屬的無(wú)損探傷和超聲波測(cè)厚兩種。過(guò)去,許多技術(shù)因?yàn)闊o(wú)法探測(cè)到物體組織內(nèi)部而受到阻礙,超聲波傳感技術(shù)的出現(xiàn)改變了這種狀況。當(dāng)然更多的超聲波傳感器是固定地安裝在不同的裝置上,“悄無(wú)聲息”地探測(cè)人們所需要的信號(hào)。在未來(lái)的應(yīng)用中,超聲波將與信息技術(shù)、新材料技術(shù)結(jié)合起來(lái),將出現(xiàn)更多的智能化、高靈敏度的超聲波傳感器。 超聲波距離傳感器技術(shù)應(yīng)用 超聲波對(duì)液體、固體的穿透本領(lǐng)很大,尤其是在陽(yáng)光不透明的固體中,它可穿透幾十米的深度。 超聲波碰到雜質(zhì)或分界面會(huì)產(chǎn)生顯著反射形成反射成回波,碰到活動(dòng)物體能產(chǎn)生多普勒效應(yīng)。因此超聲波檢測(cè)廣泛應(yīng)用在工業(yè)、國(guó)防、生物醫(yī)學(xué)等方面。超聲波距離傳感器可以廣泛應(yīng)用在物位(液位)監(jiān)測(cè),機(jī)器人防撞,各種超聲波接近開(kāi)關(guān),以及防盜報(bào)警等相關(guān)領(lǐng)域,工作可靠,安裝方便, 防水型,發(fā)射夾角較小,靈敏度高,方便與工業(yè)顯示儀表連接,也提供發(fā)射夾角較大的探頭。 5.2.3 超聲波傳感器的工作原理 超聲波是一種在彈性介質(zhì)中的機(jī)械振蕩,有兩種形式:橫向振蕩(橫波)及縱向振蕩(縱波)。在工業(yè)中應(yīng)用主要采用縱向振蕩。超聲波可以在氣體、液體及固體中傳播,其傳播速度不同。另外,它也有折射和反射現(xiàn)象,并且在傳播過(guò)程中有衰減。在空氣中傳播超聲波,其頻率較低,一般為幾十KHZ,而在固體、液體中則頻率可用得較高。在空氣中衰減較快,而在液體及固體中傳播,衰減較小,傳播較遠(yuǎn)。利用超聲波的特性,可做成各種超聲傳感器,配上不同的電路,制成各種超聲測(cè)量?jī)x器及裝置,并在通迅,醫(yī)療家電等各方面得到廣泛應(yīng)用。 超聲波傳感器主要材料有壓電晶體(電致伸縮)及鎳鐵鋁合金(磁致伸縮)兩類。電致伸縮的材料有鋯鈦酸鉛(PZT)等。壓電晶體組成的超聲波傳感器是一種可逆?zhèn)鞲衅鳎梢詫㈦娔苻D(zhuǎn)變成機(jī)械振蕩而產(chǎn)生超聲波,同時(shí)它接收到超聲波時(shí),也能轉(zhuǎn)變成電能,所以它可以分成發(fā)送器或接收器。有的超聲波傳感器既作發(fā)送,也能作接收。這里僅介紹小型超聲波傳感器,發(fā)送與接收略有差別,它適用于在空氣中傳播,工作頻率一般為23-25KHZ及40-45KHZ。這類傳感器適用于測(cè)距、遙控、防盜等用途。該種有T/R-40-60,T/R-40-12等(其中T表示發(fā)送,R表示接收,40表示頻率為40KHZ,16及12表示其外徑尺寸,以毫米計(jì))。另有一種密封式超聲波傳感器(MA40EI型)。它的特點(diǎn)是具有防水作用(但不能放入水中),可以作料位及接近開(kāi)關(guān)用,它的性能較好。超聲波應(yīng)用有三種基本類型,透射型用于遙控器,防盜報(bào)警器、自動(dòng)門、接近開(kāi)關(guān)等;分離式反射型用于測(cè)距、液位或料位;反射型用于材料探傷、測(cè)厚等。 由發(fā)送傳感器(或稱波發(fā)送器)、接收傳感器(或稱波接收器)、控制部分與電源部分組成。發(fā)送器傳感器由發(fā)送器與使用直徑為15mm左右的陶瓷振子換能器組成,換能器作用是將陶瓷振子的電振動(dòng)能量轉(zhuǎn)換成超能量并向空中輻射;而接收傳感器由陶瓷振子換能器與放大電路組成,換能器接收波產(chǎn)生機(jī)械振動(dòng),將其變換成電能量,作為傳感器接收器的輸出,從而對(duì)發(fā)送的超進(jìn)行檢測(cè).而實(shí)際使用中,用發(fā)送傳感器的陶瓷振子的也可以用做接收器傳感器社的陶瓷振子。控制部分主要對(duì)發(fā)送器發(fā)出的脈沖鏈頻率、占空比及稀疏調(diào)制和計(jì)數(shù)及探測(cè)距離等進(jìn)行控制 5.3 超聲波發(fā)射電路 HC-SR04模塊內(nèi)部超聲波發(fā)射電路如圖5-6所示,主要由Em78p153單片機(jī)、MAX232及超聲波發(fā)射換能器T40組成。
5.4 超聲波接收電路 HC-SR04模塊內(nèi)部超聲波接收電路如圖5-3所示,主要由TL074運(yùn)算放大器及超聲波接換能器R40組成。
5.5 超聲波接收過(guò)程 單片機(jī)初始化,HC-SR04內(nèi)部ECHO接口與單片機(jī)P1.1的引腳相連,發(fā)射接口TRIG與單片機(jī)的P1.2引腳相接。 單片機(jī)開(kāi)啟中斷,單片機(jī)P1.1給“Trig”接口一個(gè)約為20us的高電平,經(jīng)過(guò)HC-SR04模塊內(nèi)EM78P153發(fā)送8個(gè)連續(xù)的40KHz脈沖的信號(hào),經(jīng)過(guò)MAX232電平轉(zhuǎn)換,提高發(fā)射功率。換能器將電脈沖信號(hào)轉(zhuǎn)換為超聲波發(fā)射。 當(dāng)單片機(jī)的給一個(gè)20us的觸發(fā)信號(hào)時(shí),TRIG由低電平轉(zhuǎn)換為高電平,TRIG=1, 單片機(jī)開(kāi)時(shí)計(jì)時(shí),開(kāi)啟中斷,并記錄時(shí)間為T1,接收換能器等待接收回波,ECHO持續(xù)為高電平的時(shí)間為發(fā)射時(shí)間。換能器接收回波將超聲波轉(zhuǎn)換為電信號(hào),送至單片機(jī),記錄時(shí)間為T2。超聲波發(fā)射的時(shí)間為:T2-T1, 計(jì)算發(fā)射距離為: L = (T2-T1)xC/2 如果等待回波時(shí)間超過(guò)65ms時(shí),則無(wú)法接收到回波,單片機(jī)初始化,重新發(fā)射接收下一次回波。 5.6 接收數(shù)據(jù)處理 單片機(jī)初始化函數(shù)
接收過(guò)程:上電后先進(jìn)行初始化,主要是對(duì)各變量即定時(shí)器0進(jìn)行初始化,然后單片機(jī)給‘Trig’端一個(gè)約為20us的高電平,此后在‘Echo’端等待一個(gè)高電平,一旦檢測(cè)到高電平,則立即打開(kāi)定時(shí)器,開(kāi)始計(jì)時(shí)。此后只要定時(shí)器0中的值不超過(guò)約為65ms(65.5536ms)的計(jì)時(shí)上限,則認(rèn)為仍處在有效測(cè)量范圍內(nèi),并未進(jìn)入盲區(qū),則在‘Echo’等待低電平的產(chǎn)生,一旦檢測(cè)到低電平,立即讀出此時(shí)的TH0和TL0,并關(guān)閉定時(shí)器0。則超聲波從發(fā)射到返回總共所用時(shí)間為:time=TH0*256+TL0(us),再根據(jù)超聲波常溫下(27℃)在空氣中的傳播速度,(約為344m/s)計(jì)算出障礙物的距離,在數(shù)碼管上進(jìn)行動(dòng)態(tài)的實(shí)時(shí)顯示即可。 接收數(shù)據(jù)處理子程序如下: c_send = 1; //10us的高電平觸發(fā) delay(); c_send = 0; TH0 = 0; //給定時(shí)器0清零 TL0 = 0; TR0 = 0; //關(guān)定時(shí)器0定時(shí) flag_hc_value = 0; while(!c_recive); //當(dāng)c_recive為零時(shí)等待 TR0=1; while(c_recive) //當(dāng)c_recive為1計(jì)數(shù)并等待 { flag_time0 = TH0 * 256 + TL0; if((flag_hc_value > 1) || (flag_time0 > 65000)) //當(dāng)超聲波超過(guò)測(cè)量范圍時(shí),顯示3個(gè)888 { TR0 = 0; flag_csb_juli = 2; distance = 888; flag_hc_value = 0; break ; } else { flag_csb_juli = 1; } } if(flag_csb_juli == 1) { TR0=0; //關(guān)定時(shí)器0定時(shí) distance = TH0; //讀出定時(shí)器0的時(shí)間 distance = distance * 256 + TL0; distance +=( flag_hc_value * 65536);//算出超聲波測(cè)距的時(shí)間 得到單位是ms distance *= 0.017; // 0.017 = 340M / 2 = 170M = 0.017M 算出來(lái)是米 if(distance > 350) //距離 = 速度 * 時(shí)間 { distance = 888; //如果大于3.8m就超出超聲波的量程 } }
第六章總結(jié) 本次設(shè)計(jì)介紹了一種基于單片機(jī)的超聲波測(cè)距系統(tǒng)的設(shè)計(jì),給出了相應(yīng)的軟件和硬件的設(shè)計(jì)方案。 超聲波測(cè)距的原理與雷達(dá)測(cè)距原理相似,通過(guò)超聲波發(fā)射裝置發(fā)出超聲波,根據(jù)接收器接到超聲波時(shí)的時(shí)間差就可以知道距離,也就是說(shuō)超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射時(shí)刻的同時(shí)單片機(jī)開(kāi)始計(jì)時(shí),超聲波在空氣中傳播,途中碰到障礙物就立即返回來(lái),超聲波接收器收到反射波單片機(jī)就立即停止計(jì)時(shí),再利用對(duì)應(yīng)的計(jì)算公式就可以求出物體間的間距,這是根據(jù)反射原理利用了超聲波指向性強(qiáng),在介質(zhì)中傳播距離較遠(yuǎn)的特性。 超聲波測(cè)距儀硬件電路的設(shè)計(jì)主要包括單片機(jī)的基本電路、超聲波發(fā)射接收模塊控制電路、顯示電路、語(yǔ)音模塊,溫度補(bǔ)償五部分部分組成。單片機(jī)采用了STC89C52,晶振為12MHz,單片機(jī)P1.3端口輸出10us的觸發(fā)信號(hào),由定時(shí)器T0計(jì)得時(shí)間間隔,顯示電路采用1602,語(yǔ)音芯片WTD588D。 本次設(shè)計(jì)的超聲波測(cè)距系統(tǒng)滿足倒車測(cè)距等所需的測(cè)量精度,而且反映速度快、控制簡(jiǎn)單、成本低廉等,測(cè)距范圍為2cm到350cm。但由于經(jīng)驗(yàn)不足還有些地方有待完善。在要求精度較高的地方時(shí),由于超聲波在空氣中的傳播速度受溫度影響有點(diǎn)大,則需考慮到不同溫度時(shí)超聲波的傳播速度變換。 總體來(lái)說(shuō),經(jīng)過(guò)本次設(shè)計(jì)讓我學(xué)到了很多,從中受益匪淺。了解了超聲波測(cè)距的原理,并對(duì)單片機(jī)的開(kāi)發(fā)和電路設(shè)計(jì)有了更進(jìn)一步的了解。
附錄1原理圖
單片機(jī)源程序如下: - #include <reg52.h> //調(diào)用單片機(jī)頭文件
- #define uchar unsigned char //無(wú)符號(hào)字符型 宏定義 變量范圍0~255
- #define uint unsigned int //無(wú)符號(hào)整型 宏定義 變量范圍0~65535
- #include <intrins.h>
-
- //數(shù)碼管段選定義 0 1 2 3 4 5 6 7 8 9
- uchar code smg_du[]={0x25,0xee,0x37,0xa2,0xe2,0xa1,0x21,0xea,0x20,0xa0,
- 0x60,0x25,0x39,0x26,0x31,0x71,0xff}; //斷碼
- //數(shù)碼管位選定義
- uchar code smg_we[]={0xe0,0xb0,0xd0,0x70};
- uchar dis_smg[4] ={0};
-
- sbit smg_we1 = P3^4; //數(shù)碼管位選定義
- sbit smg_we2 = P3^5;
- sbit smg_we3 = P3^6;
- sbit smg_we4 = P3^7;
-
- sbit c_send = P3^2; //超聲波發(fā)射
- sbit c_recive = P3^3; //超聲波接收
-
- sbit beep = P3^1; //蜂鳴器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ì)的變量
-
-
-
- /***********************語(yǔ)音模塊控制IO口的定義************************/
- sbit VRST = P2^3;
- sbit VBUSY= P2^7;
- sbit VSDA = P2^6;
- sbit VCS = P2^5;
- sbit VSCL = P2^4;
- uchar yujing[3];
-
- /***************************
- 語(yǔ)音地址的安排
- 0 - 9 : 對(duì)應(yīng)數(shù)字0到9
- 0b : 點(diǎn)
- 0c : 米
- 0d : 已超出量程
-
- **************************/
-
- /***********************1ms延時(shí)函數(shù)*****************************/
- void delay_1ms(uint q)
- {
- uint i,j;
- for(i=0;i<q;i++)
- for(j=0;j<120;j++);
- }
-
-
- /********************獨(dú)立按鍵程序*****************/
- uchar key_can; //按鍵值
-
- void key() //獨(dú)立按鍵程序
- {
- static uchar key_new;
- key_can = 20; //按鍵值還原
- P2 |= 0x07;
- if((P2 & 0x07) != 0x06) //按鍵按下
- {
- delay_1ms(1); //按鍵消抖動(dòng)
- if(((P2 & 0x07) != 0x07) && (key_new == 1))
- { //確認(rèn)是按鍵按下
- key_new = 0;
- switch(P2 & 0x07)
- {
- case 0x05: key_can = 1; break; //得到k2鍵值
- case 0x04: key_can = 2; break; //得到k3鍵值
- case 0x02: key_can = 3; break; //得到k4鍵值
- }
- }
- }
- else
- key_new = 1;
- }
-
- /****************按鍵處理顯示函數(shù)***************/
- void key_with()
- {
- if(key_can == 1) //設(shè)置鍵
- {
- menu_1 ++;
- if(menu_1 >= 2)
- {
- 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 <= 1)
- 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] & 0xdf ; //取十位顯示
- dis_smg[3] = smg_du[10]; //a
- }
- }
-
- /***********************語(yǔ)音子程序************************/
- void Send_threelines(unsigned char addr)
- {
- unsigned char i;
- VRST=0;
- delay_1ms(5);
- VRST=1;
- delay_1ms(10); /* 復(fù)位拉高10ms*/
- VCS=0;
- delay_1ms(5); /* 片選拉低5ms */
- for(i=0;i<8;i++)
- {
- VSCL=1;
- if(addr&0x01 == 0x01)
- {
- VSDA=1;
- }
- else
- VSDA=0;
- addr<<=1;
- VSCL=0;
- }
- VCS=1;
- while(VBUSY == 0); //忙等待
- }
-
-
- /***********************數(shù)碼位選函數(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;
- }
- }
-
-
- /****************報(bào)警函數(shù)***************/
- void clock_h_l()
- {
- static uchar value;
- if(distance <= set_d)
- {
- value ++; //消除實(shí)際距離在設(shè)定距離左右變化時(shí)的干擾
- if(value >= 2)
- {
- beep = ~beep; //蜂鳴器報(bào)警
- }
- }
- else
- {
- value = 0;
- beep = 1; //取消報(bào)警
- }
- }
-
- /***********************數(shù)碼顯示函數(shù)*****************************/
- void display()
- {
- static uchar i;
- i++;
- if(i >= smg_i)
- i = 0;
- smg_we_switch(i); //位選
- P1 = dis_smg[i]; //段選
- }
-
- /******************小延時(shí)函數(shù)*****************/
- void delay()
- {
- _nop_(); //執(zhí)行一條_nop_()指令就是1us
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- }
-
-
- /*********************超聲波測(cè)距程序*****************************/
- void send_wave()
- {
- c_send = 1; //10us的高電平觸發(fā)
- delay();
- c_send = 0;
- TH0 = 0; //給定時(shí)器0清零
- TL0 = 0;
- TR0 = 0; //關(guān)定時(shí)器0定時(shí)
- while(!c_recive); //當(dāng)c_recive為零時(shí)等待
- TR0=1;
- while(c_recive) //當(dāng)c_recive為1計(jì)數(shù)并等待
- {
- flag_time0 = TH0 * 256 + TL0;
- if((flag_time0 > 40000)) //當(dāng)超聲波超過(guò)測(cè)量范圍時(shí),顯示3個(gè)888
- {
- 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í)
- distance =flag_time0; //讀出定時(shí)器0的時(shí)間
- distance *= 0.017; // 0.017 = 340M / 2 = 170M = 0.017M 算出來(lái)是米
- if((distance > 500)) //距離 = 速度 * 時(shí)間
- {
- distance = 888; //如果大于3.8m就超出超聲波的量程
- }
- }
- }
-
- /***********************處理距離函數(shù)****************************/
- void smg_display()
- {
- dis_smg[0] = smg_du[distance % 10]; //距離取出來(lái)放在緩沖區(qū)了
- dis_smg[1] = smg_du[distance / 10 % 10];
- dis_smg[2] = smg_du[distance / 100 % 10] & 0xdf;
- yujing[0] = distance % 10; //距離放到語(yǔ)音的變量里
- yujing[1] = distance / 10 % 10;
- yujing[2] = distance / 100 % 10;
- }
-
-
- /*********************定時(shí)器0、定時(shí)器1初始化******************/
- void time_init()
- {
- EA = 1; //開(kāi)總中斷
- TMOD = 0X11; //定時(shí)器0、定時(shí)器1工作方式1
- ET0 = 0; //關(guān)定時(shí)器0中斷
- TR0 = 1; //允許定時(shí)器0定時(shí)
- ET1 = 1; //開(kāi)定時(shí)器1中斷
- TR1 = 1; //允許定時(shí)器1定時(shí)
- }
-
-
-
- /***************主函數(shù)*****************/
- void main()
- {
- static uchar value = 5;
- send_wave(); //測(cè)距離函數(shù)
- smg_display(); //處理距離顯示函數(shù)
- time_init(); //定時(shí)器初始化程序
- while(1)
- {
- key(); //按鍵函數(shù)
- if(key_can < 10)
- {
- key_with(); //按鍵處理函數(shù)
- }
- if(flag_300ms == 1)
- {
- flag_300ms = 0;
- send_wave(); //測(cè)距離函數(shù)
- if(menu_1 == 0)
- {
- smg_display(); //處理距離顯示函數(shù)
- value ++;
- if(value > 10) //3秒鐘自動(dòng)播放一次
- {
- value = 0;
- if(distance == 888)
- {
- Send_threelines(0x0d); //可安全倒車
- }
- else
- {
- Send_threelines(yujing[2]); //語(yǔ)音播放
- Send_threelines(0x0b);
- Send_threelines(yujing[1]);
- Send_threelines(yujing[0]);
- Send_threelines(0x0c);
- }
- }
- }
- }
- }
- }
-
- /*********************定時(shí)器1中斷服務(wù)程序************************/
- void time1_int() interrupt 3
- {
- static uchar value; //定時(shí)2ms中斷一次
- TH1 = 0xf8;
- TL1 = 0x30; //2ms
- display(); //數(shù)碼管顯示函數(shù)
- value++;
-
- if(value >= 150)
- {
- value = 0;
- flag_300ms = 1;
- clock_h_l(); //報(bào)警函數(shù)
- }
- }
復(fù)制代碼完整的Word格式文檔51黑下載地址:
超聲波測(cè)距語(yǔ)音播報(bào)論文.doc
(3.05 MB, 下載次數(shù): 105)
2018-10-30 13:31 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|