基于單片機的汽車倒車雷達系統(tǒng)設計(含程序)_第1頁
基于單片機的汽車倒車雷達系統(tǒng)設計(含程序)_第2頁
基于單片機的汽車倒車雷達系統(tǒng)設計(含程序)_第3頁
基于單片機的汽車倒車雷達系統(tǒng)設計(含程序)_第4頁
基于單片機的汽車倒車雷達系統(tǒng)設計(含程序)_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、基于單片機的汽車倒車雷達系統(tǒng)設計摘 要隨著社會經(jīng)濟的發(fā)展交通運輸業(yè)日益興旺,汽車的數(shù)量在大副攀升。交通擁擠狀況也日趨嚴重,撞車事件屢屢發(fā)生,造成了不可避免的人身傷亡和經(jīng)濟損失,針對這種情況,設計一種響應快,可靠性高且較為經(jīng)濟的汽車倒車防撞預警系統(tǒng)勢在必行。本設計是利用最常見的超聲波測距法來設計的一種基于單片機的汽車倒車雷達系統(tǒng)。 本設計的主要是基于STC89C52單片機利用超聲波的特點和優(yōu)勢,將超聲波測距系統(tǒng)和STC89C52單片機結合于一體,設計出一種基于STC89C52單片機的汽車倒車雷達系統(tǒng)。該系統(tǒng)采用軟、硬件結合的方法,實現(xiàn)了汽車與障礙物之間距離的顯示以及危險距離的

2、聲光報警等功能。 本設計論文概述了超聲波檢測的發(fā)展及基本原理,闡述了超聲波傳感器的原理及特性。在超聲波測距系統(tǒng)功能和STC89C52單片運用的基礎上,提出了系統(tǒng)的總體構成,對系統(tǒng)各個設計單元的原理進行了介紹,并且對組成各單元硬件電路的主要器件做了詳細說明和選擇。本設計論文還介紹了系統(tǒng)的軟件結構,并通過編程來實現(xiàn)系統(tǒng)功能和要求。  關鍵詞:汽車倒車雷達、STC89C52、超聲波、測量距離、顯示距離、聲光報警第一章 緒論 1.1 課題設計的目的和意義隨著汽車的普及,越來越多的家庭擁有了汽車。交通擁擠狀況也隨之出現(xiàn),撞車事件也是經(jīng)常發(fā)生,人們在享受汽車帶來的樂趣和方便的

3、同時,更加注重的是汽車的安全性,許多“追尾”事故都與車距有著密切的關系。為了解決這個安全問題,設計一種汽車測距防撞報警系統(tǒng)勢在必行。由于超聲波指向性強,能量消耗緩慢,在介質中傳播的距離較遠,因而超聲經(jīng)常用于距離的測量,如測距儀和物位測量儀等都可以通過超聲波來實現(xiàn)。利用超聲波檢測往往比較迅速、方便、計算簡單。所以超聲波測距法是一種非常簡單常見的方法,應用在汽車停車的前后左右防撞的近距離測量,以及在汽車倒車防撞報警系統(tǒng)中,超聲波作為一種特殊的聲波,具有聲波傳輸?shù)幕疚锢硖匦哉凵?,反射,干涉,衍射,散射。超聲波測距是利用其反射特性,當車輛后退時,超聲波測距傳感器利用超聲波檢測車輛后方的障礙物位置,并

4、利用LED顯示出來,當?shù)竭_一定距離時,系統(tǒng)能發(fā)出報警聲,進而提醒駕駛人員,起到安全的左右。通過本課題的研究,將所學到的知識用在實踐中并有所創(chuàng)新和進步。該設計可廣泛應用在生活、軍事、工業(yè)等各個領域,它需要設計者有較好的數(shù)電、模電知識,并且有一定的編程能力,綜合運用所學的知識實現(xiàn)對超聲波發(fā)射與接收信號進行控制,通過單片機程序對超聲波信號進行相應的分析、計算、處理最后顯示在液晶顯示屏上。第二章 設計原理及總體方案2.1 本設計的研究方法 本設計選用US-100超聲波傳感器。了解超聲波測距的原理的,只有對理論知識有一定的學習才能運用到實際操作中。根據(jù)原理設計超聲波測距儀的硬件結構電路。對設計的電路進行

