基于51單片機的超聲波測距儀_第1頁
基于51單片機的超聲波測距儀_第2頁
基于51單片機的超聲波測距儀_第3頁
基于51單片機的超聲波測距儀_第4頁
基于51單片機的超聲波測距儀_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、機電信息工程學(xué)院機電信息工程學(xué)院 單片機系統(tǒng)課程設(shè)計報告單片機系統(tǒng)課程設(shè)計報告 完成日期:完成日期:2008 年年 03 月月 19 日日系 別:電子工程系專 業(yè):通信工程班 級:051 班設(shè)計題目:超聲波測距學(xué)生姓名:王權(quán) 于建坤指導(dǎo)教師:董玉華 李厚杰 楊亞寧 李婷 目目 錄錄一、一、設(shè)計任務(wù)和性能指標設(shè)計任務(wù)和性能指標.1二、設(shè)計方案二、設(shè)計方案.1三、系統(tǒng)硬件設(shè)計三、系統(tǒng)硬件設(shè)計.3四、系統(tǒng)軟件設(shè)計四、系統(tǒng)軟件設(shè)計.5五、調(diào)試及性能分析五、調(diào)試及性能分析.8六、心得體會六、心得體會.10參考文獻參考文獻.11附錄附錄 1 系統(tǒng)硬件電路圖系統(tǒng)硬件電路圖.12附錄附錄 2 程序清單程序清單

2、.13一、一、設(shè)計任務(wù)和性能指標設(shè)計任務(wù)和性能指標1.1 設(shè)計任務(wù)設(shè)計一個超聲波測距器,可應(yīng)用在汽車倒車、建筑施工工地以及一些工業(yè)現(xiàn)場的位置測控,也可用于如液位、井深、管道長度的測量等場合。要求用 Altium Designer 6 畫出系統(tǒng)的電路原理圖(要求以最少組件,實現(xiàn)系統(tǒng)設(shè)計所要求的功能) ,印刷電路板(要求布局合理,線路清晰) ,繪出程序流程圖,并給出程序清單(要求思路清晰,盡量簡潔,主程序和子程序分開,使程序有較強的可讀性) 。1.2 性能指標1、 測量范圍 1080 cm;2、 測量精度 1cm;3、 測量時與被測物體無直接接觸,能夠清晰穩(wěn)定地顯示測量結(jié)果;4、 測量范圍擴展為

3、10 cm4m,提高測量精度。二、設(shè)計方案二、設(shè)計方案超聲波測距儀是利用超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射時刻的同時開始計時,超聲波在空氣中傳播,途中碰到障礙物就立即返回來,超聲波接收器收到反射波就立即停止計時。超聲波在空氣中的傳播速度為 340m/s,根據(jù)計時器記錄的時間 t,就可以計算出發(fā)射點距障礙物的距離(s),即:s=340t/2 。超聲波測距主要應(yīng)用于倒車雷達、建筑施工工地以及一些工業(yè)現(xiàn)場,例如:液位、井深、管道長度等場合。目前國內(nèi)一般使用專用集成電路設(shè)計超聲波測距儀,但是專用集成電路的成本很高,并且沒有顯示,操作使用很不方便。超聲波指向性強,穿透能力強,能量消耗緩慢,在介質(zhì)中

4、傳播的距離較遠,因而超聲波經(jīng)常用于距離的測量。如測距儀和物位測量儀等都可以通過超聲波來實現(xiàn)。但由于超聲波傳感器的成本較高,所以一般運用于專業(yè)領(lǐng)域,民用產(chǎn)品中運用較少。考慮到一般情況下對測距的要求較低,可在一定程度上犧牲其精確度和測距范圍,從而降低成本,使其運用范圍大大擴展。超聲波測距系統(tǒng)主要由聲波發(fā)射電路、回波接收電路以及信號采集電路、溫度補償電路等組成。2.1 硬件方案選擇(1)超聲波發(fā)射電路總體上講,超聲波發(fā)生器可以分為兩大類:一類是用電氣方式產(chǎn)生超聲波,一類是用機械方式產(chǎn)生超聲波。電氣方式包括壓電型、磁致伸縮型和電動型等;機械方式有加爾統(tǒng)笛、液哨和氣流旋笛等。它們所產(chǎn)生的超聲波的頻率、功

5、率和聲波特性各不相同,因而用途也各不相同。目前較為常用的是壓電式超聲波發(fā)生器。 壓電式超聲波發(fā)生器實際上是利用壓電晶體的諧振來工作的。超聲波發(fā)生器內(nèi)部主要由兩個壓電晶片和一個共振板組成。當(dāng)它的兩極外加脈沖信號,其頻率等于壓電晶片的固有振蕩頻率時,壓電晶片將會發(fā)生共振,并帶動共振板振動,便產(chǎn)生超聲波。反之,如果兩電極間未外加電壓,當(dāng)共振板接收到超聲波時,將壓迫壓電晶片作振動,將機械能轉(zhuǎn)換為電信號,這時它就成為超聲波接收器了。這種壓電式超聲波傳感器是利用內(nèi)藏的壓電晶體的壓電效應(yīng)。壓電晶體在外電場作用下會產(chǎn)生機械變形,或者使壓電晶體變形也會產(chǎn)生電壓,前者稱為逆壓電效應(yīng),后者稱為正壓電效應(yīng)。利用壓電晶

