久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 18318|回復: 2
收起左側

基于51單片機的超聲波測距汽車防撞系統(tǒng)設計論文

[復制鏈接]
ID:369377 發(fā)表于 2018-7-11 12:09 | 顯示全部樓層 |閱讀模式
學生姓名
[姓名]
學    號
[學號]
專業(yè)班級
[專業(yè)班級]
  分院(系)
[分院(系)]
指導教師(職稱)
[指導教師(職稱)]

基于51的超聲波測距汽車防撞系統(tǒng)

【摘要】
基于51的超聲波測距汽車防撞系統(tǒng),介紹了超聲波測距的基本原理和系統(tǒng)框圖,給出了超聲波發(fā)射和接收電路,通過盲區(qū)的消除,提高了測距的精確度。利用超聲波傳輸中距離與時間的關系,采用51單片機進行控制及數(shù)據(jù)處理,設計出了能精確測量兩點間距離的超聲波液位檢測系統(tǒng)。系統(tǒng)主要由超聲波發(fā)射器電路、超聲波接收器電路、單片機控制電路、按鍵電路及顯示電路構成。利用所設計出的超聲波測距汽車防撞系統(tǒng),對行駛中的車距進行了測試,采集當時兩車距離過近系統(tǒng)會發(fā)出聲光警報提示司機作出相應反應動作。此系統(tǒng)具有易控制、工作可靠、測量精度高的優(yōu)點,可實時車距檢測。

目 錄

1 緒 論

1.1研究的背景

1.2研究的主要內(nèi)容

1.3應解決的關鍵問題

2 電路方案論證

2.1方案比較

2.1.1 激光測距

2.1.2 超聲波測距

2.2電路總體方案

3單片機概述

3.1 STC89C51主要性能

3.2 STC89C51外部結構及特性

3.3 STC89C51內(nèi)部組成

4 超聲波測距模塊

4.1 超聲波傳感器介紹

4.2 HC-SR04超聲波測距模塊的性能特點

4.3 HC-SR04的管腳排列和電氣參數(shù)

4.3.1 管腳簡介

4.3.2 HC-SR04的電氣參數(shù)

4.4超聲波時序圖

5系統(tǒng)硬件電路設計

5.1單片機最小系統(tǒng)

5.1.1 STC89C51芯片            

5.1.2 復位電路

5.1.3 晶振電路

5.2 驅動顯示電路及報警電路

5.2.1  LED數(shù)碼管顯示電路

5.2.2 蜂鳴器和LED報警

5.3 HC-RS04超聲波測距原理

5.4 按鍵設置電路

6系統(tǒng)程序的設計

6.1主程序

6.2顯示數(shù)據(jù)子程序

6.3報警子程序

6.4按鍵子程序

結 論

參考文獻

附 錄(A)

附 錄(B)

致 謝



1 緒 論1.1研究的背景

汽車業(yè)與電子業(yè)是世界工業(yè)的兩大金字塔,隨著汽車工業(yè)與電子工業(yè)的不斷發(fā)展,在現(xiàn)代汽車上,電子技術的應用越來越來廣泛,汽車電子化的程度越來越高。汽車電子技術是汽車技術與電子技術想結合的產(chǎn)物。汽車上的電器與電子控制系統(tǒng)在汽車技術進入機電一體化階段的今天,地位極為重要,正在汽車技術領域發(fā)展成為一門獨立的分支學科,其性能的優(yōu)劣直接影響到汽車的動力性、經(jīng)濟性、可靠性、安全性、排放干凈、及舒適性等。電子控制技術在汽車上,首先應用于發(fā)動機燃油消耗控制與排放進化與排放控制,接著被應用于底盤部分的控制,以提高行駛的穩(wěn)定性、安全性、與舒適性等。隨著交通運輸向高密度發(fā)展,電子控制技術又進一步應用于汽車的乘坐安全性和導航等方面。

電子技術在汽車安全控制系統(tǒng)的應用主要是為了增強汽車的安全、舒適和方便。應用的電子技術主要有:電子控制安全氣囊,智能記錄儀,雷達式距離報警器,中央控制門鎖,自動空調(diào),自動車窗、車門、座椅、刮水器,車燈控制,電源控制以及充電器等。近年來汽車的自動調(diào)速系統(tǒng),主動式汽車防撞系統(tǒng),汽車監(jiān)測和自診斷系統(tǒng)以及汽車導航系統(tǒng)也得到了廣泛的應用。

在過去20~30年中,人們主要把精力集中于汽車的被動安全性方面,例如,在汽車的前部或后部安裝保險杠、在汽車外殼四周安裝某種彈性材料、在車內(nèi)相關部位安裝各種形式的安全帶及安全氣囊等等,以減輕汽車碰撞帶來的危害。安裝防撞保險杠固然能在某種程度上減輕碰撞給本車造成損壞,卻無法消除對被撞物體的傷害;此外,車上安裝的安全氣囊系統(tǒng),在發(fā)生車禍時不一定能有效地保護車內(nèi)乘務員的安全。所有這些被動安全措施都不能從根本上解決汽車在行駛中發(fā)生碰撞造成的問題。如果從預防撞車事故的發(fā)生的角度著眼,在提高汽車主動安全性方面下功夫,則可在汽車安全性領域有較大的突破。

汽車發(fā)生碰撞的主要原因是由于汽車距其前方物體(如汽車、行人或其他障礙物)的距離與汽車本身的車速不相稱造成的,即距離近而相對速度又太高。為了防止汽車與前方物體發(fā)生碰撞,汽車的車速就要根據(jù)與前方物體的距離變化由執(zhí)行機構進行控制,使汽車始終在安全車速下行駛。這樣就會大大提高汽車行駛的安全性,減少車禍的發(fā)生。