5、分析能夠產生超聲波,實現(xiàn)超聲波的發(fā)送和接收,從而實現(xiàn)利用超聲波測距的方法測量物體之間的距離。具體設計一個基于單片機的超聲波測距器,包括單片機控制電路,發(fā)射電路,接收電路,液晶顯示電路,聲光報警電路。2.2系統(tǒng)整體方案的設計由于超聲波指向性強,能量消耗緩慢,在介質中傳播的距離較遠,因而超聲波經(jīng)常用于距離的測量。利用超聲波檢測距離,設計比較方便,計算處理也較簡單,并且在測量精度方面也能達到農業(yè)生產等自動化的使用要求。 超聲波發(fā)生器可以分為兩大類:一類是用電氣方式產生超聲波,一類是用機械方式產生超聲波。電氣方式包括壓電型、電動型等;機械方式有加爾統(tǒng)笛、液哨和氣流旋笛等。它們所產生的超聲波的

6、頻率、功率、和聲波特性各不相同,因而用途也各不相同。目前在近距離測量方面常用的是壓電式超聲波換能器。根據(jù)設計要求并綜合各方面因素,本文采用STC89C52單片機作為控制器,超聲波驅動信號用單片機的定時器。2.3 系統(tǒng)整體方案的論證超聲波測距的原理是利用超聲波的發(fā)射和接受,根據(jù)超聲波傳播的時間來計算出傳播距離。實用的測距方法有兩種,一種是在被測距離的兩端,一端發(fā)射,另一端接收的直接波方式,適用于身高計;一種是發(fā)射波被物體反射回來后接收的反射波方式,適用于測距儀。此次設計采用反射波方式。測距儀的分辨率取決于對超聲波傳感器的選擇。超聲波傳感器是一種采用壓電效應的傳感器,常用的材料是壓電陶瓷。由于超聲

7、波在空氣中傳播時會有相當?shù)乃p,衰減的程度與頻率的高低成正比;而頻率高分辨率也高,故短距離測量時應選擇頻率高的傳感器,而長距離的測量時應用低頻率的傳感器。第三章 系統(tǒng)的硬件設計2.1 系統(tǒng)的總體框圖照系統(tǒng)設計的功能的要求,初步確定設計系統(tǒng)由單片機主控模塊、顯示模塊、超聲波收發(fā)模塊、聲光報警模塊共四個模塊組成。單片機主控芯片使用51系列STC89C52單片機,該單片機工作性能穩(wěn)定,同時也是在單片機課程設計中經(jīng)常使用到的控制芯片。發(fā)射電路由單片機輸出端直接驅動超聲波發(fā)送。接收電路使用三極管組成的放大電路,該電路簡單,調試工作小較小。圖3-1:系統(tǒng)設計框圖硬件電路的設計主要包括單片機系統(tǒng)及顯示電路、

8、超聲波發(fā)射電路和超聲波接收電路、報警輸出電路、供電電路等幾部分。單片機采用STC89C52,系統(tǒng)晶振采用12MHz高精度的晶振,以獲得較穩(wěn)定時鐘頻率,減小測量誤差。2.2 US-100超聲波收發(fā)模塊 該超聲波收發(fā)模塊可自己產生40kHz的方波,并經(jīng)放大電路驅動超聲波發(fā)射探頭發(fā)射超聲波,發(fā)射出去的超聲波經(jīng)障礙物反射后由超聲波接收探頭接收。經(jīng)接收電路的檢波放大,積分整形,在ECHO引腳上產生方波脈沖,該脈沖寬度與被測距離成線性關系。具體過程如圖2所示。圖2 US-100超聲波收發(fā)模塊工作時序圖上圖表明:只需要在Trig/TX管腳輸入一個10us以上的高電平,系統(tǒng)便可發(fā)出8個40KHZ的超聲波脈沖,

9、然后檢測回波信號,當檢測到回波信號后,模塊還要進行溫度值的測量,然后根據(jù)當前溫度對測距結果進行校正,將校正后的結果通過Echo/RX管腳輸出。在此模式下,模塊將距離值轉化為340m/s時的時間值的2倍,通過Echo端輸出一個高電平,可以根據(jù)此高電平的持續(xù)時間來計算距離值。即距離值為:(高電平時間*340m/s)/2設l為測量距離,t為往返時間差,超聲波的傳播速度為c則有(2-1)而聲波在空氣中的傳播速度為:(2-2)式中T為環(huán)境溫度;c為絕對溫度時的速度,是常數(shù)。從上述兩式可以推出:(2-3) 注:因為距離值已經(jīng)經(jīng)過溫度校正,所以在此不需考慮溫度補償問題,聲速選擇340m/s即可。使用US-1