6、體的逆壓電效應(yīng),電路的高頻電壓會轉(zhuǎn)換為高頻機械振動,以產(chǎn)生超聲波,作為超聲波發(fā)生探頭,利用壓電晶體的正壓電效應(yīng)可將接收的超聲波振動轉(zhuǎn)換成電信號,作為超聲波接收探頭。(2)超聲波接收電路超聲波接收電路的作用是對接收的超聲波信號進行放大,并將放大后的信號處理成系統(tǒng)可以處理的電平信號。(3)溫度補償電路超聲波是一種聲波,其聲速 c 與溫度有關(guān)。如果測距精度要求很高時,則應(yīng)通過溫度補償?shù)姆椒右孕U囟葴y量可以使用數(shù)字溫度傳感器DS18B20。(4)超聲波測距器的算法設(shè)計 超聲波測距的原理即超聲波發(fā)生器在某一時刻發(fā)出一個超聲波信號,當(dāng)這個超聲波遇到被測物體后發(fā)射回來,就被超聲波接收器所接收到。這樣只

7、要計算出從發(fā)出超聲波信號到返回信號所用的時間,就可以算出超聲波發(fā)生器與反射物體的距離。距離的計算公式為:22tcsd其中 d 為被測物體與測距器的距離,s 為聲波來回的路程,c 為聲速,t 為聲波來回所用的時間。(5)系統(tǒng)硬件框圖如圖 1 所示。單片機最小系統(tǒng)超聲波接收電路超聲波發(fā)送電路溫度檢測電路顯示電路圖 1 系統(tǒng)硬件框圖2.2 超聲波測距器的軟件系統(tǒng)軟件主要由主程序、超聲波發(fā)射子程序、超聲波接收中斷程序及顯示子程序組成,如圖 2 所示。圖 2 系統(tǒng)程序結(jié)構(gòu)框圖超聲波測距器主程序利用外部中斷檢測返回超聲波信號,一旦接收到返回的超聲波信號,立即進入中斷程序。三、系統(tǒng)硬件設(shè)計三、系統(tǒng)硬件設(shè)計主

8、要由單片機系統(tǒng)及顯示電路、超聲波發(fā)射電路和超聲波檢測接收電路三部分組成。采用 STC89C55 來實現(xiàn)對 CX20106A 紅外接收芯片和 TCT40-10 系列超聲波轉(zhuǎn)換模塊的控制。單片機通過 P1.0 引腳經(jīng)反相器來控制超聲波的發(fā)送,然后單片機不停的檢測 INT0 引腳,當(dāng) INT0 引腳的電平由高電平變?yōu)榈碗娖綍r就認為超聲波已經(jīng)返回。計數(shù)器所計的數(shù)據(jù)就是超聲波所經(jīng)歷的時間,通過換算就可以得到傳感器與障礙物之間的距離。讀取溫度、時間,計算距離系統(tǒng)初始化啟動溫度轉(zhuǎn)換發(fā)送超聲波脈沖開始等待接收回波顯示結(jié)果讀取溫度、時間,計算距離系統(tǒng)初始化啟動溫度轉(zhuǎn)換發(fā)送超聲波脈沖開始等待接收回波顯示結(jié)果圖 3

9、 超聲波測距原理框圖3.1 單片機系統(tǒng)及顯示電路單片機采用 STC89C55。采用 11.0592MHz 高精度的晶振,以獲得較穩(wěn)定的時鐘頻率,減小測量誤差。單片機用 P1.0 端口輸出超聲波轉(zhuǎn)化器所需的 40KHz方波信號,利用外中斷 0 口檢測超聲波接受電路輸出的返回信號。顯示電路采用簡單實用的 LCD1602 液晶顯示電路,用 P0 做為數(shù)據(jù)口。單片機系統(tǒng)及顯示電路如圖 4 所示。圖 4 單片機及顯示電路原理圖3.2 超聲波發(fā)射電路接收檢測超聲波接收器計時器定時器顯示器超聲波發(fā)射器控制接收檢測超聲波接收器計時器定時器顯示器超聲波發(fā)射器控制超聲波發(fā)射電路原理圖如圖 5 所示。圖 5 超聲波

10、發(fā)射電路原理圖壓電超聲波轉(zhuǎn)換器的功能:利用壓電晶體諧振工作。內(nèi)部結(jié)構(gòu)圖 6 所示,它有兩個壓電晶片和一個共振板。當(dāng)它的兩極外加脈沖信號,其頻率等于壓電晶片的固有振蕩頻率時,壓電晶片將會發(fā)生共振,并帶動共振板振動產(chǎn)生超聲波,這時它就是一超聲波發(fā)生器;如沒加電壓,當(dāng)共振板接受到超聲波時,將壓迫壓電振蕩器作振動,將機械能轉(zhuǎn)換為電信號,這時它就成為超聲波接受轉(zhuǎn)換器。超聲波發(fā)射轉(zhuǎn)換器與接收轉(zhuǎn)換器其結(jié)構(gòu)稍有不同。3.3 超聲波檢測接收電路超聲波檢測接收電路采用集成電路 CX20106A,如圖 7 所示,這是一款紅外線檢波接收的專用芯片,常用于電視機紅外遙控接收器??紤]到紅外遙控常用的載波頻率 38KHz

