汽車防撞報(bào)警器的設(shè)計(jì)_第1頁
汽車防撞報(bào)警器的設(shè)計(jì)_第2頁
汽車防撞報(bào)警器的設(shè)計(jì)_第3頁
汽車防撞報(bào)警器的設(shè)計(jì)_第4頁
汽車防撞報(bào)警器的設(shè)計(jì)_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

汽車防撞報(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)是體積小、使用方便、硬件電路簡單,軟件功能完善,控制系統(tǒng)可靠,具有一定的使用和參考價(jià)值。該系統(tǒng)利用超聲波實(shí)現(xiàn)對(duì)汽車的測距,利用單片機(jī)的實(shí)時(shí)控制和數(shù)據(jù)處理功能完成系統(tǒng)的控制?!娟P(guān)鍵詞】單片機(jī);AT89S52;超聲波Designofautomotiveanti-collisionalarm【Abstract】ThedesignofthemainapplicationAT89S52asthecontrol,anddisplaydriverintegratedcircuitsandothersystems.MCUAT89S52usingthecontrollerasanalarmdevicethatcangivefullplaytoAT89S52ofdataprocessingandreal-timecontrolfunctions.Makethesystemworkinthebestcondition,improvethesystemsensitivity.Theadvantageissmall,easytouse,simplehardwarecircuit,software,functional,andreliablecontrolsystemhassomevalueinuseandreference.Theuseofultrasoundtoachievecollisionavoidancealarmonthecar'sdistance.Real-timecontrolofsingle-chipcomputeranddataprocessingfunctionstocompletecontrolofthesystem.【Keywords】SCM;AT89S52;Ultrasonic