發(fā)展汽車防撞技術,對提高汽車智能化水平有重要意義。據(jù)統(tǒng)計,危險境況時,如果能給駕駛員半秒鐘的預處理時間,則可分別減少追尾事故的30%,路面相關事故的50%,迎面撞車事故的 60%; 1秒鐘的預警時間可防止90%的追尾碰撞和60%的迎頭碰撞。

汽車要避撞就必須憑借一定的裝備測量前方障礙物的距離,并迅速反饋給汽車,以在危急的情況下,通過報警或自動進行某項預設定操作如緊急制動等,來避免由于駕駛員疲勞、疏忽、錯誤判斷所造成的交通事故。目前,大家都將防撞技術的關鍵點著眼于車輛測距技術。

1.2研究的主要內(nèi)容

課題《基于51的超聲波測距汽車防撞系統(tǒng)》由51單片機最小系統(tǒng)、超聲波測距模塊、驅動顯示電路、報警電路和按鍵電路等組成。利用超聲波測距模塊HC-SR04測量距離,并對數(shù)據(jù)進行分析處理,傳給51單片機,再通過LED數(shù)碼管顯示出來,可以通過按鍵調(diào)整報警距離,同時電源部分采用5V穩(wěn)壓直流電源。

1.3應解決的關鍵問題

1、對主要硬件電路設計、制作實物時擬解決的關鍵問題是:聲音的發(fā)射和接受時間的計算。

2、超聲波測距采用軟件編程實現(xiàn)。

3、超聲波測距的死區(qū)解決。

4、按鍵對報警值的設置。


2 電路方案論證
2.1方案比較2.1.1 激光測距

激光測距一般采用兩種方式來測量距離:脈沖法和相位法。脈沖法測距的過程:測距儀發(fā)射出的激光經(jīng)被測量物體的反射后又被測距儀接收,測距儀同時記錄激光往返的時間,光速和往返時間的乘積的一半,就是測距儀和被測量物體之間的距離。相位法測距的過程:用無線電波段的頻率,對激光束進行幅度調(diào)制并測定調(diào)制光往返測線一次所產(chǎn)生的相位延遲,再根據(jù)調(diào)制光的波長,換算此相位延遲所代表的距離,即用間接方法測定出光經(jīng)過往返測線所需的時間。

2.1.2 超聲波測距

汽車防撞系統(tǒng)的基本超聲波測距的原理是利用超聲波在空氣中的傳播速度為已知,測量聲波在發(fā)射后遇到障礙物反射回來的時間,根據(jù)發(fā)射和接收的時間差計算出發(fā)射電到障礙物的實際距離,可見這與雷達測距原理相似。超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射時刻的同時開始計時,超聲波在空氣中傳播,途中碰到障礙物就立即返回來,超聲波接收器收到反射波就立即停止計時。

從以上兩種方案,很容易看出,采用方案二,電路比較簡單,軟件設計也比較簡單,故采用了方案二。

2.2電路總體方案

圖2.1是電路總體框圖,包括51單片機最小系統(tǒng),HC-SR04超聲波測距模塊,LED數(shù)碼管顯示電路,蜂鳴器報警電路和按鍵電路。

圖2.1 電路基本框圖

                                            
3單片機概述3.1 STC89C51主要性能

STC89C51 是STC公司推出的一款超強抗干擾,加密性強,在線可編程,高速,低功耗CMOS 8位單片機。片內(nèi)含 4k bytes 的可反復擦寫Flash只讀程序存儲器和256 bytes 的隨機數(shù)據(jù)存儲器(RAM),器件采用STC公司的高密度、非易失性存儲技術生產(chǎn),與標準MCS-51指令系統(tǒng)及8052產(chǎn)品引腳兼容, 片內(nèi)置通用8位中央處理器 (CPU)和Flash存儲單元, 功能強大的STC89C51單片機適合于許多較為復雜控制應用場合。

3.2 STC89C51外部結構及特性

其外形封裝有兩種方式:雙列直插式40腳封裝(DIP)和方形44腳封裝 (PLCC),直插式40 腳封裝(DIP)和外部總線結構如圖2和圖3所示:

圖3.1 STC89C51引腳排列                                                                      圖3.2 外部總線

STC89C51的 4 個 8 位I/O口的功能說明如下:

(1)P0口:P0 口是一個 8 位漏極開路的雙向 I/O 口。作為輸出口,每位能驅動8個TTL邏輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入。 當訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低 8 位地址/數(shù)據(jù)復用。在這種模式下,P0具有內(nèi)部上拉電阻。在flash 編程時,P0口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。

(2)P1口:P1口是一個具有內(nèi)部上拉電阻的8位雙向 I/O口,p1輸出緩沖器能驅動4個TTL 邏輯電平。對P1端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0 和 P1.2分別作定時器/計數(shù)器 2 的外部計數(shù)輸入(P1.0/T2)和定時器/計數(shù)器 2 的觸發(fā)輸入(P1.1/T2EX)。在 flash 編程和校驗時,P1口接收低8位地址字節(jié)。

(3)P2口:P2口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅動 4 個 TTL 邏輯電平。對 P2端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲器或用 16 位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX @DPTR)時,P2口送出高八位地址。在這種應用中,P2口使用很強的內(nèi)部上拉發(fā)送1。在使用8 位地址(如 MOVX @RI)訪問外部數(shù)據(jù)存儲器時,P2 口輸出 P2 鎖存器的內(nèi)容。在 flash 編程和校驗時,P2 口也接收高 8 位地址字節(jié)和一些控制信號。