10、00超聲波收發(fā)模塊進行距離測量測量時,單片機只需要輸出觸發(fā)信號,并監(jiān)視回響引腳,通過定時器計算回響信號寬度,并換算成距離即可。該模塊簡化了發(fā)送和接收的模擬電路,工作穩(wěn)定可靠,其參數(shù)指標如表1所示。電 氣 參 數(shù)US-100超聲波測距模塊工 作 電 壓DC 2.4V5.5V靜 態(tài) 電 流2mA工 作 溫 度-20+70度輸 出 方 式電平或UART(跳線帽選擇)感 應 角 度小于15度探 測 距 離2cm-450cm探 測 精 度0.3cm+1%UART模式下串口配置波特率9600,起始位1位,停止位1位,數(shù)據(jù)位8位,無奇偶校驗,無流控制。表1 US-100模塊參數(shù) 應注意測量周期必須在60毫秒

11、以上,防止發(fā)射信號對回響信號的影響。模塊共有兩個接口,即模式選擇跳線和5pin接口。模式選擇跳線接口設置為當安裝上短路帽時為UART(串口)模式,拔掉時為電平觸發(fā)模式。2.3 單片機電路 單片機選用高性能的STC89C52,其管角如圖3所示: 圖3 STC89C52單片機管腳圖該芯片為52內核8位單片機,兼容Intel等52內核單片機,支持ISP下載,適用于常用檢測控制電路。由STC89C52組成的單片機系統(tǒng)原理圖如圖4所示。圖中TRIG引腳為單片機發(fā)送觸發(fā)信號的引腳,ECHO引腳為US-100模塊送回回響信號的引腳,接至單片機外部中斷P3.2腳上,可以利用外部中斷測量回響信號寬度。當測量距離

12、小于20cm時,單片機通過管腳P3.6發(fā)出燈光報警信號,觸發(fā)LED報警燈亮,同時通過管腳P3.7發(fā)出聲音報警信號,該信號用以觸發(fā)蜂鳴器鳴響報警。圖4 單片機系統(tǒng)及超聲波模塊接口原理圖2.4 蜂鳴器報警電路圖5所示為蜂鳴器報警電路。由于單片機管腳的輸入比輸出電流大,因此電路設計為低電平輸出時蜂鳴器響,高電平關閉。當P3.7腳輸出低電平時,PNP型三極管8550導通,有集電極電流通過,蜂鳴器鳴響。當P3.7腳輸出高電平時,三極管截止,蜂鳴器關閉。圖5 蜂鳴報警電路2.5顯示電路表2 液晶屏技術指標顯示部分采用SMC 1602液晶屏進行數(shù)據(jù)顯示,其主要技術參數(shù)為:顯示容量16*2個字符芯片工作電壓4

13、.55.5V工作電流2.0mA(5.0V)模塊最佳工作電壓5.0V字符尺寸2.95*4.35(WXH)mm接口信號說明表 如表3表3 液晶屏借口信號說明編號符號引腳說明編號符合引腳說明1VSS電源地9D2Data I/02VDD電源正極10D3Data I/03VL液晶顯示偏壓信號11D4Data I/04RS數(shù)據(jù)/命令選擇端(H/L)12D5Data I/05R/W讀/寫選擇端(H/L)13D6Data I/06E使能信號14D7Data I/07D0Data I/015BLA背光源正極8D1Data I/016BLA背光源負極與單片機的接口電路如圖6所示圖6 LCD與單片機的接口電路2.6

14、 系統(tǒng)總電路圖 通過對單片機主控模塊、顯示模塊、超聲波收發(fā)模塊、聲光報警模塊共四個模塊進行結合,可以繪出系統(tǒng)總的電路圖如圖7:圖7 系統(tǒng)總電路圖第四章 系統(tǒng)的軟件設計3.1軟件流程圖 本設計軟件主程序流程圖如圖8所示, (a)為主程序流程圖,(b)為外部中斷子程序流程圖。 (a) 主程序流程圖 (b) 外部中斷流程圖圖8 程序流程圖3.2 主程序詳見附錄3.3 程序說明系統(tǒng)加載5V電壓后啟動,數(shù)據(jù)、定時器、LCD1602進行初始化,程序進入while循環(huán),超聲波測距模塊觸發(fā),發(fā)射超聲波并檢測有無回波,如果有回波,則超聲波模塊發(fā)射電平信號,驅使單片機進行計算,將數(shù)據(jù)顯示在LCD1602上,如果無

