版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、汽車防撞報(bào)警器的設(shè)計(jì)【摘 要】 本設(shè)計(jì)主要應(yīng)用AT89S52作為控制核心,與顯示器、驅(qū)動(dòng)電路等相結(jié)合的系統(tǒng)。利用單片機(jī)AT89S52作為報(bào)警裝置的控制器,能充分發(fā)揮AT89S52的數(shù)據(jù)處理和實(shí)時(shí)控制功能。使系統(tǒng)工作于最佳狀態(tài),提高系統(tǒng)的靈敏度。其優(yōu)點(diǎn)是體積小、使用方便、硬件電路簡(jiǎn)單,軟件功能完善,控制系統(tǒng)可靠,具有一定的使用和參考價(jià)值。該系統(tǒng)利用超聲波實(shí)現(xiàn)對(duì)汽車的測(cè)距,利用單片機(jī)的實(shí)時(shí)控制和數(shù)據(jù)處理功能完成系統(tǒng)的控制。【關(guān)鍵詞】單片機(jī);AT89S52;超聲波Design of automotive anti-collision alarm【Abstract】The design of the
2、main application AT89S52 as the control, and display driver integrated circuits and other systems. MCU AT89S52 using the controller as an alarm device that can give full play to AT89S52 of data processing and real-time control functions. Make the system work in the best condition, improve the system
3、 sensitivity. The advantage is small, easy to use, simple hardware circuit, software, functional, and reliable control system has some value in use and reference. The use of ultrasound to achieve collision avoidance alarm on the car's distance. Real-time control of single-chip computer and data
4、processing functions to complete control of the system.【Keywords】SCM;AT89S52;Ultrasonic目 錄第一章 緒論131.1 課題研究的背景和意義131.2 汽車防撞報(bào)警器的發(fā)展現(xiàn)狀13第二章 汽車防撞報(bào)警器的原理和總體設(shè)計(jì)162.1 汽車防撞報(bào)警器的原理162.1.1 壓電式超聲波傳感器簡(jiǎn)介172.2 汽車防撞報(bào)警器的總體設(shè)計(jì)方案18第三章 硬件設(shè)計(jì)193.1 超聲波發(fā)射模塊與接收模塊193.3單片機(jī)控制系統(tǒng)203.4顯示模塊21第四章 軟件設(shè)計(jì)234.1 軟件的設(shè)計(jì)要求234.2 軟件設(shè)計(jì)的總體結(jié)構(gòu)框圖234.3
5、 各個(gè)程序的流程圖234.3.1 主流程圖244.3.2 發(fā)射接收模塊流程244.3.3 中斷程序流程254.4 部分程序26第五章 調(diào)試425.1 測(cè)距模塊的調(diào)試425.2 調(diào)試結(jié)果445.3 誤差分析45第六章 設(shè)計(jì)總結(jié)476.1 設(shè)計(jì)功能分析476.2 心得體會(huì)47致謝48參考文獻(xiàn)49附錄一:汽車防撞報(bào)警器電路圖50附錄二:汽車防撞報(bào)警器PCB圖51附錄三:所用元件清單52第一章 緒論隨著我國(guó)社會(huì)經(jīng)濟(jì)的高速發(fā)展,交通運(yùn)輸業(yè)日益興旺,汽車的數(shù)量逐漸增加。交通擁擠狀況也日趨嚴(yán)重,撞碰車事件屢屢發(fā)生,造成了很大的人身傷亡和經(jīng)濟(jì)損失,汽車駕駛員也越來(lái)越擔(dān)心車的安全了。針對(duì)這種情況,設(shè)計(jì)一種響應(yīng)快
6、,可靠性高且較為經(jīng)濟(jì)的汽車防撞報(bào)警系統(tǒng)勢(shì)在必行,超聲波測(cè)距法是最常見的一種距離測(cè)距方法,本設(shè)計(jì)介紹用AT89S52單片機(jī)控制的汽車防撞報(bào)警系統(tǒng)。該裝置將單片機(jī)的實(shí)時(shí)控制及數(shù)據(jù)處理功能與超聲波的測(cè)距技術(shù)、傳感器技術(shù)相結(jié)合,可檢測(cè)汽車運(yùn)行中前方障礙物與汽車的距離及汽車車速。通過(guò)數(shù)字顯示裝置顯示距離,并由發(fā)聲電路根據(jù)距離遠(yuǎn)近情況發(fā)出警告聲。1.1 課題研究的背景和意義科技的飛速發(fā)展拉動(dòng)了經(jīng)濟(jì)的飛躍,私家車逐漸走近了千家萬(wàn)戶。但隨著車輛的增加,停車難的問(wèn)題也凸顯出來(lái)。狹小的停車場(chǎng)地常常令有車一族感到苦惱,稍有不慎,車輛就可能與他人車輛或障礙物發(fā)生碰撞,造成損失。雖然車輛都有后視鏡,但由于角度問(wèn)題,不可
7、避免的存在著后視盲區(qū),并不能有效的解決碰撞問(wèn)題。汽車防撞報(bào)警器是汽車倒車或者泊車時(shí)使用的安全輔助裝置,它可以通過(guò)聲音、燈光指示或是屏幕顯示等手段告知駕駛者車輛周圍的障礙物情況,令駕駛者及時(shí)調(diào)整車輛行進(jìn)方向以便于規(guī)避,解除了駕駛者不便于直接目測(cè)與障礙物間距離的困擾,大大的提高了駕駛的安全性??梢哉f(shuō),汽車防撞報(bào)警器是車輛必不可少的應(yīng)用設(shè)備之一。1.2 汽車防撞報(bào)警器的發(fā)展現(xiàn)狀通常,汽車防撞報(bào)警器由超聲波傳感器(俗稱探頭)、控制器和顯示器(或蜂鳴器)等部分組成。汽車防撞報(bào)警器一般采用超聲波測(cè)距原理,在控制器的控制下,由傳感器發(fā)射超聲波信號(hào),當(dāng)遇到障礙物時(shí),產(chǎn)生回波信號(hào),傳感器接收到回波信號(hào)后經(jīng)控制器
8、進(jìn)行數(shù)據(jù)處理、判斷出障礙物的位置,由顯示器顯示距離并發(fā)出其他警示信號(hào),得到及時(shí)警示,從而使駕駛者倒車時(shí)做到心中有數(shù),使倒車變得更輕松。在幾年的時(shí)間里,隨著技術(shù)發(fā)展和用戶需求的變化,汽車防撞報(bào)警器經(jīng)過(guò)了大致六代的發(fā)展。 第一代:倒車時(shí)通過(guò)喇叭提醒 。當(dāng)車輛倒車時(shí)會(huì)發(fā)出“倒車請(qǐng)注意”的提醒聲音,這就是汽車防撞報(bào)警器的第一代產(chǎn)品?,F(xiàn)在只有小部分車輛還在使用。只要司機(jī)掛上倒檔,它就會(huì)響起,提醒周圍的人注意。從一定意義上說(shuō),它對(duì)駕駛者并沒(méi)有直接的幫助,不是真正的汽車防撞報(bào)警器。它價(jià)格便宜,使用性能不高,已被市場(chǎng)淘汰。第二代:采用蜂鳴器不同聲音提示駕駛員。這是汽車防撞報(bào)警器系統(tǒng)的真正開始。倒車時(shí),如果車后
9、1.8米-1.5米處有障礙物,蜂鳴器就會(huì)開始工作,發(fā)出警報(bào)聲。蜂鳴聲越急,表示車輛離障礙物越近。但由于沒(méi)有語(yǔ)音提示,也沒(méi)有距離顯示,司機(jī)即使知道有障礙物,卻不能確定障礙物離車有多遠(yuǎn),對(duì)駕駛員幫助也不是太大。第三代:數(shù)碼波段顯示具體距離或者距離范圍。這代產(chǎn)品比第二代進(jìn)步很多,可以顯示車后障礙物離車體的距離。如果是物體,在1.8米開始顯示;如果是人,在0.9米左右的距離開始顯示。這一代產(chǎn)品有兩種顯示方式,數(shù)碼顯示產(chǎn)品顯示距離數(shù)字,而波段顯示產(chǎn)品由三種顏色來(lái)區(qū)別:綠色代表安全距離,黃色代表警告距離,紅色代表危險(xiǎn)距離,必須停止倒車。 第三代產(chǎn)品把數(shù)碼和波段組合在一起,雖然比較實(shí)用,但安裝在車內(nèi)不太美觀
10、。第四代:液晶熒屏動(dòng)態(tài)顯示。這一代產(chǎn)品有一個(gè)質(zhì)的飛躍,特別是屏幕顯示開始出現(xiàn)動(dòng)態(tài)顯示系統(tǒng)。不用掛倒檔,只要發(fā)動(dòng)汽車,顯示器上就會(huì)出現(xiàn)汽車圖案以及車輛周圍障礙物的距離,色彩清晰漂亮,外表美觀,可以直接粘貼在儀表盤上,安裝很方便。不過(guò)液晶顯示器外觀雖精巧,但靈敏度較高,抗干擾能力較差,誤報(bào)也較多。第五代:魔幻鏡汽車防撞報(bào)警器。結(jié)合了前幾代產(chǎn)品的優(yōu)點(diǎn),采用了最新仿生超聲雷達(dá)技術(shù),配以高速電腦控制,可全天候準(zhǔn)確地測(cè)知2米以內(nèi)的障礙物,并以不同等級(jí)的聲音提示和直觀的顯示提醒駕駛員。魔幻鏡汽車防撞報(bào)警器可以把后視鏡、汽車防撞報(bào)警器、免提電話、溫度顯示和車內(nèi)空氣污染顯示等多項(xiàng)功能整合在一起,并設(shè)計(jì)了語(yǔ)音功能
11、。因?yàn)槠渫庑尉褪且粔K倒車鏡,所以可以不占用車內(nèi)空間,直接安裝在車內(nèi)后視鏡的位置。而且顏色款式多樣,可以按照個(gè)人需求和車內(nèi)裝飾選配。第六代:整合影音系統(tǒng)。它在第五代產(chǎn)品的基礎(chǔ)上新增了很多功能,屬于第六代產(chǎn)品,是專門為高檔轎車生產(chǎn)的。從外觀上來(lái)看,這套系統(tǒng)比第五代產(chǎn)品更為精致典雅;從功能上來(lái)看,它除了具備第五代產(chǎn)品的所有功能之外,還整合了高檔轎車具備的影音系統(tǒng),可以在顯示器上觀看DVD影像。價(jià)格較高。汽車防撞報(bào)警器對(duì)于駕駛者的巨大作用,使得它成為各種車輛上的必備品。第二章 汽車防撞報(bào)警器的原理和總體設(shè)計(jì)2.1 汽車防撞報(bào)警器的原理用來(lái)測(cè)距的方式多種多樣。短距離測(cè)距可以使用尺子等刻度工具,遠(yuǎn)距離可以
12、使用激光測(cè)距等方法,而超聲波測(cè)距一般應(yīng)用與中短距離測(cè)量。本設(shè)計(jì)的工作原理便是超聲波測(cè)距原理。超聲波因其頻率下限大約等于人的聽覺上限而得名。它方向性好,穿透能力強(qiáng),易于獲得較集中的聲能,在水中傳播距離遠(yuǎn),在醫(yī)學(xué)、軍事、工業(yè)、農(nóng)業(yè)上有很多的應(yīng)用。聲波的傳播速度與溫度有關(guān)。由于超聲波也是一種聲波,如果在測(cè)距過(guò)程中環(huán)境溫度與常溫差距較大,則必須考慮溫度。下表列出了幾種不同溫度下的聲速。在使用時(shí),如果溫度變化不大,則可認(rèn)為聲速是基本不變的。如果測(cè)距精度要求很高,則應(yīng)通過(guò)溫度補(bǔ)償?shù)姆椒右孕U?。聲速確定后,只要測(cè)得超聲波往返的時(shí)間,即可求得距離。表2-1 聲速與溫度的關(guān)系溫度()-30-20-100102
13、030100聲速(米/秒)313319325333338344349386超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射時(shí)刻的同時(shí)開始計(jì)時(shí),超聲波在空氣中傳播,途中碰到障礙物就立即返回來(lái),超聲波接收器收到反射波就立即停止計(jì)時(shí)。超聲波在常溫空氣中(20)的傳播速度為(V)為340m/s(實(shí)際速度為344m/s,這里取整數(shù)),根據(jù)計(jì)時(shí)器記錄的時(shí)間(T),就可以計(jì)算出發(fā)射點(diǎn)距障礙物的距離(S)。S=340T/2這就是所謂的時(shí)間差測(cè)距法。為了以超聲波作為檢測(cè)手段,必須產(chǎn)生超生波和接收超聲波。完成這種功能的裝置就是超聲波傳感器。超聲波傳感器有發(fā)送器和接收器,但一個(gè)超聲波傳感器也可具有發(fā)送和接收聲波的雙重作用。
14、常用的超聲波傳感器可以分為二大類,一是用電氣方式產(chǎn)生超聲波,如壓電式、磁致伸縮式超聲波發(fā)生器;二是用機(jī)械方式產(chǎn)生超聲波,有加爾統(tǒng)笛、液哨和氣流旋笛等。下面我們主要介紹本設(shè)計(jì)所使用的壓電式超聲波傳感器。2.1.1 壓電式超聲波傳感器簡(jiǎn)介壓電式超聲波傳感器的主要組成部分是壓電晶片。當(dāng)壓電晶片受發(fā)射電脈沖激勵(lì)后產(chǎn)生振動(dòng),即可發(fā)射聲脈沖,是逆壓電效應(yīng)。當(dāng)超聲波作用于晶片時(shí),晶片受迫振動(dòng)引起的形變可轉(zhuǎn)換成相應(yīng)的電信號(hào),是正壓電效應(yīng)。前者用于超聲波的發(fā)射,后者即為超聲波的接收。超聲波傳感器一般采用雙壓電陶瓷晶片制成。這種超聲傳感器需要的壓電材料較少,價(jià)格低廉,且非常適用于氣體和液體介質(zhì)中。在壓電陶瓷上加有
15、大小和方向不斷變化的交流電壓時(shí),根據(jù)壓電效應(yīng),就會(huì)使壓電陶瓷晶片產(chǎn)生機(jī)械變形,這種機(jī)械變形的大小和方向在一定范圍內(nèi)是與外加電壓的大小和方向成正比的。也就是說(shuō),在壓電陶瓷晶片上加有頻率為 f0交流電壓,它就會(huì)產(chǎn)生同頻率的機(jī)械振動(dòng),這種機(jī)械振動(dòng)推動(dòng)空氣等媒介,便會(huì)發(fā)出超聲波。如果在壓電陶瓷晶片上有超聲機(jī)械波作用,這將會(huì)使其產(chǎn)生機(jī)械變形,這種機(jī)械變形是與超聲機(jī)械波一致的,機(jī)械變形使壓電陶瓷晶片產(chǎn)生頻率與超聲機(jī)械波相同的電信號(hào)。圖2-1 壓電式超聲波傳感器結(jié)構(gòu)圖壓電式超聲波發(fā)生器實(shí)際上是利用壓電晶體的諧振來(lái)工作的,超聲波發(fā)生器內(nèi)部結(jié)構(gòu)如圖2-1所示,它有兩個(gè)壓電晶片和一個(gè)共振板,當(dāng)它的兩極外加脈沖信號(hào)
16、,其頻率等于壓電晶片的固有振蕩頻率時(shí),壓電晶片將會(huì)發(fā)生共振,并帶動(dòng)共振板振動(dòng),便產(chǎn)生超聲波。反之,如果兩電極間未外加電壓,當(dāng)共振板接收到超聲波時(shí),將壓迫壓電晶片作振動(dòng),將機(jī)械能轉(zhuǎn)化為電信號(hào),這時(shí)它就成為超聲波傳感器。壓電陶瓷晶片有一個(gè)固定的諧振頻率,即中心頻率 f0。發(fā)射超聲波時(shí),加在其上面的交變電壓的頻率要與它的固有諧振頻率一致。這樣,超聲傳感器才有較高的靈敏度。當(dāng)所用壓電材料不變時(shí),改變壓電陶瓷晶片的幾何尺寸,就可非常方便的改變其固有諧振頻率。利用這一特性可制成各種頻率的超聲傳感器。2.2 汽車防撞報(bào)警器的總體設(shè)計(jì)方案按照系統(tǒng)設(shè)計(jì)的功能具體要求,初步設(shè)定汽車防撞報(bào)警器系統(tǒng)由單片機(jī)控制模塊、
17、顯示模塊、鍵盤模塊、超聲波發(fā)射模塊、超聲波接收模塊,一共五個(gè)模塊構(gòu)成。單片機(jī)控制系統(tǒng)使用51單片機(jī)系列的AT89S52單片機(jī)作為控制器,該型號(hào)單片機(jī)工作性能穩(wěn)定,操作簡(jiǎn)單,比較適合本系統(tǒng)。發(fā)射線路由單片機(jī)輸出端驅(qū)動(dòng)超聲波發(fā)送。圖2-2 系統(tǒng)設(shè)計(jì)框圖硬件電路的設(shè)計(jì)主要由超聲波發(fā)射電路、超聲波接收電路、單片機(jī)控制系統(tǒng)和顯示電路四部分組成。第三章 硬件設(shè)計(jì)本汽車防撞報(bào)警器系統(tǒng)主要有主機(jī)和探頭兩部分組成。主機(jī)電路包括發(fā)射電路、接收電路、計(jì)數(shù)顯示電路三部分。單片機(jī)采用AT89S52。采用12MHz高精度的晶振,以獲得較穩(wěn)定時(shí)鐘頻率,減小測(cè)量誤差。單片機(jī)用P1.0端口控制發(fā)射和停止輸出超聲波換能器所需的4
18、0KHz的方波信號(hào),利用外中斷0口監(jiān)測(cè)超聲波接收電路輸出的返回信號(hào)。顯示電路采用簡(jiǎn)單實(shí)用的3位共陰LED數(shù)碼管,段碼用ZLG7289驅(qū)動(dòng)。 3.1 超聲波發(fā)射模塊與接收模塊超聲波發(fā)射模塊包括超聲波產(chǎn)生電路和超聲波發(fā)射控制電路兩個(gè)部分,超聲波探頭選用壓電式,可采用軟件發(fā)生法和硬件發(fā)生法產(chǎn)生超聲波。前者利用軟件產(chǎn)生40KHz的超聲波信號(hào),通過(guò)輸出引腳輸入至驅(qū)動(dòng)器,經(jīng)驅(qū)動(dòng)器驅(qū)動(dòng)后推動(dòng)探頭產(chǎn)生超聲波。這種方法的特點(diǎn)是充分利用軟件,靈活性好,但需要設(shè)計(jì)一個(gè)驅(qū)動(dòng)電流在100mA以上的驅(qū)動(dòng)電路。第二種方法是利用超聲波專用發(fā)生電路或通用發(fā)生電路產(chǎn)生超聲波信號(hào),并直接驅(qū)動(dòng)換能器產(chǎn)生超聲波。這種方法的優(yōu)點(diǎn)是無(wú)須驅(qū)
19、動(dòng)電路,但缺乏靈活性。本設(shè)計(jì)采用第二種方法產(chǎn)生超聲波發(fā)射信號(hào)。40KHz的超聲波是利用LC震蕩電路振蕩產(chǎn)生的。其振蕩頻率計(jì)算式如公式3-1為: (3-1)其中L=6.8mH,C=2200pF,計(jì)算得結(jié)果約等于40KHz。超聲波接收模塊包括超聲波接收探頭、信號(hào)放大電路及波形變換電路三部分。超聲波探頭必須采用與發(fā)射探頭對(duì)應(yīng)的型號(hào),關(guān)鍵是頻率要一致,本設(shè)計(jì)采用發(fā)生端同型號(hào)的壓電式超聲波傳感器,否則將因無(wú)法產(chǎn)生共振而影響接收效果,甚至無(wú)法接收。由于經(jīng)探頭變換后的正弦波電信號(hào)非常弱,因此必須經(jīng)放大電路放大。由于是汽車報(bào)警器系統(tǒng)所測(cè)距離在兩米左右所以采用兩級(jí)放大,用LF353實(shí)現(xiàn)。第一級(jí)放大100倍,第二
20、級(jí)放大50倍總計(jì)放大5000倍,這樣不僅放大增益足夠大,可以適合小信號(hào)的需求,而且信號(hào)增益也能夠變化,適應(yīng)信號(hào)變化范圍大的需求。放大后的交流信號(hào)經(jīng)LM567鎖相環(huán)鎖定后向CPU發(fā)中斷申請(qǐng)。在中斷服務(wù)程序中,讀取時(shí)間計(jì)數(shù)器的計(jì)數(shù)值,并通過(guò)計(jì)算算出雷達(dá)與障礙物的距離。接收探頭將超聲波調(diào)制脈沖變?yōu)榻蛔冸妷盒盘?hào),經(jīng)運(yùn)算放大器兩極放大后加至LM567。LM567是帶有鎖相環(huán)的音頻譯碼集成塊,LM567內(nèi)部的壓控振蕩器的中心頻率,接收電路如圖4.2所示。電容C7決定其鎖定帶寬。調(diào)節(jié)R10在發(fā)射的載頻上,則LM567輸入信號(hào)大于25mV,輸出端8腳由高電平躍變?yōu)榈碗娖?,作為中斷?qǐng)求信號(hào),送至單片機(jī)處理。選頻
21、放大電路的作用是僅允許一定頻率的信號(hào)通過(guò)并放大,而其他頻率的信號(hào)將被阻斷或衰減。只要把選頻放大電路工作的中心頻率設(shè)定為40 KHz,就可以把其他頻率的干擾信號(hào)清除或衰減,同時(shí)把40 KHz的回波信號(hào)進(jìn)行放大。本設(shè)計(jì)中,將超聲波發(fā)射模塊與接收模塊集成與一個(gè)電路板上,如圖所示: 圖3-1 超聲波發(fā)射與接收模塊3.3 單片機(jī)控制系統(tǒng)本設(shè)計(jì)控制系統(tǒng)中所用使用的單片機(jī)型號(hào)為AT89S52,下面就其功能特點(diǎn)及其結(jié)構(gòu)作些簡(jiǎn)單介紹。AT89S52是美國(guó)ATMEL 公司所生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。使用其公司高密度非易失性存儲(chǔ)器技術(shù)制造,片上Flash允許
22、程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。AT89S52單片機(jī)具有很高的性價(jià)比,可以靈活應(yīng)運(yùn)于眾多控制領(lǐng)域中。主要性能參數(shù):·與MCS-51產(chǎn)品指令系統(tǒng)兼容 ·4K字節(jié)可編程閃爍存儲(chǔ)器 ·壽命:1000寫/擦循環(huán)·數(shù)據(jù)保留時(shí)間:10年·全靜態(tài)工作:0Hz-24Hz·三級(jí)程序存儲(chǔ)器鎖定·128*8位內(nèi)部RAM·32可編程I/O線·兩個(gè)16位定時(shí)器/計(jì)數(shù)器·5個(gè)中斷源 ·可編程串行通道·低功耗的閑置和掉電模式·片內(nèi)振蕩器和時(shí)鐘電路 圖3-2 AT89S52簡(jiǎn)圖3.4 顯
23、示模塊出于功能及性價(jià)比的考慮,顯示模塊中所用使用的顯示器為L(zhǎng)CD1062液晶顯示器。以下對(duì)其進(jìn)行一些說(shuō)明。 圖3-3 LCD1602液晶顯示器簡(jiǎn)圖 圖3-4 LCD1602液晶顯示器實(shí)物圖 引腳說(shuō)明引腳符號(hào)功能說(shuō)明1VSS一般接地2VDD接電源(+5V)3V0液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高(對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度)。4RSRS為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。5R/WR/W為讀寫信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫操作。6EE(或EN)端為
24、使能(enable)端,寫操作時(shí),下降沿使能。讀操作時(shí),E高電平有效7DB0低4位三態(tài)、 雙向數(shù)據(jù)總線 0位(最低位)8DB1低4位三態(tài)、 雙向數(shù)據(jù)總線 1位9DB2低4位三態(tài)、 雙向數(shù)據(jù)總線 2位10DB3低4位三態(tài)、 雙向數(shù)據(jù)總線 3位11DB4高4位三態(tài)、 雙向數(shù)據(jù)總線 4位12DB5高4位三態(tài)、 雙向數(shù)據(jù)總線 5位13DB6高4位三態(tài)、 雙向數(shù)據(jù)總線 6位14DB7高4位三態(tài)、 雙向數(shù)據(jù)總線 7位(最高位)(也是busy flag)15BLA背光電源正極16BLK背光 電源負(fù)極表3-1LCD1602液晶顯示器引腳說(shuō)明鍵盤模塊和供電單元略第四章 軟件設(shè)計(jì)4.1 軟件的設(shè)計(jì)要求本系統(tǒng)的設(shè)計(jì)
25、要求是利用超聲波測(cè)距原理設(shè)計(jì)一個(gè)汽車防撞報(bào)警器。要求通過(guò)設(shè)計(jì)能夠測(cè)量出并顯示車與障礙物之間的距離,并能在距離小于一定的值的時(shí)候根據(jù)設(shè)定的值進(jìn)行聲光報(bào)警。4.2 軟件設(shè)計(jì)的總體結(jié)構(gòu)框圖圖4-1 系統(tǒng)模塊框圖系統(tǒng)初始化模塊:即系統(tǒng)剛上電的時(shí)候?qū)ο到y(tǒng)的各個(gè)引腳的電平分配和對(duì)各寄存器的初值賦值。數(shù)碼管顯示模塊:通過(guò)該模塊的設(shè)計(jì)能夠讓所測(cè)得的距離等信息顯示在數(shù)碼管上。按鍵掃描模塊:此模塊用來(lái)通過(guò)鍵盤控制系統(tǒng)的工作。發(fā)射接收控制模塊:發(fā)射控制模塊是軟件控制超聲波發(fā)射電路發(fā)射。超聲脈沖啟動(dòng)定時(shí)器工作,同時(shí)啟動(dòng)接收電路工作,當(dāng)接收電路有信號(hào)輸入時(shí),對(duì)輸入信號(hào)進(jìn)行處理。運(yùn)算結(jié)果處理模塊:運(yùn)算結(jié)果處理模塊將多次所
26、測(cè)的時(shí)間進(jìn)行處理,進(jìn)行軟件取大值工作,根據(jù)公式計(jì)算出距離,然后再對(duì)計(jì)算得出的結(jié)果進(jìn)行修正處理,數(shù)據(jù)處理后送至數(shù)碼管顯示模塊。聲光報(bào)警模塊:當(dāng)所測(cè)距離小于一定值時(shí),通過(guò)聲光報(bào)警來(lái)提醒使用者。4.3 各個(gè)程序的流程圖本節(jié)講述的是各個(gè)程序流程圖的設(shè)計(jì),包括:主程序流程圖、測(cè)距程序流程圖、距離處理流程圖、語(yǔ)音播報(bào)程序流程圖、LED顯示程序流程圖、中斷程序流程圖。4.3.1 主流程圖圖4-2 主程序流程圖工作時(shí),微處理器AT89S52先把P1.0置0,啟動(dòng)超聲波傳感器發(fā)射超聲波,同時(shí)啟動(dòng)內(nèi)部定時(shí)器T0開始計(jì)時(shí)。要檢測(cè)返回信號(hào)必須在啟動(dòng)發(fā)射信號(hào)后1.4ms才可以檢測(cè),這樣就可以抑制輸出得干擾。當(dāng)超聲波信號(hào)
27、碰到障礙物時(shí)信號(hào)立刻返回,微處理器不停的掃描INT0引腳,如果INT0接收的信號(hào)由高電平變?yōu)榈碗娖?,此時(shí)表明信號(hào)已經(jīng)返回,微處理器進(jìn)入中斷關(guān)閉定時(shí)器。再把定時(shí)器中的數(shù)據(jù)經(jīng)過(guò)換算就可以得出超聲波傳感器與障礙物之間的距離。然后再根據(jù)現(xiàn)場(chǎng)的情況進(jìn)行聲光報(bào)警。4.3.2 發(fā)射接收模塊流程主程序調(diào)用測(cè)量子程序,計(jì)算子程序,顯示子程序完成一個(gè)測(cè)量周期。測(cè)量子程序如下:圖4-3 測(cè)量子程序流程圖考慮到在測(cè)量的距離超過(guò)一定限度后誤差會(huì)變大,可以在大于一定距離后采用軟件修正,補(bǔ)償實(shí)際測(cè)的數(shù)據(jù),當(dāng)然這要在調(diào)試中收集大量的實(shí)際測(cè)試數(shù)據(jù)后在單片機(jī)中設(shè)置。當(dāng)計(jì)算時(shí)為了提高計(jì)算精度可以用計(jì)算計(jì)數(shù)脈沖個(gè)數(shù)來(lái)提高計(jì)算精度,改
28、進(jìn)后的公式如公式4-1: (4-1)其中N表示為計(jì)數(shù)脈沖個(gè)數(shù),v為超聲波在空氣中的速度,f為計(jì)數(shù)頻率也即單片機(jī)的晶振頻率。4.3.3 中斷程序流程在中斷程序中,當(dāng)有中斷產(chǎn)生也即接收到超聲波信號(hào)就馬上關(guān)閉中斷與定時(shí)器,并進(jìn)行距離計(jì)算與判斷的工作。圖4-4 中斷程序流程圖時(shí)間計(jì)測(cè):超聲波從發(fā)射到接收的間隔時(shí)間的測(cè)定是由單片機(jī)內(nèi)部的計(jì)數(shù)器T0來(lái)完成的。在調(diào)試過(guò)程中出現(xiàn)的發(fā)送部分與接收部分的直接串?dāng)_問(wèn)題是由于換能器之間的距離不大,有部分聲波未經(jīng)被測(cè)物就直接繞射到接收換能器上。從發(fā)射開始一直到“虛假反射波”結(jié)束這段時(shí)間,通過(guò)控制觸發(fā)器不能觸發(fā),也即超聲波發(fā)射后不是馬上的接收,而是要經(jīng)過(guò)一段時(shí)間的等待再接
29、收,使不會(huì)發(fā)中斷申請(qǐng),可有效躲避干擾,但也會(huì)形成所謂的“盲區(qū)”。本系統(tǒng)的盲區(qū)通過(guò)計(jì)算在24cm左右。4.4 部分程序#include <AT89x51.H>/器件配置文件#include <intrins.h>#define RX P3_1#define TX P3_2#define LCM_RW P2_1 /定義LCD引腳#define LCM_RS P2_0#define LCM_E P2_2sbit BUSY = P07;#define LCM_Data P0#define buzzer P2_3#define LED P3_6#define LCD_COMMAN
30、D0 / Command#define LCD_DATA1 / Datasfr DBPort = 0x80;sbit DQ = P37; /溫度傳送數(shù)據(jù)IO口unsigned int TempBuffer7;unsigned int temp_value,xiaoshu; /溫度值#define Busy 0x80 /用于檢測(cè)LCM狀態(tài)字中的Busy標(biāo)識(shí)void LCMInit(void);void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);void DisplayListChar(unsigne
31、d char X, unsigned char Y, unsigned char code *DData);void Delay5Ms(void);void Delay400Ms(void);void Decode(unsigned char ScanCode);void WriteDataLCM(unsigned char WDLCM);void WriteCommandLCM(unsigned char WCLCM,BuysC);unsigned char ReadDataLCM(void);unsigned char ReadStatusLCM(void);unsigned char c
32、ode mcustudio ="Temp: " /unsigned char code email = "NAME:Zhu Kailun "unsigned char code Cls = " "unsigned char code Distance = "Distance: "unsigned char code ASCII15 = '0','1','2','3','4','5','6','7&
33、#39;,'8','9','.','-','M'static unsigned char DisNum = 0; /顯示用指針 unsigned int time=0; unsigned long S=0; bit flag =0; unsigned char disbuff4 = 0,0,0,0,;/寫數(shù)據(jù)void WriteDataLCM(unsigned char WDLCM) ReadStatusLCM(); /檢測(cè)忙LCM_Data = WDLCM;LCM_RS = 1;LCM_RW = 0;LCM_E
34、= 0; /若晶振速度太高可以在這后加小的延時(shí)LCM_E = 0; /延時(shí)LCM_E = 1;/寫指令void WriteCommandLCM(unsigned char WCLCM,BuysC) /BuysC為0時(shí)忽略忙檢測(cè)if (BuysC) ReadStatusLCM(); /根據(jù)需要檢測(cè)忙LCM_Data = WCLCM;LCM_RS = 0;LCM_RW = 0;LCM_E = 0;LCM_E = 0;LCM_E = 1;/讀數(shù)據(jù)unsigned char ReadDataLCM(void)LCM_RS = 1; LCM_RW = 1;LCM_E = 0;LCM_E = 0;LCM_
35、E = 1;return(LCM_Data);/讀狀態(tài)unsigned char ReadStatusLCM(void)LCM_Data = 0xFF; LCM_RS = 0;LCM_RW = 1;LCM_E = 0;LCM_E = 0;LCM_E = 1;while (LCM_Data & Busy); /檢測(cè)忙信號(hào)return(LCM_Data); 等待繁忙標(biāo)志void wait(void)P0 = 0xFF;doLCM_RS = 0;LCM_RW = 1;LCM_E = 0;LCM_E = 1;while (BUSY = 1);LCM_E = 0;void w_dat(unsig
36、ned int dat)wait();LCM_E = 0;P0 = dat;LCM_RS = 1;LCM_RW = 0;LCM_E = 1;LCM_E = 0;void w_cmd(unsigned int cmd)wait();LCM_E = 0;P0 = cmd;LCM_RS = 0;LCM_RW = 0;LCM_E = 1;LCM_E = 0;void w_string(unsigned int addr_start, unsigned int *p)w_cmd(addr_start | 0x80);while (*p != '0')w_dat(*p+);void w_d
37、ata(unsigned int addr_start, unsigned int dat)w_cmd(addr_start | 0x80);w_dat(dat%100/10 + '0');w_dat(dat%10 + '0');void LCMInit(void) /LCM初始化LCM_Data = 0;WriteCommandLCM(0x38,0); /三次顯示模式設(shè)置,不檢測(cè)忙信號(hào)Delay5Ms(); WriteCommandLCM(0x38,0);Delay5Ms(); WriteCommandLCM(0x38,0);Delay5Ms(); Write
38、CommandLCM(0x38,1); /顯示模式設(shè)置,開始要求每次檢測(cè)忙信號(hào)WriteCommandLCM(0x08,1); /關(guān)閉顯示W(wǎng)riteCommandLCM(0x01,1); /顯示清屏WriteCommandLCM(0x06,1); / 顯示光標(biāo)移動(dòng)設(shè)置WriteCommandLCM(0x0F,1); / 顯示開及光標(biāo)設(shè)置/按指定位置顯示一個(gè)字符void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)Y &= 0x1;X &= 0xF; /限制X不能大于15,Y不能大于1i
39、f (Y) X |= 0x40; /當(dāng)要顯示第二行時(shí)地址碼+0x40;X |= 0x80; /算出指令碼WriteCommandLCM(X, 1); /發(fā)命令字WriteDataLCM(DData); /發(fā)數(shù)據(jù)/按指定位置顯示一串字符void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)unsigned char ListLength; ListLength = 0;Y &= 0x1;X &= 0xF; /限制X不能大于15,Y不能大于1while (DDataListL
40、ength>0x19) /若到達(dá)字串尾則退出if (X <= 0xF) /X坐標(biāo)應(yīng)小于0xFDisplayOneChar(X, Y, DDataListLength); /顯示單個(gè)字符ListLength+;X+;LCD_Wait(void)LCM_RS=0;LCM_RW=1;_nop_();LCM_E=1;_nop_(); LCM_E=0;return DBPort;void LCD_Write(bit style, unsigned char input)LCM_E=0;LCM_RS=style;LCM_RW=0;_nop_();DBPort=input;_nop_();/注意
41、順序LCM_E=1;_nop_();/注意順序LCM_E=0;_nop_();LCD_Wait();void GotoXY(unsigned char x, unsigned char y)if(y=0)LCD_Write(LCD_COMMAND,0x80|x);if(y=1)LCD_Write(LCD_COMMAND,0x80|(x-0x40);void Print(unsigned char *str)while(*str!='0')LCD_Write(LCD_DATA,*str);str+;void delay_18B20(unsigned int i)while(i-)
42、;void Init_DS18B20(void) unsigned char x=0; DQ = 1; /DQ復(fù)位 delay_18B20(8); /稍做延時(shí) DQ = 0; /單片機(jī)將DQ拉低 delay_18B20(80); /精確延時(shí) 大于 480us DQ = 1; /拉高總線 delay_18B20(14); x=DQ; /稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗 delay_18B20(20);unsigned char ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i
43、-) DQ = 0; / 給脈沖信號(hào) dat>>=1; DQ = 1; / 給脈沖信號(hào) if(DQ) dat|=0x80; delay_18B20(4); return(dat); void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i>0; i-) DQ = 0; DQ = dat&0x01; delay_18B20(5); DQ = 1; dat>>=1; void ReadTemp(void)unsigned char a=0;unsigned char b=0;unsi
44、gned char t=0;Init_DS18B20();WriteOneChar(0xCC); / 跳過(guò)讀序號(hào)列號(hào)的操作WriteOneChar(0x44); / 啟動(dòng)溫度轉(zhuǎn)換delay_18B20(100); / this message is wery importantInit_DS18B20();WriteOneChar(0xCC); /跳過(guò)讀序號(hào)列號(hào)的操作WriteOneChar(0xBE); /讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是溫度delay_18B20(100);a=ReadOneChar(); /讀取溫度值低位b=ReadOneChar(); /讀取溫度值高位x
45、iaoshu=a&0x0f;temp_value=b<<4;temp_value+=(a&0xf0)>>4; void temp_to_str() /溫度數(shù)據(jù)轉(zhuǎn)換成液晶字符顯示 TempBuffer0=temp_value/10+'0' /十位 TempBuffer1=temp_value%10+'0' /個(gè)位 TempBuffer2=0x2e; TempBuffer3=xiaoshu*10/16+'0'/小數(shù) TempBuffer4=0xdf; /溫度符號(hào) TempBuffer5='C'
46、TempBuffer6='0' /5ms延時(shí)void Delay5Ms(void)unsigned int TempCyc = 5552;while(TempCyc-);/400ms延時(shí)void Delay400Ms(void)unsigned char TempCycA = 5;unsigned int TempCycB;while(TempCycA-)TempCycB=7269;while(TempCycB-); void Conut(void) time=TH0*256+TL0; TH0=0; TL0=0; LED=1; /rsd=0; S=(time*1.7)/100;
47、 /算出來(lái)是CM if(S<50)&(S>30) buzzer=0; LED=0; Delay400Ms(); /延時(shí) buzzer=1; LED=1; else if(S<30)&(S>1) buzzer=0; LED=0; Delay5Ms(); /延時(shí) Delay5Ms(); /延時(shí) Delay5Ms(); /延時(shí) Delay5Ms(); /延時(shí) buzzer=1; LED=1; if(S>=700)|flag=1) /超出測(cè)量范圍顯示“-” flag=0; DisplayOneChar(11, 1, ASCII11); DisplayOne
48、Char(12, 1, ASCII10);/顯示點(diǎn) DisplayOneChar(13, 1, ASCII11); DisplayOneChar(14, 1, ASCII11); DisplayOneChar(15, 1, ASCII12);/顯示M else disbuff0=S%1000/100; disbuff1=S%1000%100/10; disbuff2=S%1000%10 %10; DisplayOneChar(11, 1, ASCIIdisbuff0); DisplayOneChar(12, 1, ASCII10);/顯示點(diǎn) DisplayOneChar(13, 1, ASCI
49、Idisbuff1); DisplayOneChar(14, 1, ASCIIdisbuff2); DisplayOneChar(15, 1, ASCII12);/顯示M void zd0() interrupt 1 /T0中斷用來(lái)計(jì)數(shù)器溢出,超過(guò)測(cè)距范圍 flag=1; /中斷溢出標(biāo)志 void StartModule() /啟動(dòng)模塊 TX=1; /啟動(dòng)一次模塊 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
50、 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TX=0; void delayms(unsigned int ms)unsigned char i=100,j;for(;ms;ms-)while(-i)j=10;while(-j);void main(void)unsigned char TempCyc;Delay400Ms(); /啟動(dòng)等待,等LCM講入工作狀態(tài)LCMInit(); /LCM初始化Delay5Ms(); /延時(shí)片刻(可不要)DisplayListChar(0, 0, mcustudio);ReadDataLCM();/測(cè)試用句無(wú)意義for (TempCyc=0; TempCyc<10; TempCyc+)Delay400Ms(); /延時(shí)DisplayListChar(0, 1, Distance);DisplayListChar(11, 1, Cls);ReadTemp(); /開啟溫度采集程序 temp_to_str(); /溫度數(shù)據(jù)轉(zhuǎn)換成液晶字符GotoXY(8,0); Print(TempBuffer); /顯示溫度while(1) TMOD=0x01; /設(shè)T0為方
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 碳捕集過(guò)程節(jié)能減排研究-洞察分析
- 無(wú)人機(jī)自主導(dǎo)航-洞察分析
- 通訊設(shè)備制造業(yè)人才需求與培養(yǎng)-洞察分析
- 小腦性共濟(jì)失調(diào)與遺傳因素關(guān)聯(lián)-洞察分析
- 印刷數(shù)字化技術(shù)-洞察分析
- 語(yǔ)音識(shí)別與虛擬現(xiàn)實(shí)結(jié)合-洞察分析
- 醫(yī)療服務(wù)連續(xù)性與連鎖反應(yīng)-洞察分析
- 雪藻生物量動(dòng)態(tài)變化-洞察分析
- 隱私保護(hù)技術(shù)產(chǎn)業(yè)生態(tài)構(gòu)建-洞察分析
- 語(yǔ)言變異對(duì)教育的影響-洞察分析
- 《CIS企業(yè)形象策劃》課件
- 機(jī)器加盟協(xié)議合同范例
- 2024-2030年中國(guó)油田服務(wù)市場(chǎng)發(fā)展?jié)摿εc前景戰(zhàn)略規(guī)劃分析報(bào)告
- 黑龍江省哈爾濱市道里區(qū)2023-2024學(xué)年八年級(jí)上學(xué)期數(shù)學(xué)期末考試試卷
- 碼頭操作管理制度
- 全過(guò)程造價(jià)咨詢實(shí)施方案
- 藥品運(yùn)送工作指導(dǎo)方案模版(4篇)
- 浙江工業(yè)大學(xué)之江學(xué)院《建筑結(jié)構(gòu)選型》2023-2024學(xué)年第一學(xué)期期末試卷
- 倉(cāng)庫(kù)管理培訓(xùn)課件
- 2024年居間服務(wù)合同:律師事務(wù)所合作與業(yè)務(wù)推廣
- 大型活動(dòng)音響設(shè)備保養(yǎng)方案
評(píng)論
0/150
提交評(píng)論