(4)P3口:P3口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,p2 輸出緩沖器能驅動4個TTL邏輯電平。對P3端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在 flash 編程和校驗時,P3 口也接收一些控制信號。P3 口亦作為AT89C52特殊功能(第二功能)使用,如下所示:

  P3.0  RXD(串行輸入口)               

  P3.1  TXD(串行輸出口)

  P3.2  INTO(外部中斷0 輸入口)         

  P3.3  INT1(外部中斷 1 輸入口)

  P3.4  TO(定時器 0 外部輸入)            

  P3.5  TI(定時器 1 外部輸入)

  P3.6  WR(外部數(shù)據(jù)存儲器寫選通信號)

  P3.7(外部數(shù)據(jù)存儲器讀選通信號)

3.3 STC89C51內(nèi)部組成

STC89C51單片機在一塊芯片中集成了 CPU、RAM、ROM、定時器/計數(shù)器、看門狗和多種功能的 I/O 口設備的等,相當于一臺計算機所需要的基本功能部件。

STC89C51單片機內(nèi)包含的具體部分如下:

一個8 位 CPU。

一個片內(nèi)振蕩器及時鐘電路。

4KB Flash 程序存儲器。

128 B RAM 數(shù)據(jù)存儲器。

三個16 位定時器/計數(shù)器。

可尋址 64KB 的外部數(shù)據(jù)存儲器和 64KB 的外部程序存儲器空間的控制電路。 32 條可編程的 I/O線(4組8 位并行 I/O端口)。

一個可編程全雙工串口通信。

8 個中斷源、兩個優(yōu)先級嵌套中斷結構。

STC89C52單片機的框圖如圖3.3所示,各功能部件由內(nèi)部總線連接在一起。

圖3.3 STC89C51單片機框圖

                                                   
4 超聲波測距模塊4.1 超聲波傳感器介紹

超聲波是一種頻率比較高的聲音,由于其指向性強、能量消耗緩慢、傳播距離較遠等優(yōu)點,而經(jīng)常用于距離的測量,如測距儀和物位測量儀等都可以通過超聲波來實現(xiàn)。超聲波測距主要應用于倒車雷達、建筑施工工地以及一些工業(yè)現(xiàn)場,例如液位、井深、管道長度等場合。超聲波測距的利用超聲波檢測往往比較迅速、方便、計算簡單、易于做到實時控制,并且在測量精度方面能達到工業(yè)實用的要求,因此在測控系統(tǒng)的研制上得到了廣泛應用。

超聲傳感器是一種將其他形式的能轉變?yōu)樗桀l率的超聲能或是把超聲能轉變?yōu)橥l率的其他形式的能的器件。目前常用的超聲傳感器有兩大類,即電聲型與流體動力型。電聲型主要有:1 壓電傳感器;2 磁致伸縮傳感器;3 靜電傳感器。流體動力型中包括有氣體與液體兩種類型的哨笛。由于工作頻率與應用目的不同,超聲傳感器的結構形式是多種多樣的,并且名稱也有不同,例如在超聲檢測和診斷中習慣上都把超聲傳感器稱作探頭,而工業(yè)中采用的流體動力型傳感器稱為“哨”或“笛”。

壓電傳感器屬于超聲傳感器中電聲型的一種。探頭由壓電晶片、楔塊、接頭等組成,是超聲檢測中最常用的實現(xiàn)電能和聲能相互轉換的一種傳感器件,是超聲波檢測裝置的重要組成部分。壓電材料分為晶體和壓電陶瓷兩類。屬于晶體的如石英,鈮酸鋰等,屬于壓電陶瓷的有鋯鈦酸鉛,鈦酸鋇等。其具有下列的特性:把這種材料置于電場之中,它就產(chǎn)生一定的應變;相反,對這種材料施以外力,則由于產(chǎn)生了應變就會在其內(nèi)部產(chǎn)生一定方向的電場。所以,只要對這種材料加以交變電場,它就會產(chǎn)生交變的應變,從而產(chǎn)生超聲振動。因此,用這種材料可以制成超聲傳感器。

傳感器的主要組成部分是壓電晶片。當壓電晶片受發(fā)射電脈沖激勵后產(chǎn)生振動,即可發(fā)射聲脈沖,是逆壓電效應。當超聲波作用于晶片時,晶片受迫振動引起的形變可轉換成相應的電信號,是正壓電效應。前者用于超聲波的發(fā)射,后者即為超聲波的接收。超聲波傳感器一般采用雙壓電陶瓷晶片制成。這種超聲傳感器需要的壓電材料較少,價格低廉,且非常適用于氣體和液體介質(zhì)中。在壓電陶瓷上加有大小和方向不斷變化的交流電壓時,根據(jù)壓電效應,就會使壓電陶瓷晶片產(chǎn)生機械變形,這種機械變形的大小和方向在一定范圍內(nèi)是與外加電壓的大小和方向成正比的。也就是說,在壓電陶瓷晶片上加有頻率為 f0交流電壓,它就會產(chǎn)生同頻率的機械振動,這種機械振動推動空氣等媒介,便會發(fā)出超聲波。如果在壓電陶瓷晶片上有超聲機械波作用,這將會使其產(chǎn)生機械變形,這種機械變形是與超聲機械波一致的,機械變形使壓電陶瓷晶片產(chǎn)生頻率與超聲機械波相同的電信號。

圖4.1壓電式超聲波傳感器結構圖

