

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 本科生畢業(yè)設計</b></p><p> 畢業(yè)設計題目 可視倒車雷達設計 </p><p><b> 摘 要</b></p><p> 設計了一個以STC89C52單片機為控制核心的測距控制器,能夠利用超聲波傳感器測量物體距離障礙物的距離,并能夠通過串口傳送給上位機,能
2、夠語音播報提示信息;同時設計了一個基于LabWindows的上層監(jiān)控軟件,能夠?qū)崟r顯示距離值和視頻圖像。</p><p> 首先介紹了控制器的硬件方案和軟件方案,然后介紹了語音錄放電路、超聲波檢測電路和串口通信電路等硬件電路的設計過程;詳細的介紹了下位機主程序、超聲波測距程序、語音播報程序、串口通信程序等的設計。簡單介紹了利用LabWindows軟件進行監(jiān)控軟件的前面板、圖形化編程、攝像頭和串口通信C程序的設計
3、。并簡單介紹了系統(tǒng)硬件和軟件的調(diào)試過程。實驗結(jié)果表明:設計的超聲波測距控制器能夠準確測量,并能夠和上位機實現(xiàn)通信。利用LabWindows設計的監(jiān)控界面具有顯示直觀、操作方便等優(yōu)點,此外LabWindows具有豐富的庫函數(shù),處理視頻圖像十分方便。</p><p> 關(guān)鍵詞:STC89C52單片機、超聲波測距、后視攝像、監(jiān)控軟件</p><p><b> Abstract<
4、;/b></p><p> A single chip microcomputer as the control core with STC89C52 range controller is designed, to the use of ultrasonic sensors measure object distance obstacle distance, and can be sent throug
5、h the serial port to the host computer, can broadcast voice prompt information; while the design of a LabWindows based on the upper monitoring software, can display the distance values and the video image.</p><
6、;p> First introduces the hardware scheme and software program, and then introduced the voice recording circuit, an ultrasonic detection circuit and the serial communication circuit and hardware circuit design process
7、; introduced in detail the next-bit machine main program, ultrasonic ranging program, broadcast voice procedures, such as serial communication program design. Briefly introduced the use of LabWindows software monitoring
8、software front panel, graphical programming, camera and serial commu</p><p> Keywords:STC89C52 single chip microcomputer、ultrasonic distance measuring、Rear view camera、Monitoring Software</p><p&g
9、t;<b> 目 錄</b></p><p><b> 摘 要I</b></p><p> AbstractII</p><p><b> 目 錄III</b></p><p><b> 第一章 概述1</b></p>&l
10、t;p> 1.1 課題設計的目的和意義1</p><p> 1.2 國內(nèi)應用現(xiàn)狀1</p><p> 1.3 設計內(nèi)容及要求2</p><p> 1.3.1 設計內(nèi)容2</p><p> 1.3.2 設計要求2</p><p> 第二章 設計方案4</p><p>
11、 2.1 系統(tǒng)硬件設計4</p><p> 2.2 設計軟件設計4</p><p> 第三章 硬件設計6</p><p> 3.1 硬件原理圖6</p><p> 3.2 語音錄放電路6</p><p> 3.2.1 語音芯片簡介6</p><p> 3.2.2 電路設
12、計8</p><p> 3.3超聲波測距電路10</p><p> 3.3.1 超聲波芯片簡介10</p><p> 3.3.2 測距電路設計11</p><p> 3.4 主控電路12</p><p> 3.4.1 單片機簡介12</p><p> 3.4.2 電路設計
13、15</p><p> 3.5 復位、晶振單元17</p><p> 3.6 串口通信模塊MAX23218</p><p> 3.7 印刷電路板設計和制作19</p><p> 第四章 軟件設計22</p><p> 4.1 主程序22</p><p> 4.1.1 程序
14、流程圖22</p><p> 4.1.2 程序介紹24</p><p> 4.2 測距程序25</p><p> 4.2.1 程序流程圖25</p><p> 4.2.2 程序介紹25</p><p> 4.3 語音程序26</p><p> 4.3.1 程序流程圖26
15、</p><p> 4.3.2 程序介紹27</p><p> 4.4 通信程序28</p><p> 4.4.1 程序流程圖28</p><p> 4.4.2 程序介紹28</p><p> 第五章 人機界面30</p><p> 5.1 開發(fā)軟件概述30</p&
16、gt;<p> 5.2 界面設計31</p><p> 5.2.1 圖像顯示界面31</p><p> 5.2.2超聲波距離顯示界面32</p><p> 5.2.3系統(tǒng)界面34</p><p> 第六章 結(jié)果調(diào)試36</p><p> 6.1 單片機及串口調(diào)試36</p
17、><p> 6.1.1 硬件調(diào)試36</p><p> 6.1.2遇到的問題37</p><p> 6.2 語音電路調(diào)試37</p><p> 6.2.1 硬件調(diào)試37</p><p> 6.2.2 遇到的問題38</p><p> 6.3 下位機總體調(diào)試39</p&g
18、t;<p> 6.3.1調(diào)試結(jié)果39</p><p> 6.3.2 遇到的問題40</p><p> 6.4 上位機界面41</p><p> 6.4.1 程序調(diào)試41</p><p> 6.4.2 遇到的問題42</p><p> 第七章 設計小結(jié)43</p>&l
19、t;p><b> 致謝44</b></p><p><b> 參考文獻45</b></p><p><b> 附錄46</b></p><p> 附錄一 上位機程序46</p><p> 附錄二 下位機程序51</p><p>
20、 附錄三 系統(tǒng)實物57</p><p><b> 1 現(xiàn)場環(huán)境57</b></p><p> 2 實驗室環(huán)境57</p><p> 附錄四 原理圖58</p><p><b> 第一章 概述</b></p><p> 1.1 課題設計的目的和意義</
21、p><p> 隨著我國經(jīng)濟社會的快速發(fā)展和人民生活水平的提高,汽車已經(jīng)成為人們生活中的一個重要部分。現(xiàn)在越來越多的中國家庭開始擁有自己的轎車。但是隨著汽車數(shù)量和駕駛新手的逐漸增加也引發(fā)了一系列的問題。其中,由倒車引發(fā)的糾紛問題也在呈現(xiàn)逐年遞增的趨勢。盡管汽車都安裝有后視鏡,但是不可避免的都存在一個盲區(qū),這就使得利用先進的計算機傳感技術(shù)、測量技術(shù)和顯示技術(shù)研制一款儀器幫助駕駛員掃除視野死角和視線模糊的缺陷,以提高倒車
22、的安全性提上了日程。</p><p> 目前,輔助倒車領(lǐng)域主要有兩種技術(shù):倒車雷達和后視影像。這兩種技術(shù)各有利弊:倒車雷達雖能確切判斷距離,但是對車后方的水溝、凸出的鋼筋、竹竿等無法感知,這也是安全上的隱患;后視影像直觀真實,但是對距離信息無法感知。如何把兩者有效的結(jié)合起來,實現(xiàn)真正意義上的安全倒車具有很大的研究價值,本課題正是在這樣的背景下提出的。</p><p> 可視倒車雷達總的
23、來說就是在普通的倒車雷達基礎(chǔ)上做了升級,添加了倒車可視功能,主要就是增加了顯示器和攝像頭等配件,當然硬件方面也做了相應的軟件(主機板)也會隨之發(fā)生改變,此種倒車雷達在倒車的時候可以更直觀的反應顯示倒車時車后的情況,攝像頭采集到的是車后的實物圖像,通過主機處理傳輸?shù)桨惭b在駕駛室內(nèi)的液晶顯示器上,讓車后的影像盡收眼底,這樣就極大的提高了倒車時的安全級別,大大的減少了因為倒車而發(fā)生的事故了,同時該種倒車雷達也有普通倒車雷達的功能——聲音提示和
24、車后障礙物距離顯示。</p><p> 1.2 國內(nèi)應用現(xiàn)狀</p><p> 近年來,由于導航系統(tǒng)、工業(yè)機器人的自動測距、機械加工自動化等方面的需要,自動測距變得十分重要。與同類測距方法相比,超聲波測距法具有以下優(yōu)勢:</p><p> ?。?)相對于聲波,超聲波有定向性較好、能量集中、在傳輸過程中衰減較小、反射能力強等優(yōu)勢。</p><p
25、> ?。?)和光學方法相比,超聲波的波速較小,可以直接測量較近的目標,縱向分辨率高;對色彩、光照度、電磁場不敏感,被測物體處于黑暗、煙霧、電磁干擾、有毒等比較惡劣的環(huán)境有一定的適應能力。特別是在海洋勘測具有獨特的優(yōu)點。</p><p> ?。?)超聲波傳感器結(jié)構(gòu)簡單,體積小,費用低,信息處理簡單可靠,便于小型化和集成化。</p><p> 隨著科學技術(shù)的快速發(fā)展,超聲波的應用將越來
26、越廣泛。但就目前技術(shù)水平</p><p> 來說,人們利用超聲波的技術(shù)還十分有限,因此,這是一個正在不斷發(fā)展而又有無限前景的技術(shù)。</p><p> 超聲波測距技術(shù)在社會生活中已有廣泛的應用,目前對超聲波的精度要求越來越大。超聲波作為一種新型的工具在各方面都有很大的發(fā)展空間,它將朝著更加高定位高精度的方向發(fā)展,以滿足日益發(fā)展的社會需求。未來超聲波測距技術(shù)將朝著更高精度,更大應用范圍,更
27、穩(wěn)定方向發(fā)展。</p><p> 1.3 設計內(nèi)容及要求</p><p> 1.3.1 設計內(nèi)容</p><p> 設計一個可視倒車雷達,能實現(xiàn)以下功能:</p><p> 檢測車尾部距離障礙物的距離</p><p><b> 語音播報距離信息</b></p><p&
28、gt; 攝像頭采集車尾部視頻信息</p><p><b> PC機控制界面</b></p><p> 單片機與PC機的通訊</p><p> 1.3.2 設計要求</p><p> 本課題的基本思路是,以單片機作為測距控制器,處理超聲波測得的距離,啟動語音播報模塊播報提示信息、即“倒車,請注意”,同時將距離信息
29、通過串口傳輸給PC機,在PC機上通過LabWindows所做的界面對信息進行處理,最后將視頻和距離信息在PC機上顯示。</p><p> 本課題的主要任務及基本要求有以下幾點:</p><p> 設計可視倒車雷達的整體框架;</p><p> 設計HC-SR04超聲波測距芯片電路;</p><p> 設計ISD1420語音芯片電路;&
30、lt;/p><p> 設計基于USB攝像頭的視頻采集電路;</p><p><b> 繪制硬件原理圖;</b></p><p><b> 制作PCB版;</b></p><p> 編寫各部分軟件程序;</p><p> 利用Labwindows設計PC機監(jiān)控界面;<
31、;/p><p><b> 焊接電路板;</b></p><p> 10、各部分軟件、硬件及整體的調(diào)試。</p><p><b> 第二章 設計方案</b></p><p> 2.1 系統(tǒng)硬件設計</p><p> 本系統(tǒng)在普通倒車雷達基礎(chǔ)上,以嵌入式系統(tǒng)為平臺,集成了超
32、聲波測距、語音報警、USB視頻采集等功能。</p><p> 整個應用系統(tǒng)包括超聲波測距模塊、基于USB口的攝像頭視頻采集系統(tǒng)、語音報警系統(tǒng)以及基于LabWindows的人機界面,系統(tǒng)硬件框圖圖2-1:</p><p> 圖2-1 系統(tǒng)硬件框圖</p><p> 其中單片機選用的是STC89C52;超聲波測距模塊選用的是HC-SR04超聲波測距芯片,該芯片可提
33、供2cm-400cm的非接觸式距離感測功能,精度可達3mm,該模塊包含了超聲波發(fā)射器、接收器和控制電路;語音模塊選用的是ISD1420芯片芯片內(nèi)部包含有自動增益控制、麥克風前置擴大器、揚聲器驅(qū)動線路、振蕩器與內(nèi)存等的全方位整合系統(tǒng)功能,可錄、放音十萬次;攝像頭選用的是USB攝像頭;LabWindows是以ANSI C為核心的交互式虛擬儀器開發(fā)環(huán)境,它將C語言與測控技術(shù)有機結(jié)合,具有豐富的庫函數(shù)。</p><p>
34、 2.2 設計軟件設計</p><p> 系統(tǒng)軟件分為兩個部分:上位機和下位機程序。上位機程序包括攝像頭處理程序和串口通信程序;下位機程序包括超聲波測距程序、語音播報提示音程序、T0計數(shù)和延時程序、以及和上位機通信相關(guān)的波特率設置。</p><p> 系統(tǒng)框圖如圖2-2:</p><p> 圖 2-2 系統(tǒng)軟件框圖</p><p>
35、 上位機使用的是PC機,上位機發(fā)出倒車指令,指令通過串口傳送給單片機,同時啟動攝像頭;單片機作為下位機,單片機將超聲波檢測到的距離信息通過串口傳送給PC機,同時啟動語音報警??紤]到單片機要與上位機之間進行通信,因此需要一個定時器作為波特率發(fā)生器,同時要在串口中斷程序中進行數(shù)據(jù)的發(fā)送和接收。</p><p><b> 第三章 硬件設計</b></p><p><
36、b> 3.1 硬件原理圖</b></p><p> 圖3-1給出了系統(tǒng)的原理圖,包括3個HC-SR04超聲波模塊、MAX232通信接口、STC89C52單片機、語音模塊ISD1420。</p><p> 圖3-1 硬件原理圖</p><p> 下位機的核心為STC89C52單片機,STC89C52單片機起距離值計算、控制和通信的作用;HC-
37、SR04超聲波模塊檢測距離障礙物的距離;語音模塊在單片機的控制下播報“倒車,請注意”提示音;考慮到控制器要與上位機之間進行通信,所以為控制器提供一個 RS-232 通信接口。</p><p> 3.2 語音錄放電路</p><p> 3.2.1 語音芯片簡介</p><p> ISD1420是美國ISD公司出品的新型單片優(yōu)質(zhì)語音錄放電路,較之以往所有的語音電路
38、,具有專利技術(shù)的模擬處理存儲方式,使錄放音質(zhì)極佳,沒有常見的的背景噪音,且電路斷電后語音內(nèi)容仍不丟失。電路內(nèi)部由振蕩器、語音存儲單元、前置放大器、自動增益控制電路、抗干擾濾波器、輸出放大器組成。一個最小的錄放系統(tǒng)僅由一個麥克風、一個喇叭、兩個按鈕、一個電源、少數(shù)電阻電容組成。</p><p><b> 特點</b></p><p> 重現(xiàn)優(yōu)質(zhì)原聲
39、 ② 基本上不耗電信息存儲</p><p> ?、?信息可保存100年,可反復錄放10萬次 ④ 選址處理多達160段信息 </p><p> ⑤ 具有自動節(jié)電模式 ⑥ 維持狀態(tài),僅需0.5μA電流</p><p><b> 引腳描述:</b></p>
40、<p> ISD1420語音芯片引腳圖如下:</p><p><b> 圖3-2 引腳圖</b></p><p> ISD1420引腳說明見下表:</p><p> 表 3-1 引腳說明</p><p> 3.2.2 電路設計</p><p><b> 一、錄音
41、電路</b></p><p> A0-A7地址輸入有雙重功能,根據(jù)地址中的A6,A7的電平狀態(tài)決定功能。如果A6,A7有一個是低電平,A0~A7輸入全解釋為地址位,作為起始地址用。根據(jù) 、或的下降沿信號,地址輸入被鎖定。</p><p> A0-A7由低位向高位排列,每位地址代表125毫秒的尋址,160個地址覆蓋20秒的語音范圍(160*0.125s=20s)。錄音及放音功
42、能均從設定的起始地址開始,錄音結(jié)束由停止鍵操作決定,芯片內(nèi)部自動在該段的結(jié)束位置插入結(jié)束標志(EOM);而放音時芯片遇到EOM標志即自動停止放音。</p><p><b> 地址功能表如下:</b></p><p> 表3-2 地址功能表</p><p> 電路圖如圖3-3所示:</p><p><b>
43、 圖3-3 錄音電路</b></p><p><b> 放音電路</b></p><p> 圖3-4為語音芯片與單片機硬件連接圖,單片機的P0口與芯片地址線A0~A7相連,P2.7與芯片的/PLAYL相連。程序運行時,單片機通過P0口傳送地址給芯片,然后通過P2.7發(fā)送高電平觸發(fā)語音芯片放音,播放已經(jīng)選定地址中的錄音內(nèi)容。</p>&l
44、t;p> 在本系統(tǒng)中,已經(jīng)在芯片中的0地址錄入“倒車,請注意”內(nèi)容,程序運行時,給單片機的P0口低電平,然后給P2.7脈沖觸發(fā)芯片播報語音內(nèi)容“倒車,請注意”。</p><p><b> 圖3-4 放音電路</b></p><p> 3.3超聲波測距電路</p><p> 3.3.1 超聲波芯片簡介</p><
45、p> HC-SR04超聲波測距模塊可提供2cm-400cm的非接觸式距離感測功能,測距精度可達高到3mm;模塊包括超聲波發(fā)射器、接收器與控制電路?;竟ぷ髟恚?lt;/p><p> (1)采用IO口TRIG觸發(fā)測距,給至少10us的高電平信號;</p><p> (2)模塊自動發(fā)送8個40khz的方波,自動檢測是否有信號返回;</p><p> (3)有
46、信號返回,通過IO口ECHO輸出一個高電平,高電平持續(xù)的時間就是超</p><p> 聲波發(fā)射到返回的時間。測試距離=(高電平時間*聲速(340M/S))/2;</p><p> 實物圖如圖3-5所示,圖中引說明如下:</p><p> VCC供5V電源;GND 為地線;TRIG 觸發(fā)控制信號輸入;ECHO回響信號輸出。</p><p>
47、; 圖3-5 HC-SR04實物圖</p><p> 3.3.2 測距電路設計</p><p> 系統(tǒng)中使用了三塊超聲波芯片,可以測量三個方向上的距離,即車身后部、左側(cè)和右側(cè)距離障礙物的距離。如圖3-6所示,將三塊芯片的控制腳和單片機的P1口相連,單片機通過I/O控制芯片。</p><p> 由芯片的時序電路可以知道,在程序中,通過I/O口觸發(fā)測距,給TRI
48、G至少10us的高電平信號,模塊自動發(fā)送8個40khz的方波,自動檢測是否有信號返回;有信號返回,通過IO口ECHO輸出一個高電平,高電平持續(xù)的時間就是超聲波發(fā)射到返回的時間。</p><p> 圖3-6 測距電路圖</p><p><b> 3.4 主控電路</b></p><p> 3.4.1 單片機簡介</p><
49、;p><b> 一、概述</b></p><p> 本次設計采用的是 DIP 封裝 40 引腳雙列直插的 STC89C52 八位單片機。具體引腳 圖如圖 3-7 所示。</p><p> STC89C52 是一種低功耗、高性能 CMOS 8 位微控制器,具有 8K 在系統(tǒng)可編程 Flash 存儲器。使用高密度非易失性存儲器技術(shù)制造,與工業(yè) 80C51 產(chǎn)品
50、指令和引腳完全兼容。</p><p><b> 二、主要性能</b></p><p> 與 MCS-51 單片機產(chǎn)品兼容8K 字節(jié)在系統(tǒng)可編程 Flash 存儲器</p><p> 1000 次擦寫周期全靜態(tài)操作:0Hz~33Hz</p><p> 三級加密程序存儲器32 個可編程 I
51、/O 口線</p><p> 三個 16 位定時器/計數(shù)器八個中斷源</p><p> 全雙工 UART 串行通道低功耗空閑和掉電模式</p><p> 掉電后中斷可喚醒看門狗定時器</p><p> 雙數(shù)據(jù)指針掉電標識符</p><p><b> 圖3-7
52、 引腳圖</b></p><p><b> 三、引腳介紹</b></p><p> P0 口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個TTL邏輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入。當訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低8位地址/數(shù)據(jù)復用。在這種模式下,P0 具有內(nèi)部上拉電阻。在 flash編程時,P0 口也
53、用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。</p><p> P1口:P1口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,P1輸出緩沖器能驅(qū)動4個TTL邏輯電平。對P1端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流。此外,P1.0和P1.2分別作定時器/計數(shù)器2的外部計數(shù)輸入(P1.0/T2)和時器/計
54、數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體如表3-3所示。在flash 編程和校驗時,P1口接收低8 位地址字節(jié)。</p><p> 表 3-3 P1 口的第二功能使用</p><p> P2口:P2口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅(qū)動4個TTL 邏輯電平。對P2端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉
55、低的引腳由于內(nèi)部電阻的原因,將輸出電流。在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行 MOVX @DPTR)時,P2口送出高八位地址。在使用8位地址(如 MOVX @RI)訪問外部數(shù)據(jù)存儲器時,P2口輸出 P2鎖存器的內(nèi)容。在flash編程和校驗時,P2口也接收高8位地址字節(jié)和一些控制信號。 </p><p> P3口:P3口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅(qū)動4個T
56、TL 邏輯電平。對P3端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流。P3口亦作為 STC89C52 特殊功能(第二功能)使用,在flash編程和校驗時,P3口也接收一些控制信號。 </p><p> 表3-4 P3口的第二功能使用</p><p> RST:復位輸入。晶振工作時,RST 腳持續(xù) 2 個機
57、器周期高電平將使單片機復位??撮T狗計時完成后,RST腳輸出96個晶振周期的高電平。特殊寄存器AUXR(地址8EH) 上的DISRTO位可以使此功能無效。DISRTO 默認狀態(tài)下,復位高電平有效。 </p><p> ALE/PROG:地址鎖存控制信號(ALE)是訪問外部程序存儲器時,鎖存低8位地址的輸出脈沖。在flash編程時,此引腳(PROG)也用作編程輸入脈沖。在一般情況下,ALE以晶振六分之一的固定頻率輸
58、出脈沖,可用來作為外部定時器或時鐘使用。然而,特別強調(diào),在每次訪問外部數(shù)據(jù)存儲器時,ALE脈沖將會跳過。如果需要,通過將地址為8EH的SFR的第0位置“1”,ALE 操作將無效。這一位置 “1”,ALE僅在執(zhí)行 MOVX或MOVC指令時有效。否則,ALE 將被微弱拉高。這個ALE使能標志位(地址為8EH的SFR的第0位)的設置對微控制器處于外部執(zhí)行模式下無效。</p><p> PSEN:外部程序存儲器選通信號
59、(PSEN)是外部程序存儲器選通信號。當STC89C52從外部程序存儲器執(zhí)行外部代碼時,PSEN在每個機器周期被激活兩次,而在訪問外部 數(shù)據(jù)存儲器時,PSEN將不被激活。 </p><p> EA/VPP:訪問外部程序存儲器控制信號。為使能從0000H到FFFFH的外部程序存儲器讀取指令,EA必須接GND。為了執(zhí)行內(nèi)部程序指令,EA應該接VCC。在flash編程期間,EA也接收12伏VPP 電壓。 </p
60、><p> XTAL1:振蕩器反相放大器和內(nèi)部時鐘發(fā)生電路的輸入端。 </p><p> XTAL2:振蕩器反相放大器的輸出端。 </p><p> 3.4.2 電路設計</p><p> STC89C52 單片機主要實現(xiàn)距離值的標度變換、語音的播放控制以及和上位機的通信功能。具體原理圖如圖3-8所示。</p><p&
61、gt;<b> 圖3-8 主控電路</b></p><p> 本設計主要用到P1.0~P1.5作為超聲波傳感器的輸入;P0口和語音芯片的地址口相連,通過P0口選擇語音芯片的地址;P2.7用作控制腳,和語音芯片的/PLAYL腳相連,控制語音芯片播放P0口選中地址單元中的錄音內(nèi)容。其I/O的引腳使用情況如表3-5所示:</p><p> 表3-5 STC89C52引
62、腳使用</p><p> 3.5 復位、晶振單元</p><p><b> 一、復位電路</b></p><p> 因為 STC89C52 單片機是高電平復位的,只要 REST 引腳接收到了兩個機器周期的高電平單片機就能復位。</p><p><b> 圖3-9 復位電路</b></p
63、><p><b> 二、晶振電路</b></p><p> STC89C52單片機有一個用于構(gòu)成內(nèi)部振蕩器的反相放大器,XTAL1 和XTAL2 分別是放大器的輸入、輸出端。</p><p> 圖3-10 晶振電路</p><p> 3.6 串口通信模塊MAX232</p><p> 本設計
64、下位機與上位機的通信采用的是RS232通信協(xié)議,選用串口通信模塊MAX232作為通信接口。</p><p> 圖3-11 通信接口電路</p><p> 3.7 印刷電路板設計和制作</p><p> 在系統(tǒng)硬件電路設計好后,我就去購買所需要的元器件,自己畫元件封裝,通過自動布線,繪制了 PCB 板。如圖 3-12 所示:</p><p&g
65、t; 圖3-12 系統(tǒng)硬件PCB圖</p><p> 印刷電路板畫好并檢查沒有錯誤后,就送給廠家進行制作了,在制作PCB板期間,就著手進行系統(tǒng)軟件方案的設計。經(jīng)過大約一星期后,印刷電路板終于做好了,如圖 3-13所示:</p><p> 圖3-13 系統(tǒng)印刷電路板圖</p><p> 印刷電路板制作好后,就開始進行元器件的焊接以及硬件的調(diào)試。焊接及調(diào)試成功后
66、的系統(tǒng)硬件如圖3-14所示:</p><p> 圖3-14 系統(tǒng)硬件圖</p><p> 在焊接過程中,要注意焊接順序,首先焊接單片機及其外圍電路和MAX232通信接口,接著對其進行調(diào)試;然后焊接語音芯片外圍電路,包括錄音電路、和單片機連接部分電路,并對其進行調(diào)試。這樣分塊進行焊接調(diào)試容易發(fā)現(xiàn)問題,節(jié)約大量時間。</p><p><b> 第四章 軟
67、件設計</b></p><p><b> 4.1 主程序</b></p><p> 4.1.1 程序流程圖</p><p> 主程序設計流程圖實際上就是對程序設計總體思路的一個具體闡述。每一個程序的執(zhí)行都是從主程序開始的,所以主程序在所有的子程序中起到一個領(lǐng)導的作用。也就是說,子程序的執(zhí)行順序是由主程序來決定的。后面的幾個小程
68、序模塊實際上都包含在主程序中,只是因為它們太大或是因為經(jīng)常使用而將它們單獨拎出來成為一個相對獨立的小模塊。主程序的開始一般都是進行模塊的初始化,為各模塊正常工作提供前提條件,本系統(tǒng)主要用到:距離計算程序、延時程序、數(shù)據(jù)發(fā)送程序、超聲波模塊啟動程序。</p><p> 程序流程圖4-1所示,在主程序中,首先對程序中需要用到的變量初始化,然后初始化計數(shù)器T0,初始化定時器T1,并對T1賦初值。因為在計算距離時,需要
69、用到T0進行計數(shù);由于要和上位機通信,因此需要利用定時器T1設置通信波特率。超聲波測距采用的是循環(huán)檢測的方式,在主程序中,循環(huán)檢測P0口的狀態(tài),并將計算好的數(shù)據(jù)存入數(shù)組;當接收到上位機的指令時,開始通過串口像上位機發(fā)送數(shù)據(jù)。為了使得數(shù)據(jù)比較準確,在三個數(shù)據(jù)傳送結(jié)束后,需要延時一段時間。</p><p> 圖4-1 主程序流程圖</p><p> 4.1.2 程序介紹</p>
70、<p><b> 主程序</b></p><p> void main(void)</p><p><b> { </b></p><p><b> int b;</b></p><p><b> P2=0xff;</b><
71、;/p><p> TMOD=0x21; //設T0為方式1,GATE=1</p><p> SCON=0x50;</p><p><b> TH1=0xFD;</b></p><p><b> TL1=0xFD;</b></p><p><b> TH
72、0=0;</b></p><p><b> TL0=0; </b></p><p><b> TR0=1; </b></p><p> TR1=1; //開啟定時器</p><p><b> TI=1;</b></p><
73、p><b> while(1)</b></p><p><b> {</b></p><p> StartModule();</p><p> while(!RECH0);//當RECH0為零時等待</p><p> TR0=1; //開啟計數(shù)</p>
74、<p> while(RECH0); //當RECH0為1計數(shù)并等待</p><p> TR0=0; //關(guān)閉計數(shù)</p><p> a[0]=Conut(); //計算并將數(shù)值存入數(shù)組</p><p><b> b=SBUF;</b></p><p> if(RI==0)
75、; //判斷是否有上位機指令</p><p><b> else</b></p><p><b> {</b></p><p> P2=0xff; //啟動語音播報提示信息</p><p><b> P2=0;</b></p>
76、;<p> Send(a[0]); //通過串口發(fā)送數(shù)據(jù)</p><p> DelayMs(500);//500MS</p><p><b> RI=1;</b></p><p><b> }</b></p><p><b> }</b>&l
77、t;/p><p><b> }</b></p><p><b> 4.2 測距程序</b></p><p> 4.2.1 程序流程圖</p><p> 測距程序程序中,首先要置超聲波引腳TRIG為高電平,然后要延時至少10us才能正確測距。超聲波模塊啟動后,調(diào)用計算距離子程序,將傳感器感測的數(shù)據(jù)
78、轉(zhuǎn)化為厘米。</p><p> 圖4-2超聲波模塊啟動程序流程圖,圖4-3為數(shù)據(jù)計算程序流程圖。</p><p> 圖4-2 傳感器模塊啟動流程圖 圖4-3 距離計算流程圖</p><p> 4.2.2 程序介紹</p><p><b> 一、模塊啟動程序</b></p>
79、<p> void StartModule() //啟動一次模塊</p><p> {</p><p> TRIG=1; //TRIG引腳置高電平</p><p> _nop_(); //20us延時</p&
80、gt;<p><b> _nop_(); </b></p><p><b> ︰</b></p><p><b> ︰</b></p><p><b> ︰</b></p><p><b> _nop_(); </b
81、></p><p> TRIG=0; //TRIG引腳置低電平</p><p><b> }</b></p><p><b> 二、距離計算程序</b></p><p> Conut(void)</p><p>&
82、lt;b> {</b></p><p> time=TH0*256+TL0; //利用T0計數(shù),計算ECHO引腳高電平時間</p><p> TH0=0; //計數(shù)器T0計數(shù)清零</p><p><b> TL0=0;</b></p><p> S=(time
83、*1.87)/100; //算出來是CM</p><p> return(S); //返回距離值</p><p><b> }</b></p><p><b> 4.3 語音程序</b></p><p> 4.3.1 程序流程圖</p><
84、p> 預先向語音芯片中錄入“倒車,請注意”提示音,下位機檢測是否有上位機倒車指令。當檢測到指令時,單片機首先向P0口發(fā)送地址,然后向P2.7發(fā)送脈沖驅(qū)動芯片報警。</p><p> 圖4-4為程序流程圖:</p><p> 圖4-4 程序流程圖</p><p> 4.3.2 程序介紹</p><p><b> 報警程
85、序介紹</b></p><p> b=SBUF; //上位機發(fā)送指令</p><p> if(RI==0); //判斷是否接收到上位機指令</p><p><b> else</b></p><p><b> {</b>&
86、lt;/p><p> P0=0; //選擇地址</p><p> P2=0xff; //向P2口發(fā)送脈沖</p><p><b> P2=0;</b></p><p> DelayMs(500);//500MS</p><p><b>
87、RI=1;</b></p><p><b> }</b></p><p><b> 4.4 通信程序</b></p><p> 4.4.1 程序流程圖</p><p> 串口通信采用的通信協(xié)議是RS232,上位機與下位機通過串口MAX232相連。單片機不斷檢測上位機要求傳送數(shù)據(jù)信
88、息,當檢測到通信指令時,單片機調(diào)用發(fā)送子程序,發(fā)送經(jīng)單片機處理過的距離信息。</p><p> 圖4-5為通信程序流程圖,圖4-6為數(shù)據(jù)發(fā)送程序流程圖。</p><p> 圖4-5 通信程序流程圖 圖4-6 數(shù)據(jù)發(fā)送程序流程圖</p><p> 4.4.2 程序介紹</p><p><b> 一、通信程序<
89、;/b></p><p> b=SBUF; </p><p> if(RI==0); //等待上位機發(fā)送數(shù)據(jù)通信指令</p><p> else //接收到指令</p><p><b> {</b></p&
90、gt;<p><b> ︰</b></p><p><b> ︰</b></p><p> Send(a[0]); //調(diào)用數(shù)據(jù)發(fā)送程序發(fā)送數(shù)據(jù)</p><p> Send(a[1]);</p><p> Send(a[2]);</p><
91、p><b> ︰</b></p><p><b> ︰</b></p><p><b> }</b></p><p><b> 二、數(shù)據(jù)發(fā)送子程序</b></p><p> void Send(int a)</p><p
92、><b> {</b></p><p> SBUF=a; //將數(shù)據(jù)存入緩沖區(qū)</p><p> while(TI==0); //判斷是否發(fā)送完</p><p> TI=0; //發(fā)送結(jié)束后清標志位</p><p><b>
93、}</b></p><p><b> 第五章 人機界面</b></p><p> 5.1 開發(fā)軟件概述</p><p> LabWindows/CVI 簡介</p><p> LabWindows/CVI 是National Instruments 公司(美國國家儀器公司,簡稱NI公司)推出的交互式C
94、語言開發(fā)平臺。LabWindows/CVI 將功能強大、使用靈活的C語言平臺與用于數(shù)據(jù)采集分析和顯示的測控專業(yè)工具有機地結(jié)合起來,利用它的集成化開發(fā)環(huán)境、交互式編程方法、函數(shù)面板和豐富的庫函數(shù)大大增強了C語言的功能,為熟悉C語言的開發(fā)設計人員編寫檢測系統(tǒng)、自動測試環(huán)境、數(shù)據(jù)采集系統(tǒng)、過程監(jiān)控系統(tǒng)等應用軟件提供了一個理想的軟件開發(fā)環(huán)境。NI公司的LabWindows/CVI是一個久經(jīng)驗證的用于測試和測量的ANSI C開發(fā)環(huán)境,極大地提高了
95、工程師和科學家們的生產(chǎn)效率。他們使用LabWindows/CVI來開發(fā)高性能的、可靠的應用程序,用于制造測試、軍事/航天、通訊、設計驗證和汽車工業(yè)等領(lǐng)域。開發(fā)人員可以在設計階段利用LabWindows/CVI的硬件配置助手、綜合調(diào)試工具以及交互式執(zhí)行功能,來運行各項功能,使得這些領(lǐng)域的開發(fā)流水線化。使用內(nèi)置的測量庫,你可以迅速的開發(fā)出復雜的應用程序,例如多線程編程和ActiveX的服務器/客戶端程序。由于LabWindows/CV<
96、;/p><p> LabWindows/CVI 是為C語言程序員提供的軟件開發(fā)系統(tǒng),在其交互式開發(fā)環(huán)境中編寫的程序必須符合標準C 規(guī)范。 </p><p> 使用LabWindows/CVI 可以完成如下工作:交互式的程序開發(fā);具有功能強大的函數(shù)庫,用來創(chuàng)建數(shù)據(jù)采集和儀器控制的應用程序; ?? 充分利用完備的軟件工具進行數(shù)據(jù)采集、分析和顯示;
97、48698;利用向?qū)ч_發(fā)IVI儀器驅(qū)動程序和創(chuàng)建ActiveX服務器;為其它程序開發(fā)C目標模塊、動態(tài)連接庫(DLL)、C語言庫。</p><p><b> 5.2 界面設計</b></p><p> 5.2.1 圖像顯示界面</p><p><b> 一、界面前面板</b></p>
98、<p> 在可視倒車系統(tǒng)中,需要上位機能夠顯示USB攝像頭采集到的圖像。如圖5-1所示,在圖中,有一個視頻顯示控件和三個命令控件。USB攝像頭連接好后,當點擊“采集圖像”按鍵時,系統(tǒng)啟動USB攝像頭采集圖像,并在黑色區(qū)域顯示;當點擊“停止”按鍵時,系統(tǒng)停止采集圖像;當點擊“退出”按鍵時,退出視頻采集軟件。</p><p> 圖5-1 圖像顯示界面</p><p> 二、視頻
99、采集程序介紹</p><p><b> //主程序</b></p><p> int main (int argc, char *argv[])</p><p> { if (InitCVIRTE (0, argv, 0) == 0)</p><p> return -1; /* ou
100、t of memory */</p><p> if ((panelHandle = LoadPanel (0, "cam.uir", PANEL)) < 0)</p><p> return -1;</p><p> return 0;}</p><p><b> //退出按鈕</b>
101、</p><p> int CVICALLBACK QuitCallback (int panel, int control, int event, void *callbackData, </p><p> int eventData1, int eventData2)</p><p> {switch (event)</p><p>
102、; {case EVENT_COMMIT: QuitUserInterface (0); break;}</p><p> return 0;}</p><p><b> //開始按鈕</b></p><p> int CVICALLBACK startCB (int panel, int control, int event, voi
103、d *callbackData,</p><p> int eventData1, int eventData2)</p><p> { switch (event)</p><p> {case EVENT_COMMIT:</p><p> GetPanelAttribute (···,·
104、183;·, ···); //獲得面板句柄</p><p> GetCtrlAttribute (···, ···, ···, ···); //獲得屏幕中圖像要顯示的位置&l
105、t;/p><p> result=capCreateCaptureWindowA("",··· ,··,··,··,··,··,··); //打開攝像頭</p><p> SendMessage(··&
106、#183;, ··, ··, ··); //設置攝像頭函數(shù)</p><p><b> break;</b></p><p><b> }</b></p><p> return 0;}</p>&l
107、t;p><b> //停止按鈕</b></p><p> int CVICALLBACK stopCB (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)</p><p> { switch (event)</p>&
108、lt;p> {case EVENT_COMMIT:</p><p> if (result != 0)</p><p> {SendMessage(··, ··,··, ··); } //斷開連接</p><p><b> break;</b>&
109、lt;/p><p><b> } </b></p><p><b> return 0;</b></p><p><b> }</b></p><p><b> 超聲波距離顯示界面</b></p><p><b>
110、一、界面前面板</b></p><p> 系統(tǒng)要求上位機能過接收單片傳送的距離信息,為此編寫了一個數(shù)據(jù)通信用</p><p> 的上位機程序。系統(tǒng)用到了三個超聲波傳感器,因此要求上位機能夠接收并顯示三個距離信息。系統(tǒng)界面如圖5-2所示,在面板中,有三個數(shù)據(jù)顯示框,用于顯示下位機傳送上來的距離值;有兩個控制按鍵,用于控制通信的通斷。當點擊“接收數(shù)據(jù)”按鍵時,系統(tǒng)向下位機發(fā)送測
111、距指令,通過單片機驅(qū)動傳感器測距,并將處理后的數(shù)據(jù)通過串口發(fā)送給上位機,上位機顯示數(shù)據(jù)值;當點擊“退出”按鍵時,退出該軟件。</p><p> 圖5-2 距離顯示界面</p><p><b> 二、程序簡介</b></p><p><b> //主程序</b></p><p> int ma
112、in (int argc, char *argv[])</p><p> { if (InitCVIRTE (0, argv, 0) == 0)</p><p> return -1;/* out of memory */</p><p> if ((panelHandle = LoadPanel (0, "通信.uir", PANEL)
113、) < 0)</p><p> return -1;</p><p> OpenComConfig (1, "", 9600, 0, 8, 1, 0, 0); //打開并配置串口</p><p><b> ···</b></p><p><b>
114、 }</b></p><p><b> //退出</b></p><p> int CVICALLBACK rs232quit (int panel, int control, int event,void *callbackData,</p><p> int eventData1, int eventData2)</
115、p><p> {switch (event)</p><p> {case EVENT_COMMIT:</p><p> CloseCom(1); //關(guān)閉串口</p><p><b> ···</b></p><p><b
116、> }</b></p><p> return 0;}</p><p><b> //接收數(shù)據(jù)</b></p><p> int CVICALLBACK rs232receive (int panel, int control, int event,void *callbackData,</p><
117、p> int eventData1, int eventData2)</p><p> {char a[1]={1}; //向緩沖區(qū)發(fā)送字符</p><p><b> ···</b></p><p> FlushInQ(1);
118、 //清空串行口1的輸入隊列</p><p> FlushOutQ(1); //清空串行口1的輸出隊列 </p><p> //為串口1設置回調(diào)函數(shù)(當PC機串口收到字符串后調(diào)用函數(shù)Data_receive)</p><p> InstallComCallback(1,LWRS_RECEIVE,3,0,Data_receive,
119、callbackdata);</p><p> ComWrt(1,a,1); //從緩沖區(qū)讀數(shù)據(jù)存入緩沖去</p><p><b> ···}</b></p><p><b> //讀數(shù)據(jù)</b></p><p> void CVICALLBACK Data_r
120、eceive(int COMport,int eventMask,void *callbackdata)</p><p><b> { ···</b></p><p> count=GetInQLen(1); //讀取指定端口入隊列字符數(shù)</p><p> Set
121、CtrlVal( panelHandle,PANEL_NUMERIC,rbuf); //顯示數(shù)據(jù)</p><p><b> ···</b></p><p><b> }</b></p><p><b> 系統(tǒng)界面</b></p><p>&l
122、t;b> 一、界面前面板</b></p><p> 經(jīng)過以上的視頻和通信的分開調(diào)試成功后,最終確定前面板的構(gòu)成。前面板</p><p> 中包含了一個視頻顯示控件,三個距離顯示控件,三個控制按鍵。</p><p> 當按下“開始”按鍵后,上位機向下位機發(fā)送指令,同時啟動攝像頭采集圖像;當下位機接到上位機的指令后,打開串口向上位機傳送數(shù)據(jù),三
123、個數(shù)據(jù)一組,分別為三個傳感器的數(shù)據(jù),在上位機上點擊“顯示距離”按鍵后,上位機上顯示三個距離數(shù)據(jù);當點擊“退出”按鍵時,退出軟件。</p><p> 系統(tǒng)界面如圖5-3所示:</p><p><b> 圖5-3 系統(tǒng)界面</b></p><p><b> 二、程序簡介</b></p><p>
124、 上位機的總程序包括兩個大部分:攝像頭和數(shù)據(jù)通信。攝像頭驅(qū)動程序和數(shù)據(jù)通信程序已經(jīng)編寫好,總程序只需要將兩個程序融合到一起即可,當然,也要經(jīng)過一些修改;在數(shù)據(jù)顯示部分,又加入了單位。</p><p> 上位機程序主要包括:攝像頭驅(qū)動程序、數(shù)據(jù)通信程序、數(shù)據(jù)顯示程序。</p><p><b> 第六章 結(jié)果調(diào)試</b></p><p> 結(jié)
125、果調(diào)試分為硬件調(diào)試和軟件調(diào)試。硬件主要可以分為以下幾個部分,即單片機、串口、超聲波傳感器和語音錄放。調(diào)試的時候,為了能夠比較容易發(fā)現(xiàn)硬件錯誤,要分步調(diào)試,首先焊接好單片機和串口以及外圍電路,接著調(diào)試;然后焊接語音錄放電路,調(diào)試;最后焊接傳感器模塊。</p><p> 軟件調(diào)試主要分為下位機單片機程序的調(diào)試和上位機中程序的調(diào)試。在下位機中主要包含超聲波測距程序,語音播放程序,數(shù)據(jù)發(fā)送程序,串口初始化程序等;上位機
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設計---倒車雷達的設計
- 汽車倒車雷達設計畢業(yè)設計
- 汽車倒車防撞雷達設計畢業(yè)設計
- 畢業(yè)設計-----車用倒車雷達設計
- 汽車倒車防撞雷達設計畢業(yè)設計
- 倒車雷達畢業(yè)設計開題報告
- 畢業(yè)設計-超聲波倒車雷達
- 超聲波倒車雷達畢業(yè)設計
- 倒車雷達超聲波測距畢業(yè)設計
- 基于單片機的倒車雷達設計畢業(yè)設計
- 畢業(yè)設計---超聲波倒車雷達系統(tǒng)的設計
- 基于avr單片機的倒車雷達設計【畢業(yè)設計】
- 畢業(yè)設計---基于超聲波測距的倒車雷達設計
- 畢業(yè)設計倒車雷達系統(tǒng)的設計與實現(xiàn) 
- 畢業(yè)設計(論文)基于單片機的倒車雷達的設計
- 倒車防撞雷達的設計【畢業(yè)論文】
- 基于stm32的可視化倒車雷達的設計——畢業(yè)論文
- 基于msp430單片機的倒車雷達設計畢業(yè)設計
- 超聲波測距倒車雷達系統(tǒng)的研究【畢業(yè)設計】
- 倒車雷達系統(tǒng)的設計
評論
0/150
提交評論