15、回波則跳過判斷。程序在計算完距離后與20cm進行比較,如果小于20cm,則驅動蜂鳴器和LED報警燈進行報警,如果大于20cm,則進入一個60ms的延時,繼續(xù)while循環(huán)進行測量。3.4 硬件設計圖結論本文主要講述了倒車雷達,即超聲波測距儀的原理和設計方法,設計的最終結果是使超聲波測距儀能夠產生超聲波,實現(xiàn)超聲波的發(fā)送與接收,從而實現(xiàn)利用超聲波方法測量物體間的距離,并以數(shù)字的形式顯示測量距離,在距離小于50cm時發(fā)出報警。超聲波測距的原理是利用超聲波的發(fā)射和接收,根據(jù)超聲波傳播的時間來計算出傳播距離。超聲波測距儀硬件電路的設計主要包括單片機系統(tǒng)及顯示電路、超聲波發(fā)射電路和超聲波接收電路三部分。

16、單片機采用STC89C51,采用12M 高精度的晶振,以獲得較穩(wěn)定時鐘頻率,減小測量誤差。單片機控制超聲波發(fā)射與接收模塊進行信號的發(fā)射與接收。顯示電路采用LCD顯示屏進行顯示。 附錄:(1) 頭文件和一些宏定義/*/*超聲波測距儀*/*(液晶屏顯示)*/*晶振 11.0592MHz*/#include <reg52.h>#include "1602.h"typedef unsigned char U8; /* defined for unsigned 8-bits integer variable無符號8位整型*/typedef signed char S8;

17、/* defined for signed 8-bits integer variable有符號8位整型*/typedef unsigned int U16; /* defined for unsigned 16-bits integer variable無符號16位整型*/typedef signed int S16; /* defined for signed 16-bits integer variable有符號16位整型*/typedef unsigned long U32; /* defined for unsigned 32-bits integer variable無符號32位整

18、型*/typedef signed long S32; /* defined for signed 32-bits integer variable 有符號32位整型*/typedef float F32; /* single precision floating point variable (32bits)單精度浮點數(shù)32位長度*/typedef double F64; /* double precision floating point variable (64bits)雙精度浮點數(shù)64位*/定時器0的定時值為1mS,即11059/12=922個時鐘脈沖,其補為65536-922=646

19、14#define SYSTEMCLK 921600 /11059200/12#define T0CLK 921600 /11059200/12#define T1CLK 921600 /11059200/12#define T1PERIOD 1000000/921600 /T1周期時間,以微秒為單位,約為1.085uS#define TIMER0H 0xFC /64614/256=252#define TIMER0L 0x66 /54447%256=102(2) 管腳、常量、變量定義和函數(shù)聲明/管腳定義sbit Trig = P13;sbit Echo = P32; /回波必須接在外部中斷引

20、腳上sbit LedAlarm = P36; /報警燈,低電平亮sbit Beep = P37; /報警蜂鳴器/定義標志volatile bit FlagSucceed = 0; /測量成功標志volatile bit FlagDisplay = 0; /顯示標志/定義全局變量U16 DisplayCount=0;U16 time=0;U32 distance=0;/函數(shù)聲明void delay_20us();void Start_Module();void INT0_Init(void);void Data_Init();void Timer0_Init();void Timer1_Init

21、(); (3) 各子程序/20us延時程序,不一定很準void delay_20us() U16 bt ; for(bt=0;bt<100;bt+); /8M晶振是100 /數(shù)據(jù)初始化void Data_Init()Trig = 0;distance = 0;DisplayCount = 0;/外部中斷初始化函數(shù)void INT0_Init(void) IT0 = 0; /負邊沿觸發(fā)中斷 EX0=0; /關閉外部中斷/外部中斷處理用做判斷回波電平void INT0_ISR (void) interrupt 0 time =TH1*256+TL1; /取出定時器的值 FlagSucceed

22、 = 1; /置成功測量的標志 EX0=0; /關閉外部中斷/定時器0初始化,16位定時模式,初始化為1ms中斷一次。void Timer0_Init()TMOD = 0x11; /定時器0和1工作在16位方式TH0 = TIMER0H;TL0 = TIMER0L; TR0 = 1; /啟動定時器ET0 = 1; /允許定時器0中斷/定時器0中斷,用做顯示計時void Timer0_ISR(void) interrupt 1 / 定時器0中斷是1號 TH0 = TIMER0H; TL0 = TIMER0L; DisplayCount +; if (DisplayCount >= 1000

23、) /1秒鐘顯示一次 FlagDisplay = 1;DisplayCount = 0; /定時器1初始化,16位計數(shù)模式,時鐘為11059200/12=921600Hz/60ms計數(shù)為55296,即0xD800void Timer1_Init()TMOD = 0x11; /定時器0和1工作在16位方式TH1 =0;TL1= 0;ET1 = 1;/啟動模塊,Trig管腳20us正脈沖void Start_Module() /啟動模塊 Trig=1; /啟動一次模塊 delay_20us(); Trig=0;/* 名稱 : Main()* 功能 : 主函數(shù)*/void main() U16 i,