壓電式超聲波發(fā)生器實際上是利用壓電晶體的諧振來工作的,超聲波發(fā)生器內(nèi)部結構如圖2.1所示,它有兩個壓電晶片和一個共振板,當它的兩極外加脈沖信號,其頻率等于壓電晶片的固有振蕩頻率時,壓電晶片將會發(fā)生共振,并帶動共振板振動,便產(chǎn)生超聲波。反之,如果兩電極間未外加電壓,當共振板接收到超聲波時,將壓迫壓電晶片作振動,將機械能轉化為電信號,這時它就成為超聲波傳感器。

壓電陶瓷晶片有一個固定的諧振頻率,即中心頻率 f0。發(fā)射超聲波時,加在其上面的交變電壓的頻率要與它的固有諧振頻率一致。這樣,超聲傳感器才有較高的靈敏度。當所用壓電材料不變時,改變壓電陶瓷晶片的幾何尺寸,就可非常方便的改變其固有諧振頻率。利用這一特性可制成各種頻率的超聲傳感器。

超聲波傳感器的內(nèi)部結構由壓電陶瓷晶片、錐形輻射喇叭、底座、引線、金屬殼及金屬網(wǎng)構成,其中,壓電陶瓷晶片是傳感器的核心,錐形輻射喇叭使發(fā)射和接收超聲波能量集中,并使傳感器有一定的指向角,金屬殼可防止外界力量對壓電陶瓷晶片及錐形輻射喇叭的損壞。金屬網(wǎng)也是起保護作用的,但不影響發(fā)射與接收超聲波。

4.2 HC-SR04超聲波測距模塊的性能特點

HC-SR04超聲波測距模塊可提供2cm-400cm的非接觸式距離感測功能,測距精度可高達3mm,模塊包括超聲波發(fā)射器、接收器與控制電路。其基本工作原理:

(1)采用IO口TRIG觸發(fā)測距,給至少10us的高電平信號;

(2)模塊自動發(fā)送8個40khz的方波,自動檢測是否有信號返回;

(3)有信號返回,通過IO口ECH0輸出一個高電平,高電平持續(xù)的時間就是超聲波從發(fā)射到返回的時間。測試距離=(高電平時間*聲速/340M/S)/2;

(4)當TRIG從0->1時,主控制板啟動,當超時10ms時ECH0仍然沒有出現(xiàn)150us的0信號,表示沒有障礙。

本模塊性能穩(wěn)定,測度距離精確,其主要特點:

(1)超微型,只相當于兩個發(fā)射,接收頭的面積已經(jīng)沒法再小了;

(2)無盲區(qū)(10mm內(nèi)成三角形誤差較大,簡單可以當做0處理);

(3)反應速度快,10ms的測量周期,不容易丟失高速目標;

(4)發(fā)射頭,接收頭緊靠,和被測目標基本成直線關系;

(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ù)表

電氣參數(shù)

HC-SR04超聲波模塊

工作電壓

DC 5V

工作電流

15mA

工作頻率

40Hz

最遠射程

4m

最近射程

2cm

測量角度

15度

輸入觸發(fā)信號

10us的TTL脈沖

輸出回響信號

輸出TTL電平信號,與射程成比例

規(guī)格尺寸

45*20*15mm


4.4超聲波時序圖

圖4.3超聲波時序圖

              此時序圖表明只需提供一個10us一上脈沖觸發(fā)信號,該模塊內(nèi)部將發(fā)出8個40kHz周期電平并檢測回波。一旦檢測到右回波信號則輸出回響信號。回響信號的脈沖寬度與所測的距離成正比。由此通過發(fā)射信號到收到的回響信號時間間隔可以計算得到距離。公式:uS/58=厘米或者uS/148=英寸;或是:距離=高電平時間*聲速(340M/S)/2;建議測量周期為60ms一上,以防止發(fā)射信號對回響信號的影響。

                                                      
5系統(tǒng)硬件電路設計5.1單片機最小系統(tǒng)5.1.1 STC89C51芯片

本次設計我們所采用的是STC89C51單片機,是一種帶4k字節(jié)閃爍可編程可擦除只讀存儲器的低電壓、高性能COMOS8的微處理器,該器件有40引腳,速度較快,價格便宜,燒錄方便,通過串口即可下載,還可以實現(xiàn)在線編程,采用ATMEL高密度非易失存儲器制造技術制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。

5.1.2 復位電路

    為確保微機系統(tǒng)中電路穩(wěn)定可靠工作,復位電路是必不可少的一部分,復位電路的基本功能是:系統(tǒng)上電時提供復位信號,直至系統(tǒng)電源穩(wěn)定后,撤銷復位信號。為可靠起見,電源穩(wěn)定后還要經(jīng)一定的延遲才撤銷復位,以防電源開關或電源插頭分-合過程中引起的抖動而影響復位。當單片機的復位引腳出現(xiàn)2個機器周期以上的高電平時,單片機就執(zhí)行復位操作。如果RST持續(xù)為高電平,單片機就處于循環(huán)復位狀態(tài)。所以復位引腳的電容大一點沒多大關系,頂多是復位時間長一點;但如果電容太小,高電平持續(xù)時間太短,則單片機無法正常復位,就不能工作,電容通常取10UF或22UF,鋁電解電容即可。

單片機的復位電路在剛接通電時,剛開始電容是沒有電的,電容內(nèi)的電阻很低,通電后,5V的電源通過電阻給電解電容進行充電,電容兩端的電會由0V慢慢的升到4V左右(此時間很短一般小于0.3秒),正因為這樣,復位腳由低電位升到高電位,引起了內(nèi)部電路的復位工作;當按下復位鍵時,電容兩端放電,電容又回到0V了,于是又進行了一次復位工作。電路圖如圖5.1。

圖5.1 復位電路

5.1.3 晶振電路