目錄第一章緒論131.1課題研究的背景和意義131.2汽車防撞報(bào)警器的開展現(xiàn)狀13第二章汽車防撞報(bào)警器的原理和總體設(shè)計(jì)162.1汽車防撞報(bào)警器的原理162.1.1壓電式超聲波傳感器簡介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各個(gè)程序的流程圖234.3.1主流程圖244.3.2發(fā)射接收模塊流程244.3.3中斷程序流程254.4局部程序26第五章調(diào)試425.1測距模塊的調(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第一章緒論隨著我國社會(huì)經(jīng)濟(jì)的高速開展,交通運(yùn)輸業(yè)日益興旺,汽車的數(shù)量逐漸增加。交通擁擠狀況也日趨嚴(yán)重,撞碰車事件屢屢發(fā)生,造成了很大的人身傷亡和經(jīng)濟(jì)損失,汽車駕駛員也越來越擔(dān)憂車的平安了。針對(duì)這種情況,設(shè)計(jì)一種響應(yīng)快,可靠性高且較為經(jīng)濟(jì)的汽車防撞報(bào)警系統(tǒng)勢在必行,超聲波測距法是最常見的一種距離測距方法,本設(shè)計(jì)介紹用AT89S52單片機(jī)控制的汽車防撞報(bào)警系統(tǒng)。該裝置將單片機(jī)的實(shí)時(shí)控制及數(shù)據(jù)處理功能與超聲波的測距技術(shù)、傳感器技術(shù)相結(jié)合,可檢測汽車運(yùn)行中前方障礙物與汽車的距離及汽車車速。通過數(shù)字顯示裝置顯示距離,并由發(fā)聲電路根據(jù)距離遠(yuǎn)近情況發(fā)出警告聲。1.1課題研究的背景和意義科技的飛速開展拉動(dòng)了經(jīng)濟(jì)的飛躍,私家車逐漸走近了千家萬戶。但隨著車輛的增加,停車難的問題也凸顯出來。狹小的停車場地常常令有車一族感到苦惱,稍有不慎,車輛就可能與他人車輛或障礙物發(fā)生碰撞,造成損失。雖然車輛都有后視鏡,但由于角度問題,不可防止的存在著后視盲區(qū),并不能有效的解決碰撞問題。汽車防撞報(bào)警器是汽車倒車或者泊車時(shí)使用的平安輔助裝置,它可以通過聲音、燈光指示或是屏幕顯示等手段告知駕駛者車輛周圍的障礙物情況,令駕駛者及時(shí)調(diào)整車輛行進(jìn)方向以便于躲避,解除了駕駛者不便于直接目測與障礙物間距離的困擾,大大的提高了駕駛的平安性??梢哉f,汽車防撞報(bào)警器是車輛必不可少的應(yīng)用設(shè)備之一。1.2汽車防撞報(bào)警器的開展現(xiàn)狀通常,汽車防撞報(bào)警器由超聲波傳感器(俗稱探頭)、控制器和顯示器(或蜂鳴器)等局部組成。汽車防撞報(bào)警器一般采用超聲波測距原理,在控制器的控制下,由傳感器發(fā)射超聲波信號(hào),當(dāng)遇到障礙物時(shí),產(chǎn)生回波信號(hào),傳感器接收到回波信號(hào)后經(jīng)控制器進(jìn)行數(shù)據(jù)處理、判斷出障礙物的位置,由顯示器顯示距離并發(fā)出其他警示信號(hào),得到及時(shí)警示,從而使駕駛者倒車時(shí)做到心中有數(shù),使倒車變得更輕松。在幾年的時(shí)間里,隨著技術(shù)開展和用戶需求的變化,汽車防撞報(bào)警器經(jīng)過了大致六代的開展。第一代:倒車時(shí)通過喇叭提醒。當(dāng)車輛倒車時(shí)會(huì)發(fā)出“倒車請(qǐng)注意”的提醒聲音,這就是汽車防撞報(bào)警器的第一代產(chǎn)品。現(xiàn)在只有小局部車輛還在使用。只要司機(jī)掛上倒檔,它就會(huì)響起,提醒周圍的人注意。從一定意義上說,它對(duì)駕駛者并沒有直接的幫助,不是真正的汽車防撞報(bào)警器。它價(jià)格廉價(jià),使用性能不高,已被市場淘汰。第二代:采用蜂鳴器不同聲音提示駕駛員。這是汽車防撞報(bào)警器系統(tǒng)的真正開始。倒車時(shí),如果車后1.8米-1.5米處有障礙物,蜂鳴器就會(huì)開始工作,發(fā)出警報(bào)聲。蜂鳴聲越急,表示車輛離障礙物越近。但由于沒有語音提示,也沒有距離顯示,司機(jī)即使知道有障礙物,卻不能確定障礙物離車有多遠(yuǎn),對(duì)駕駛員幫助也不是太大。第三代:數(shù)碼波段顯示具體距離或者距離范圍。這代產(chǎn)品比第二代進(jìn)步很多,可以顯示車后障礙物離車體的距離。如果是物體,在1.8米開始顯示;如果是人,在0.9米左右的距離開始顯示。這一代產(chǎn)品有兩種顯示方式,數(shù)碼顯示產(chǎn)品顯示距離數(shù)字,而波段顯示產(chǎn)品由三種顏色來區(qū)別:綠色代表平安距離,黃色代表警告距離,紅色代表危險(xiǎn)距離,必須停止倒車。第三代產(chǎn)品把數(shù)碼和波段組合在一起,雖然比擬實(shí)用,但安裝在車內(nèi)不太美觀。第四代:液晶熒屏動(dòng)態(tài)顯示。這一代產(chǎn)品有一個(gè)質(zhì)的飛躍,特別是屏幕顯示開始出現(xiàn)動(dòng)態(tài)顯示系統(tǒng)。不用掛倒檔,只要發(fā)動(dòng)汽車,顯示器上就會(huì)出現(xiàn)汽車圖案以及車輛周圍障礙物的距離,色彩清晰漂亮,外表美觀,可以直接粘貼在儀表盤上,安裝很方便。不過液晶顯示器外觀雖精巧,但靈敏度較高,抗干擾能力較差,誤報(bào)也較多。第五代:魔幻鏡汽車防撞報(bào)警器。結(jié)合了前幾代產(chǎn)品的優(yōu)點(diǎn),采用了最新仿生超聲雷達(dá)技術(shù),配以高速電腦控制,可全天候準(zhǔn)確地測知2米以內(nèi)的障礙物,并以不同等級(jí)的聲音提示和直觀的顯示提醒駕駛員。魔幻鏡汽車防撞報(bào)警器可以把后視鏡、汽車防撞報(bào)警器、免提、溫度顯示和車內(nèi)空氣污染顯示等多項(xiàng)功能整合在一起,并設(shè)計(jì)了語音功能。因?yàn)槠渫庑尉褪且粔K倒車鏡,所以可以不占用車內(nèi)空間,直接安裝在車內(nèi)后視鏡的位置。而且顏色款式多樣,可以按照個(gè)人需求和車內(nèi)裝飾選配。第六代:整合影音系統(tǒng)。它在第五代產(chǎn)品的根底上新增了很多功能,屬于第六代產(chǎn)品,是專門為高檔轎車生產(chǎn)的。從外觀上來看,這套系統(tǒng)比第五代產(chǎn)品更為精致典雅;從功能上來看,它除了具備第五代產(chǎn)品的所有功能之外,還整合了高檔轎車具備的影音系統(tǒng),可以在顯示器上觀看DVD影像。價(jià)格較高。汽車防撞報(bào)警器對(duì)于駕駛者的巨大作用,使得它成為各種車輛上的必備品。第二章汽車防撞報(bào)警器的原理和總體設(shè)計(jì)2.1汽車防撞報(bào)警器的原理用來測距的方式多種多樣。短距離測距可以使用尺子等刻度工具,遠(yuǎn)距離可以使用激光測距等方法,而超聲波測距一般應(yīng)用與中短距離測量。本設(shè)計(jì)的工作原理便是超聲波測距原理。超聲波因其頻率下限大約等于人的聽覺上限而得名。它方向性好,穿透能力強(qiáng),易于獲得較集中的聲能,在水中傳播距離遠(yuǎn),在醫(yī)學(xué)、軍事、工業(yè)、農(nóng)業(yè)上有很多的應(yīng)用。聲波的傳播速度與溫度有關(guān)。由于超聲波也是一種聲波,如果在測距過程中環(huán)境溫度與常溫差距較大,那么必須考慮溫度。下表列出了幾種不同溫度下的聲速。在使用時(shí),如果溫度變化不大,那么可認(rèn)為聲速是根本不變的。如果測距精度要求很高,那么應(yīng)通過溫度補(bǔ)償?shù)姆椒右孕UB曀俅_定后,只要測得超聲波往返的時(shí)間,即可求得距離。表2-1聲速與溫度的關(guān)系溫度(℃)-30-20-100102030100聲速(米/秒)313319325333338344349386超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射時(shí)刻的同時(shí)開始計(jì)時(shí),超聲波在空氣中傳播,途中碰到障礙物就立即返回來,超聲波接收器收到反射波就立即停止計(jì)時(shí)。超聲波在常溫空氣中(20℃)的傳播速度為〔V〕為340m/s(實(shí)際速度為344m/s,這里取整數(shù)),根據(jù)計(jì)時(shí)器記錄的時(shí)間〔T〕,就可以計(jì)算出發(fā)射點(diǎn)距障礙物的距離〔S〕。S=340T/2這就是所謂的時(shí)間差測距法。為了以超聲波作為檢測手段,必須產(chǎn)生超生波和接收超聲波。完成這種功能的裝置就是超聲波傳感器。超聲波傳感器有發(fā)送器和接收器,但一個(gè)超聲波傳感器也可具有發(fā)送和接收聲波的雙重作用。常用的超聲波傳感器可以分為二大類,一是用電氣方式產(chǎn)生超聲波,如壓電式、磁致伸縮式超聲波發(fā)生器;二是用機(jī)械方式產(chǎn)生超聲波,有加爾統(tǒng)笛、液哨和氣流旋笛等。下面我們主要介紹本設(shè)計(jì)所使用的壓電式超聲波傳感器。2.1.1壓電式超聲波傳感器簡介壓電式超聲波傳感器的主要組成局部是壓電晶片。當(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ì)中。在壓電陶瓷上加有大小和方向不斷變化的交流電壓時(shí),根據(jù)壓電效應(yīng),就會(huì)使壓電陶瓷晶片產(chǎn)生機(jī)械變形,這種機(jī)械變形的大小和方向在一定范圍內(nèi)是與外加電壓的大小和方向成正比的。也就是說,在壓電陶瓷晶片上加有頻率為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í)際上是利用壓電晶體的諧振來工作的,超聲波發(fā)生器內(nèi)部結(jié)構(gòu)如圖2-1所示,它有兩個(gè)壓電晶片和一個(gè)共振板,當(dāng)它的兩極外加脈沖信號(hào),其頻率等于壓電晶片的固有振蕩頻率時(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ī)控制模塊、顯示模塊、鍵盤模塊、超聲波發(fā)射模塊、超聲波接收模塊,一共五個(gè)模塊構(gòu)成。單片機(jī)控制系統(tǒng)使用51單片機(jī)系列的AT89S52單片機(jī)作為控制器,該型號(hào)單片機(jī)工作性能穩(wě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í)鐘頻率,減小測量誤差。單片機(jī)用P1.0端口控制發(fā)射和停止輸出超聲波換能器所需的40KHz的方波信號(hào),利用外中斷0口監(jiān)測超聲波接收電路輸出的返回信號(hào)。顯示電路采用簡單實(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),通過輸出引腳輸入至驅(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)是無須驅(qū)動(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)的壓電式超聲波傳感器,否那么將因無法產(chǎn)生共振而影響接收效果,甚至無法接收。由于經(jīng)探頭變換后的正弦波電信號(hào)非常弱,因此必須經(jīng)放大電路放大。由于是汽車報(bào)警器系統(tǒng)所測距離在兩米左右所以采用兩級(jí)放大,用LF353實(shí)現(xiàn)。第一級(jí)放大100倍,第二級(jí)放大50倍總計(jì)放大5000倍,這樣不僅放大增益足夠大,可以適合小信號(hào)的需求,而且信號(hào)增益也能夠變化,適應(yīng)信號(hào)變化范圍大的需求。放大后的交流信號(hào)經(jīng)LM567鎖相環(huán)鎖定后向CPU發(fā)中斷申請(qǐng)。在中斷效勞程序中,讀取時(shí)間計(jì)數(shù)器的計(jì)數(shù)值,并通過計(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ī)處理。選頻放大電路的作用是僅允許一定頻率的信號(hào)通過并放大,而其他頻率的信號(hào)將被阻斷或衰減。只要把選頻放大電路工作的中心頻率設(shè)定為40KHz,就可以把其他頻率的干擾信號(hào)去除或衰減,同時(shí)把40KHz的回波信號(hào)進(jìn)行放大。本設(shè)計(jì)中,將超聲波發(fā)射模塊與接收模塊集成與一個(gè)電路板上,如下圖:圖3-1超聲波發(fā)射與接收模塊單片機(jī)控制系統(tǒng)本設(shè)計(jì)控制系統(tǒng)中所用使用的單片機(jī)型號(hào)為AT89S52,下面就其功能特點(diǎn)及其結(jié)構(gòu)作些簡單介紹。AT89S52是美國ATMEL公司所生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。使用其公司高密度非易失性存儲(chǔ)器技術(shù)制造,片上Flash允許程序存儲(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-2AT89S52簡圖顯示模塊出于功能及性價(jià)比的考慮,顯示模塊中所用使用的顯示器為LCD1062液晶顯示器。以下對(duì)其進(jìn)行一些說明。圖3-3LCD1602液晶顯示器簡圖圖3-4LCD1602液晶顯示器實(shí)物圖

引腳說明引腳符號(hào)功能說明1VSS一般接地2VDD接電源〔+5V〕3V0液晶顯示器比照度調(diào)整端,接正電源時(shí)比照度最弱,接地電源時(shí)比照度最高〔比照度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整比照度〕。4RSRS為存放器選擇,高電平1時(shí)選擇數(shù)據(jù)存放器、低電平0時(shí)選擇指令存放器。5R/WR/W為讀寫信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫操作。6EE(或EN)端為使能(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位〔最高位〕〔也是busyflag〕15BLA背光電源正極16BLK背光電源負(fù)極表3-1LCD1602液晶顯示器引腳說明鍵盤模塊和供電單元略第四章軟件設(shè)計(jì)4.1軟件的設(shè)計(jì)要求本系統(tǒng)的設(shè)計(jì)要求是利用超聲波測距原理設(shè)計(jì)一個(gè)汽車防撞報(bào)警器。要求通過設(shè)計(jì)能夠測量出并顯示車與障礙物之間的距離,并能在距離小于一定的值的時(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ù)碼管顯示模塊:通過該模塊的設(shè)計(jì)能夠讓所測得的距離等信息顯示在數(shù)碼管上。按鍵掃描模塊:此模塊用來通過鍵盤控制系統(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é)果處理模塊將屢次所測的時(shí)間進(jìn)行處理,進(jìn)行軟件取大值工作,根據(jù)公式計(jì)算出距離,然后再對(duì)計(jì)算得出的結(jié)果進(jìn)行修正處理,數(shù)據(jù)處理后送至數(shù)碼管顯示模塊。聲光報(bào)警模塊:當(dāng)所測距離小于一定值時(shí),通過聲光報(bào)警來提醒使用者。4.3各個(gè)程序的流程圖本節(jié)講述的是各個(gè)程序流程圖的設(shè)計(jì),包括:主程序流程圖、測距程序流程圖、距離處理流程圖、語音播報(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í)。要檢測返回信號(hào)必須在啟動(dòng)發(fā)射信號(hào)后1.4ms才可以檢測,這樣就可以抑制輸出得干擾。當(dāng)超聲波信號(hào)碰到障礙物時(shí)信號(hào)立刻返回,微處理器不停的掃描INT0引腳,如果INT0接收的信號(hào)由高電平變?yōu)榈碗娖剑藭r(shí)說明信號(hào)已經(jīng)返回,微處理器進(jìn)入中斷關(guān)閉定時(shí)器。再把定時(shí)器中的數(shù)據(jù)經(jīng)過換算就可以得出超聲波傳感器與障礙物之間的距離。然后再根據(jù)現(xiàn)場的情況進(jìn)行聲光報(bào)警。4.3.2發(fā)射接收模塊流程主程序調(diào)用測量子程序,計(jì)算子程序,顯示子程序完成一個(gè)測量周期。測量子程序如下:圖4-3測量子程序流程圖考慮到在測量的距離超過一定限度后誤差會(huì)變大,可以在大于一定距離后采用軟件修正,補(bǔ)償實(shí)際測的數(shù)據(jù),當(dāng)然這要在調(diào)試中收集大量的實(shí)際測試數(shù)據(jù)后在單片機(jī)中設(shè)置。當(dāng)計(jì)算時(shí)為了提高計(jì)算精度可以用計(jì)算計(jì)數(shù)脈沖個(gè)數(shù)來提高計(jì)算精度,改良后的公式如公式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ì)測:超聲波從發(fā)射到接收的間隔時(shí)間的測定是由單片機(jī)內(nèi)部的計(jì)數(shù)器T0來完成的。在調(diào)試過程中出現(xiàn)的發(fā)送局部與接收局部的直接串?dāng)_問題是由于換能器之間的距離不大,有局部聲波未經(jīng)被測物就直接繞射到接收換能器上。從發(fā)射開始一直到“虛假反射波”結(jié)束這段時(shí)間,通過控制觸發(fā)器不能觸發(fā),也即超聲波發(fā)射后不是馬上的接收,而是要經(jīng)過一段時(shí)間的等待再接收,使不會(huì)發(fā)中斷申請(qǐng),可有效躲避干擾,但也會(huì)形成所謂的“盲區(qū)”。本系統(tǒng)的盲區(qū)通過計(jì)算在24cm左右。4.4局部程序#include<AT89x51.H> //器件配置文件#include<intrins.h>#defineRXP3_1#defineTXP3_2#defineLCM_RWP2_1//定義LCD引腳#defineLCM_RSP2_0#defineLCM_EP2_2sbitBUSY=P0^7;#defineLCM_DataP0#definebuzzerP2_3#defineLEDP3_6#defineLCD_COMMAND 0//Command#defineLCD_DATA 1//DatasfrDBPort =0x80; sbitDQ=P3^7;//溫度傳送數(shù)據(jù)IO口unsignedintTempBuffer[7];unsignedinttemp_value,xiaoshu;//溫度值#defineBusy0x80//用于檢測LCM狀態(tài)字中的Busy標(biāo)識(shí)voidLCMInit(void);voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDData);voidDisplayListChar(unsignedcharX,unsignedcharY,unsignedcharcode*DData);voidDelay5Ms(void);voidDelay400Ms(void);voidDecode(unsignedcharScanCode);voidWriteDataLCM(unsignedcharWDLCM);voidWriteCommandLCM(unsignedcharWCLCM,BuysC);unsignedcharReadDataLCM(void);unsignedcharReadStatusLCM(void);unsignedcharcodemcustudio[]={"Temp:"}; //unsignedcharcodeemail[]={"NAME:ZhuKailun"};unsignedcharcodeCls[]={""};unsignedcharcodeDistance[]={"Distance:"};unsignedcharcodeASCII[15]={'0','1','2','3','4','5','6','7','8','9','.','-','M'};staticunsignedcharDisNum=0;//顯示用指針 unsignedinttime=0; unsignedlongS=0; bitflag=0; unsignedchardisbuff[4] ={0,0,0,0,};//寫數(shù)據(jù)voidWriteDataLCM(unsignedcharWDLCM){ ReadStatusLCM();//檢測忙 LCM_Data=WDLCM; LCM_RS=1; LCM_RW=0; LCM_E=0;//假設(shè)晶振速度太高可以在這后加小的延時(shí) LCM_E=0;//延時(shí) LCM_E=1;}//寫指令voidWriteCommandLCM(unsignedcharWCLCM,BuysC)//BuysC為0時(shí)忽略忙檢測{ if(BuysC)ReadStatusLCM();//根據(jù)需要檢測忙 LCM_Data=WCLCM; LCM_RS=0; LCM_RW=0; LCM_E=0; LCM_E=0; LCM_E=1; }//讀數(shù)據(jù)unsignedcharReadDataLCM(void){ LCM_RS=1; LCM_RW=1; LCM_E=0; LCM_E=0; LCM_E=1; return(LCM_Data);}//讀狀態(tài)unsignedcharReadStatusLCM(void){ LCM_Data=0xFF; LCM_RS=0; LCM_RW=1; LCM_E=0; LCM_E=0; LCM_E=1; while(LCM_Data&Busy);//檢測忙信號(hào) return(LCM_Data);}等待繁忙標(biāo)志voidwait(void){ P0=0xFF; do { LCM_RS=0; LCM_RW=1; LCM_E=0; LCM_E=1; }while(BUSY==1); LCM_E=0;}voidw_dat(unsignedintdat){ wait(); LCM_E=0; P0=dat; LCM_RS=1; LCM_RW=0; LCM_E=1; LCM_E=0;}voidw_cmd(unsignedintcmd){ wait(); LCM_E=0; P0=cmd; LCM_RS=0; LCM_RW=0; LCM_E=1; LCM_E=0;}voidw_string(unsignedintaddr_start,unsignedint*p){ w_cmd(addr_start|0x80); while(*p!='\0') { w_dat(*p++); }}voidw_data(unsignedintaddr_start,unsignedintdat){ w_cmd(addr_start|0x80); w_dat(dat%100/10+'0'); w_dat(dat%10+'0');}voidLCMInit(void)//LCM初始化{ LCM_Data=0; WriteCommandLCM(0x38,0);//三次顯示模式設(shè)置,不檢測忙信號(hào) Delay5Ms(); WriteCommandLCM(0x38,0); Delay5Ms(); WriteCommandLCM(0x38,0); Delay5Ms(); WriteCommandLCM(0x38,1);//顯示模式設(shè)置,開始要求每次檢測忙信號(hào) WriteCommandLCM(0x08,1);//關(guān)閉顯示 WriteCommandLCM(0x01,1);//顯示清屏 WriteCommandLCM(0x06,1);//顯示光標(biāo)移動(dòng)設(shè)置 WriteCommandLCM(0x0F,1);//顯示開及光標(biāo)設(shè)置}//按指定位置顯示一個(gè)字符voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDData){ Y&=0x1; X&=0xF;//限制X不能大于15,Y不能大于1 if(Y)X|=0x40;//當(dāng)要顯示第二行時(shí)地址碼+0x40; X|=0x80;//算出指令碼 WriteCommandLCM(X,1);//發(fā)命令字 WriteDataLCM(DData);//發(fā)數(shù)據(jù)}//按指定位置顯示一串字符voidDisplayListChar(unsignedcharX,unsignedcharY,unsignedcharcode*DData){ unsignedcharListLength;ListLength=0; Y&=0x1; X&=0xF;//限制X不能大于15,Y不能大于1 while(DData[ListLength]>0x19)//假設(shè)到達(dá)字串尾那么退出 { if(X<=0xF)//X坐標(biāo)應(yīng)小于0xF { DisplayOneChar(X,Y,DData[ListLength]);//顯示單個(gè)字符 ListLength++; X++; } }}LCD_Wait(void){ LCM_RS=0; LCM_RW=1; _nop_(); LCM_E=1; _nop_(); LCM_E=0; returnDBPort; }voidLCD_Write(bitstyle,unsignedcharinput){ LCM_E=0; LCM_RS=style; LCM_RW=0; _nop_(); DBPort=input; _nop_();//注意順序 LCM_E=1; _nop_();//注意順序 LCM_E=0; _nop_(); LCD_Wait(); }voidGotoXY(unsignedcharx,unsignedchary){ if(y==0) LCD_Write(LCD_COMMAND,0x80|x); if(y==1) LCD_Write(LCD_COMMAND,0x80|(x-0x40));}voidPrint(unsignedchar*str){ while(*str!='\0') { LCD_Write(LCD_DATA,*str); str++; }}voiddelay_18B20(unsignedinti){ while(i--);}voidInit_DS18B20(void){ unsignedcharx=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);}unsignedcharReadOneChar(void){ unsignedchari=0; unsignedchardat=0; for(i=8;i>0;i--) { DQ=0;//給脈沖信號(hào) dat>>=1; DQ=1;//給脈沖信號(hào) if(DQ) dat|=0x80; delay_18B20(4); } return(dat);}voidWriteOneChar(unsignedchardat){ unsignedchari=0; for(i=8;i>0;i--) { DQ=0; DQ=dat&0x01; delay_18B20(5); DQ=1; dat>>=1;}}voidReadTemp(void){ unsignedchara=0; unsignedcharb=0; unsignedchart=0; Init_DS18B20(); WriteOneChar(0xCC); //跳過讀序號(hào)列號(hào)的操作 WriteOneChar(0x44); //啟動(dòng)溫度轉(zhuǎn)換 delay_18B20(100);//thismessageisweryimportant Init_DS18B20(); WriteOneChar(0xCC); //跳過讀序號(hào)列號(hào)的操作 WriteOneChar(0xBE); //讀取溫度存放器等〔共可讀9個(gè)存放器〕前兩個(gè)就是溫度 delay_18B20(100); a=ReadOneChar(); //讀取溫度值低位 b=ReadOneChar(); //讀取溫度值高位 xiaoshu=a&0x0f; temp_value=b<<4; temp_value+=(a&0xf0)>>4;}voidtemp_to_str()//溫度數(shù)據(jù)轉(zhuǎn)換成液晶字符顯示{TempBuffer[0]=temp_value/10+'0';//十位TempBuffer[1]=temp_value%10+'0';//個(gè)位TempBuffer[2]=0x2e;TempBuffer[3]=xiaoshu*10/16+'0'; //小數(shù)TempBuffer[4]=0xdf;//溫度符號(hào)TempBuffer[5]='C';TempBuffer[6]='\0';}//5ms延時(shí)voidDelay5Ms(void){ unsignedintTempCyc=5552; while(TempCyc--);}//400ms延時(shí)voidDelay400Ms(void){ unsignedcharTempCycA=5; unsignedintTempCycB; while(TempCycA--) { TempCycB=7269; while(TempCycB--); };}voidConut(void) { time=TH0*256+TL0; TH0=0; TL0=0; LED=1; //rsd=0; S=(time*1.7)/100;//算出來是CM if((S<50)&(S>30)) { buzzer=0; LED=0; Delay400Ms();//延時(shí) buzzer=1; LED=1; } elseif((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)//超出測量范圍顯示“-” { flag=0; DisplayOneChar(11,1,ASCII[11]); DisplayOneChar(12,1,ASCII[10]); //顯示點(diǎn) DisplayOneChar(13,1,ASCII[11]); DisplayOneChar(14,1,ASCII[11]); DisplayOneChar(15,1,ASCII[12]); //顯示M } else { disbuff[0]=S%1000/100; disbuff[1]=S%1000%100/10; disbuff[2]=S%1000%10%10; DisplayOneChar(11,1,ASCII[disbuff[0]]); DisplayOneChar(12,1,ASCII[10]); //顯示點(diǎn) DisplayOneChar(13,1,ASCII[disbuff[1]]); DisplayOneChar(14,1,ASCII[disbuff[2]]); DisplayOneChar(15,1,ASCII[12]); //顯示M } }voidzd0()interrupt1 //T0中斷用來計(jì)數(shù)器溢出,超過測距范圍{flag=1; //中斷溢出標(biāo)志}voidStartModule() //啟動(dòng)模塊{ TX=1; //啟動(dòng)一次模塊 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TX=0;}voiddelayms(unsignedintms){ unsignedchari=100,j; for(;ms;ms--) { while(--i) { j=10; while(--j); } }}voidmain(void){ unsignedcharTempCyc; Delay400Ms();//啟動(dòng)等待,等LCM講入工作狀態(tài) LCMInit();//LCM初始化 Delay5Ms();//延時(shí)片刻(可不要) DisplayListChar(0,0,mcustudio); ReadDataLCM();//測試用句無意義 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,GATE=1; TH0=0; TL0=0; ET0=1;//允許T0中斷 EA=1; //開啟總中斷 while(1) { ReadTemp();//開啟溫度采集程序temp_to_str();//溫度數(shù)據(jù)轉(zhuǎn)換成液晶字符 GotoXY(8,0);Print(TempBuffer); //顯示溫度 StartModule(); while(!RX); //當(dāng)RX為零時(shí)等待 TR0=1; //開啟計(jì)數(shù) while(RX); //當(dāng)RX為1計(jì)數(shù)并等待 TR0=0; //關(guān)閉計(jì)數(shù)Conut(); //計(jì)算 delayms(80); //80MS } }}第五章調(diào)試本汽車防撞報(bào)警器系統(tǒng)有兩塊PCB板一塊是單片機(jī)最小系統(tǒng),另一塊是超聲波的發(fā)射和接收組成的測距模塊板,調(diào)試分塊進(jìn)行。5.1測距模塊的調(diào)試超聲波測距模組包括超聲波驅(qū)動(dòng)電路和接收電路。本設(shè)計(jì)所采用的超聲波傳感器是壓電式的,驅(qū)動(dòng)頻率為40KHz。假設(shè)能將超聲波接收電路用金屬殼屏蔽起來,那么可提高抗干擾能力[4]。還可將兩探頭之間的距離稍微分開點(diǎn)以防止發(fā)生自發(fā)自收的輕快產(chǎn)生。調(diào)試成功后,經(jīng)過仿真可得到超聲波發(fā)射端波形如圖5-1所示:圖5-1超聲波發(fā)射端波形〔所用量程為頻率20us/DIV,電壓1V/DIV〕超聲波接收端波形如圖5-2所示:圖5-2超聲波接收端經(jīng)放大后波形放大后輸出經(jīng)LM567輸入端波形如圖5-3所示:圖5-3LM567的3引腳輸入端波形〔汽車防撞報(bào)警器工作時(shí)情況如圖5-4所示:圖5-4汽車防撞報(bào)警器系統(tǒng)工作時(shí)情況5.2調(diào)試結(jié)果由于本系統(tǒng)硬件本身存在著誤差,所以在測量時(shí)用取平均值的方式進(jìn)行。故在測量時(shí),每次測量距離次數(shù)四次,然后取平均值。表5-1距離測量數(shù)據(jù)表序號(hào)理論值(cm)實(shí)際值(cm)絕對(duì)誤差(cm)相對(duì)誤差(%)1252613.82302913.43404224.84505112.05706911.46807911.37909111.181009911.0912012332.41014014221.41116016221.21218018110.61320020331.51422022331.31524024220.81625025110.4從表6-1中可以看出絕對(duì)誤差最大值為3cm,相對(duì)誤差小于5%。本倒車?yán)走_(dá)系統(tǒng)所測最小距離為24cm,最大距離在250cm左右,滿足設(shè)計(jì)要求。5.3誤差分析測量誤差的原因主要有:1、環(huán)境對(duì)測量的影響。包括空氣溫度變化引起的聲速變化、空氣成分變化、聲波傳播途中溫度梯度導(dǎo)致測溫不準(zhǔn)確等,由于這些因素對(duì)結(jié)果產(chǎn)生的影響比擬小。開關(guān)門的可靠性是標(biāo)志超聲波測距儀可靠性的關(guān)鍵,即同步門控制。也就是說發(fā)射與脈沖計(jì)數(shù)必須同步。2、量化誤差:即參考頻率計(jì)數(shù)結(jié)果的誤差。由于選擇的單片機(jī)計(jì)時(shí)時(shí)鐘頻率為12MHz,所以有量化誤差為0.01米,符合測距要求范圍。所以超聲波發(fā)送應(yīng)考慮因素有:1.量程范圍;2.目標(biāo)距離和目標(biāo)反射情況。超聲波頻率高對(duì)探測較小目標(biāo)有利,有效反射目標(biāo)應(yīng)大于至少10個(gè)波長以上,對(duì)于非垂直于發(fā)射波束的目標(biāo),大波束角的傳感器通??梢垣@得更強(qiáng)的回波信號(hào),而波束角越窄對(duì)于減小散射波的干擾越有利。3、觸發(fā)誤差。由于

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論