24、 j; EA = 0; INT0_Init();Timer0_Init(); /定時器0初始化Timer1_Init(); /定時器1初始化 Data_Init();EA = 1;L1602_init();L1602_string(1,1,"Welcome to my ");L1602_string(2,1,"distance meter! ");/延時for (i=0;i<1000;i+) for (j=0;j<1000;j+) ;while(1) EA= 0; /以下為一次檢測過程:先發(fā)出Trig電平,打開外部中斷,清零T1,/最后在外部

25、中斷下降沿觸發(fā)時取出T1當前值,計算出Trig脈沖寬度。 Start_Module(); while(Echo=0); /等待Echo回波引腳變高電平FlagSucceed = 0;EX0=1;TH1= 0;TL1= 0;TF1= 0; TR1=1; /啟動定時器1開始計數(shù)EA = 1;while (TH1<80) ; /盲區(qū)TR1 = 0 ; /關閉定時器1EX0 = 0; /關閉外部中斷 if(FlagSucceed=1) /一次測試成功,則計算距離,單位為厘米 distance = time * 1.085 ; /計算得到脈沖時間(以微秒為單位) /將微秒時間轉變成厘米距離的算法:

26、 Y米=(X秒*344)/2 / X秒=( 2*Y米)/344 =X秒=0.0058*Y米 =厘米=微秒/58 distance /=58; /如果距離小于20cm,則聲光報警 if (FlagSucceed = 1) && (distance < 20) LedAlarm = 0; Beep = 0; else LedAlarm = 1; Beep = 1; if (FlagDisplay = 1) /1秒顯示時間到 if(FlagSucceed=0) /LCD提示無回波 L1602_string(1,1,"OutOfRange(0-4m)"); L

27、1602_string(2,1," - "); else /LCD顯示數(shù)據(jù) L1602_string(1,1,"Distance Result:"); L1602_string(2,1," cm "); L1602_int(2, 5, distance ); FlagDisplay = 0;3、顯示程序/* 文件名 : 液晶1602顯示.c* 描述 : 該程序實現(xiàn)了對液晶1602的控制。*/#include "1602.h"#include "math.h"/* 名稱 : delay()* 功能

28、 : 延時,延時時間大概為140US。* 輸入 : 無* 輸出 : 無*/void delay()int i,j;for(i=0; i<=10; i+)for(j=0; j<=2; j+);/* 名稱 : Convert(uchar In_Date)* 功能 : 因為電路設計時,P0.0-P0.7接法剛好了資料中的相反,所以設計該函數(shù)。* 輸入 : 1602資料上的值* 輸出 : 送到1602的值*/uchar Convert(uchar In_Date) /* uchar i, Out_Date = 0, temp = 0; for(i=0; i<8; i+) temp =

29、 (In_Date >> i) & 0x01; Out_Date |= (temp << (7 - i); return Out_Date;*/ return In_Date;/* 名稱 : enable(uchar del)* 功能 : 1602命令函數(shù)* 輸入 : 輸入的命令值* 輸出 : 無*/void enable(uchar del)P0 = Convert(del);RS = 0;RW = 0;E = 0;delay();E = 1;delay();/* 名稱 : write(uchar del)* 功能 : 1602寫數(shù)據(jù)函數(shù)* 輸入 : 需要寫入

30、1602的數(shù)據(jù)* 輸出 : 無*/void write(uchar del)P0 = Convert(del);RS = 1;RW = 0;E = 0;delay();E = 1;delay();/* 名稱 : L1602_init()* 功能 : 1602初始化,請參考1602的資料* 輸入 : 無* 輸出 : 無*/void L1602_init(void)enable(0x01);enable(0x38);enable(0x0c);enable(0x06);enable(0xd0);/* 名稱 : L1602_char(uchar hang,uchar lie,char sign)* 功能 : 改變液晶中某位的值,如果要讓第一行,第五個字符顯示"b" ,調用該函數(shù)如下 L1602_char(1,5,'b')* 輸入 : 行,列,需要輸入1602的數(shù)據(jù)* 輸出 : 無*/void L1602_char(uchar hang,uchar lie,char sign)uchar a;if(hang = 1) a = 0x80;if(hang = 2) a = 0xc0;a = a + lie - 1;enable(a);write(sign);/* 名稱 : L1602_string(uchar

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論