




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 50/50PAGE 審定成績:_ 審定成績:_現代汽車電控系統課程設計設計題目: 汽車倒車防撞系統設計 _單 位(系別):_自動化系_ _學 生 姓 名:_ _王555_專 業:_自動化專業_ _班 級:_05125555_ _學 號:_2013255555_ _指 導 教 師:_張 55_填表時間: 2016 年 6 月摘 要汽車作為現代社會最主要的交通工具,數量越來越多,但是交通事故的發生頻率逐年增長,其中因倒車發生的事故占很大的比例。隨著科技的發展,這類的問題得到了解決,人類發明了智能交通系統,其中汽車智能倒車防撞技術關鍵在于智能實時的測出汽車與障礙物的距離。當汽車與障礙物之間的距離小
2、于設定的安全距離時,防撞系統就自動報警并采取制動措施。為提高汽車運行的安全性和降低碰撞發生的可能,本文講述一種主動型汽車倒車防撞報警系統。本課程設計是以AT89C51單片機為核心的倒車防撞系統增加汽車倒車時的安全性的倒車防撞系統,利用超聲波進行無接觸的測距,系統主要包括超聲波發射模塊、信號接收模塊、單片機處理模塊、數碼顯示模塊以及聲光報警模塊等部分組成。汽車在行駛和倒車過程中自動檢測到障礙物,然后通過超聲波測距原理測量出汽車與障礙物之間的距離,并通過數碼顯示模塊將測得的距離顯示出來,當汽車與障礙物之間的距離達到安全極限時,單片機控制聲光報警模塊發出報警信號,達到提醒司機防止撞車的目的。本設計充
3、分發揮了單片機的性能,其硬件電路簡單,軟件功能完善,控制系統可靠,具有一定的使用和參考價值?!娟P鍵詞】單片機 AT89C51 超聲波 測距 汽車防撞預警目 錄 TOC o 1-3 h z u HYPERLINK l _Toc454480440 前 言 PAGEREF _Toc454480440 h 4 HYPERLINK l _Toc454480441 第一章 汽車倒車防撞系統概述 PAGEREF _Toc454480441 h 5 HYPERLINK l _Toc454480442 第一節 倒車防撞系統研究背景及意義 PAGEREF _Toc454480442 h 5 HYPERLINK l
4、 _Toc454480443 第二節 倒車防撞系統簡介 PAGEREF _Toc454480443 h 5 HYPERLINK l _Toc454480444 第二章 倒車防撞系統總體設計 PAGEREF _Toc454480444 h 6 HYPERLINK l _Toc454480445 第一節 倒車防撞系統設計原理 PAGEREF _Toc454480445 h 6 HYPERLINK l _Toc454480449 第三章 倒車防撞系統硬件設計 PAGEREF _Toc454480449 h 9 HYPERLINK l _Toc454480450 第一節 倒車防撞系統使用元件 PAGE
5、REF _Toc454480450 h 9 HYPERLINK l _Toc454480454 第二節 倒車防撞系統電路設計 PAGEREF _Toc454480454 h 13 HYPERLINK l _Toc454480461 第三節 硬件電路總設計 PAGEREF _Toc454480461 h 17 HYPERLINK l _Toc454480462 第四節 系統使用元器件清單 PAGEREF _Toc454480462 h 18 HYPERLINK l _Toc454480463 第四章 倒車防撞系統程序設計 PAGEREF _Toc454480463 h 19 HYPERLINK
6、l _Toc454480464 第一節 防撞系統工作過程 PAGEREF _Toc454480464 h 19 HYPERLINK l _Toc454480467 第二節 防撞系統程序設計 PAGEREF _Toc454480467 h 20 HYPERLINK l _Toc454480472 結 論 PAGEREF _Toc454480472 h 25 HYPERLINK l _Toc454480473 參考文獻 PAGEREF _Toc454480473 h 26前 言隨著社會經濟的發展,交通運輸業日益興旺,汽車的數量在大副攀升。交通擁擠狀況也日趨嚴重,撞車事件屢屢發生,造成了不可避免的人
7、身傷亡和經濟損失,針對這種情況,設計一種響應快,可靠性高且較為經濟的汽車防撞報警系統勢在必行。超聲波是指頻率在20kHz以上的聲波,它屬于機械波的范疇。近年來,隨著電子測量技術的發展,運用超聲波作出精確測量已成可能。隨著經濟發展,電子測量技術應用越來越廣泛,而超聲波測量精確高,成本低,性能穩定則備受青睞。超聲波也遵循一般機械波在彈性介質中的傳播規律,如在介質的分界面處發生反射和折射現象,在進入介質后被介質吸收而發生衰減等。正是因為具有這些性質,使得超聲波可以用于距離的測量中。超聲波測距即是利用其反射特性,當車輛后退時,超聲波距離傳感器利用超聲波檢測車輛后方的障礙物位置,并利用指示燈及蜂鳴器把車
8、輛到障礙物的距離及位置通知駕駛人員,起到安全的作用。 超聲波測距法是最常見的一種距離測距方法,應用于汽車停車的前后左右防撞的近距離,低速狀況,以及在汽車倒車防撞報警系統中?,F在生產的中高檔小轎車大多數都配置有倒車雷達,而出于節省成本等方面的考慮,經濟型小轎車、大客車等其他車輛都沒有配置倒車雷達。有市場需求的產品,必然會帶動產品的開發設計。倒車雷達電路種類較多,本文介紹基于單片機 HYPERLINK /word/264622.aspx o 單片機 控制的倒車雷達系統,該系統采用通用型單片機作為控制電路,方便系統功能擴展。系統電路主要采用集成器件構成,外圍元件少,電路簡潔、調試方便、成本低,利于商
9、品化生產。 汽車倒車防撞系統概述第一節 倒車防撞系統研究背景及意義隨著中國經濟的持續增長和汽車價格的持續下降,越來越多的家庭擁有自己的汽車。在享受汽車給我們帶來的便利同時,由于倒車而產生的問題也日益突出。一方面汽車的數量逐年增加,公路、街道、停車場和車庫擁擠不堪,可轉動的空間越來越少;。另一方面,新司機及非專職司機越來越多,因倒車引起的糾紛越來越多,車輛之間、車輛與人、車輛與墻壁等障礙物之間的碰撞時有發生。據統計,危險境況時,如果能給駕駛員半秒鐘的預處理時間,則可分別減少追尾事故的30,路面相關事故的50,迎面撞車事故的60。改善倒車遇到的窘境被越來越多的人所關注,人們對汽車操縱的便捷性提出了
10、更高的要求,希望有種裝置能夠解決汽車倒車給人們帶來的不便,消除駕駛中的不安全因素,可將車快速準確地停放到指定的位置,因此發明了汽車倒車防撞預警系統。本課題相對而言研究的比較淺,就是利用超聲波聲波特性實現非接觸式距離測量,進行距離預警。超聲波在空氣中測距或在特殊環境下都有較廣泛的應用。利用超聲波檢測往往比較迅速、方便、計算簡單、易于實現實時控制,并且在測量精度方面能達到工業實用的指標要求,因此在汽車倒車防撞系統的研制方面也得到了廣泛的應用。第二節 倒車防撞系統簡介汽車防撞預警系統是指在汽車行駛過程中防止汽車發生碰撞障礙物的一種智能報警裝置。它能自動發現可能與汽車發生碰撞的障礙物體,并且同時檢測汽
11、車與障礙物之間的距離,到達極限距離時發出報警信號以避免碰撞的發生。根據題目要求,汽車防撞報警器的功能主要有兩個:判斷汽車與障礙物之間的距離和當汽車與障礙物之間的距離到達臨界距離時發出報警信號。本課程設計是以AT89C51單片機為核心的倒車防撞系統增加汽車倒車時的安全性的倒車防撞系統,利用超聲波進行無接觸的測距,系統主要包括超聲波發射電路,超聲波接收電路,數碼顯示電路以及報警電路。以超聲波傳感器為重點進行超聲波的發射和接收,利用數字傳感器DS18B20進行測量,提高了測量精度,通過計算得出距離并通過LED顯示,在超出一定距離時,電鈴報警,駕駛員做出判斷。 倒車防撞系統總體設計第一節 倒車防撞系統
12、設計原理設計總體思路概況汽車防撞預警系統的原理是利用超聲波的發射和接收,用計時器計出超聲波從發射 到接收到遇到障礙物后反射聲波的時間通過公式計算出汽車與障礙物之間的距離。在實際生活中常用的測距方法主要有兩種,一種是在被測距離的兩端,一端設置發射裝置,一端設置接收裝置,利用公式S = vt得出測量的距離。這種測量方式特別適用于測量身高;另一種是本次設計采用的方式,利用超聲波遇到障礙物后反射得出距離。 汽車防撞系統硬件電路的設計主要包括單片機系統、超聲波發射電路和超聲波檢測接收電路及顯示電路三部分。單片機采用的是AT89C51系列。為了獲得較穩定時鐘頻率而采用了高精度的晶振,這樣極大的減小測量距離
13、的誤差。用單片機P1.0端口輸出超 聲波發射器所需要的40kHz的方波信號,使用外中斷 0 口檢測接收超聲波的反射信號。顯示電路裝置用了結構簡單價格便宜的4位 LED 數碼管來顯示距離。 超聲波的發射裝置主要是由反相器74LS04和發射傳感器構成。AT89C51單片機P1.0引腳輸出40k赫茲的間斷方波信號分成2路,一路信號經過一個反向器后到達TCT40一個引腳,另一路通過兩個反向器后到TCT40的另一個引腳,用這種形式將 P1.0 發出的單片機P1.0端口發出的間斷方波信號加到TCT40的兩端上,用這種推換形式將間斷的方波信號連接到超聲波傳感器的兩個引腳上,這樣能夠增強超聲波的發射強度。在加
14、載反波信號時使用兩個74LS04并聯,是它的驅動能力得到了很大的提高。而電阻R8、R9增大超聲波傳感器的阻尼效果,縮短了震蕩時間,使超聲波傳感器輸出高電平的能力大大增加。超聲波接收采用CX20106A集成電路模塊,根據電路圖可以看出,集成芯片CX20106在接收裝置電路中的作用很大。CX20106是一款紅外線檢波接收的芯片,它常用于現實生活中,而且價格便宜。由于紅外線波的頻率為38 kHz,與測距使用的超聲波頻率接近。并且CX20106芯片的內部設置比較好,由于設計中芯片的f5角連接了一個外接電阻, 此電阻使他濾波器的中心頻率能夠調節,當R15的阻值越大濾波器的中心頻率就越低,變化范圍在306
15、0 kHz之間。此次設計證明用CX20106A接收超聲波信號具有優秀的靈敏特性和較強的抗干擾能力。超聲波測距預警系統主要包括主程序、發射子程序、溫度采集子程序、外部中斷子程序和數碼顯示子程序等。超聲波測距預計能夠系統主程序第一步是對系統進行初始化,初始化定時器T0為16位定時計數器的工作模式。全局中斷打開并給顯示端口清0。在調用超聲波的發生子程序發出一個超聲波脈沖,在發射過程中延時約0.1 ms,避免聲波信號從發射器發出后直接傳送到接收器而引起直射波觸發,然后在使用外中斷接收遇 到物體后返回聲波信號。我采用了12 MHz 的晶振,計數器每次計數間隔是1s,當主程序接收到成功的信號后,將計數器
16、T0中的數計算,即得出與障礙物之間的距離,測出距離后將結果送往LED顯示,這就是超聲波測距的過程。 在系統調試方面,由于設計的電路由很多集成電路構成。外圍元件很少,所以調試不太難。只要焊接的電路沒有錯誤,簡單調試一下就能夠正常使用了。電路設計中除了集成電路,對其它電子元件也沒專業要求??梢愿鶕y量距離的差異,調整與接收換能 器濾波電容就能得到適合靈敏度和超聲波抗干擾能力。超聲波測距原理超聲波測距是通過檢測超聲波發射后遇到障礙物所反射回來的回波,如圖2-1所示。從而測出超聲波發射和接收的時間差T,然后根據公式:S = CT / 2 即可算出汽車與被測物體的距離。S為汽車與障礙物之間的距離,C為超
17、聲波在空氣中的傳播速度。聲速c與溫度有關,如溫度變化不大,則可認為聲速是基本不變的。如果測距精度要求很高,則應通過溫度補償的方法加以校正。本設計中設定溫度為常溫20。圖2-1 超聲波傳播圖利用超聲波的測距的原理圖如框圖 2-2 所示,單片機發出40kHZ的信號,經放大后通過超聲波發射器輸出;超聲波接收器將接收到的超聲波信號經放大器放大,用鎖相環電路進行檢波處理后,啟動單片機中斷程序,測得時間為t,再由軟件進行判別、計算,得出距離數。數據顯示數據顯示定時器單片機控制放大電路超聲波發射器放大電路超聲波接收器圖2-2 超聲波測距原理圖控制系統框圖超聲波防撞控制系統圖如框圖2-3所示。該系統全部都由單
18、片機進行控制,單盤機 發出40Hz的方波脈沖,經過超聲波發射電路發射出超聲波。超聲波在遇到障礙物之后反射射回來再由接收電路接收反射聲波信號送入單片機進行分析,計算出汽車與障礙物之間的距離,將處理后的結果送入顯示電路經過數碼顯示管顯示出距離,如果距離達到安全的極限距離著由報警電路通過蜂鳴器發車報警,提示司機躲避障礙物。LED顯示掃描驅動報警電路超聲波發送電路振蕩復位電路超聲波接收電路AT89C51單片機LED顯示掃描驅動報警電路超聲波發送電路振蕩復位電路超聲波接收電路AT89C51單片機圖 2-3 超聲波測距報警系統圖 倒車防撞系統硬件設計硬件電路的設計主要包括三部分:單片機系統、顯示電路、超聲
19、波的發射和檢測接收電路。在本次設計中單片機采用AT89C51。還采用了12MHz高精度的晶振,以減小測量的誤差。用AT89C51的P1.0端口輸出所需的40kHz的方波信號,采用AT89C51實現對TCT40 超聲波轉換模塊和CX20106A芯片的控制。第一節 倒車防撞系統使用元器件AT89C51的功能特點AT89C51 單片機主要由中央處理器、存儲器、輸入輸出接口等組成。中央處理器是單片機的核心部分,它的主要作用是完成運算和控制功能。程序存儲器具有存儲功能,使應用程序在開發調試后永久性的存儲在程序存儲器中。AT89C51 控制著超聲波的發送和接收,串行口發送數據。LED顯示是共陰極接法的動態
20、循環顯示。接收電路接收超聲波遇到物體后反射回來的回波信號。該芯片包括了限幅放大、前置放大、整形和輸出數據信號,這樣方便了檢測判斷回波的數據是否正確,并且能夠通過計算得出距離值。AT89C51是一種帶4K字節閃爍可編程可擦除存儲器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓, 8 位高性能的CMOS 微處理器,叫做單片機。該單片機采用的制造技術是ATMEL高密度非易失存儲器制造成的,它能夠與達到工業標準的輸出管腳和MCS-51指令集相兼容。由于它將8位多功能CPU處理器和閃爍存儲器組合在單個芯片中,AT89C51是一種高
21、效微控制器外形及引腳排列如圖 3-1 所示。圖 3-1 AT89C51 控制器AT89C51 有兩種可用軟件來選擇的省電方式:空閑工作方式和掉電工作方式。當處于空閑方式時CPU處于睡眠狀態,但片內的其他部件仍然繼續工作,而且片內RAM的內容和所有專用寄存器的內容在空閑方式期間都被保留起來。當處于掉電方式時保存了 RAM 的內容,振蕩器停止震蕩,禁止芯片其它功能直到下一次硬件復位才能使用。AT89C51 為許多器材的制造提供了十分靈活和低成本的解決辦法。充分的利用了單 片機的片內資源,使我們可以在較少使用外圍電路的情況下完成超聲波測距。CX20106 功能特點CX20106對收到的信號有放大和濾
22、波的作用。如圖3-2所示,CX20106芯片的接口圖。 CX20106有8個引腳,管腳1是超聲波信號輸入端;管腳2的電阻和電容決定接收換能器的 總增益,通過增大或者減小電阻電容,確定放大倍數,改變放大器的頻率。管腳3與GND 之間連接的電容起到檢波作用;管腳5上的連接一個電阻,這個電阻用來設置濾波器的 中心頻率;管腳6與GND之間接入一個電容,該電容確定探測距離;管腳7是集電極開路 輸出端:管腳8接電源正極。圖3-2 CX20106 芯片接口圖LED數碼管在生活中最常見到的LED數碼管是八段和七段的,八段式原理圖的如圖3-4 所示。本次設計中采用的是八段式的數碼管。八段式的與七段式的相比,他們
23、各部分結構大體相同,八段只比七段式的多了一個小數點。數碼管里都是由LED發光二極管發光單片機控制LED的滅亮顯示出不同的形狀從而顯示出數字,八段式的數碼管與七段式的主要區別就在于八段式的數碼管中有八個發光二極管,而七段式的數碼管中有七個發光二極管,兩種之間只差一個點。數碼管又分為兩種類型,共陽極型和共陰極型。原理圖如圖3-3共陽極型和共陰極型原理圖所示。共陽極型就是將數碼管中發光二極管的陽極都接在一起并且接到電源上,連接好之后把其中任何哪個發光二極管的陰極接到地線上,它就會發光。共陰極型則是將數碼管中發光二極管的陰極都接在一起并且接到地線上,連接好之后把其中任何哪個發光二極管的陽極接到電源上,
24、它就會發光。圖 3-3 共陰極型和共陽極型原理圖圖 3-4數碼顯示管引腳圖如圖3-4數碼顯示管引腳圖所示,把兩個COM引腳連接起來,作為數碼管的公共端,數碼管共陽端要接地,共陰端接電源。一個二極管是一位,八個管子即 a,b,c,d,e,f,g 還有 dp, 拼成個8字列在一起就構成了一個8位的數碼顯示管。一個八段式的數碼顯示管的每個顯示管連在一起,每個二極管的公共端稱為位選線。在數碼管顯示數字是,一個二極管對應一條直線,a 對應的是首位,dp對應最后位。例如,當數碼管顯示管顯示數字0時,那么共陰極數碼顯示管的編碼就為00111111,十六進制數為0 x3f,而共陽極的數碼顯示管的編碼就是110
25、00000,十六進制數為0 xc0。通過這個例子可以看的出來共陰極數碼顯示管和共陽極數碼顯示管的編碼各個位是相反的。第二節 倒車防撞系統電路設計超聲波發射裝置的設計超聲波發射器包括兩個部分:超聲波產生電路部分和超聲波發射控制電路部分。超聲波探頭采用TCT40。單片機P1.0端口輸出40KHz的超聲波信號,此時定時器開始計時。通過輸出引腳輸入,經驅動后推動發射探頭產生超聲波,此方法充分利用了軟件控制,靈活性好。超聲波發射電路設計圖如圖3-5所示。圖 3-5 超聲波發射裝置設計圖超聲波的發射電路主要由反相器74LS04和發射換能器構成。AT89C51單片機P1.0口輸出的40kHz的間斷方波信號分
26、成2路,一路經一級反向器后到達 TCT40一個電極,另一路通過兩級反向器后到TCT40的另一個電極,用這種形式將P1.0發出的方波信號加到TCT40的兩端上,這樣能夠增強超聲波的發射強度。在加載反波信號時使用兩個74LS04并聯,可以提高驅動能力。而電阻R8、R9可以增加超聲波換能器的阻尼效果,縮短了震蕩時間,還可以提高換能器輸出高電平的驅動能力。超聲波接收裝置的設計超聲波接收器包括接收、發射探頭、信號放大電路和波形變換電路三個部分。超聲波探頭采用RCT40。 按照超聲波原理,微處理器需要的只是第一個回波的時刻。接收裝置的設計可用CX20106A來完成。在空氣中傳播超聲波的其能量的衰減與距離是
27、成正比的,距離越小、衰減越少,距離越大、衰減越多,通常都在1V之內。圖 3-6 超聲波接收裝置設計圖 超聲波的接收裝置如圖3-6超聲波接收裝置圖所示。超聲波的接收采用CX20106A集成電路模塊,根據電路圖可以看出,集成芯片CX20106在接收裝置電路中的作用很大。CX20106是一款紅外線檢波接收的芯片,他常用于現實生活中,而且價格便宜。由于紅外線波的頻率為38 kHz,與測距使用的超聲波頻率接近。并且CX20106芯片的內部設置比較好,由于設計中芯片的f5角連接了一個外接電阻,此電阻使他濾波器的中心頻率能夠調節,當R15的阻值越大濾波器的中心頻率就越低,變化范圍在3060 kHz之間。CX
28、20106對收到的信號進行放大、濾波的作用。當接收到的聲波信號經由放大器,調整信號的頻率,然后濾波消除干擾信號,最后再經過整形,輸出到CX20106的7腳輸出。當接收到的聲波信號與CX20106的中心頻率相符時,它的7腳就會低電平輸出,而7腳接到INT0引腳上,這樣就會中斷。若頻率和CX20106的中心頻率不同時,即可調節R15,使濾波器的中心頻率與超聲波測距的頻率相符。顯示電路設計顯示電路中顯示測量距離使用的是4位共陰的LED數碼管,它簡單實用并且價格便宜。位碼使用四個PNP三極管來驅動,顯示電路設計圖如圖 3-7顯示電路設計圖所示。圖3-7顯示電路設計圖報警裝置的設計報警部分采用一個蜂鳴器
29、進行報警,LED發光,利用單片機控制輸出一個一定頻率的信號。信號通過一個三極管,把信號放大,以增強驅動能力。然后將放大之后的信號連接到蜂鳴器上,報警部分裝置的設計圖如圖 3-8 所示。 圖 3-8 報警裝置設計圖蜂鳴器是使用直流電源進行供電,它廣泛應用于當今生活中,尤其在計算機、報警器、復印機、打印機、電子玩具、汽車電子設備、電話機等電子設備制造中作為發聲的器件而廣泛應用。蜂鳴器是一種一體化結構的電子發聲器,它分為兩種類型,一種是壓電式蜂鳴器另一種是電磁式蜂鳴器。壓電式蜂鳴器主要由壓電蜂鳴片、多諧振蕩器、共鳴箱阻及抗匹配器還有外殼等部分組成。壓電蜂鳴片是由鈮鎂酸鉛或鋯鈦酸鉛壓電陶瓷材料制造而成
30、。而多諧振蕩器由集成電路或者晶體管構造而成。當電極兩端接通電源以后,多諧振蕩器開始振動,輸出音頻信號,然后阻抗匹配器便能推動壓電蜂鳴片發出聲音。電磁式蜂鳴器主要由振蕩器、磁鐵、振動膜片、電磁線圈和外殼等部分組成。在兩 極接通電源之后,振蕩器能夠產生的音頻信號,信號通過電磁線圈,便會使電磁線圈生成磁場。這樣振動膜片便會在磁鐵和電磁線圈的作用下,周期性反復地振動從而發出聲音。系統電源設計在本系統中,AT89C51單片機是5V供電,電源電壓范圍從3.35V,在電路系統需要一個變壓芯片,我選擇7805芯片,引腳圖如下:圖3-9 7805芯片引腳圖這是一個輸出正5V直流電壓的穩壓電源電路。IC采用集成穩
31、壓器7805,C1、C2分別為輸入端和輸出端濾波電容,R16為負載電阻。電路圖如3-10所示:圖3-10 穩壓電源第三節 硬件電路總設計超聲波測距預警系統硬件部分由超聲波的接收電路、顯示電路、超聲波的發射電路 和單片機的外圍電路等各部分組成。 使用單片機的P1.0口輸出40KHZ的方波信號,經反相器來控制超聲波的發送,以達到超聲波換能器所需的震蕩條件。利用中斷口INT0檢測超聲波接收電路接收到的返回信號,當單片機INT0引腳由高電平變為低電平時超聲波就已經返回。計數器計出超聲波傳播所用的時間,然后算就能夠得到與障礙物之間的距離大小。顯示電路采用結構簡單的4位LED數碼管把測量的距離顯示出來,位
32、碼用4個PNP三極管來驅動。超聲波測距預警系統是利用單片機控制超聲波的發射接,并自動計時得出超聲波的往返時間,單片機采用的是AT89C51,這種單片機經濟實用,結構簡單。并且單片機內有4K的ROM,方便于編程。這時就可以使用單片機把各部分設計好的電路圖連接起來進行仿真了。超聲波預警系統電路的設計圖3-11汽車預警系統原理圖所示。圖3-11汽車預警系統原理圖第四節 系統使用元器件清單在本次設計中使用的元器件主要有單片機AT89C51, CX20106A,超聲波探頭,蜂鳴器,數碼顯示管等,所用元器件詳細清單如表 3-7所示。表3-7元器件清單 倒車防撞系統程序設計超聲波測距預警系統主要包括主程序、
33、發射子程序、溫度采集子程序、外部中斷子程序和數碼顯示子程序等。第一節 防撞系統工作過程軟件工作過程按下控制系統的開關,進行系統的初始化,當主程序完成初始化后調用發射子程序,由P1.0口發射出1個脈沖,驅動超聲波換能器發射超聲波,并且計數器開始計時。利用定時器的計數功能記錄到超聲波發射到接受所用的時間當超聲波接收器接收到超聲波后,接收電路輸出端輸出一個跳變信號,在INT0端產生一個中斷的信號,得到超聲波的時間差。溫度假設不變,知道了時間和超聲波的聲波速度后,通過單片機的計算得出距離,顯示出來,到達距離極限時,啟用報警模塊。算法的軟件設計超聲波測距是通過檢測超聲波發射后遇到障礙物所反射回來的回波,
34、從而測出從發出超聲波信號到接收到返回信號的時間間隔,然后求出距離由S=CT/2即可算出汽車與被測物體的距離。其中,S為測量的距離,C 為超聲波在空氣中的傳播速度。T 從發出超聲波信號到接收到返回信號的時間間隔。在啟動發射電路發射超聲波的同時開啟單片機 AT89C51內的定時器T0,通過定時器計數器的計數功能記錄下來超聲波發射的時間和接收到超聲波的時間。當接收電路收到超聲波時,接收電路的輸出端會產生一個負跳變,在INT0端能夠產生一個中斷信號,單片機響應中斷請求后執行外部中斷子程序,讀取出來時間間隔,算出距離。第二節 防撞系統程序設計主程序主程序首先對系統環境初始化,設置定時器T0工作模式為16
35、位的定時計數器模式,置位總中斷允許位EA并給顯示端P0和P2清0。然后調用超聲波發生子程序送出一個超聲波脈沖,為避免超聲波從發射器直接傳送到接收器引起的直接波觸發,需延遲0.1ms(這也就是測距器會有一個最小可測距離的原因)后,才打開外中斷0接收返回的超聲波信號。由于采用12MHz的晶振,機器周期為1us,當主程序檢測到接收成功的標志位后,將計數器T0中的數(即超聲波來回所用的時間)按下式計算即可測得被測物體與測距儀之間的距離,根據公式d=(C*T0)/2 (其中T0為計數器T0的計數值),測出距離后結果將以十進制BCD碼方式顯示在LED上,然后再發超聲波脈沖重復測量過程。主程序框圖如圖4-1
36、所示:開始開始單片機初始化定時中斷子程序有無回撥?外部中斷子程序NY圖4-1 主程序框圖超聲波發射子程序,超聲波接收子程序超聲波發生子程序的作用是通過P1.0端口發送2個左右的超聲波信號頻率40KHz的方波,脈沖寬度為12us左右,同時把計數器T0打開進行計時。超聲波測距器主程序利用外中斷0檢測返回超聲波信號,一旦接收到返回超聲波信號(INT0引腳出現低電平),立即進入中斷程序。進入該中斷后就立即關閉計時器T0停止計時。如果當計時器溢出時還未檢測到超聲波返回信號,則定時器T0溢出中斷將外中斷INT0關閉。本系統采用12M晶振,即機器周期是1 us。下圖4-3是超聲波發射與接收子程序流程圖。超聲
37、波的發射與接收其實就是中斷的體現,我們主要使用外部中斷源和定時器T0中斷。下圖4-2是中斷程序的流程圖。圖4-2 中斷程序流程圖圖4-3 超聲波發射與接收子程序流程圖測距子程序當主程序檢測到接收成功的標志位之后將計數器T0中的數(即超聲波來回所用的時間)按公式計算,即可得到被測物體與測距儀之間的距離,設計時取20時的聲速為344m/s則有:S = CT / 2=172T0/10000cm其中,T0為計數器T0的計算值。測出距離后結果將以十進制BCD碼方式送往LED顯示約0.5s,然后再發超聲波脈沖重復測量過程。外部中斷入口外部中斷入口關外部中斷開外部中斷結 果 輸 出計 算 距 離讀取時間值返
38、回圖4-4 測距程序流程圖距離顯示,判斷以及報警子程序顯示模塊的功能是利用定時器將得到的最短距離在顯示屏上進行顯示。測試距離數值通過串行口傳送到顯示模塊。通過調用距離計算子程序,設定安全距離為2m,設定蜂鳴器的工作方式,工作設為1,不工作設為0,若在安全距離之內,蜂鳴器打開報警,否則,蜂鳴器不工作。下圖4-5是距離顯示判斷以及報警流程圖。圖4-5距離顯示,判斷以及報警流程圖結 論汽車防撞預警系統的原理是利用超聲波的發射和接收,用計時器計出超聲波從發射 到接收到遇到障礙物后反射聲波的時間通過公式計算出汽車與障礙物之間的距離。它的硬件電路的設計主要包括單片機系統、超聲波發射電路和超聲波檢測接收電路
39、及顯示電路三部分。單片機采用的是AT89C51系列。超聲波的發射用單片機P1.0端口輸出超聲波發射器所需要的40kHz的方波信號。超聲波的接收采用CX20106A集成電路模塊進行。超聲波測距預警系統軟件設計主要包括主程序、發射子程序、外部中斷子程序和數碼顯示子程序。通過對這次課題的研究深入了解和設計,我對單片機最小系統有了更深入的了解,特別是關于I/O接口。學到更多的是超聲波測距技術,超聲波測距系統由于不受光線、電磁波、粉塵等的影響,其精度能達到厘米數量級的工程測距精度等的優點,在橋梁、隧道、涵洞等的距離檢測中占有一定的優勢。本課題中用于汽車倒車,利用超聲波測距系統,可以有效地提高車輛在保障和
40、維護過程中的安全性和可靠性。任何一個方案都經過多次的驗證與完善,沒有付出亦沒有回報,只有經過不斷的推敲,研究才能夠獲得成功。參考文獻1 陳明熒. 8051單片機基礎教程M. 北京:科學出版社,2003.2 馬忠梅. 單片機C語言應用程序設計M. 北京:北京航空航天大學出版社,2007.3 劉昌華,易逵. 8051單片機的C語言應用程序設計與實踐M. 北京:國防工業出版社,2007.4 周潤景. Proteus在MCS-51&ARM7系統中的應用百例M. 北京:電子工業出版社,2006.5 周潤景,張麗娜,劉印群. Proteus入門實用教程M. 北京:機械工業出版社,2007.6 李學禮. 基
41、于Proteus的8051單片機實例教程M. 北京:電子工業出版社,2008.7 謝維成等. 單片機原理與應用及C51程序設計M. 北京:清華大學出版社,2006.8 徐愛琴等.C語言程序設計M.北京:電子工業出版社,20089 陳堂敏,劉煥平. 單片機原理及應用M.北京:北京理工大學出版社,2008附錄資料:不需要的可以自行刪除C語言中如何獲取時間?精度如何?1 使用time_t time( time_t * timer ) 精確到秒2 使用clock_t clock() 得到的是CPU時間精確到1/CLOCKS_PER_SEC秒3 計算時間差使用double difftime( time_
42、t timer1, time_t timer0 )4 使用DWORD GetTickCount() 精確到毫秒5 如果使用MFC的CTime類,可以用CTime:GetCurrentTime() 精確到秒6 要獲取高精度時間,可以使用BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency)獲取系統的計數器的頻率BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)獲取計數器的值然后用兩次計數器的差除以Frequency就得到時間。7 Multimedia Time
43、r FunctionsThe following functions are used with multimedia timers.timeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTime/*/用標準C實現獲取當前系統時間的函數一.time()函數time(&rawtime)函數獲取當前時間距1970年1月1日的秒數,以秒計數單位,存于rawtime 中。#include time.hvoid main ()time_t rawtime;struct tm * timeinfo;time ( &rawtime );timei
44、nfo = localtime ( &rawtime );printf ( 007The current date/time is: %s, asctime (timeinfo) );exit(0);=#include - 必須的時間函數頭文件time_t - 時間類型(time.h 定義是typedef long time_t; 追根溯源,time_t是long)struct tm - 時間結構,time.h 定義如下:int tm_sec;int tm_min;int tm_hour;int tm_mday;int tm_mon;int tm_year;int tm_wday;int tm
45、_yday;int tm_isdst;time ( &rawtime ); - 獲取時間,以秒計,從1970年1月一日起算,存于rawtimelocaltime ( &rawtime ); - 轉為當地時間,tm 時間結構asctime ()- 轉為標準ASCII時間格式:星期 月 日 時:分:秒 年二.clock()函數,用clock()函數,得到系統啟動以后的毫秒級時間,然后除以CLOCKS_PER_SEC,就可以換成“秒”,標準c函數。clock_t clock ( void );#includeclock_t t = clock();long sec = t / CLOCKS_PER_
46、SEC;他是記錄時鐘周期的,實現看來不會很精確,需要試驗驗證;三.gettime(&t); 據說tc2.0的time結構含有毫秒信息#include#includeint main(void)struct time t;gettime(&t);printf(The current time is: -:d:d.dn,t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund);return 0;time 是一個結構體, 其中成員函數 ti_hund 是毫秒。四.GetTickCount(),這個是windows里面常用來計算程序運行時間的函數;DWORD dwStart
47、= GetTickCount();/這里運行你的程序代碼DWORD dwEnd = GetTickCount();則(dwEnd-dwStart)就是你的程序運行時間, 以毫秒為單位這個函數只精確到55ms,1個tick就是55ms。五.timeGetTime()t,imeGetTime()基本等于GetTickCount(),但是精度更高DWORD dwStart = timeGetTime();/這里運行你的程序代碼DWORD dwEnd = timeGetTime();則(dwEnd-dwStart)就是你的程序運行時間, 以毫秒為單位雖然返回的值單位應該是ms,但傳說精度只有10ms。
48、=/*Unix#unix時間相關,也是標準庫的/*1.timegm函數只是將struct tm結構轉成time_t結構,不使用時區信息;time_t timegm(struct tm *tm);2.mktime使用時區信息time_t mktime(struct tm *tm);timelocal 函數是GNU擴展的與posix函數mktime相當time_t timelocal (struct tm *tm);3.gmtime函數只是將time_t結構轉成struct tm結構,不使用時區信息;struct tm * gmtime(const time_t *clock);4.localti
49、me使用時區信息struct tm * localtime(const time_t *clock);1.time獲取時間,stime設置時間time_t t;t = time(&t);2.stime其參數應該是GMT時間,根據本地時區設置為本地時間;int stime(time_t *tp)3.UTC=true 表示采用夏時制;4.文件的修改時間等信息全部采用GMT時間存放,不同的系統在得到修改時間后通過localtime轉換成本地時間;5.設置時區推薦使用setup來設置;6.設置時區也可以先更變/etc/sysconfig/clock中的設置再將ln -fs /usr/share/zon
50、einfo/xxxx/xxx /etc/localtime 才能重效time_t只能表示68年的范圍,即mktime只能返回1970-2038這一段范圍的time_t看看你的系統是否有time_t64,它能表示更大的時間范圍/*windows#Window里面的一些不一樣的/*一.CTime () 類VC編程一般使用CTime類 獲得當前日期和時間CTime t = GetCurrentTime();SYSTEMTIME 結構包含毫秒信息typedef struct _SYSTEMTIME WORD wYear;WORD wMonth;WORD wDayOfWeek;WORD wDay;WOR
51、D wHour;WORD wMinute;WORD wSecond;WORD wMilliseconds; SYSTEMTIME, *PSYSTEMTIME;SYSTEMTIME t1;GetSystemTime(&t1)CTime curTime(t1);WORD ms = t1.wMilliseconds;SYSTEMTIME sysTm;:GetLocalTime(&sysTm);在time.h中的_strtime() /只能在windows中用char t11;_strtime(t);puts(t);/*獲得當前日期和時間CTime tm=CTime:GetCurrentTime();
52、CString str=tm.Format(%Y-%m-%d);在VC中,我們可以借助CTime時間類,獲取系統當前日期,具體使用方法如下:CTime t = CTime:GetCurrentTime(); /獲取系統日期,存儲在t里面int d=t.GetDay(); /獲得當前日期int y=t.GetYear(); /獲取當前年份int m=t.GetMonth(); /獲取當前月份int h=t.GetHour(); /獲取當前為幾時int mm=t.GetMinute(); /獲取當前分鐘int s=t.GetSecond(); /獲取當前秒int w=t.GetDayOfWeek(
53、); /獲取星期幾,注意1為星期天,7為星期六二.CTimeSpan類如果想計算兩段時間的差值,可以使用CTimeSpan類,具體使用方法如下:CTime t1( 1999, 3, 19, 22, 15, 0 );CTime t = CTime:GetCurrentTime();CTimeSpan span=t-t1; /計算當前系統時間與時間t1的間隔int iDay=span.GetDays(); /獲取這段時間間隔共有多少天int iHour=span.GetTotalHours(); /獲取總共有多少小時int iMin=span.GetTotalMinutes();/獲取總共有多少分
54、鐘int iSec=span.GetTotalSeconds();/獲取總共有多少秒三._timeb()函數_timeb定義在SYSTIMEB.H,有四個fieldsdstflagmillitmtimetimezonevoid _ftime( struct _timeb *timeptr );struct _timeb timebuffer;_ftime( &timebuffer );取當前時間:文檔講可以到ms,有人測試,好象只能到16ms!四.設置計時器定義TIMER ID#define TIMERID_JISUANFANGSHI 2在適當的地方設置時鐘,需要開始其作用的地方;SetTim
55、er(TIMERID_JISUANFANGSHI,200,NULL);在不需要定時器的時候的時候銷毀掉時鐘KillTimer(TIMERID_JISUANFANGSHI);對應VC程序的消息映射void CJisuan:OnTimer(UINT nIDEvent)switch(nIDEvent)#如何設定當前系統時間windowsSYSTEMTIME m_myLocalTime,*lpSystemTime;m_myLocalTime.wYear=2003;m_myLocalTime.wM;m_myLocalTime.wDay=1;m_myLocalTime.wHour=0;m_myLocalT
56、ime.wMinute=0;m_myLocalTime.wSec;m_myLocalTime.wMillisec;lpSystemTime=&m_myLocalTime;if( SetLocalTime(lpSystemTime) ) /此處換成 SetSystemTime( )也不行MessageBox(OK !);elseMessageBox(Error !);SYSTEMTIME m_myLocalTime,*lpSystemTime;m_myLocalTime.wYear=2003;m_myLocalTime.wM;m_myLocalTime.wDay=1;lpSystemTime=&
57、m_myLocalTime;if( SetDate(lpSystemTime) ) /此處換成 SetSystemTime( )也不行MessageBox(OK !);elseMessageBox(Error !);本文來自CSDN博客,轉載請標明出處:HYPERLINK /khuang2008/archive/2008/12/09/3483274.aspx/khuang2008/archive/2008/12/09/3483274.aspx一種制作微秒級精度定時器的方法當使用定時器時,在很多情況下只用到毫秒級的時間間隔,所以只需用到下面的兩種常用方式就滿足要求了。一是用SetTimer函數建
58、立一個定時器后,在程序中通過處理由定時器發送到線程消息隊列中的WM_TIMER消息,而得到定時的效果(退出程序時別忘了調用和SetTimer配對使用的KillTimer函數)。二是利用GetTickCount函數可以返回自計算機啟動后的時間,通過兩次調用GetTickCount函數,然后控制它們的差值來取得定時效果,此方式跟第一種方式一樣,精度也是毫秒級的。用這兩種方式取得的定時效果雖然在許多場合已經滿足實際的要求,但由于它們的精度只有毫秒級的,而且在要求定時時間間隔小時,實際定時誤差大。下面介紹一種能取得高精度定時的方法。在一些計算機硬件系統中,包含有高精度運行計數器(high-resolu
59、tion performance counter),利用它可以獲得高精度定時間隔,其精度與CPU的時鐘頻率有關。采用這種方法的步驟如下:1、首先調用QueryPerformanceFrequency函數取得高精度運行計數器的頻率f。單位是每秒多少次(n/s),此數一般很大。2、在需要定時的代碼的兩端分別調用QueryPerformanceCounter以取得高精度運行計數器的數值n1,n2。兩次數值的差值通過f換算成時間間隔,t=(n2-n1)/f。下面舉一個例子來演示這種方法的使用及它的精確度。在VC 6.0 下用MFC建立一個對話框工程,取名為HightTimer.在對話框面板中控件的布局
60、如下圖:其中包含兩個靜態文本框,兩個編輯框和兩個按紐。上面和下面位置的編輯框的ID分別為IDC_E_TEST和IDC_E_ACTUAL,通過MFC ClassWizard添加的成員變量也分別對應為DWORD m_dwTest和DWORD m_dwAct. “退出”按紐的ID為IDOK,“開始測試”按紐ID為IDC_B_TEST,用MFC ClassWizard添加此按紐的單擊消息處理函數如下:void CHightTimerDlg:OnBTest()/ TODO: Add your control notification handler code hereUpdateData(TRUE);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 水庫進口段施工方案模板
- 礦產資源開發與區域經濟發展-石墨滑石考核試卷
- 木結構防火施工方案
- 糧食批發商市場規范化管理與監管策略研究考核試卷
- 解答證券從業資格證考試疑難試題及答案
- 2023年中國鐵路上海局集團有限公司招聘高等職業院校畢業生3163人(二)筆試參考題庫附帶答案詳解
- 2024項目管理考試復習要點試題及答案
- 硫酸銅在金屬腐蝕中的應用考核試卷
- 2023年中國能建陜西院智能配網公司招聘變電電氣設計崗位工作人員筆試參考題庫附帶答案詳解
- 2023年中國聯合網絡通信有限公司會昌分公司公開招聘工作人員筆試參考題庫附帶答案詳解
- 山東省臍帶血合同協議
- 2025-2030全球及中國自主汽車芯片行業市場現狀供需分析及市場深度研究發展前景及規劃可行性分析研究報告
- 四川宜賓環球集團有限公司招聘筆試題庫2025
- 湖北省武漢市六校聯考2024-2025學年高二下學期4月期中考試化學試題(含答案)
- 小學藏文基礎知識課件下載
- 大學英語四級考試2024年6月真題(第1套)閱讀
- 浙江2025年03月溫州市龍灣區事業單位公開招考(選調)31名工作人員筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 中國海洋石油集團有限公司招聘筆試真題2024
- 2025-2030冷軋行業市場發展分析及投資前景研究報告
- 新疆維吾爾自治區2024年中考數學試卷含真題解析
- 攪拌站安裝施工方案
評論
0/150
提交評論