11、與測距超聲波頻率 40KHz 較為接近,可以利用它作為超聲波檢測電路。實驗證明其具有很高的靈敏度和較強的抗干擾能力。適當(dāng)改變 C4 的大小,可改變接收電路的靈敏度和抗干擾能力。圖 6 超聲波轉(zhuǎn)換原理圖圖 7 超聲波接收電路圖四、系統(tǒng)軟件設(shè)計四、系統(tǒng)軟件設(shè)計超聲波測距軟件設(shè)計主要由主程序,超聲波發(fā)射子程序,超聲波接受中斷程序、溫度補償及顯示子程序和距離測量及顯示子程序組成。下面對超聲波測距器的算法,主程序,超聲波發(fā)射子程序和超聲波接收中斷程序逐一介紹。4.1 超聲波測距器的算法設(shè)計下圖示意了超聲波測距的原理,即超聲波發(fā)生器在某一時刻發(fā)出的一個超聲波信號,當(dāng)超聲波遇到被測物體后反射回來,就被超聲波

12、接收器所接受。這樣只要計算出發(fā)生信號到接受返回信號所用的時間,就可算出超聲波發(fā)生器與反射物體的距離。距離計算公式:22tcsd其中 d 為被測物與測距器的距離,s 為聲波的來回路程,c 為聲速,t 為聲波來回所用的時間。程序框圖如圖 8 所示。聲速 c 與溫度有關(guān),如溫度變化不大,則可認為聲速是基本不變的。如果測距精度要求很高,則應(yīng)通過溫度補償?shù)姆椒右孕U?。聲速確定后,只要測得超聲波往返時間,即可求得距離。在系統(tǒng)加入溫度傳感器來監(jiān)測環(huán)境溫度,可進行溫度被償。這里可以用 DS18B20 測量環(huán)境溫度,根據(jù)不同的環(huán)境溫度確定聲速提高測距的穩(wěn)定性。為了增強系統(tǒng)的可靠性,應(yīng)在軟硬件上采用抗干擾措施。

13、不同溫度下的超聲波聲速表溫 度(攝氏度)-30-20-100102030100聲 速(m/s)3133193253233383443493864.2 主程序距離計算子程序返回查表確定當(dāng)前溫度下的速度值距離=計數(shù)值*速度/20000(單位:cm)判斷是否需要高位滅零距離計算子程序返回查表確定當(dāng)前溫度下的速度值距離=計數(shù)值*速度/20000(單位:cm)判斷是否需要高位滅零圖 8 距離計算子程序主程序首先對系統(tǒng)環(huán)境初始化,設(shè)置定時器 T0 工作模式為 16 位的定時計數(shù)器模式,置位總中斷允許位 EA 并給顯示端口 P0 和 P2 清0。然后調(diào)用超聲波發(fā)生子程序送出一個超聲波脈沖,為避免超聲波從發(fā)射

14、器直接傳送到接收器引起的直接波觸發(fā),需延遲 0.1ms(這也就是測距器會有一個最小可測距離的原因)后,才打開外中斷 0 接收返回的超聲波信號。由于采用 11.0592MHz 的晶振,機器周期為 1us,當(dāng)主程序檢測到接收成功的標志位后,將計數(shù)器T0 中的數(shù)(即超聲波來回所用的時間)按下式計算即可測得被測物體與測距儀之間的距離,以 20時的聲速為 344 m/s 為例,則有:d=(C*T0)/2 =172*T0/10000cm(其中 T0 為計數(shù)器 T0 的計數(shù)值)測出距離后結(jié)果將以十進制 BCD 碼方式顯示,然后再發(fā)超聲波脈沖重復(fù)測量過程。主程序框圖如圖 9 所示。4.3 超聲波發(fā)生子程序和超

15、聲波接收中斷程序超聲波發(fā)生子程序的作用是通過 P1.0 端口發(fā)送 5 個左右的超聲波信號頻率約 40KHz 的方波,脈沖寬度為 12us 左右,同時把計數(shù)器 T0 打開進行計時。超聲波測距器主程序利用外中斷 0 檢測返回超聲波信號,一旦接收到返回超聲波信號(INT0 引腳出現(xiàn)低電平),立即進入中斷程序。進入該中斷后就立即關(guān)閉計時器 T0 停止計時,并將測距成功標志字賦值 1。如果當(dāng)計時器溢出時還未檢測到超聲波返回信號,則定時器 T0 溢出中斷將外中斷 0 關(guān)閉,并將測距成功標志字賦值 0 以表示此次測距不成功。中斷程序的框圖如圖 10 所示。讀取溫度、時間,計算距離系統(tǒng)初始化啟動溫度轉(zhuǎn)換發(fā)送超