它是單片機系統(tǒng)正常工作的保證,如果振蕩器不起振,系統(tǒng)將會不能工作。假如振蕩器運行不規(guī)律,系統(tǒng)執(zhí)行程序的時候就會出現(xiàn)時間上的誤差,這在通信中會體現(xiàn)的很明顯:電路將無法通信。它是由一個晶振和兩個瓷片電容組成的,晶振和瓷片電容是沒有正負的,兩個瓷片電容相連的那端一定要接地,如圖5.2所示。

圖5.2 晶振電路

一般單片機的晶振工作于并聯(lián)諧振狀態(tài),也可以理解為諧振電容的一部分。它是根據(jù)晶振廠家提供的晶振要求負載電容選值的,換句話說,晶振的頻率就是在它提供的負載電容下測得的,能最大限度的保證頻率值的誤差,也能保證溫漂等誤差。

機器周期:通常從內(nèi)存中讀取一個指令字的最短時間來規(guī)定CPU周期,(也就是計算機通過內(nèi)部或外部總線進行一次信息傳輸從而完成一個或幾個微操作所需要的時間),它一般由12個時鐘周期組成。而時鐘周期=1秒/晶振頻率,因此單片機的機器周期=12秒/晶振頻率 ,補充其他幾個周期:

指令周期(Instruction Cycle):取出并執(zhí)行一條指令的時間。

總線周期(BUS Cycle):也就是一個訪存儲器或I/O端口操作所用的時間。

時鐘周期(Clock Cycle):又稱節(jié)拍周期,是處理操作的最基本單位。(晶振頻率的倒數(shù),也稱T狀態(tài))

指令周期、總線周期和時鐘周期之間的關系:一個指令周期由若干個總線周期組成,而一個總線周期時間又包含有若干個時鐘周期。

一般處理器的一個機器周期由12個時鐘周期所組成。所以單片機用12M晶振,運行速度為1M。

負載電容=[(Cd*Cg)/(Cd+Cg)]+Cic+△C[6 ],跟晶振特性、單片機內(nèi)部時鐘電路等效電容有關。

兩個電容的取值都是相同的,或者說相差不大,如果相差太大,容易造成諧振的不平衡,容易造成停振或者干脆不起振。其起到一個并聯(lián)協(xié)振的作用,這樣可以讓它的脈沖更平穩(wěn)與協(xié)調(diào)。

5.2 驅動顯示電路及報警電路

顯示電路采用LED數(shù)碼管顯示,當超過已設定的距離時,蜂鳴器和LED可實現(xiàn)報警功能并可通過按鍵實現(xiàn)有限距離的調(diào)整。

5.2.1 LED數(shù)碼管顯示電路

本電路的顯示模塊主要由一個4位一體的7段LED數(shù)碼管構成,用于顯示測量到的電壓值。它是一個共陽極的數(shù)碼管,每一位數(shù)碼管的a,b,c,d,e,f,g和dp端都各自連接在一起,用于接收單片機的P1口產(chǎn)生的顯示段碼。S1,S2,S3,S4引腳端為其位選端,用于接收單片機的P2口產(chǎn)生的位選碼。本系統(tǒng)采用動態(tài)掃描方式。掃描方式是用其接口電路把所有數(shù)碼管的8個比劃段a~g和dp同名端連在一起,而每一個數(shù)碼管的公共極COM各自獨立地受I/O線控制。CUP從字段輸出口送出字型碼時,所有數(shù)碼管接收到相同的字型碼,但究竟是哪個數(shù)碼管亮,則取決于COM端。COM端與單片機的I/O接口相連接,由單片機輸出位位選碼到I/O接口,控制何時哪一位數(shù)碼管被點亮。在輪流點亮數(shù)碼管的位掃描過程中,每位數(shù)碼管的點亮時間極為短暫。但由于人的視覺暫留現(xiàn)象,給人的印象就是一組穩(wěn)定顯示的數(shù)碼。動態(tài)方式的優(yōu)點是十分明顯的,即耗電省,在動態(tài)掃描過程中,任何時刻只有一個數(shù)碼管是處于工作狀態(tài)的。具體原理圖如圖5.3

圖5.3 顯示電路

5.2.2 蜂鳴器和LED報警

蜂鳴器是一種一體化結構的電子訊響器,采用直流電壓供電,廣泛應用于計算機、打印機、復印機、報警器、電子玩具、汽車電子設備、電話機、定時器等電子產(chǎn)品中作發(fā)聲器件。蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。多諧振蕩器由晶體管或集成電路構成,當接通電源后(1.5~15V直流工作電壓),多諧振蕩器起振,暑促1.5~2.5kHz的音頻信號,阻抗匹配器推動壓電蜂鳴片發(fā)聲。電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動膜片及外殼組成。接通電源后,振蕩器產(chǎn)生的音頻信號電流通過電磁線圈,是電磁線圈產(chǎn)生磁場,振動膜片在電磁線圈和磁鐵的相互作用下,周期性地振動發(fā)聲。本設計采用電磁式蜂鳴器,當距離超出預設值時,蜂鳴器就會發(fā)出報警生硬。

電磁式蜂鳴器的發(fā)聲原理是電流通過電磁線圈,是電磁線圈產(chǎn)生磁場來驅動振動膜發(fā)聲的,因此需要一定的電流才能驅動它,單片機IO引腳輸出的電流較小,單片機輸出的TTL電平基本上驅動不了蜂鳴器,因此需要增加一個電流放大的電路,即通過一個PNP型三極管8550來放大驅動蜂鳴器。原理圖見圖5.3。

而LED電路是由一個發(fā)光二極管和電阻組成,因為LED一般工作在5ma到20ma,所以選擇1K電阻進行限流。如圖5.4所示。

