學(xué)生姓名
[姓名]
學(xué) 號
[學(xué)號]
專業(yè)班級
[專業(yè)班級]
分院(系)
[分院(系)]
指導(dǎo)教師(職稱)
[指導(dǎo)教師(職稱)]
基于51的超聲波測距汽車防撞系統(tǒng)
【摘要】
基于51的超聲波測距汽車防撞系統(tǒng),介紹了超聲波測距的基本原理和系統(tǒng)框圖,給出了超聲波發(fā)射和接收電路,通過盲區(qū)的消除,提高了測距的精確度。利用超聲波傳輸中距離與時(shí)間的關(guān)系,采用51單片機(jī)進(jìn)行控制及數(shù)據(jù)處理,設(shè)計(jì)出了能精確測量兩點(diǎn)間距離的超聲波液位檢測系統(tǒng)。系統(tǒng)主要由超聲波發(fā)射器電路、超聲波接收器電路、單片機(jī)控制電路、按鍵電路及顯示電路構(gòu)成。利用所設(shè)計(jì)出的超聲波測距汽車防撞系統(tǒng),對行駛中的車距進(jìn)行了測試,采集當(dāng)時(shí)兩車距離過近系統(tǒng)會發(fā)出聲光警報(bào)提示司機(jī)作出相應(yīng)反應(yīng)動作。此系統(tǒng)具有易控制、工作可靠、測量精度高的優(yōu)點(diǎn),可實(shí)時(shí)車距檢測。
目 錄 1 緒 論 1.1研究的背景 1.2研究的主要內(nèi)容 1.3應(yīng)解決的關(guān)鍵問題 2 電路方案論證 2.1方案比較 2.1.1 激光測距 2.1.2 超聲波測距 2.2電路總體方案 3單片機(jī)概述 3.1 STC89C51主要性能 3.2 STC89C51外部結(jié)構(gòu)及特性 3.3 STC89C51內(nèi)部組成 4 超聲波測距模塊 4.1 超聲波傳感器介紹 4.2 HC-SR04超聲波測距模塊的性能特點(diǎn) 4.3 HC-SR04的管腳排列和電氣參數(shù) 4.3.1 管腳簡介 4.3.2 HC-SR04的電氣參數(shù) 4.4超聲波時(shí)序圖 5系統(tǒng)硬件電路設(shè)計(jì) 5.1單片機(jī)最小系統(tǒng) 5.1.1 STC89C51芯片 5.1.2 復(fù)位電路 5.1.3 晶振電路 5.2 驅(qū)動顯示電路及報(bào)警電路 5.2.1 LED數(shù)碼管顯示電路 5.2.2 蜂鳴器和LED報(bào)警 5.3 HC-RS04超聲波測距原理 5.4 按鍵設(shè)置電路 6系統(tǒng)程序的設(shè)計(jì) 6.1主程序 6.2顯示數(shù)據(jù)子程序 6.3報(bào)警子程序 6.4按鍵子程序 結(jié) 論 參考文獻(xiàn) 附 錄(A) 附 錄(B) 致 謝
1 緒 論1.1研究的背景汽車業(yè)與電子業(yè)是世界工業(yè)的兩大金字塔,隨著汽車工業(yè)與電子工業(yè)的不斷發(fā)展,在現(xiàn)代汽車上,電子技術(shù)的應(yīng)用越來越來廣泛,汽車電子化的程度越來越高。汽車電子技術(shù)是汽車技術(shù)與電子技術(shù)想結(jié)合的產(chǎn)物。汽車上的電器與電子控制系統(tǒng)在汽車技術(shù)進(jìn)入機(jī)電一體化階段的今天,地位極為重要,正在汽車技術(shù)領(lǐng)域發(fā)展成為一門獨(dú)立的分支學(xué)科,其性能的優(yōu)劣直接影響到汽車的動力性、經(jīng)濟(jì)性、可靠性、安全性、排放干凈、及舒適性等。電子控制技術(shù)在汽車上,首先應(yīng)用于發(fā)動機(jī)燃油消耗控制與排放進(jìn)化與排放控制,接著被應(yīng)用于底盤部分的控制,以提高行駛的穩(wěn)定性、安全性、與舒適性等。隨著交通運(yùn)輸向高密度發(fā)展,電子控制技術(shù)又進(jìn)一步應(yīng)用于汽車的乘坐安全性和導(dǎo)航等方面。 電子技術(shù)在汽車安全控制系統(tǒng)的應(yīng)用主要是為了增強(qiáng)汽車的安全、舒適和方便。應(yīng)用的電子技術(shù)主要有:電子控制安全氣囊,智能記錄儀,雷達(dá)式距離報(bào)警器,中央控制門鎖,自動空調(diào),自動車窗、車門、座椅、刮水器,車燈控制,電源控制以及充電器等。近年來汽車的自動調(diào)速系統(tǒng),主動式汽車防撞系統(tǒng),汽車監(jiān)測和自診斷系統(tǒng)以及汽車導(dǎo)航系統(tǒng)也得到了廣泛的應(yīng)用。 在過去20~30年中,人們主要把精力集中于汽車的被動安全性方面,例如,在汽車的前部或后部安裝保險(xiǎn)杠、在汽車外殼四周安裝某種彈性材料、在車內(nèi)相關(guān)部位安裝各種形式的安全帶及安全氣囊等等,以減輕汽車碰撞帶來的危害。安裝防撞保險(xiǎn)杠固然能在某種程度上減輕碰撞給本車造成損壞,卻無法消除對被撞物體的傷害;此外,車上安裝的安全氣囊系統(tǒng),在發(fā)生車禍時(shí)不一定能有效地保護(hù)車內(nèi)乘務(wù)員的安全。所有這些被動安全措施都不能從根本上解決汽車在行駛中發(fā)生碰撞造成的問題。如果從預(yù)防撞車事故的發(fā)生的角度著眼,在提高汽車主動安全性方面下功夫,則可在汽車安全性領(lǐng)域有較大的突破。 汽車發(fā)生碰撞的主要原因是由于汽車距其前方物體(如汽車、行人或其他障礙物)的距離與汽車本身的車速不相稱造成的,即距離近而相對速度又太高。為了防止汽車與前方物體發(fā)生碰撞,汽車的車速就要根據(jù)與前方物體的距離變化由執(zhí)行機(jī)構(gòu)進(jìn)行控制,使汽車始終在安全車速下行駛。這樣就會大大提高汽車行駛的安全性,減少車禍的發(fā)生。 發(fā)展汽車防撞技術(shù),對提高汽車智能化水平有重要意義。據(jù)統(tǒng)計(jì),危險(xiǎn)境況時(shí),如果能給駕駛員半秒鐘的預(yù)處理時(shí)間,則可分別減少追尾事故的30%,路面相關(guān)事故的50%,迎面撞車事故的 60%; 1秒鐘的預(yù)警時(shí)間可防止90%的追尾碰撞和60%的迎頭碰撞。 汽車要避撞就必須憑借一定的裝備測量前方障礙物的距離,并迅速反饋給汽車,以在危急的情況下,通過報(bào)警或自動進(jìn)行某項(xiàng)預(yù)設(shè)定操作如緊急制動等,來避免由于駕駛員疲勞、疏忽、錯(cuò)誤判斷所造成的交通事故。目前,大家都將防撞技術(shù)的關(guān)鍵點(diǎn)著眼于車輛測距技術(shù)。 1.2研究的主要內(nèi)容課題《基于51的超聲波測距汽車防撞系統(tǒng)》由51單片機(jī)最小系統(tǒng)、超聲波測距模塊、驅(qū)動顯示電路、報(bào)警電路和按鍵電路等組成。利用超聲波測距模塊HC-SR04測量距離,并對數(shù)據(jù)進(jìn)行分析處理,傳給51單片機(jī),再通過LED數(shù)碼管顯示出來,可以通過按鍵調(diào)整報(bào)警距離,同時(shí)電源部分采用5V穩(wěn)壓直流電源。 1.3應(yīng)解決的關(guān)鍵問題1、對主要硬件電路設(shè)計(jì)、制作實(shí)物時(shí)擬解決的關(guān)鍵問題是:聲音的發(fā)射和接受時(shí)間的計(jì)算。 2、超聲波測距采用軟件編程實(shí)現(xiàn)。 3、超聲波測距的死區(qū)解決。 4、按鍵對報(bào)警值的設(shè)置。
2 電路方案論證2.1方案比較2.1.1 激光測距激光測距一般采用兩種方式來測量距離:脈沖法和相位法。脈沖法測距的過程:測距儀發(fā)射出的激光經(jīng)被測量物體的反射后又被測距儀接收,測距儀同時(shí)記錄激光往返的時(shí)間,光速和往返時(shí)間的乘積的一半,就是測距儀和被測量物體之間的距離。相位法測距的過程:用無線電波段的頻率,對激光束進(jìn)行幅度調(diào)制并測定調(diào)制光往返測線一次所產(chǎn)生的相位延遲,再根據(jù)調(diào)制光的波長,換算此相位延遲所代表的距離,即用間接方法測定出光經(jīng)過往返測線所需的時(shí)間。 2.1.2 超聲波測距汽車防撞系統(tǒng)的基本超聲波測距的原理是利用超聲波在空氣中的傳播速度為已知,測量聲波在發(fā)射后遇到障礙物反射回來的時(shí)間,根據(jù)發(fā)射和接收的時(shí)間差計(jì)算出發(fā)射電到障礙物的實(shí)際距離,可見這與雷達(dá)測距原理相似。超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射時(shí)刻的同時(shí)開始計(jì)時(shí),超聲波在空氣中傳播,途中碰到障礙物就立即返回來,超聲波接收器收到反射波就立即停止計(jì)時(shí)。 從以上兩種方案,很容易看出,采用方案二,電路比較簡單,軟件設(shè)計(jì)也比較簡單,故采用了方案二。 2.2電路總體方案圖2.1是電路總體框圖,包括51單片機(jī)最小系統(tǒng),HC-SR04超聲波測距模塊,LED數(shù)碼管顯示電路,蜂鳴器報(bào)警電路和按鍵電路。   圖2.1 電路基本框圖 3單片機(jī)概述3.1 STC89C51主要性能STC89C51 是STC公司推出的一款超強(qiáng)抗干擾,加密性強(qiáng),在線可編程,高速,低功耗CMOS 8位單片機(jī)。片內(nèi)含 4k bytes 的可反復(fù)擦寫Flash只讀程序存儲器和256 bytes 的隨機(jī)數(shù)據(jù)存儲器(RAM),器件采用STC公司的高密度、非易失性存儲技術(shù)生產(chǎn),與標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及8052產(chǎn)品引腳兼容, 片內(nèi)置通用8位中央處理器 (CPU)和Flash存儲單元, 功能強(qiáng)大的STC89C51單片機(jī)適合于許多較為復(fù)雜控制應(yīng)用場合。 3.2 STC89C51外部結(jié)構(gòu)及特性其外形封裝有兩種方式:雙列直插式40腳封裝(DIP)和方形44腳封裝 (PLCC),直插式40 腳封裝(DIP)和外部總線結(jié)構(gòu)如圖2和圖3所示: 
圖3.1 STC89C51引腳排列 圖3.2 外部總線 STC89C51的 4 個(gè) 8 位I/O口的功能說明如下: (1)P0口:P0 口是一個(gè) 8 位漏極開路的雙向 I/O 口。作為輸出口,每位能驅(qū)動8個(gè)TTL邏輯電平。對P0端口寫“1”時(shí),引腳用作高阻抗輸入。 當(dāng)訪問外部程序和數(shù)據(jù)存儲器時(shí),P0口也被作為低 8 位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0具有內(nèi)部上拉電阻。在flash 編程時(shí),P0口也用來接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校驗(yàn)時(shí),需要外部上拉電阻。 (2)P1口:P1口是一個(gè)具有內(nèi)部上拉電阻的8位雙向 I/O口,p1輸出緩沖器能驅(qū)動4個(gè)TTL 邏輯電平。對P1端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0 和 P1.2分別作定時(shí)器/計(jì)數(shù)器 2 的外部計(jì)數(shù)輸入(P1.0/T2)和定時(shí)器/計(jì)數(shù)器 2 的觸發(fā)輸入(P1.1/T2EX)。在 flash 編程和校驗(yàn)時(shí),P1口接收低8位地址字節(jié)。 (3)P2口:P2口是一個(gè)具有內(nèi)部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅(qū)動 4 個(gè) TTL 邏輯電平。對 P2端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲器或用 16 位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX @DPTR)時(shí),P2口送出高八位地址。在這種應(yīng)用中,P2口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用8 位地址(如 MOVX @RI)訪問外部數(shù)據(jù)存儲器時(shí),P2 口輸出 P2 鎖存器的內(nèi)容。在 flash 編程和校驗(yàn)時(shí),P2 口也接收高 8 位地址字節(jié)和一些控制信號。 (4)P3口:P3口是一個(gè)具有內(nèi)部上拉電阻的8位雙向I/O口,p2 輸出緩沖器能驅(qū)動4個(gè)TTL邏輯電平。對P3端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在 flash 編程和校驗(yàn)時(shí),P3 口也接收一些控制信號。P3 口亦作為AT89C52特殊功能(第二功能)使用,如下所示: P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口) P3.2 INTO(外部中斷0 輸入口) P3.3 INT1(外部中斷 1 輸入口) P3.4 TO(定時(shí)器 0 外部輸入) P3.5 TI(定時(shí)器 1 外部輸入) P3.6 WR(外部數(shù)據(jù)存儲器寫選通信號) P3.7(外部數(shù)據(jù)存儲器讀選通信號) 3.3 STC89C51內(nèi)部組成STC89C51單片機(jī)在一塊芯片中集成了 CPU、RAM、ROM、定時(shí)器/計(jì)數(shù)器、看門狗和多種功能的 I/O 口設(shè)備的等,相當(dāng)于一臺計(jì)算機(jī)所需要的基本功能部件。 STC89C51單片機(jī)內(nèi)包含的具體部分如下: 一個(gè)8 位 CPU。 一個(gè)片內(nèi)振蕩器及時(shí)鐘電路。 4KB Flash 程序存儲器。 128 B RAM 數(shù)據(jù)存儲器。 三個(gè)16 位定時(shí)器/計(jì)數(shù)器。 可尋址 64KB 的外部數(shù)據(jù)存儲器和 64KB 的外部程序存儲器空間的控制電路。 32 條可編程的 I/O線(4組8 位并行 I/O端口)。 一個(gè)可編程全雙工串口通信。 8 個(gè)中斷源、兩個(gè)優(yōu)先級嵌套中斷結(jié)構(gòu)。 STC89C52單片機(jī)的框圖如圖3.3所示,各功能部件由內(nèi)部總線連接在一起。 
圖3.3 STC89C51單片機(jī)框圖 4 超聲波測距模塊4.1 超聲波傳感器介紹超聲波是一種頻率比較高的聲音,由于其指向性強(qiáng)、能量消耗緩慢、傳播距離較遠(yuǎn)等優(yōu)點(diǎn),而經(jīng)常用于距離的測量,如測距儀和物位測量儀等都可以通過超聲波來實(shí)現(xiàn)。超聲波測距主要應(yīng)用于倒車?yán)走_(dá)、建筑施工工地以及一些工業(yè)現(xiàn)場,例如液位、井深、管道長度等場合。超聲波測距的利用超聲波檢測往往比較迅速、方便、計(jì)算簡單、易于做到實(shí)時(shí)控制,并且在測量精度方面能達(dá)到工業(yè)實(shí)用的要求,因此在測控系統(tǒng)的研制上得到了廣泛應(yīng)用。 超聲傳感器是一種將其他形式的能轉(zhuǎn)變?yōu)樗桀l率的超聲能或是把超聲能轉(zhuǎn)變?yōu)橥l率的其他形式的能的器件。目前常用的超聲傳感器有兩大類,即電聲型與流體動力型。電聲型主要有:1 壓電傳感器;2 磁致伸縮傳感器;3 靜電傳感器。流體動力型中包括有氣體與液體兩種類型的哨笛。由于工作頻率與應(yīng)用目的不同,超聲傳感器的結(jié)構(gòu)形式是多種多樣的,并且名稱也有不同,例如在超聲檢測和診斷中習(xí)慣上都把超聲傳感器稱作探頭,而工業(yè)中采用的流體動力型傳感器稱為“哨”或“笛”。 壓電傳感器屬于超聲傳感器中電聲型的一種。探頭由壓電晶片、楔塊、接頭等組成,是超聲檢測中最常用的實(shí)現(xiàn)電能和聲能相互轉(zhuǎn)換的一種傳感器件,是超聲波檢測裝置的重要組成部分。壓電材料分為晶體和壓電陶瓷兩類。屬于晶體的如石英,鈮酸鋰等,屬于壓電陶瓷的有鋯鈦酸鉛,鈦酸鋇等。其具有下列的特性:把這種材料置于電場之中,它就產(chǎn)生一定的應(yīng)變;相反,對這種材料施以外力,則由于產(chǎn)生了應(yīng)變就會在其內(nèi)部產(chǎn)生一定方向的電場。所以,只要對這種材料加以交變電場,它就會產(chǎn)生交變的應(yīng)變,從而產(chǎn)生超聲振動。因此,用這種材料可以制成超聲傳感器。 傳感器的主要組成部分是壓電晶片。當(dāng)壓電晶片受發(fā)射電脈沖激勵(lì)后產(chǎn)生振動,即可發(fā)射聲脈沖,是逆壓電效應(yīng)。當(dāng)超聲波作用于晶片時(shí),晶片受迫振動引起的形變可轉(zhuǎn)換成相應(yīng)的電信號,是正壓電效應(yīng)。前者用于超聲波的發(fā)射,后者即為超聲波的接收。超聲波傳感器一般采用雙壓電陶瓷晶片制成。這種超聲傳感器需要的壓電材料較少,價(jià)格低廉,且非常適用于氣體和液體介質(zhì)中。在壓電陶瓷上加有大小和方向不斷變化的交流電壓時(shí),根據(jù)壓電效應(yīng),就會使壓電陶瓷晶片產(chǎn)生機(jī)械變形,這種機(jī)械變形的大小和方向在一定范圍內(nèi)是與外加電壓的大小和方向成正比的。也就是說,在壓電陶瓷晶片上加有頻率為 f0交流電壓,它就會產(chǎn)生同頻率的機(jī)械振動,這種機(jī)械振動推動空氣等媒介,便會發(fā)出超聲波。如果在壓電陶瓷晶片上有超聲機(jī)械波作用,這將會使其產(chǎn)生機(jī)械變形,這種機(jī)械變形是與超聲機(jī)械波一致的,機(jī)械變形使壓電陶瓷晶片產(chǎn)生頻率與超聲機(jī)械波相同的電信號。 圖4.1壓電式超聲波傳感器結(jié)構(gòu)圖 壓電式超聲波發(fā)生器實(shí)際上是利用壓電晶體的諧振來工作的,超聲波發(fā)生器內(nèi)部結(jié)構(gòu)如圖2.1所示,它有兩個(gè)壓電晶片和一個(gè)共振板,當(dāng)它的兩極外加脈沖信號,其頻率等于壓電晶片的固有振蕩頻率時(shí),壓電晶片將會發(fā)生共振,并帶動共振板振動,便產(chǎn)生超聲波。反之,如果兩電極間未外加電壓,當(dāng)共振板接收到超聲波時(shí),將壓迫壓電晶片作振動,將機(jī)械能轉(zhuǎn)化為電信號,這時(shí)它就成為超聲波傳感器。 壓電陶瓷晶片有一個(gè)固定的諧振頻率,即中心頻率 f0。發(fā)射超聲波時(shí),加在其上面的交變電壓的頻率要與它的固有諧振頻率一致。這樣,超聲傳感器才有較高的靈敏度。當(dāng)所用壓電材料不變時(shí),改變壓電陶瓷晶片的幾何尺寸,就可非常方便的改變其固有諧振頻率。利用這一特性可制成各種頻率的超聲傳感器。 超聲波傳感器的內(nèi)部結(jié)構(gòu)由壓電陶瓷晶片、錐形輻射喇叭、底座、引線、金屬殼及金屬網(wǎng)構(gòu)成,其中,壓電陶瓷晶片是傳感器的核心,錐形輻射喇叭使發(fā)射和接收超聲波能量集中,并使傳感器有一定的指向角,金屬殼可防止外界力量對壓電陶瓷晶片及錐形輻射喇叭的損壞。金屬網(wǎng)也是起保護(hù)作用的,但不影響發(fā)射與接收超聲波。 4.2 HC-SR04超聲波測距模塊的性能特點(diǎn)HC-SR04超聲波測距模塊可提供2cm-400cm的非接觸式距離感測功能,測距精度可高達(dá)3mm,模塊包括超聲波發(fā)射器、接收器與控制電路。其基本工作原理: (1)采用IO口TRIG觸發(fā)測距,給至少10us的高電平信號; (2)模塊自動發(fā)送8個(gè)40khz的方波,自動檢測是否有信號返回; (3)有信號返回,通過IO口ECH0輸出一個(gè)高電平,高電平持續(xù)的時(shí)間就是超聲波從發(fā)射到返回的時(shí)間。測試距離=(高電平時(shí)間*聲速/340M/S)/2; (4)當(dāng)TRIG從0->1時(shí),主控制板啟動,當(dāng)超時(shí)10ms時(shí)ECH0仍然沒有出現(xiàn)150us的0信號,表示沒有障礙。 本模塊性能穩(wěn)定,測度距離精確,其主要特點(diǎn): (1)超微型,只相當(dāng)于兩個(gè)發(fā)射,接收頭的面積已經(jīng)沒法再小了; (2)無盲區(qū)(10mm內(nèi)成三角形誤差較大,簡單可以當(dāng)做0處理); (3)反應(yīng)速度快,10ms的測量周期,不容易丟失高速目標(biāo); (4)發(fā)射頭,接收頭緊靠,和被測目標(biāo)基本成直線關(guān)系; (5)模塊上有LED指示,方便觀察和測試。 4.3 HC-SR04的管腳排列和電氣參數(shù)4.3.1 管腳簡介 HC-SR04的外形及管腳排列如圖4.2所示。 (1)VCC為5V電源; (2)GND為地線; (3)TRIG觸發(fā)控制信號輸入; (4)ECH0回響信號輸出。 
圖4.2外形及管腳排列圖 4.3.2 HC-SR04的電氣參數(shù) 電氣參數(shù)如表4.1所示: 表4.1 電氣參數(shù)表
4.4超聲波時(shí)序圖
圖4.3超聲波時(shí)序圖 此時(shí)序圖表明只需提供一個(gè)10us一上脈沖觸發(fā)信號,該模塊內(nèi)部將發(fā)出8個(gè)40kHz周期電平并檢測回波。一旦檢測到右回波信號則輸出回響信號。回響信號的脈沖寬度與所測的距離成正比。由此通過發(fā)射信號到收到的回響信號時(shí)間間隔可以計(jì)算得到距離。公式:uS/58=厘米或者uS/148=英寸;或是:距離=高電平時(shí)間*聲速(340M/S)/2;建議測量周期為60ms一上,以防止發(fā)射信號對回響信號的影響。 5系統(tǒng)硬件電路設(shè)計(jì)5.1單片機(jī)最小系統(tǒng)5.1.1 STC89C51芯片本次設(shè)計(jì)我們所采用的是STC89C51單片機(jī),是一種帶4k字節(jié)閃爍可編程可擦除只讀存儲器的低電壓、高性能COMOS8的微處理器,該器件有40引腳,速度較快,價(jià)格便宜,燒錄方便,通過串口即可下載,還可以實(shí)現(xiàn)在線編程,采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。 5.1.2 復(fù)位電路 為確保微機(jī)系統(tǒng)中電路穩(wěn)定可靠工作,復(fù)位電路是必不可少的一部分,復(fù)位電路的基本功能是:系統(tǒng)上電時(shí)提供復(fù)位信號,直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號。為可靠起見,電源穩(wěn)定后還要經(jīng)一定的延遲才撤銷復(fù)位,以防電源開關(guān)或電源插頭分-合過程中引起的抖動而影響復(fù)位。當(dāng)單片機(jī)的復(fù)位引腳出現(xiàn)2個(gè)機(jī)器周期以上的高電平時(shí),單片機(jī)就執(zhí)行復(fù)位操作。如果RST持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài)。所以復(fù)位引腳的電容大一點(diǎn)沒多大關(guān)系,頂多是復(fù)位時(shí)間長一點(diǎn);但如果電容太小,高電平持續(xù)時(shí)間太短,則單片機(jī)無法正常復(fù)位,就不能工作,電容通常取10UF或22UF,鋁電解電容即可。 單片機(jī)的復(fù)位電路在剛接通電時(shí),剛開始電容是沒有電的,電容內(nèi)的電阻很低,通電后,5V的電源通過電阻給電解電容進(jìn)行充電,電容兩端的電會由0V慢慢的升到4V左右(此時(shí)間很短一般小于0.3秒),正因?yàn)檫@樣,復(fù)位腳由低電位升到高電位,引起了內(nèi)部電路的復(fù)位工作;當(dāng)按下復(fù)位鍵時(shí),電容兩端放電,電容又回到0V了,于是又進(jìn)行了一次復(fù)位工作。電路圖如圖5.1。 
圖5.1 復(fù)位電路 5.1.3 晶振電路它是單片機(jī)系統(tǒng)正常工作的保證,如果振蕩器不起振,系統(tǒng)將會不能工作。假如振蕩器運(yùn)行不規(guī)律,系統(tǒng)執(zhí)行程序的時(shí)候就會出現(xiàn)時(shí)間上的誤差,這在通信中會體現(xiàn)的很明顯:電路將無法通信。它是由一個(gè)晶振和兩個(gè)瓷片電容組成的,晶振和瓷片電容是沒有正負(fù)的,兩個(gè)瓷片電容相連的那端一定要接地,如圖5.2所示。 
圖5.2 晶振電路 一般單片機(jī)的晶振工作于并聯(lián)諧振狀態(tài),也可以理解為諧振電容的一部分。它是根據(jù)晶振廠家提供的晶振要求負(fù)載電容選值的,換句話說,晶振的頻率就是在它提供的負(fù)載電容下測得的,能最大限度的保證頻率值的誤差,也能保證溫漂等誤差。 機(jī)器周期:通常從內(nèi)存中讀取一個(gè)指令字的最短時(shí)間來規(guī)定CPU周期,(也就是計(jì)算機(jī)通過內(nèi)部或外部總線進(jìn)行一次信息傳輸從而完成一個(gè)或幾個(gè)微操作所需要的時(shí)間),它一般由12個(gè)時(shí)鐘周期組成。而時(shí)鐘周期=1秒/晶振頻率,因此單片機(jī)的機(jī)器周期=12秒/晶振頻率 ,補(bǔ)充其他幾個(gè)周期: 指令周期(Instruction Cycle):取出并執(zhí)行一條指令的時(shí)間。 總線周期(BUS Cycle):也就是一個(gè)訪存儲器或I/O端口操作所用的時(shí)間。 時(shí)鐘周期(Clock Cycle):又稱節(jié)拍周期,是處理操作的最基本單位。(晶振頻率的倒數(shù),也稱T狀態(tài)) 指令周期、總線周期和時(shí)鐘周期之間的關(guān)系:一個(gè)指令周期由若干個(gè)總線周期組成,而一個(gè)總線周期時(shí)間又包含有若干個(gè)時(shí)鐘周期。 一般處理器的一個(gè)機(jī)器周期由12個(gè)時(shí)鐘周期所組成。所以單片機(jī)用12M晶振,運(yùn)行速度為1M。 負(fù)載電容=[(Cd*Cg)/(Cd+Cg)]+Cic+△C[6 ],跟晶振特性、單片機(jī)內(nèi)部時(shí)鐘電路等效電容有關(guān)。 兩個(gè)電容的取值都是相同的,或者說相差不大,如果相差太大,容易造成諧振的不平衡,容易造成停振或者干脆不起振。其起到一個(gè)并聯(lián)協(xié)振的作用,這樣可以讓它的脈沖更平穩(wěn)與協(xié)調(diào)。 5.2 驅(qū)動顯示電路及報(bào)警電路顯示電路采用LED數(shù)碼管顯示,當(dāng)超過已設(shè)定的距離時(shí),蜂鳴器和LED可實(shí)現(xiàn)報(bào)警功能并可通過按鍵實(shí)現(xiàn)有限距離的調(diào)整。 5.2.1 LED數(shù)碼管顯示電路本電路的顯示模塊主要由一個(gè)4位一體的7段LED數(shù)碼管構(gòu)成,用于顯示測量到的電壓值。它是一個(gè)共陽極的數(shù)碼管,每一位數(shù)碼管的a,b,c,d,e,f,g和dp端都各自連接在一起,用于接收單片機(jī)的P1口產(chǎn)生的顯示段碼。S1,S2,S3,S4引腳端為其位選端,用于接收單片機(jī)的P2口產(chǎn)生的位選碼。本系統(tǒng)采用動態(tài)掃描方式。掃描方式是用其接口電路把所有數(shù)碼管的8個(gè)比劃段a~g和dp同名端連在一起,而每一個(gè)數(shù)碼管的公共極COM各自獨(dú)立地受I/O線控制。CUP從字段輸出口送出字型碼時(shí),所有數(shù)碼管接收到相同的字型碼,但究竟是哪個(gè)數(shù)碼管亮,則取決于COM端。COM端與單片機(jī)的I/O接口相連接,由單片機(jī)輸出位位選碼到I/O接口,控制何時(shí)哪一位數(shù)碼管被點(diǎn)亮。在輪流點(diǎn)亮數(shù)碼管的位掃描過程中,每位數(shù)碼管的點(diǎn)亮?xí)r間極為短暫。但由于人的視覺暫留現(xiàn)象,給人的印象就是一組穩(wěn)定顯示的數(shù)碼。動態(tài)方式的優(yōu)點(diǎn)是十分明顯的,即耗電省,在動態(tài)掃描過程中,任何時(shí)刻只有一個(gè)數(shù)碼管是處于工作狀態(tài)的。具體原理圖如圖5.3 圖5.3 顯示電路 5.2.2 蜂鳴器和LED報(bào)警蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣泛應(yīng)用于計(jì)算機(jī)、打印機(jī)、復(fù)印機(jī)、報(bào)警器、電子玩具、汽車電子設(shè)備、電話機(jī)、定時(shí)器等電子產(chǎn)品中作發(fā)聲器件。蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。多諧振蕩器由晶體管或集成電路構(gòu)成,當(dāng)接通電源后(1.5~15V直流工作電壓),多諧振蕩器起振,暑促1.5~2.5kHz的音頻信號,阻抗匹配器推動壓電蜂鳴片發(fā)聲。電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動膜片及外殼組成。接通電源后,振蕩器產(chǎn)生的音頻信號電流通過電磁線圈,是電磁線圈產(chǎn)生磁場,振動膜片在電磁線圈和磁鐵的相互作用下,周期性地振動發(fā)聲。本設(shè)計(jì)采用電磁式蜂鳴器,當(dāng)距離超出預(yù)設(shè)值時(shí),蜂鳴器就會發(fā)出報(bào)警生硬。 電磁式蜂鳴器的發(fā)聲原理是電流通過電磁線圈,是電磁線圈產(chǎn)生磁場來驅(qū)動振動膜發(fā)聲的,因此需要一定的電流才能驅(qū)動它,單片機(jī)IO引腳輸出的電流較小,單片機(jī)輸出的TTL電平基本上驅(qū)動不了蜂鳴器,因此需要增加一個(gè)電流放大的電路,即通過一個(gè)PNP型三極管8550來放大驅(qū)動蜂鳴器。原理圖見圖5.3。 而LED電路是由一個(gè)發(fā)光二極管和電阻組成,因?yàn)長ED一般工作在5ma到20ma,所以選擇1K電阻進(jìn)行限流。如圖5.4所示。 
圖5.4 蜂鳴器驅(qū)動電路 5.3 HC-RS04超聲波測距原理超聲波測距是借助于超聲脈沖回波渡越時(shí)間法來實(shí)現(xiàn)的,設(shè)超聲波脈沖由傳感器發(fā)出到接收所經(jīng)歷的時(shí)間為t,超聲波在空氣中的傳播速度為c,則從傳感器到目標(biāo)物體的距離D可用下式求出:D=ct/2。其系統(tǒng)框圖如圖5.5所示。   圖5.5 系統(tǒng)框圖 基本原理:經(jīng)發(fā)射器發(fā)射出長約6mm,頻率為40khz的超聲波信號。此信號被物體反射回來由接收頭接收,接收頭實(shí)質(zhì)上是一種壓電效應(yīng)的換能器。它接收到信號后產(chǎn)生mV級的微弱電壓信號。 5.4 按鍵設(shè)置電路單片機(jī)鍵盤有獨(dú)立鍵盤和矩陣式鍵盤兩種:獨(dú)立鍵盤每一個(gè)I/O口上只接一個(gè)按鍵,按鍵的另一端接電源或接地(一般接地),這種接法程序比較簡單且系統(tǒng)更加穩(wěn)定;而矩陣式鍵盤式接法程序比較復(fù)雜,但是占用的I/O少。根據(jù)本設(shè)計(jì)的需要這里選用了獨(dú)立式鍵盤接法。獨(dú)立式鍵盤的實(shí)現(xiàn)方法是利用單片機(jī)I/O口讀取口的電平高低來判斷是否有鍵按下。將常開按鍵的一端接地,另一端接一個(gè)I/O口,程序開始時(shí)將此I/O口置于高電平,平時(shí)無鍵按下時(shí)I/O口保護(hù)高電平。當(dāng)有鍵按下時(shí),此I/O口與地短路迫使I/O口為低電平。按鍵釋放后,單片機(jī)內(nèi)部的上拉電阻使I/O口仍然保持高電平。我們所要做的就是在程序中查尋此I/O口的電平狀態(tài)就可以了解我們是否有按鍵動作了。在用單片機(jī)對鍵盤處理的時(shí)候涉及到了一個(gè)重要的過程,那就是鍵盤的去抖動。這里說的抖動是機(jī)械的抖動,是當(dāng)鍵盤在未按到按下的臨界區(qū)產(chǎn)生的電平不穩(wěn)定正常現(xiàn)象,并不是我們在按鍵時(shí)通過注意可以避免的。這種抖動一般10~200毫秒之間,這種不穩(wěn)定電平的抖動時(shí)間對于人來說太快了,而對于時(shí)鐘是微秒的單片機(jī)而言則是慢長的。硬件去抖動就是用部分電路對抖動部分加之處理,軟件去抖動不是去掉抖動,而是避抖動部分的時(shí)間,等鍵盤穩(wěn)定了再對其處理。所以這里選擇了軟件去抖動,實(shí)現(xiàn)法是先查尋按鍵當(dāng)有低電平出現(xiàn)時(shí)立即延時(shí)10~200毫秒以避開抖動(經(jīng)典值為20毫秒),延時(shí)結(jié)束后再讀一次I/O口的值,這一次的值如果為1表示低電平的時(shí)間不到10~200毫秒,視為干擾信號。當(dāng)讀出的值是0時(shí)則表示有按鍵按下,調(diào)用相應(yīng)的處理程序。硬件電路如圖5.6所示: 
圖5.6 按鍵電路圖
6系統(tǒng)程序的設(shè)計(jì) 系統(tǒng)程序主要包括主程序、顯示數(shù)據(jù)子程序、報(bào)警子程序和按鍵子程序等。 6.1主程序 主程序的主要功能是負(fù)責(zé)距離的顯示、讀出并處理HC-RS04的測量距離值,按鍵控制有效距離限制,當(dāng)測量的值超過預(yù)設(shè)值時(shí),蜂鳴器發(fā)聲報(bào)警。 主程序流程圖如圖6.1所示。
圖6.1主流程圖 6.2顯示數(shù)據(jù)子程序 顯示數(shù)據(jù)子程序的主要功能就是把超聲波模塊測量后的結(jié)果經(jīng)單片機(jī)處理完畢的距離顯示在數(shù)碼管上。 顯示數(shù)據(jù)子程序流程圖如圖6.2所示。 圖6.2顯示數(shù)據(jù)子流程圖 6.3報(bào)警子程序 報(bào)警子程序的主要功能是在距離值超過預(yù)警值時(shí),能夠使蜂鳴器發(fā)聲從而達(dá)到報(bào)警的目的。 報(bào)警子程序流程圖如圖6.3所示。 圖6.3報(bào)警子流程圖 6.4按鍵子程序 按鍵子程序的主要功能是有效距離可調(diào),功能鍵調(diào)整上限,再次功能鍵調(diào)整下限,再次按功能退出。 按鍵子程序流程圖如圖6.4所示。
圖6.4按鍵子流程
結(jié) 論本論文中雖然對安全距離模型進(jìn)行了改進(jìn),但仍需進(jìn)一步改進(jìn)和細(xì)化,采用一定的控制理論和算法,使模型更具有科學(xué)性、可靠性和可操作性。本系統(tǒng)現(xiàn)階段只是就危險(xiǎn)情況實(shí)現(xiàn)了向駕駛員報(bào)警,事實(shí)上由于駕駛員的反應(yīng)性有差異及注意力不集中、疲勞駕駛等因素的存在,有時(shí)未必能及時(shí)采取減速、剎車等措施,因此系統(tǒng)下一步的目標(biāo)是實(shí)現(xiàn)自動剎車的功能,使駕駛員的安全更有保障。 (1)本系統(tǒng)只是在理論上討論了汽車防碰撞的問題,由于實(shí)驗(yàn)設(shè)備和時(shí)間問題還沒有進(jìn)行實(shí)驗(yàn)。 (2)本系統(tǒng)還應(yīng)該進(jìn)一步在復(fù)雜天氣(雨、雪、大霧),潮濕、冰雪路面上進(jìn)一步測試,驗(yàn)證系統(tǒng)的設(shè)計(jì)功能。 (3)在本系統(tǒng)基礎(chǔ)上,進(jìn)一步開發(fā)車輛自適應(yīng)巡航控制系統(tǒng),使車輛的舒適性和主動安全性得到提高. 參考文獻(xiàn)[1] 胡漢才.單片機(jī)原理及系統(tǒng)設(shè)計(jì)[M] .北京:清華大學(xué)出版社,2012. [2] 王守中. 51單片機(jī)開發(fā)入門與典型實(shí)例[M].北京:人民郵電出版社,2007. [3] 陳雪麗. 單片機(jī)原理及接口技術(shù)[M].北京:化學(xué)工業(yè)出版社, 2005. [4] 薛均義,張彥斌.MCS-51系列單片微型計(jì)算機(jī)及其應(yīng)用.西安:西安交通大學(xué)出版社,2008. [5] 唐穎,程菊花,任條娟.單片機(jī)原理與應(yīng)用及C51程序設(shè)計(jì)[M].北京:北京大學(xué)出版社,2011 [6]鐘勇,范森海,王永輝.高速公路事故的誘因及預(yù)防對策[J].公路交通科技.2010(6). [7]鄭安國.我國高速公路交通事故的基本特點(diǎn)與預(yù)防對策[J].公路交通科技學(xué)報(bào).2012(4). [8]陳曉東.鄭建祥汽車用微機(jī)可靠性試驗(yàn)研究[J].汽車與電器.2009(增刊). [9]周立功.發(fā)展有限公司.P89V51RD2器件手冊.2013.3. .
附 錄(A)(單片機(jī)原理圖) 
致 謝
首先,我要感謝我的指導(dǎo)老師在畢業(yè)設(shè)計(jì)中對我給予的悉心指導(dǎo)和嚴(yán)格要求,同時(shí)也感謝本校的一些老師在畢業(yè)設(shè)計(jì)期間所給予我得幫助。在我畢業(yè)論文寫作期間,各位老師給我提供了種種專業(yè)知識上的指導(dǎo)和日常生活上的關(guān)懷,沒有您們這樣的幫助和關(guān)懷,我不會這么順利的完成畢業(yè)設(shè)計(jì),借此機(jī)會,向您們表示由衷的感激。同時(shí)還要感謝系實(shí)驗(yàn)室在畢業(yè)設(shè)計(jì)期間提供給我們優(yōu)越的實(shí)驗(yàn)條件。
接著,我要感謝和我一起做畢業(yè)設(shè)計(jì)的同學(xué)。在畢業(yè)設(shè)計(jì)的短短幾個(gè)月里,你們給我提出很多寶貴的意見,給了我不少幫助還有工作上的支持,在此也真誠的謝謝你們。同時(shí),我還要感謝我的寢室同學(xué)和身邊的朋友,正是在這樣一個(gè)團(tuán)結(jié)友愛,相互促進(jìn)的環(huán)境中,在和他們的相互幫助和啟發(fā)中,才有我今天的小小收獲。
最后我要深深地感謝我的家人,正是他們含辛茹苦地把我養(yǎng)育成人,在生活和學(xué)習(xí)上給予我無盡的愛、理解和支持,才使我時(shí)刻充滿信心和勇氣,克服成長路上的種種困難,順利的完成大學(xué)學(xué)業(yè)。
還有許許多多給予我學(xué)業(yè)上鼓勵(lì)和幫助的朋友,在此無法一一列舉,在此也一并表示忠心地感謝!
單片機(jī)源程序如下:
- <font style="font-size: 12pt">#include <reg52.H>//器件配置文件
- #include <intrins.h>
-
- //按鍵聲明
- sbit RX = P3^2;
- sbit TX = P3^3;
- sbit S1 = P1^4;
- sbit S2 = P1^5;
- sbit S3 = P1^6;
- //蜂鳴器
- sbit Feng= P2^0;
-
- //變量聲明
- unsigned int time=0;
- unsigned int timer=0;
- unsigned char posit=0;
- unsigned long S=0;
- unsigned long BJS=50;//報(bào)警距離80CM
- //模式 0正常模式 1調(diào)整
- char Mode=0;
- bit flag=0;
-
- unsigned char const discode[] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0xff/*-*/};
- unsigned char const positon[4]={0xfd,0xfb,0xf7,0xfe};
- unsigned char disbuff_BJ[4] ={0,0,0,0};//報(bào)警信息
-
- //延時(shí)100ms
- void delay(void) //誤差 0us
- {
- unsigned char a,b,c;
- for(c=10;c>0;c--)
- for(b=38;b>0;b--)
- for(a=130;a>0;a--);
- }
-
- //按鍵掃描
- void Key_()
- {
- //+
- if(S1==0)
- {
- delay();
- while(S1==0)
- {
- P1=P1|0x0f;
- }
- BJS++;
- if(BJS==151)
- {
- BJS=0;
- }
- }
- //-
- else if(S2==0)
- {
- while(S2==0)
- {
- P1=P1|0x0f;
- }
- BJS--;
- if(BJS==0)
- {
- BJS=150;
- }
- }
- //功能
- else if(S3==0)
- {
- delay();
- while(S3==0)
- {
- P1=P1|0x0f;
- }
- Mode++;
- if(Mode==2)
- {
- Mode=0;
- }
- }
- }
- /**********************************************************************************************************/
- //掃描數(shù)碼管
- void Display(void)
- {
- //正常顯示
- if(Mode==0)
- {
- if(posit==0)//數(shù)碼管的米標(biāo)志
- {
- P0=(discode[disbuff[posit]])|0x80;
- }
- else
- {
- P0=discode[disbuff[posit]];
- }
- if(++posit>=3)
- posit=0;
- }
- //報(bào)警顯示
- else
- {
- if(posit==0)//數(shù)碼管的米標(biāo)志
- {
- P0=(discode[disbuff_BJ[posit]])|0x80;
- }
- else if(posit==3)
- {
- P0=0x76;
- }
- else
- {
- P0=discode[disbuff_BJ[posit]];
- }
-
- P1=positon[posit];
- }
- }
- /**********************************************************************************************************/
- //計(jì)算
- void Conut(void)
- {
- time=TH0*256+TL0;
- TH0=0;
- TL0=0;
- S=(time*1.7)/100; //算出來是CM
-
- if(Mode==0)
- {
- if((S>=700)||flag==1) //超出測量范圍顯示“-”
- {
- Feng=0;
- flag=0;
- disbuff[0]=10; //“-”
- disbuff[1]=10; //“-”
- disbuff[2]=10; //“-”
- }
- else
- {
- //距離大于報(bào)警距
- if(S<=BJS)
- {
- Feng=0;
- }
- else
- {
- Feng=1;
- }
- disbuff[0]=S%1000/100;
- disbuff[1]=S%1000%100/10;
- disbuff[2]=S%1000%10 %10;
- }
- }
- else
- {
- Feng=1;
- disbuff_BJ[0]=BJS%1000/100;
- disbuff_BJ[1]=BJS%1000%100/10;
- disbuff_BJ[2]=BJS%1000%10 %10;
- }
- }
- /**********************************************************************************************************/
- //定時(shí)器0
- void zd0() interrupt 1 //T0中斷用來計(jì)數(shù)器溢出,超過測距范圍
- {
- flag=1; //中斷溢出標(biāo)志
- }
- /**********************************************************************************************************/
- //定時(shí)器1
- void zd3() interrupt 3 //T1中斷用來掃描數(shù)碼管和計(jì)800MS啟動模塊
- {
- TH1=0xf8;
- TL1=0x30;
- Key_();
- Display();
- timer++;
- if(timer>=400)
- {
- timer=0;
- TX=1; //800MS 啟動一次模塊
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- TX=0;
- }
- }
- /**********************************************************************************************************/
- //主函數(shù)
- void main(void)
- {
- TMOD=0x11; //設(shè)T0為方式1,GATE=1;
- TH0=0;
- TL0=0;
- TH1=0xf8; //2MS定時(shí)
- TL1=0x30;
- ET0=1; //允許T0中斷
- TR1=1; //開啟定時(shí)器
- EA=1; //開啟總中斷
- while(1)
- {
- 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ì)算
- }
- }</font>
復(fù)制代碼
完整的Word格式文檔51黑下載地址:
57-超聲波測距汽車防撞系統(tǒng).doc
(458.5 KB, 下載次數(shù): 127)
2018-7-11 12:08 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|