16、聲波脈沖開始等待接收回波顯示結(jié)果讀取溫度、時間,計算距離系統(tǒng)初始化啟動溫度轉(zhuǎn)換發(fā)送超聲波脈沖開始等待接收回波顯示結(jié)果T0中斷程序是否問初次上電開報警,顯示“錯誤”置上電報警標志位啟動溫度轉(zhuǎn)換開啟時間計數(shù)發(fā)超聲波返回NYT0中斷程序是否問初次上電開報警,顯示“錯誤”置上電報警標志位啟動溫度轉(zhuǎn)換開啟時間計數(shù)發(fā)超聲波返回NYT1中斷程序返回發(fā)送超聲波等待接收回波T1中斷程序返回發(fā)送超聲波等待接收回波INT0中斷子程序返回停止計數(shù)停止發(fā)送超聲波停止接收存計數(shù)器置接收成功標志位INT0中斷子程序返回停止計數(shù)停止發(fā)送超聲波停止接收存計數(shù)器置接收成功標志位圖 9 主程序框圖圖 10 計數(shù)器 T0 中斷程序(

17、左)、計數(shù)器 T1 中斷程序(中)外部 INT0 中斷程序(右)4.4 溫度補償子程序和溫度顯示子程序溫度補償子程序的作用是將當(dāng)前實驗環(huán)境的實際溫度值準確測量、轉(zhuǎn)換并存儲,用以確定此時聲波的速度值。本程序采用 DS18B20 的 12 位轉(zhuǎn)換精度,溫度寄存器里的值是以 0.0625 為步進的,即溫度寄存器里的二進制值乘以0.0625,就是實際的十進制溫度值。溫度處理子程序判斷溫度值的“+”和“-”并將轉(zhuǎn)換好的溫度整數(shù)位和小數(shù)位存入顯示緩存區(qū) 50H53H 中,50H 為最高位,53H 為最低位。溫度顯示子程序用來判斷高位是否有滅零需要,以及符號位的選擇和顯示。程序框圖如圖 11 所示。 溫度顯

18、示子程序返回十位數(shù)0?百位數(shù)0?十位數(shù)顯示符號百位數(shù)不顯示百位顯示數(shù)據(jù)(不顯示符號)NYYN溫度顯示子程序返回十位數(shù)0?百位數(shù)0?十位數(shù)顯示符號百位數(shù)不顯示百位顯示數(shù)據(jù)(不顯示符號)NYYN溫度轉(zhuǎn)換子程序返回發(fā)DS18B20的復(fù)位子程序發(fā)跳過ROM命令發(fā)溫度轉(zhuǎn)換開始命令發(fā)DS18B20復(fù)位命令發(fā)跳過ROM命令延時發(fā)讀取溫度命令連續(xù)讀兩個字節(jié)溫度轉(zhuǎn)換子程序返回發(fā)DS18B20的復(fù)位子程序發(fā)跳過ROM命令發(fā)溫度轉(zhuǎn)換開始命令發(fā)DS18B20復(fù)位命令發(fā)跳過ROM命令延時發(fā)讀取溫度命令連續(xù)讀兩個字節(jié)溫度值處理子程序返回溫度值零下否?溫度值取補碼置“-”標志置“+”標志計數(shù)小數(shù)位溫度BCD值計數(shù)整數(shù)位溫度

19、BCD值YN溫度值處理子程序返回溫度值零下否?溫度值取補碼置“-”標志置“+”標志計數(shù)小數(shù)位溫度BCD值計數(shù)整數(shù)位溫度BCD值YN圖 11 溫度顯示子程序(左上)、溫度處理子程序(左下)溫度轉(zhuǎn)換子程序(右)五、調(diào)試及性能五、調(diào)試及性能分析分析5.1 調(diào)試步驟首先要做的就是檢查檢測硬件電路是否有短路、斷路、虛焊等。具體步驟及測試結(jié)果如下:(1)檢查電源與地線是否全部連接上,用萬用表對照電路原理圖測試各導(dǎo)線是否完全連接;測試結(jié)果所有連接線都已準確連接好;(2)檢驗單片機的晶振是否起振,用示波器觀察波形;測試結(jié)果波形都符合正常工作波形;(3)檢查各芯片工作是否正常,檢測按鍵的導(dǎo)通情況;測試結(jié)果正常。

20、然后將軟硬件結(jié)合在一起進行調(diào)試,把整個超聲波測距系統(tǒng)按照實現(xiàn)功能分為各個子模塊進行調(diào)試。具體步驟如下:(1)顯示模塊調(diào)試。由于受實驗器材和實驗臺的限制,此部分電路及其程序沒能做到事先進行測試,所以在調(diào)試這個部分時遇到了很多問題,開始是發(fā)現(xiàn)硬件電路設(shè)計有問題,接的 74LS373 鎖存器幾乎就不起作用,然后改線將鎖存器去掉了;接著是程序有錯誤,顯示不正確,通過仔細閱讀液晶資料,發(fā)現(xiàn)其工作時序沒有配合好,經(jīng)改動后在電路板上終于調(diào)試通過了;(2)溫度補償模塊調(diào)試。因為之前在實驗臺上已經(jīng)調(diào)試通過,所以將程序下載到單片機后就正確了。但在實驗臺上調(diào)試時也曾出現(xiàn)過很嚴重的問題,原因就是沒有徹底弄明白 DS1