圖5.4 蜂鳴器驅動電路

5.3 HC-RS04超聲波測距原理

超聲波測距是借助于超聲脈沖回波渡越時間法來實現(xiàn)的,設超聲波脈沖由傳感器發(fā)出到接收所經(jīng)歷的時間為t,超聲波在空氣中的傳播速度為c,則從傳感器到目標物體的距離D可用下式求出:D=ct/2。其系統(tǒng)框圖如圖5.5所示。

圖5.5 系統(tǒng)框圖

基本原理:經(jīng)發(fā)射器發(fā)射出長約6mm,頻率為40khz的超聲波信號。此信號被物體反射回來由接收頭接收,接收頭實質(zhì)上是一種壓電效應的換能器。它接收到信號后產(chǎn)生mV級的微弱電壓信號。

5.4 按鍵設置電路

單片機鍵盤有獨立鍵盤和矩陣式鍵盤兩種:獨立鍵盤每一個I/O口上只接一個按鍵,按鍵的另一端接電源或接地(一般接地),這種接法程序比較簡單且系統(tǒng)更加穩(wěn)定;而矩陣式鍵盤式接法程序比較復雜,但是占用的I/O少。根據(jù)本設計的需要這里選用了獨立式鍵盤接法。獨立式鍵盤的實現(xiàn)方法是利用單片機I/O口讀取口的電平高低來判斷是否有鍵按下。將常開按鍵的一端接地,另一端接一個I/O口,程序開始時將此I/O口置于高電平,平時無鍵按下時I/O口保護高電平。當有鍵按下時,此I/O口與地短路迫使I/O口為低電平。按鍵釋放后,單片機內(nèi)部的上拉電阻使I/O口仍然保持高電平。我們所要做的就是在程序中查尋此I/O口的電平狀態(tài)就可以了解我們是否有按鍵動作了。在用單片機對鍵盤處理的時候涉及到了一個重要的過程,那就是鍵盤的去抖動。這里說的抖動是機械的抖動,是當鍵盤在未按到按下的臨界區(qū)產(chǎn)生的電平不穩(wěn)定正常現(xiàn)象,并不是我們在按鍵時通過注意可以避免的。這種抖動一般10~200毫秒之間,這種不穩(wěn)定電平的抖動時間對于人來說太快了,而對于時鐘是微秒的單片機而言則是慢長的。硬件去抖動就是用部分電路對抖動部分加之處理,軟件去抖動不是去掉抖動,而是避抖動部分的時間,等鍵盤穩(wěn)定了再對其處理。所以這里選擇了軟件去抖動,實現(xiàn)法是先查尋按鍵當有低電平出現(xiàn)時立即延時10~200毫秒以避開抖動(經(jīng)典值為20毫秒),延時結束后再讀一次I/O口的值,這一次的值如果為1表示低電平的時間不到10~200毫秒,視為干擾信號。當讀出的值是0時則表示有按鍵按下,調(diào)用相應的處理程序。硬件電路如圖5.6所示:

圖5.6 按鍵電路圖


6系統(tǒng)程序的設計

              系統(tǒng)程序主要包括主程序、顯示數(shù)據(jù)子程序、報警子程序和按鍵子程序等。

6.1主程序

              主程序的主要功能是負責距離的顯示、讀出并處理HC-RS04的測量距離值,按鍵控制有效距離限制,當測量的值超過預設值時,蜂鳴器發(fā)聲報警。

              主程序流程圖如圖6.1所示。

            

圖6.1主流程圖

6.2顯示數(shù)據(jù)子程序

              顯示數(shù)據(jù)子程序的主要功能就是把超聲波模塊測量后的結果經(jīng)單片機處理完畢的距離顯示在數(shù)碼管上。

              顯示數(shù)據(jù)子程序流程圖如圖6.2所示。

圖6.2顯示數(shù)據(jù)子流程圖
6.3報警子程序
              報警子程序的主要功能是在距離值超過預警值時,能夠使蜂鳴器發(fā)聲從而達到報警的目的。
              報警子程序流程圖如圖6.3所示。

圖6.3報警子流程圖

6.4按鍵子程序

              按鍵子程序的主要功能是有效距離可調(diào),功能鍵調(diào)整上限,再次功能鍵調(diào)整下限,再次按功能退出。

              按鍵子程序流程圖如圖6.4所示。

            


圖6.4按鍵子流程


結 論

本論文中雖然對安全距離模型進行了改進,但仍需進一步改進和細化,采用一定的控制理論和算法,使模型更具有科學性、可靠性和可操作性。本系統(tǒng)現(xiàn)階段只是就危險情況實現(xiàn)了向駕駛員報警,事實上由于駕駛員的反應性有差異及注意力不集中、疲勞駕駛等因素的存在,有時未必能及時采取減速、剎車等措施,因此系統(tǒng)下一步的目標是實現(xiàn)自動剎車的功能,使駕駛員的安全更有保障。

(1)本系統(tǒng)只是在理論上討論了汽車防碰撞的問題,由于實驗設備和時間問題還沒有進行實驗。

(2)本系統(tǒng)還應該進一步在復雜天氣(雨、雪、大霧),潮濕、冰雪路面上進一步測試,驗證系統(tǒng)的設計功能。

(3)在本系統(tǒng)基礎上,進一步開發(fā)車輛自適應巡航控制系統(tǒng),使車輛的舒適性和主動安全性得到提高.

參考文獻

[1] 胡漢才.單片機原理及系統(tǒng)設計[M] .北京:清華大學出版社,2012.

[2] 王守中. 51單片機開發(fā)入門與典型實例[M].北京:人民郵電出版社,2007.

