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