21、8B20 的工作工作時序,只有將時序配合好,芯片才呢個正常工作。(3)超聲波發(fā)射與接收模塊的調(diào)試。這部分是整個系統(tǒng)的核心,也是最易出現(xiàn)問題的部分,而且之前并沒有實際測試過,因此在這個模塊的調(diào)試過程中很困難。由于發(fā)射和接收不能獨立調(diào)試,所以要同時考慮這兩個部分的工作情況,只有兩個部分都正常工作了才能得到正確的實驗結(jié)果。將調(diào)試程序下載后,發(fā)現(xiàn)沒能得到正確的實驗現(xiàn)象,接著便開始進行分步調(diào)試,發(fā)射部分我們通過示波器觀察波形,發(fā)現(xiàn)波形的頻率與實際需要值略有偏差,經(jīng)改正程序后符合了實際需要的頻率和幅度,但還是沒有正確的實驗現(xiàn)象。確定發(fā)射沒有問題后便開始進行接收部分的調(diào)試,反復(fù)進行電路連接檢查和程序結(jié)構(gòu)的改

22、進后,依然沒有調(diào)試成功。正要在困難面前退縮的時候,突然想起來,在分發(fā)電容時有一個電容在沒有確定容值的情況下就發(fā)下來了,我這才想起來去檢查我的器件型號規(guī)格是否有問題,果然,發(fā)現(xiàn)了那個誤發(fā)的電容,其標稱值比我們所需要的大了 100 倍,此時的我非常懊悔,恨自己一時疏忽沒有做好調(diào)試前最基本的工作,把電容換了后調(diào)試成功了,又做了一點調(diào)整,系統(tǒng)能穩(wěn)定的工作了。5.2 性能分析超聲波測距系統(tǒng)是現(xiàn)代生活一種很方便的測距儀器,它能夠準確快速的測量出距離,給人們的生活帶來很大方便。當(dāng)系統(tǒng)上電時,顯示器上將顯示“Welcome”的字樣,很快系統(tǒng)開始工作,隨著探頭的移動,顯示器上將實時顯示當(dāng)前所對準的物體的距離,而

23、且會一并顯示當(dāng)前測量環(huán)境的溫度值。由于系統(tǒng)的驅(qū)動問題以及軟件上的缺陷,實際測量值范圍最好控制在 3m 內(nèi),距離值誤差1cm,溫度值誤差0.5。本系統(tǒng)尚有不足,一是缺少電源開關(guān)控制按鍵,二是缺少報警機制,三是測量條件改變時的糾錯能力差,另外液晶顯示也沒有達到理想的穩(wěn)定狀態(tài)。希望在進一步的設(shè)計過程中解決這些問題,并有所完善和再創(chuàng)新。六、心得體會六、心得體會這次課程設(shè)計是對我們學(xué)習(xí)單片機原理與應(yīng)用和印刷電路板設(shè)計課程的檢驗及實際應(yīng)用能力的一次提高。我們所設(shè)計的是超聲波測距系統(tǒng)??梢詼y量的距離范圍是 5cm3m,精確到 1cm。由于聲波在不同的溫度下的速度值變化很大,為了減少測量誤差,我們采用 DS1

24、8B20 溫度傳感器進行溫度補償設(shè)計,它具有體積小、適用電壓寬等特點,其測量范圍為-55+125。與傳統(tǒng)的熱敏電阻相比,它能夠直接讀出被測量溫度并且可根據(jù)實際要求通過簡單的編程實現(xiàn)912 位的數(shù)字值讀數(shù)方式。本次實驗中選擇其 12 位轉(zhuǎn)換精度。由于 DS18B20讀出或?qū)懭氲男畔H需要一根口線完成,這樣就需要準確的讀寫時序,剛開始由于時序沒有配合好,調(diào)試很久都沒出現(xiàn)正確的結(jié)果,后來通過對其時序的再一次了解和把握終于測出了準確的溫度值。但讀出來的溫度值只是整個系統(tǒng)的一個輔助部分,我們主要是為了得到與當(dāng)前環(huán)境下的溫度值對應(yīng)的聲速值,此部分轉(zhuǎn)換通過軟件設(shè)計中溫度的比較及查表來完成。顯示部分選擇了 L

25、CD1602液晶顯示,但由于實驗臺的限制,軟件調(diào)試過程中采用動態(tài)數(shù)碼管顯示。原理圖設(shè)計時我們使用了印刷電路板設(shè)計課上學(xué)過的 Altium Designer 6制圖工具,由于一些實際的器件在器件庫中無法找到,我們只有自己制作,在這個過程中我們學(xué)到了很多的知識和方法。在制作 PCB 板圖的時候,很多器件的封裝與實際尺寸存在很大的差別,為了獲得準確的封裝,我們實際測量了所給器件的大小與規(guī)格,找到了與之匹配的封裝庫。當(dāng)然我們也走過彎路,在考慮產(chǎn)品外型設(shè)計時,由于探頭位置的需要,我們曾想過要將兩個探頭與主板分開單置出來,經(jīng)老師分析,考慮到單開一塊板的成本及安裝困難的問題,提議將探頭引腳彎曲便可。這個問題