[3]  陳雪麗. 單片機原理及接口技術[M].北京:化學工業(yè)出版社, 2005.

[4]  薛均義,張彥斌.MCS-51系列單片微型計算機及其應用.西安:西安交通大學出版社,2008.

[5]  唐穎,程菊花,任條娟.單片機原理與應用及C51程序設計[M].北京:北京大學出版社,2011

[6]鐘勇,范森海,王永輝.高速公路事故的誘因及預防對策[J].公路交通科技.2010(6).

[7]鄭安國.我國高速公路交通事故的基本特點與預防對策[J].公路交通科技學報.2012(4).

[8]陳曉東.鄭建祥汽車用微機可靠性試驗研究[J].汽車與電器.2009(增刊).

[9]周立功.發(fā)展有限公司.P89V51RD2器件手冊.2013.3.

.




附 錄(A)
(單片機原理圖)


致 謝
首先,我要感謝我的指導老師在畢業(yè)設計中對我給予的悉心指導和嚴格要求,同時也感謝本校的一些老師在畢業(yè)設計期間所給予我得幫助。在我畢業(yè)論文寫作期間,各位老師給我提供了種種專業(yè)知識上的指導和日常生活上的關懷,沒有您們這樣的幫助和關懷,我不會這么順利的完成畢業(yè)設計,借此機會,向您們表示由衷的感激。同時還要感謝系實驗室在畢業(yè)設計期間提供給我們優(yōu)越的實驗條件。
接著,我要感謝和我一起做畢業(yè)設計的同學。在畢業(yè)設計的短短幾個月里,你們給我提出很多寶貴的意見,給了我不少幫助還有工作上的支持,在此也真誠的謝謝你們。同時,我還要感謝我的寢室同學和身邊的朋友,正是在這樣一個團結友愛,相互促進的環(huán)境中,在和他們的相互幫助和啟發(fā)中,才有我今天的小小收獲。
最后我要深深地感謝我的家人,正是他們含辛茹苦地把我養(yǎng)育成人,在生活和學習上給予我無盡的愛、理解和支持,才使我時刻充滿信心和勇氣,克服成長路上的種種困難,順利的完成大學學業(yè)。
還有許許多多給予我學業(yè)上鼓勵和幫助的朋友,在此無法一一列舉,在此也一并表示忠心地感謝!