26、讓我感受頗深,雖然只有這么小小的變動但卻解決了實際問題。而自己卻把簡單的問題復(fù)雜化,因此我們在看問題時,一定要多角度考慮。程序編寫過程也給了我們很大的收獲。在編寫程序之前,我們查閱了大量的相關(guān)資料,力求做到簡潔規(guī)范清晰。在把握了整體的思路后,我們先從程序流程圖著手,將整個程序分成若干模塊,分開編寫,一邊發(fā)現(xiàn)問題一邊解決問題,并在實驗板上檢驗程序測試情況,根據(jù)現(xiàn)象不斷修改。由于實驗板的種種限制,我們不得不針對實驗臺來進行軟件設(shè)計與調(diào)試。在這個過程中我們體會到編程的技巧,設(shè)置子程序的合理性,同時對單片機最小系統(tǒng)的設(shè)計有了整體的理解和深刻的體會,使我們的思維的鍛煉與能力培養(yǎng)有了很大的提高和進步。本次

27、課程設(shè)計時間雖短,但收獲卻很大。我們對應(yīng)用單片機最小系統(tǒng)來設(shè)計產(chǎn)品有了整體的把握,對程序編寫的合理與規(guī)范性有了深刻的理解,建立起程序設(shè)計的一般思路,以及 Altium Designer 6 的使用方法,其強大的功能給我們提供了很大的幫助,通過原理圖的設(shè)計,使我們認識到了這個軟件的重要性,提高了我們運用的熟練性,我們會以此為契機,在日后的學(xué)習(xí)中會繼續(xù)使用它,使其發(fā)揮更大的功能。經(jīng)過三個星期的課程設(shè)計,我們得到了充分的鍛煉,不僅對單片機的學(xué)習(xí)有了深刻的理解,同時也增強了我們的毅力和處理突發(fā)問題的能力。學(xué)習(xí)是要付出一定的艱辛與努力的,做事情一定要有不怕困難的吃苦精神,唯有堅持不懈,發(fā)揚團隊協(xié)作才能夠

28、克服困難,取得最后的勝利。相信本次課程設(shè)計對我們以后的學(xué)習(xí)將會有很大的影響,我們一定會積極地總結(jié)經(jīng)驗與教訓(xùn),改進不足,爭取在日后做得更好。當(dāng)然要感謝老師和同學(xué)們的幫助,在我們束手無策,陷入困境的時候給予熱情的幫助,使我們順利渡過難關(guān)。課程設(shè)計是一次很好的實踐動手機會,通過實踐,我們的知識得到了應(yīng)用,真正實現(xiàn)了知識的學(xué)以致用,理論聯(lián)系實際,我們會更加注重實踐能力的鍛煉,注重動手能力的培養(yǎng)。參考文獻參考文獻1 徐維祥,劉旭敏單片微型機原理及應(yīng)用大連:大連理工大學(xué)出版社,19962 何立民單片機實驗與實踐教程(一)北京:北京航空航天大學(xué)出版社,20033 樓然苗,李光飛單片機課程設(shè)計指導(dǎo)北京:北京航

29、空航天大學(xué)出版社,20074 李群芳,黃建單片機微型計算機與接口技術(shù)北京:電子工業(yè)出版社,20015 汪道輝單片機系統(tǒng)設(shè)計與實踐北京:電子工業(yè)出版社,2006附錄附錄 1 系統(tǒng)硬件電路圖系統(tǒng)硬件電路圖附錄附錄 2 程序清單程序清單;*; 系統(tǒng)初始化定義;*TEMPER_VL DATA 20H ; 溫度值(取整后)存儲區(qū)TEMPER_VH DATA 21HTEMPL DATA 26HTEMPH DATA 27H ; 測得溫度值存儲區(qū)TEMPHC DATA 28HTEMPLC DATA 29HTEMPHEAD EQU 36H ; 溫度值緩存區(qū)TEMPER_NUM EQU 39H ; 處理溫度值緩存

30、區(qū)VOUT EQU P1.0 ; 超聲波脈沖輸出端口TEMPDIN BIT P2.4 ; DS18B20 溫度輸入端口 RS EQU P2.6RW EQU P2.5E EQU P2.7;*; 中斷入口程序 ;* ORG 0000H LJMP BEGIN ORG 0003H LJMP PINT0 ;外部 0 中斷 ORG 000BH LJMP INTT0 ;計數(shù)器 T0 中斷 ORG 0013H RETIORG 001BH LJMP INTT1 ;定時器 T1 中斷ORG 0023H RETIORG 002BH RETI ;*; 主 程 序 ;* ORG 0100HBEGIN: MOV SP,#

31、4FH MOV R0,#40H ;40H-43H 為顯示距離存放單元MOV R7,#30H ;60H-63H 為顯示溫度存放單元CLEARDISP: MOV R0,#30H INC R0 DJNZ R7,CLEARDISP MOV 23H,#00H MOV TMOD,#21H ;T1 為 8 位自動重裝,T0 為 16 位定時器 MOV TH0,#00H ;65 毫秒初值 MOV TL0,#00H MOV TH1,#0F4H ;40KHz 初值 MOV TL1,#0F4H MOV P0,#0FFH MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH MOV R4,#0

32、AH ;超聲波肪沖個數(shù)控制(為賦值的一半) LCALL LCDON ;開機顯示 SETB PX0 SETB ET0 SETB EABEGIN1: LCALL READTEMP LCALL READTEMP1 ;讀出溫度值子程序 LCALL CONVTEMP LCALL DISPBCD SETB TR0 ;開啟測距定時器ABEGIN: LCALL DISPLAY JNB 23H,ABEGIN ;收到回波時置標志位 CLR EA CLR 23H LCALL WORK ;計算距離子程序 SETB EA MOV TH0,#00H ;65 毫秒初值 MOV TL0,#00H SETB TR0 ;重新開啟

33、測距定時器 MOV R2,#02HLOOP: LCALL DISPLAYDJNZ R2,LOOP SJMP BEGIN1;*; 中斷服務(wù)子程序 ;*;T0 中斷,65mS 中斷一次INTT0: CLR EACLR TR0 MOV TH0,#00H MOV TL0,#00H SETB ET1 SETB EA SETB TR0 ;啟動計數(shù) T0,用以計算超聲來回時間 SETB TR1 ;開啟定時器 T1,用以發(fā)超聲波 NOP SETB EX0OUT: RETI;T1 中斷,發(fā)送超聲波INTT1: CPL VOUT DJNZ R4,RETIOUT CLR TR1 ;超聲波發(fā)送完畢,關(guān) T1 CLR

34、ET1 MOV R4,#0AHRETIOUT: RETI;外部中斷 0 檢測回波PINT0: CLR TR0 ;關(guān)計數(shù)器 CLR TR1 CLR ET1 CLR EA CLR EX0 MOV 45H,TL0 ;將計數(shù)值移入處理單元 MOV 46H,TH0 SETB 23H ;接收成功標志 RETI;*; 距離計算程序 (=計數(shù)值*172/10000cm) ;*WORK: PUSH ACC PUSH PSW PUSH B MOV R3, 46H MOV R2, 45H MOV R1, #00D MOV DPTR, #TEMPR LCALL DIFFER ;將溫度值轉(zhuǎn)換為對應(yīng)的速度值 MOVC A

35、,A+DPTR MOV R0, A LCALL MUL2BY2 MOV R3, #03H MOV R2, #0E8H LCALL DIV4BY2 MOV R3, #27H MOV R2, #10H LCALL DIV4BY2 MOV A,R4 ADD A,#30H MOV 40H, A MOV A,R4 JNZ JJ0 MOV 40H,#3CH ;最高位為零,不顯示JJ0: MOV A, R0 MOV R4, A MOV A, R1 MOV R5, A MOV R3, #03H MOV R2, #0E8H LCALL DIV4BY2 MOV A,R4 ADD A,#30H MOV 41H, A

36、 MOV A,R4 JNZ JJ1 MOV A,40H ;次高位為零,先判斷最高位是否為不顯示 SUBB A,#3CH JNZ JJ1 MOV 41H,#3CH ;最高位不顯示,次高位也不顯示JJ1: MOV A, R0 MOV R4, A MOV A, R1 MOV R5, A MOV R3, #00D MOV R2, #100D LCALL DIV4BY2 MOV A,R4 ADD A,#30H MOV 42H, A MOV A,R4 JNZ JJ2 MOV A,41H ;次次高位為零,先判斷次高位是否為不顯示 SUBB A,#3CH JNZ JJ2 MOV 42H,#3CH ;次高位不顯

37、示,次次高位也不顯示JJ2: MOV A, R0 MOV R4, A MOV A, R1 MOV R5, A MOV R3, #00D MOV R2, #10D LCALL DIV4BY2 MOV A,R4 ADD A,#30H MOV 43H, A MOV A,R4 JNZ JJ3 MOV A,42H ;次次高位為零,先判斷次高位是否為不顯示 SUBB A,#3CH JNZ JJ3 MOV 43H,#3CH ;次高位不顯示,次次高位也不顯示JJ3: MOV A, R0 JNB ACC.3,CLEAR MOV B,43H INC BMOV 43H,BCLEAR: MOV R0,#00H POP

38、 B POP PSW POP ACC RET;溫度與速度對應(yīng)表(-3091)TEMPR: DB 9DH,9DH,9DH,9EH,9EH,9EH,9EH,9FH,9FH,9FH,0A0H,0A0H DB 0A0H,0A1H,0A1H,0A1H,0A1H,0A2H,0A2H,0A2H,0A3H,0A3H DB 0A3H,0A4H,0A4H,0A4H,0A4H,0A5H,0A5H,0A5H,0A6H,0A6H DB 0A6H,0A7H,0A7H,0A7H,0A8H,0A8H,0A8H,0A8H,0A9H,0A9H DB 0A9H,0AAH,0AAH,0AAH,0ABH,0ABH,0ABH,0ABH,