單片機源程序如下:


  1. <font style="font-size: 12pt">#include <reg52.H>//器件配置文件
  2. #include <intrins.h>

  3. //按鍵聲明
  4. sbit RX  = P3^2;
  5. sbit TX  = P3^3;
  6. sbit S1  = P1^4;
  7. sbit S2  = P1^5;
  8. sbit S3  = P1^6;
  9. //蜂鳴器
  10. sbit Feng= P2^0;

  11. //變量聲明
  12. unsigned int  time=0;
  13. unsigned int  timer=0;
  14. unsigned char posit=0;
  15. unsigned long S=0;
  16. unsigned long BJS=50;//報警距離80CM
  17. //模式 0正常模式 1調(diào)整
  18. char Mode=0;
  19. bit  flag=0;

  20. unsigned char const discode[] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0xff/*-*/};
  21. unsigned char const positon[4]={0xfd,0xfb,0xf7,0xfe};
  22. unsigned char disbuff_BJ[4]              ={0,0,0,0};//報警信息

  23. //延時100ms
  24. void delay(void)   //誤差 0us
  25. {
  26.     unsigned char a,b,c;
  27.     for(c=10;c>0;c--)
  28.         for(b=38;b>0;b--)
  29.             for(a=130;a>0;a--);
  30. }

  31. //按鍵掃描
  32. void Key_()
  33. {
  34.               //+
  35.               if(S1==0)
  36.               {
  37.                             delay();
  38.                             while(S1==0)
  39.                             {
  40.                                           P1=P1|0x0f;
  41.                             }
  42.                                           BJS++;
  43.                             if(BJS==151)
  44.                             {
  45.                                           BJS=0;
  46.                             }
  47.               }
  48.               //-
  49.               else if(S2==0)
  50.               {
  51.                             while(S2==0)
  52.                             {
  53.                                           P1=P1|0x0f;
  54.                             }
  55.                                           BJS--;
  56.                             if(BJS==0)
  57.                             {
  58.                                           BJS=150;
  59.                             }
  60.               }
  61.               //功能
  62.               else if(S3==0)            
  63.               {
  64.                             delay();
  65.                             while(S3==0)
  66.                             {
  67.                                           P1=P1|0x0f;
  68.                             }
  69.                                           Mode++;
  70.                             if(Mode==2)
  71.                             {
  72.                                           Mode=0;
  73.                             }            
  74.               }
  75. }
  76. /**********************************************************************************************************/
  77. //掃描數(shù)碼管
  78. void Display(void)                                                      
  79. {
  80.               //正常顯示
  81.               if(Mode==0)
  82.               {
  83.                             if(posit==0)//數(shù)碼管的米標志
  84.                             {
  85.                                           P0=(discode[disbuff[posit]])|0x80;
  86.                             }
  87.                             else
  88.                             {
  89.                                           P0=discode[disbuff[posit]];
  90.                             }
  91.                             if(++posit>=3)
  92.                                           posit=0;
  93.               }
  94.               //報警顯示
  95.               else
  96.               {
  97.                             if(posit==0)//數(shù)碼管的米標志
  98.                             {
  99.                                           P0=(discode[disbuff_BJ[posit]])|0x80;
  100.                             }
  101.                             else if(posit==3)
  102.                             {
  103.                                           P0=0x76;                                         
  104.                             }
  105.                             else
  106.                             {
  107.                                           P0=discode[disbuff_BJ[posit]];
  108.                             }

  109.                             P1=positon[posit];
  110.               }
  111. }
  112. /**********************************************************************************************************/
  113. //計算
  114. void Conut(void)
  115. {
  116.               time=TH0*256+TL0;
  117.               TH0=0;
  118.               TL0=0;
  119.               S=(time*1.7)/100;     //算出來是CM

  120.               if(Mode==0)
  121.               {
  122.                             if((S>=700)||flag==1) //超出測量范圍顯示“-”
  123.                             {            
  124.                                           Feng=0;
  125.                                           flag=0;
  126.                                           disbuff[0]=10;                 //“-”
  127.                                           disbuff[1]=10;                 //“-”
  128.                                           disbuff[2]=10;                 //“-”
  129.                             }
  130.                             else
  131.                             {
  132.                                           //距離大于報警距
  133.                                           if(S<=BJS)
  134.                                           {
  135.                                                         Feng=0;
  136.                                           }
  137.                                           else
  138.                                           {
  139.                                                         Feng=1;                                         
  140.                                           }
  141.                                           disbuff[0]=S%1000/100;
  142.                                           disbuff[1]=S%1000%100/10;
  143.                                           disbuff[2]=S%1000%10 %10;
  144.                             }
  145.               }
  146.               else
  147.               {
  148.                                           Feng=1;
  149.                                           disbuff_BJ[0]=BJS%1000/100;
  150.                                           disbuff_BJ[1]=BJS%1000%100/10;
  151.                                           disbuff_BJ[2]=BJS%1000%10 %10;
  152.               }
  153. }
  154. /**********************************************************************************************************/
  155. //定時器0
  156. void zd0() interrupt 1                             //T0中斷用來計數(shù)器溢出,超過測距范圍
  157. {
  158.               flag=1;                                                                                    //中斷溢出標志
  159. }
  160. /**********************************************************************************************************/
  161. //定時器1
  162. void zd3() interrupt 3                             //T1中斷用來掃描數(shù)碼管和計800MS啟動模塊
  163. {
  164.               TH1=0xf8;
  165.               TL1=0x30;
  166.               Key_();
  167.               Display();
  168.               timer++;
  169.               if(timer>=400)
  170.               {
  171.                             timer=0;
  172.                             TX=1;                                                    //800MS  啟動一次模塊
  173.                             _nop_();
  174.                             _nop_();
  175.                             _nop_();
  176.                             _nop_();
  177.                             _nop_();
  178.                             _nop_();
  179.                             _nop_();
  180.                             _nop_();
  181.                             _nop_();
  182.                             _nop_();
  183.                             _nop_();
  184.                             _nop_();
  185.                             _nop_();
  186.                             _nop_();
  187.                             _nop_();
  188.                             _nop_();
  189.                             _nop_();
  190.                             _nop_();
  191.                             _nop_();
  192.                             TX=0;
  193.               }
  194. }
  195. /**********************************************************************************************************/
  196. //主函數(shù)
  197. void main(void)
  198. {
  199.               TMOD=0x11;                               //設T0為方式1,GATE=1;
  200.               TH0=0;
  201.               TL0=0;         
  202.               TH1=0xf8;                               //2MS定時
  203.               TL1=0x30;
  204.               ET0=1;                                                        //允許T0中斷
  205.               TR1=1;                                             //開啟定時器
  206.               EA=1;                                                                      //開啟總中斷            
  207.               while(1)
  208.               {
  209.                             while(!RX);                            //當RX為零時等待
  210.                             TR0=1;                                          //開啟計數(shù)
  211.                             while(RX);                            //當RX為1計數(shù)并等待
  212.                             TR0=0;                                          //關閉計數(shù)
  213.                             Conut();                                          //計算
  214.               }
  215. }</font>
復制代碼

完整的Word格式文檔51黑下載地址:
57-超聲波測距汽車防撞系統(tǒng).doc (458.5 KB, 下載次數(shù): 127)







回復

使用道具 舉報

ID:428137 發(fā)表于 2018-11-17 13:02 | 顯示全部樓層
有實物連接圖嗎
回復

使用道具 舉報

ID:779232 發(fā)表于 2020-6-16 09:23 | 顯示全部樓層
有沒有源文件
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美久久天堂 | 精品国产乱码久久久久久蜜臀 | 麻豆成人在线视频 | 免费观看www7722午夜电影 | 国产农村妇女精品一区 | a免费观看 | 国产成人精品一区二区在线 | 亚洲欧洲精品一区 | 欧美精品在线免费观看 | 久久精品中文字幕 | 中文字幕亚洲精品 | 国际精品鲁一鲁一区二区小说 | 欧美久久不卡 | 久久久久免费精品国产小说色大师 | 在线黄色网| 天天干视频网 | av天空| 99在线精品视频 | 99久久婷婷国产亚洲终合精品 | 在线色网址 | 午夜欧美一区二区三区在线播放 | 久久久久久久久中文字幕 | 国精产品一品二品国精在线观看 | www.精品一区 | 国产成人高清视频 | 亚洲国产欧美在线人成 | 北条麻妃一区二区三区在线观看 | www.免费看片.com | 亚洲视频一区二区三区 | 婷婷久久综合 | 综合一区二区三区 | 粉嫩av久久一区二区三区 | 国产精品亚洲视频 | 中文字幕在线免费观看 | 少妇诱惑av| 日韩欧美在线播放 | 天天操 夜夜操 | 国产亚洲一级 | 欧美一级淫片007 | 亚洲免费人成在线视频观看 | 国产99小视频 |