39、0ACH,0ACH DB 0ACH,0ADH,0ADH,0ADH,0AEH,0AEH,0AEH,0AFH,0AFH,0AFH DB 0AFH,0B0H,0B0H,0B0H,0B1H,0B1H,0B1H,0B2H,0B2H,0B2H DB 0B2H,0B3H,0B3H,0B3H,0B4H,0B4H,0B4H,0B5H,0B5H,0B5H DB 0B5H,0B6H,0B6H,0B6H,0B7H,0B7H,0B7H,0B8H,0B8H,0B8H DB 0B9H,0B9H,0B9H,0B9H,0BAH,0BAH,0BAH,0BBH,0BBH,0BBH DB 0BCH,0BCH,0BCH,0BCH,0B

40、DH,0BDH,0BDH,0BEH,0BEH,0BEH DB 0BFH,0BFH,0BFH,0BFH,0C0H,0C0H,0C0H,0C1H,0C1H,0C1H;*; 兩字節(jié)無符號數(shù)乘法程序 ;*; R7R6R5R4 BCD DIV AB ; B = A / 100 MOV R7, A; R7 = 百位數(shù) MOV A, #0AH XCH A, B DIV AB ; B = A / B SWAPA ORL A, B RET;*; LCD 顯示程序 ;*; 距離值在 40H 為最高位,43H 為最低位; 溫度值在 60H 為最高位,63H 為最低位LCDON: MOV P0, #01H LCALL

41、 ENABLE0 MOV P0, #01H LCALL ENABLE0 MOV P0, #38H LCALL ENABLE0 MOV P0, #0CH LCALL ENABLE0 MOV P0, #06H LCALL ENABLE0 MOV P0, #80H LCALL ENABLE0START100: MOV DPTR,#WORD1 LCALL WRITE1 MOV P0, #0C0H LCALL ENABLE0 MOV DPTR,#WORD2 LCALL WRITE1 MOV P0, #0C2H LCALL ENABLE0 LCALL DELAY2 MOV P0, #02H LCALL E

42、NABLE0 LCALL DELAY3 LCALL DELAY3 RETERROR: MOV P0, #01H LCALL ENABLE1 MOV P0, #01H LCALL ENABLE1 MOV P0, #38H LCALL ENABLE1 MOV P0, #0CH LCALL ENABLE1 MOV P0, #06H LCALL ENABLE1 MOV P0, #80H LCALL ENABLE1START101: MOV DPTR,#WORD5 LCALL WRITE1 MOV P0, #0C0H LCALL ENABLE1 LCALL DELAY2 MOV P0, #02H LCA

43、LL ENABLE1 MOV DPTR,#WORD5 LCALL WRITE1 MOV P0, #0C0H LCALL ENABLE1 LCALL DELAY2 MOV P0, #02H LCALL ENABLE1 RETDISPLAY: MOV P0, #01H LCALL ENABLE1 MOV P0, #01H LCALL ENABLE1 MOV P0, #38H LCALL ENABLE1 MOV P0, #0CH LCALL ENABLE1 MOV P0, #06H LCALL ENABLE1 MOV P0, #80H LCALL ENABLE1MOV DPTR,#WORD4 LCA

44、LL WRITE4 MOV P0, #0C0H LCALL ENABLE1 LCALL DELAY2 MOV DPTR,#WORD3 LCALL WRITE3 MOV P0, #0C2H LCALL ENABLE1 LCALL DELAY2LCALL DELAY3LCALL DELAY3 MOV P0, #02H LCALL ENABLE1 RETWRITE1: MOV R1, #00H MOV R5, #10H A1:MOV A, R1 MOVC A, A+DPTR LCALL WRITE12 INC R1 DJNZ R5, A1 RETWRITE12: MOV P0, A SETB RS

45、CLR RW CLR E LCALL DELAY3 SETB E RETWRITE2: MOV P0, A SETB RS CLR RW CLR E LCALL DELAY2 SETB E RET WRITE3: MOV R1, #00H MOV A, R1 MOVC A, A+DPTR LCALL WRITE2 INC R1 MOV A, R1 MOVC A, A+DPTR LCALL WRITE2 INC R1 MOV A, R1 MOVC A, A+DPTR LCALL WRITE2 INC R1 MOV A, R1 MOVC A, A+DPTR LCALL WRITE2 INC R1

46、MOV A, R1 MOVC A, A+DPTR LCALL WRITE2 MOV R1, 60H MOV A, R1 CLR C SUBB A, #2BH MOVC A, A+DPTR LCALL WRITE2 MOV R1, 61H MOV A, R1 CLR C SUBB A, #2BH MOVC A, A+DPTR LCALL WRITE2 MOV R1, 62H MOV A, R1 CLR C SUBB A, #2BH MOVC A, A+DPTR LCALL WRITE2 MOV R1, #0FH MOV A, R1 MOVC A, A+DPTR LCALL WRITE2 MOV R1, 63H MOV A, R1 CLR C SUBB A, #2BH MOVC A, A+DPTR LCALL WRITE2MOV R1, #12H MOV A, R1 MOVC A, A+DPTR LCALL WRITE2 RETWRITE4: MO

溫馨提示

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

最新文檔

評論

0/150

提交評論