1. 求一篇基於單片機的超聲波測距儀的硬體設計的論文和開題報告
目 錄
摘 要 I
ABSTRACT(英文摘要) II
目 錄 IV
第一章 引 言 1
1.1 課題的提出 1
1.2 超聲波測距發展概況 2
1.3 本課題研究內容及科學意義 3
第二章 超聲波測距技術綜述 4
2.1 超聲及超聲感測器簡介 4
2.1.1 超聲概述 4
2.1.2 超聲感測器結構 6
2.1.3 超聲感測器的主要參數及選擇 9
2.2 超聲測距原理與方法 10
2.3 測量盲區的影響 12
2.4 本章小結 13
第三章 硬體系統設計 15
3.1 方案論證 15
3.2 凌陽61板簡介 16
3.2.1 功能區分與工作原理 16
3.2.2 系統各模塊工作原理 16
3.3 超聲波測距模組簡介 20
3.3.1 超聲波諧振頻率發生電路、調理電路 20
3.3.2 超聲波回波接受處理電路 21
3.3.3 超聲波模組電源設置 22
3.4 LED鍵盤模組簡介 23
3.5 硬體系統設計說明 23
3.5.1 系統設計 23
3.5.2 硬體原理圖 24
3.5.3 系統連接 24
3.6本章小結 26
第四章 軟體系統設計 27
4.1 主程序設計 27
4.2 超聲波測距程序設計 29
4.3 本章小結 31
第五章 試驗結果與改進 32
5.1 系統調試 32
5.2 試驗結果分析 34
5.2.1 試驗結果 34
5.2.2 誤差分析 37
5.2.3 系統改進方法 37
5.3 本章小結 38
結論 39
參考文獻 41
致謝 44
附錄一 45
附錄二 46
附錄三 47
2. 幫忙詳細解答一下基於單片機的超聲波測距儀的匯編源程序(急求啊)
我可以負責的告訴你,用C吧,完全可以勝任。
2003年的時候我們為了確保MCU的效率(時效性),強制使用匯編寫的超聲波程序,結果程序寫不大,匯編你也知道,寫百八十行可以,代碼多了,這程序就沒法看了,更談不上程序升級和維護了。因此,那一代超聲波產品的功能很弱。
2006年,我們要重新設計第二代超聲波產品,要求可靠性好、功能強大,自然的代碼量也要多了,當時我們仍然固執的使用匯編、絕不用C,可匯編的代碼仍然寫不長,為了方便技術人員管理和後續的產品升級,我把這一套復雜的系統代碼分成了4級,也就是4套匯編代碼,分別在32個MCU里運行(同一個設備里),這4套代碼分別交給4個人來編寫和維護,這4個人中若有人跳槽走了,由於他掌握的代碼量小,功能又單一,接替他的人也很容易接手。(否則,這4套匯編程序,集中在一個冗長的代碼里,那麼這套代碼將很難維護,而且幾乎只能有1個人才能完全看懂它,一旦這個人走了,別人很難接手這套『爛』程序,這對於產品的持續改進非常不利)
2008年,我們試探性的,在DSP(TMS320F28335)上用C完成了所有的功能,而且程序量比匯編要少得多,可讀性、可維護性也要好得多。後來,我們在單片機上,也用C完成了絕大部分功能,原來擔心的時效性問題從沒有發生,這才領悟:2003-2008這5年,我們繞了一個大圈。
從此以後,我們就不再用匯編了,用C寫超聲波程序一直至今(偶爾嵌入匯編代碼),算一下也有5年了,從沒覺得C有任何局限性。
那麼,你是還覺得必須要用匯編么?
3. 基於單片機的超聲波測距系統的測量范圍和測量精度如何計算 ...
測量范圍是用程序實現不了的
只能看你的超聲波發射探頭的好壞還有就是CX20106A裡面有一個管腳接的電容(或者是電阻
具體你查手冊)的值就可以
測量精度的話要保證發射是40K
發射後立即啟用定時器
當進入外部中斷時立即關閉定時器
取出來的值就是你記得時間
還有就是注意超聲波在空氣中的速度
在15攝氏度是好像是338米每秒
20攝氏度的時候是340每秒吧
你取340就行
當然如果你的帶溫度補償的設計會更好
知道速度和時間
計算距離就很簡單了吧
4. 求基於AT89C52超聲波測距簡易設計的源程序,要求用3個LED管顯示其測距,精確到小數點後2位如,X.XX米。
目前國內超聲波測距器的設計大多採用匯編語言設計。由於單片機應用系統的日趨復雜,要求所寫
的代碼規范化,模塊化,並便於多人以軟體工程的形式進行協同開發,匯編語言作為傳統的單片機應用系
統的編程語言,已經不能滿足這樣的實際需要了,而C語言以其結構化和能產生高效代碼滿足了這樣的需
求,成為電子工程師進行單片機系統編程時的首先編程語言。在本設計中,由於C語言程序有利於實現較
復雜的演算法,匯編語言程序具有較高的效率並且容易精確計算程序運行的時間,而超聲波測距器的程序既
有較復雜的距離計算又要求精確計算超聲波測距時程序運行的時間,所以本設計採用C語言和匯編語言
混合編程來實現。本文論述的是一種基於AT89C52單片機的超聲波測距器,可用於汽車倒車等場合⋯。
1設計要求
設計一個超聲波測距器,可以應用於汽車倒車、建築施工工地以及一些工業現場的位置監控,也可用
於如液位、井深、管道長度的測量等場合。要求測量范圍在0.10—5.00 m,測量精度lem,測量時與被測物
體無直接接觸,能夠清晰穩定地顯示測量結果。
2設計思路
2.1超聲波及其測距原理
超聲波是指頻率高於20KHz的機械波。為了以超聲波作為檢測手段,必須產生超聲波和接收超聲波。
完成這種功能的裝置就是超聲波感測器,習慣上稱為超聲波換能器或超聲波探頭。超聲波感測器有發送
器和接收器,但一個超聲波感測器也可具有發送和接收聲波的雙重作用。超聲波感測器是利用壓電效應
的原理將電能和超聲波相互轉化,即在發射超聲波的時候,將電能轉換為超聲波,發射超聲波;而在收到回
波的時候,則將超聲振動轉換成電信號。
超聲波測距的原理一般採用渡越時間法TOt(time of fliight)。首先測出超聲波從發射到遇到障礙物返
回所經歷的時間,再乘以超聲波的速度就得到二倍的聲源與障礙物之間的距離。測量距離的方法有很多
種,短距離的可以用尺,遠距離的有激光測距等,超聲波測距適用於高精度的中長距離測量。因為超聲波
收稿日期:2008-04-08
作者簡介:周功明(1963一),男,副教授,主要研究方向:電子信息科學技術。
·50· 綿陽師范學院學報(自然科學版) 第27卷
在標准空氣中的傳播速度為331.45粑秒,由單片機負責計時,單片機使用12.0M晶振,所以此系統的測
量精度理論上可以達到毫米級。由於超聲波指向性強,能量消耗緩慢,在介質中傳播距離遠,因而超聲波
可以用於距離的測量。利用超聲波檢測距離,設計比較方便,計算處理也較簡單,並且在測量精度方面也
能達到要求。
超聲波發生器可以分為兩類:一類是用電氣方式產生超聲波,一類是用機械方式產生超聲波。本課題
屬於近距離測量,可以採用常用的壓電式超聲波換能器來實現【7】。
2.2超聲波測距器的系統框圖
根據設計要求並綜合各方面因素,可以採用AT89C52單片機作為主控制器,用動態掃描法實現LED
數字顯示,超聲波驅動信號用單片機的定時器完成,超聲波測距器的系統框圖如下圖l所示¨2|:
3系統組成
3.1硬體部分
主要由單片機系統及顯示電路、超聲波發射電路
和超聲波檢測接收電路三部分組成。採用AT89C52來
實現對CX20106A紅外接收晶元和TCT40—10系列超
聲波轉換模塊的控制。單片機通過P1.0引腳經反相
\
超聲波接收E :, LED顯示單片機r
/\
Z ∑
超聲波發送高控制器
:> 掃描驅動
圖1 超聲波測距器系統設計框圖
Fig.1 Ultrasonic eLangi.g system design diagram
器來控制超聲波的發送,然後單片機不停的檢測INT0引腳,當INTO引腳的電平由高電平變為低電平時就
認為超聲波已經返回。計數器所計的數據就是超聲波所經歷的時間,通過換算就可以得到感測器與障礙
物之間的距離¨≈J。
3.2軟體部分
主要由主程序、超聲波發生子程序、超聲波接收中斷程序及顯示子程序等部分。
4系統硬體電路設計
4.1單片機系統及顯示電路
單片機採用AT89C52或其兼容系列。採用12MHz高精度的晶振,以獲得較穩定的時鍾頻率,減小測
量誤差。單片機用P1.0埠輸出超聲波轉化器所需的40KHz方波信號,利用外中斷0口檢測超聲波接收
電路輸出的返回信號。顯示電路採用簡單實用的4位共陽LED數碼管,段碼用74LS244驅動,位碼用PNP
三極體驅動。單片機系統及顯示電路如下圖2所示『1。31。
圖2單片機及顯示電路原理圖
Fig.2 MCU and display circuit schematics
第8期周功明等:基於AT89C52單片機的超聲波測距器設計·51.
4.2超聲波發射電路原理圖
壓電超聲波轉換器的功能:利用壓電晶體諧振工作。內部結構如圖3『3Ⅲ1所示,它有兩個壓電晶片和
一個共振板。當它的兩極外加脈沖信號,其頻
率等於壓電晶片的固有振盪頻率時,壓電晶片PI.O
將會發生共振,並帶動共振板振動產生超聲波,
這時它就是一超聲波發生器;如沒加電壓,當共
振板接收到超聲波時,將壓迫壓電振盪器作振
動,將機械能轉換為電信號,這時它就成為超聲
波接收轉換器。超聲波發射轉換器與接收轉換
器其結構稍有不同。
4.3超聲波檢測接收電路圖3發射電路原理圖
參考紅外轉化接收電路,本設計採用集成
F『g·3 U1『ms。nie劬啪mi『婦c『咖1『∞hem蚯c
電路CX20106A,這是一款紅外線檢波接收的專用晶元,常用於電視機紅外遙控接收器。考慮到紅外遙控
常用的載波頻率38KHz與測距超聲波頻率
40KHz較為接近,可以利用它作為超聲波檢測
電路。如圖4【3 J[71超聲波檢測接收電路原理圖
所示,適當改變C4的大小,可改變接收電路的
靈敏度和抗干擾能力。⋯. J。j-二
5系統程序設計
超聲波測距軟體設計主要由主程序,超聲
波發射子程序,超聲波接收中斷程序及顯示子
程序組成。下面對超聲波測距器的演算法,主程
序,超聲波發射子程序和超聲波接收中斷程序
逐一介紹。
5.1超聲波測距器的演算法設計
GND
圖4超聲波檢測接收電路原理圖
Fig.4 Ultrasonic receiver and detection circuit schematic
圖5【_列示意了超聲波測距的原理,即超聲
波發生器T在某一時刻發出的一個超聲波信號,當超聲波遇到被測物
體後反射回來,就被超聲波接收器R所接受。這樣只要計算出發生信
號到接收返回信號所用的時問,就可算出超聲波發生器與反射物體的
距離。
距離計算公式:d=s/2=(c木t)/2,其中d為被測物與測距器的距
離,s為聲波的來迴路程,c為聲速,t為聲波來回所用的時間。
圖5超聲波測距原理圖
Fig.5 Ultrasonic Ranging schematic
聲速c與溫度有關(見表1),如溫度變化不大,則可認為聲速是基
本不變的。如果測距精度要求很高,則應通過溫度補償的方法加以校正。聲速確定後,只要測得超聲波往
返時間,即可求得距離。在系統加入溫度感測器來監測環境溫度,可進行溫度補償。這里可以用DSl8820
測量環境溫度,根據不同的環境溫度確定一聲速提高測距的穩定性。為了增強系統的可靠性,可在軟硬體
上採用抗干擾措施。
表1不同溫度下的超聲波速表
Table I Under different temperatures ultrasonic velocity Table
·52· 綿陽師范學院學報(自然科學版) 第27卷
5.2主程序
主程序首先對系統環境初始化,設置定時器1D工作模式為16位的定時計數器模式,置位總中斷允許
位EA並給顯示端Po和P2清0。然後調用超聲波發生子程序送出一個超聲波脈沖,為避免超聲波從發射
器直接傳送到接收器引起的直接波觸發,需延遲0.1ms(這也就是測距器會有一個最小可測距離的原因)
後,才打開外中斷0接收返回的超聲波信號。由於採用12MHz的晶振,機器周期為lus,當主程序檢測到接
收成功的標志位後,將計數器喲中的數(即超聲波來回所用的時
間)按下式計算即可測得被測物體與測距儀之間的距離,設計時取
20℃時的聲速為344 m/s則有:d=(C木TO)/2=172T0/10000cm
(其中,ID為計數器,ID的計數值)。
測出距離後結果將以十進制BCD碼方式LED,然後再發超聲
波脈沖重復測量過程。主程序框圖如圖6所示。
5.3超聲波發生子程序和超聲波接收中斷程序
超聲波發生子程序的作用是通過PI.0埠發送2個左右的
超聲波信號頻率約40KHz的方波,脈沖寬度為12 US左右,同時把
計數器,ID打開進行計時。超聲波測距器主程序利用外中斷0檢
測返回超聲波信號,一旦接收到返回超聲波信號(INT0引腳出現
低電平),立即進入中斷程序。進入該中斷後就立即關閉計時器
,ID停止計時,並將測距成功標志字賦值l。如果當計時器溢出時
還未檢測到超聲波返回信號,則定時器rID溢出中斷將外中斷0關
閉,並將測距成功標志字賦值2以表示此次測距不成功H旬J。
5.4超聲波測距器的部分程序清單
/宰超聲波測距器彈片機c程序使用Keil C51 ver 7.09
。
木/
#include<re951.h>
#define uchar unsigned int
#define uint unsigned int
#define ulong unsigned long
Extem void ca_t(void);
Extem void delay(uint);
Extem void display(unchar);
Data unehar testtok;
/木超聲波測距器主程序術/
Void main(void)
{data unchar dispram[5];
data uint i;
data ulong time;
p0=0xff;
pl=0xff;
TMOD=0X11:
IE=0x80;
While(1)
{.「}
開始
系統初始化
發送超聲波脈沖
等待發射超聲波
計算距離
顯示結果0.5s
圖6主程序框圖
diagram of the main program
第8期周功明等:基於AT89C52單片機的超聲波測距器設計·53·
6軟硬體調試
超聲波測距儀的製作和調試,其中超聲波發射和接收採用中15的超聲波換能器TCT40一IOFl(T發
射)和TCT40—10S1(R接收),中心頻率為40kHz,安裝時應保持兩換能器中心軸線平行並相距4—8 cm,
其餘元件無特殊要求。若能將超聲波接收電路用金屬殼屏蔽起來,則可提高抗干擾能力。根據測量范圍
要求不同,可適當調整與接收換能器並接的濾波電容C4的大小,以獲得合適的接收靈敏度和抗干擾能力。
硬體電路製作完成並調試好後,便可將程序編譯好下載到單片機試運行。根據實際情況可以修改超
聲波發生子程序每次發送的脈沖寬度和兩次測量的間隔時間,以適應不同距離的測量需要∞】【71。
7 結束語
本文設計的是基於AT89C52單片機的超聲波測距器,可應用於汽車倒車等場合,提醒駕駛員倒車時有
效的避開可能對倒車造成危害的障礙物和行人,從而有效避免由於倒車造成的汽車碰撞或擦傷經濟損失
和人身安全問題。具有較強的實用性。
參考文獻:
[1] 周功明.基於AT89C2051彈片機的防盜自動報警電子密碼鎖系統設計[J].綿陽師范學院學報,2007,26(5):112—
116.
[14]
張齊.單片機應用系統設計技術一基於c語言編程[M].北京:電子工業出版社,2006.
李光飛.單片機c程序設計實例指導[M].北京:航空航天大學業出版社,2005.
樓燃苗,李光飛.51系列單片機設計實例[M].北京:航空航天大學業出版社,2003.
Zhongbo Li.Electronic Technique[M].Beijing:Mechannic Instrical Prees,2003.
賴麒文.8051單片機c語言徹底應用[M].北京:科學業出版社,2002.
何希才.感測器及其應用電路[M].北京:電子工業出版社,2001.
丁元傑.單片微機原理及應用[M].北京:機械工業出版社,2001.
孫串友,孫曉斌.感測技術基礎[M].北京:電子工業出版社,2001.
馬忠梅.單片機的c語言應用程序設計[M].北京:航空航天大學業出版社,1999.
劉喜昂,周志宇.基予多超聲感測器的機器人安全避障技術[J].測控技術,2003,23(2):71—73.
翟國富,劉茂愷.一種實時高精度的機器人用超聲波測距處理方法[J].應用聲學,1990,15(1):17—24.
Cray C,Swinhoe C F,Myinl.Target controlled infusion of ketamine曲analgessia for TIV A with propof01.Can.J Anesth,1999,
40:957.
R J Higgens.Electronics and Analog Integrated Circuits[M].N.J:Prentice—Hall Inc,2001.
5. 求一段匯編程序,利用51單片機控制超聲波感測器測距的程序。
; 基於AT89C2051單片機超聲波測距系統
; 測量范圍35-300厘米
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 中斷入口程序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 0000H
AJMP START
ORG 000BH
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 主 程 序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
START : MOV R0,#70H ;立即數70H送寄存器R0中
MOV R7,#0BH ;立即數0BH送寄存器R7中
MOV 20H,#00H ;立即數00H送20H單元中
CLEARDISP: MOV @R0,#00H ;立即數立即數00H送R0中的地址單元中
INC R0 ;寄存器R0加1
DJNZ R7,CLEARDISP;寄存器中的數值減1非零時轉移
MOV TMOD,#01H ;置定時器T0工作方式樣3,對內部機器周期計數
CJZCX:MOV TL0,#00H ;裝入定時器初值
MOV TH0,#00H
MOV R0,#0FH
MOV R1,#5bH
puzel:MOV 14H,#08H ;超聲波發射持續200us
Here:CPL P3.5 ;輸出40kHz方波
NOP ;
NOP ;
NOP ;
DJNZ 14H,Here ;
SETB TR0
SETB P3.2
MOV R6,#53H ;延時1.5ms
DL0: MOV R5,#03H
DJNZ R5,$
DJNZ R6,DL0
QBA:JNB P3.7,QBC
DJNZ R1,QBA
DJNZ R0,QBA
QBC:CLR P3.2
CLR TR0
MOV 70H,tl0
MOV 71H,tH0
MOV R2,71H
MOV R3,70H
MOV R6,#22H
MOV R7,#0H
LCALL MULD
MOV R6,#64H
MOV R7,#0H
LCALL DIVD
MOV 73H,R2
MOV 74H,R3
MOV R3,#0H
MOV R4,#0H
MOV R5,#0H
MOV R6,73H
MOV R7,74H
LCALL HB2
MOV A,R4 ;分離BCD
MOV B,#10H
DIV AB
MOV 78H,A
MOV 77H,B
MOV A,R5
MOV B,#10H
DIV AB
MOV 76H,A
MOV 75H,B
MOV 7AH,#0EFH
XXX:LCALL DISPLAY
DJNZ 7AH,XXX
AJMP CJZCX
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 乘34程序(乘聲速) ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MULD: MOV A,R3 ;計算R3乘R7
MOV B,R7
MUL AB
MOV R4,B ;暫存部分積
MOV R5,A
MOV A,R3 ;計算R3乘R6
MOV B,R6
MUL AB
ADD A,R4 ;累加部分積
MOV R4,A
CLR A
ADDC A,B
MOV R3,A
MOV A,R2 ;計算R2乘R7
MOV B,R7
MUL AB
ADD A,R4 ;累加部分積
MOV R4,A
MOV A,R3
ADDC A,B
MOV R3,A
CLR A
RLC A
XCH A,R2 ;計算R2乘R6
MOV B,R6
MUL AB
ADD A,R3 ;累加部分積
MOV R3,A
MOV A,R2
ADDC A,B
MOV R2,A
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 除100程序(除法) ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DIVD: CLR C ;比較被除數和除數
MOV A,R3
SUBB A,R7
MOV A,R2
SUBB A,R6
JC DVD1
SETB OV ;溢出
RET
DVD1: MOV B,#10H ;計算雙位元組商
DVD2: CLR C ;部分商和余數同時左移一位
MOV A,R5
RLC A
MOV R5,A
MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV R3,A
XCH A,R2
RLC A
XCH A,R2
MOV F0,C ;保存溢出位
CLR C
SUBB A,R7 ;計算(R2R3-R6R7)
MOV R1,A
MOV A,R2
SUBB A,R6
ANL C,/F0 ;結果判斷
JC DVD3
MOV R2,A ;夠減,存放新的余數
MOV A,R1
MOV R3,A
INC R5 ;商的低位置一
DVD3: DJNZ B,DVD2 ;計算完十六位商(R4R5)
MOV A,R4 ;將商移到R2R3中
MOV R2,A
MOV A,R5
MOV R3,A
CLR OV ;設立成功標志
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; BCD轉換 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
HB2: CLR A ;BCD碼初始化
MOV R3,A
MOV R4,A
MOV R5,A
MOV R2,#10H ;轉換雙位元組十六進制整數
HB3: MOV A,R7 ;從高端移出待轉換數的一位到CY中
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5 ;BCD碼帶進位自身相加,相當於乘2
ADDC A,R5
DA A ;十進制調整
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
MOV A,R3
ADDC A,R3
MOV R3,A ;雙位元組十六進制數的萬位數不超過6,不用調整
DJNZ R2,HB3 ;處理完16bit
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 顯示程序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DISPLAY: MOV R1,#76H ;立即數76H送寄存器中
MOV R5,#0FEH ;立即數FEH送寄存器R5中
PLAY: MOV A,R5 ;寄存器R5中的數值送累加器A中
MOV P3,A ;累加器A中的數值送P3口
MOV A,@R1 ;以寄存器R1中的數為地址單元的數值送累加器中
MOV DPTR,#TAB ;16位地址送地址寄存器中
MOVC A,@A+DPTR ;以中的地址為基地變址定址單元中的數送累加器
MOV P1,A ;累加器A中的數值送P1口
MOV R6,#14H ;立即數據14送寄存器R6中
DL1:MOV R7,#19H ;立即數據19送寄存器R7中
DL2:DJNZ R7,DL2 ;寄存器中的數據減1,不為零時則轉移
DJNZ R6,DL1 ;寄存器中的數據減1,不為零時則轉移
INC R1 ;寄存器R1中的數值加1
MOV A,R5 ;寄存器R5中的數值送累加器A中
JNB ACC.2,ENDOUT ;地址位為0則轉到ENDOUT
RL A ;累加器循環右移
MOV R5,A ;累加器A中的數值送寄存器R5中
AJMP PLAY ;絕對短轉移
ENDOUT: SETB P3.5 ;置P3.5口
MOV P1,#0FFH ;立即數0FEH送P1口
RET ;返回
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
END ;結束
我見過一款製作容易免調試的超聲波測距板,你可到「谷歌」上搜索一下《一款製作容易免調試的超聲波測距板》,該超聲波測距板結構簡單、製作容易不需要調試、測量精度高,比較適合單片機初學都使用,同時也是單片機課程設計比較好的實訓課題。該超聲波測距系統,提供套件,及組裝好的板件,含原理圖、源程序、設計說明等。
6. 求一篇關於基於單片機的超聲波測距儀設計的英文資料(附中文翻譯更美,呵呵),畢業設計用。謝謝
This article described the three directions (before, left, right) ultrasonic ranging system is to understand the front of the robot, left and right environment to provide a movement away from the information. (Similar to GPS Positioning System)
A principle of ultrasonic distance measurement
1, the principle of piezoelectric ultrasonic generator
Piezoelectric ultrasonic generator is the use of piezoelectric crystal resonators to work. Ultrasonic generator, the internal structure as shown in Figure 1, it has two piezoelectric chip and a resonance plate. When it's two plus pulse signal, the frequency equal to the intrinsic piezoelectric oscillation frequency chip, the chip will happen piezoelectric resonance, and promote the development of plate vibration resonance, ultrasound is generated. Conversely, if the two are not inter-electrode voltage, when the board received ultrasonic resonance, it will be for vibration suppression of piezoelectric chip, the mechanical energy is converted to electrical signals, then it becomes the ultrasonic receiver.
2, the principle of ultrasonic distance measurement
Ultrasonic transmitter in a direction to launch ultrasound, in the moment to launch the beginning of time at the same time, the spread of ultrasound in the air, obstacles on his way to return immediately, the ultrasonic reflected wave received by the receiver immediately stop the clock. Ultrasound in the air as the propagation velocity of 340m / s, according to the timer records the time t, we can calculate the distance between the launch distance barrier (s), that is: s = 340t / 2
Ultrasonic Ranging System for the Second Circuit Design
System is characterized by single-chip microcomputer to control the use of ultrasonic transmitter and ultrasonic receiver since the launch from time to time, single-chip selection of 8751, economic-to-use, and the chip has 4K of ROM, to facilitate programming. Circuit schematic diagram shown in Figure 2. Draw only the front range of the circuit wiring diagram, left and right in front of Ranging Ranging circuits and the same circuit, it is omitted.
1,40 kHz ultrasonic pulse generated with the launch
Ranging system using the ultrasonic sensor of piezoelectric ceramic sensors UCM40, its operating voltage of the pulse signal is 40kHz, which by the single-chip implementation of the following proceres to generate.
puzel: mov 14h, # 12h; ultrasonic firing continued 200ms
here: cpl p1.0; output 40kHz square wave
nop;
nop;
nop;
djnz 14h, here;
ret
Ranging in front of single-chip termination circuit P1.0 input port, single chip implementation of the above procere, the P1.0 port in a 40kHz pulse output signal, after amplification transistor T, the drive to launch the first ultrasonic UCM40T, issued 40kHz ultrasonic pulse, and the continued launch of 200ms. Ranging the right and the left side of the circuit, respectively, then input port P1.1 and P1.2, the working principle and circuit in front of the same location.
2, reception and processing of ultrasonic
Used to receive the first launch of the first pair UCM40R, the ultrasonic pulse molation signal into an alternating voltage, the op-amp amplification IC1A and after polarization IC1B to IC2. IC2 is locked loop with audio decoder chip LM567, internal voltage-controlled oscillator center frequency of f0 = 1/1.1R8C3, capacitor C4 determine their target bandwidth. R8-conditioning in the launch of the carrier frequency on the LM567 input signal is greater than 25mV, the output from the high jump 8 feet into a low-level, as interrupt request signals to the single-chip processing.
Ranging in front of single-chip termination circuit output port INT0 interrupt the highest priority, right or left location of the output circuit with output gate IC3A access INT1 port single-chip, while single-chip P1.3 and P1. 4 received input IC3A, interrupted by the process to identify the source of inquiry to deal with, interrupt priority level for the first left right after. Part of the source code is as follows:
receive1: push psw
push acc
clr ex1; related external interrupt 1
jnb p1.1, right; P1.1 pin to 0, ranging from right to interrupt service routine circuit
jnb p1.2, left; P1.2 pin to 0, to the left ranging circuit interrupt service routine
return: SETB EX1; open external interrupt 1
pop? acc
pop? psw
reti
right: ...?; right location entrance circuit interrupt service routine
? Ajmp? Return
left: ...; left Ranging entrance circuit interrupt service routine
? Ajmp? Return
4, the calculation of ultrasonic propagation time
When you start firing at the same time start the single-chip circuitry within the timer T0, the use of timer counting function records the time and the launch of ultrasonic reflected wave received time. When you receive the ultrasonic reflected wave, the receiver circuit outputs a negative jump in the end of INT0 or INT1 interrupt request generates a signal, single-chip microcomputer in response to external interrupt request, the implementation of the external interrupt service subroutine, read the time difference, calculating the distance . Some of its source code is as follows:
RECEIVE0: PUSH PSW
PUSH ACC
CLR EX0; related external interrupt 0
? MOV R7, TH0; read the time value
MOV R6, TL0?
CLR C
MOV A, R6
SUBB A, # 0BBH; calculate the time difference
MOV 31H, A; storage results
MOV A, R7
SUBB A, # 3CH
MOV 30H, A?
SETB EX0; open external interrupt 0
POP ACC?
POP PSW
RETI
Fourth, the ultrasonic ranging system software design
Software is divided into two parts, the main program and interrupt service routine, shown in Figure 3 (a) (b) (c) below. Completion of the work of the main program is initialized, each sequence of ultrasonic transmitting and receiving control.
Interrupt service routines from time to time to complete three of the rotation direction of ultrasonic launch, the main external interrupt service subroutine to read the value of completion time, distance calculation, the results of the output and so on.
V. CONCLUSIONS
Required measuring range of 30cm ~ 200cm objects inside the plane to do a number of measurements found that the maximum error is 0.5cm, and good reprocibility. Single-chip design can be seen on the ultrasonic ranging system has a hardware structure is simple, reliable, small features such as measurement error. Therefore, it can be used not only for mobile robot can be used in other detection systems.
Thoughts: As for why the receiver do not have the transistor amplifier circuit, because the magnification well, CX20106 integrated amplifier, but also with automatic gain control level, magnification to 76dB, the center frequency is 38k to 40k, is exactly resonant ultrasonic sensors frequency
=====
本文所介紹的三方向(前、左、右)超聲波測距系統,就是為機器人了解其前方、左側和右側的環境而提供一個運動距離信息。(類似GPS定位系統)
一 超聲波測距原理
1、壓電式超聲波發生器原理
壓電式超聲波發生器實際上是利用壓電晶體的諧振來工作的。超聲波發生器內部結構如圖1所示,它有兩個壓電晶片和一個共振板。當它的兩極外加脈沖信號,其頻率等於壓電晶片的固有振盪頻率時,壓電晶片將會發生共振,並帶動共振板振動,便產生超聲波。反之,如果兩電極間未外加電壓,當共振板接收到超聲波 時,將壓迫壓電晶片作振動,將機械能轉換為電信號,這時它就成為超聲波接收器了。
2、超聲波測距原理
超聲波發射器向某一方向發射超聲波,在發射時刻的同時開始計時,超聲波在空氣中傳播,途中碰到障礙物就立即返回來,超聲波接收器收到反射波就立即停止計時。超聲波在空氣中的傳播速度為340m/s,根據計時器記錄的時間t,就可以計算出發射點距障礙物的距離(s),即:s=340t/2
二 超聲波測距系統的電路設計
系統的特點是利用單片機控制超聲波的發射和對超聲波自發射至接收往返時間的計時,單片機選用8751,經濟易用,且片內有4K的ROM,便於編程。電路原理圖如圖2所示。其中只畫出前方測距電路的接線圖,左側和右側測距電路與前方測距電路相同,故省略之。
1、40kHz 脈沖的產生與超聲波發射
測距系統中的超聲波感測器採用UCM40的壓電陶瓷感測器,它的工作電壓是40kHz的脈沖信號,這由單片機執行下面程序來產生。
puzel: mov 14h, #12h;超聲波發射持續200ms
here: cpl p1.0 ; 輸出40kHz方波
nop ;
nop ;
nop ;
djnz 14h,here;
ret
前方測距電路的輸入端接單片機P1.0埠,單片機執行上面的程序後,在P1.0 埠輸出一個40kHz的脈沖信號,經過三極體T放大,驅動超聲波發射頭UCM40T,發出40kHz的脈沖超聲波,且持續發射200ms。右側和左側測 距電路的輸入端分別接P1.1和P1.2埠,工作原理與前方測距電路相同。
2、超聲波的接收與處理
接收頭採用與發射頭配對的UCM40R,將超聲波調制脈沖變為交變電壓信號,經運算放大器IC1A和IC1B兩極放大後加至IC2。IC2是帶有鎖 定環的音頻解碼集成塊LM567,內部的壓控振盪器的中心頻率f0=1/1.1R8C3,電容C4決定其鎖定帶寬。調節R8在發射的載頻上,則LM567 輸入信號大於25mV,輸出端8腳由高電平躍變為低電平,作為中斷請求信號,送至單片機處理.
前方測距電路的輸出端接單片機INT0埠,中斷優先順序最高,左、右測距電路的輸出通過與門IC3A的輸出接單片機INT1埠,同時單片機P1.3和P1.4接到IC3A的輸入端,中斷源的識別由程序查詢來處理,中斷優先順序為先右後左。部分源程序如下:
receive1:push psw
push acc
clr ex1 ; 關外部中斷1
jnb p1.1, right ; P1.1引腳為0,轉至右測距電路中斷服務程序
jnb p1.2, left ; P1.2引腳為0,轉至左測距電路中斷服務程序
return: SETB EX1; 開外部中斷1
pop? acc
pop? psw
reti
right: ...? ; 右測距電路中斷服務程序入口
? ajmp? return
left: ... ; 左測距電路中斷服務程序入口
? ajmp? return
4、計算超聲波傳播時間
在啟動發射電路的同時啟動單片機內部的定時器T0,利用定時器的計數功能記錄超聲波發射的時間和收到反射波的時間。當收到超聲波反射波時,接收電路 輸出端產生一個負跳變,在INT0或INT1端產生一個中斷請求信號,單片機響應外部中斷請求,執行外部中斷服務子程序,讀取時間差,計算距離。其部分源程序如下:
RECEIVE0: PUSH PSW
PUSH ACC
CLR EX0 ; 關外部中斷0
? MOV R7, TH0 ; 讀取時間值
MOV R6, TL0?
CLR C
MOV A, R6
SUBB A, #0BBH; 計算時間差
MOV 31H, A ; 存儲結果
MOV A, R7
SUBB A, #3CH
MOV 30H, A?
SETB EX0 ; 開外部中斷0
POP ACC?
POP PSW
RETI
四、超聲波測距系統的軟體設計
軟體分為兩部分,主程序和中斷服務程序,如圖3(a)(b)(c) 所示。主程序完成初始化工作、各路超聲波發射和接收順序的控制。
定時中斷服務子程序完成三方向超聲波的輪流發射,外部中斷服務子程序主要完成時間值的讀取、距離計算、結果的輸出等工作。
五、結論
對所要求測量范圍30cm~200cm內的平面物體做了多次測量發現,其最大誤差為0.5cm,且重復性好。可見基於單片機設計的超聲波測距系統具有硬體結構簡單、工作可靠、測量誤差小等特點。因此,它不僅可用於移動機器人,還可用在其它檢測系統中。
思考:至於為什麼接收不用晶體管做放大電路呢,因為放大倍數搞不好,CX20106集成放大電路,還帶自動電平增益控制,放大倍數為76dB,中心頻率是38k到40k,剛好是超聲波感測器的諧振頻率
7. 基於單片機的超聲波測距儀畢業論文
相關範文:
基於單片機的超聲波測距儀設計及其應用分析
[摘要] 本文利用超聲波傳輸中距離與時間的關系,採用AT89C51單片機進行控制及數據處理,設計出了能精確測量兩點間距離的超聲波測距儀。該測距儀主要由超聲波發射器電路、超聲波接收器電路、單片機控制電路、環境溫度檢測電路及顯示電路構成。利用所設計出的超聲波測距儀,對不同距離進行了測試,並進行了詳盡的誤差分析。
[關鍵詞] 超聲波測距 單片機 溫度感測器
隨著社會的發展,人們對距離或長度測量的要求越來越高。超聲波測距由於其能進行非接觸測量和相對較高的精度,越來越被人們所重視。本設計的超聲波測距儀,可以對不同距離進行測試,並可以進行詳盡的誤差分析。
一、設計原理
超聲測距儀是根據超聲波遇到障礙物反射回來的特性進行測量的。超聲波發射器向某一方向發射超聲波,在發射同時開始計時,超聲波在空氣中傳播,途中碰到障礙物就立即返回來,超聲波接收器收到反射波就立即中斷停止計時。 通過不斷檢測產生波發射後遇到障礙物所反射的回波,從而測出發射超聲波和接收到回波的時間差T,然後求出距離L。基本的測距公式為:L=(△t/2)*C
式中 L——要測的距離
T——發射波和反射波之間的時間間隔
C——超聲波在空氣中的聲速,常溫下取為340m/s
聲速確定後,只要測出超聲波往返的時間,即可求得L。
二、超聲波測距儀設計目標
測量距離: 5米的范圍之內;通過LED能夠正確顯示出兩點間的距離;誤差小於5%。
三、數據測量和分析
1.數據測量與分析
由於實際測量工作的局限性,最後在測量中選取了一米以下的30cm、50cm、70cm、80cm、90cm、100cm 六個距離進行測量,每個距離連續測量七次,得出測量數據(溫度:29℃),如表所示。從表中的數據可以看出,測量值一般都比實際值要大幾厘米,但對於連續測量的准確性還是比較高的。
對所測的每組數據去掉一個最大值和最小值,再求其平均值,用來作為最終的測量數據,最後進行比較分析。這樣處理數據也具有一定的科學性和合理性。從表中的數據來看,雖然對超聲波進行了溫度補償,但在比較近的距離的測量中其相對誤差也比較大。特別是對30cm和50cm的距離測量上,相對誤差分別達到了5%和4.8%。但從全部測量結果看,本設計的絕對誤差都比較小,也比較穩定。本設計盲區在22.6cm左右,基本滿足設計要求。
2.誤差分析
測距誤差主要來源於以下幾個方面:
(1)超聲波發射與接收探頭與被測點存在一定的角度,這個角度直接影響到測量距離的精確值;(2)超聲波回波聲強與待測距離的遠近有直接關系,所以實際測量時,不一定是第一個回波的過零點觸發;(3)由於工具簡陋,實際測量距離也有誤差。影響測量誤差的因素很多,還包括現場環境干擾、時基脈沖頻率等等。
四、應用分析
採用超聲波測量大氣中的地面距離,是近代電子技術發展才獲得正式應用的技術,由於超聲測距是一種非接觸檢測技術,不受光線、被測對象顏色等的影響,在較惡劣的環境(如含粉塵)具有一定的適應能力。因此,用途極度廣泛。例如:測繪地形圖,建造房屋、橋梁、道路、開挖礦山、油井等,利用超聲波測量地面距離的方法,是利用光電技術實現的,超聲測距儀的優點是:儀器造價比光波測距儀低,省力、操作方便。
超聲測距儀在先進的機器人技術上也有應用,把超聲波源安裝在機器人身上,由它不斷向周圍發射超聲波並且同時接收由障礙物反射回波來確定機器人的自身位置,用它作為感測器控制機器人的電腦等等。由於超聲波易於定向發射,方向性好,強度好控制,它的應用價值己被普遍重視。
總之,由以上分析可看出:利用超聲波測距,在許多方面有很多優勢。因此,本課題的研究是非常有實用和商業價值。
五、結論
本設計的測量距離符合市場要求,測量的盲區也控制在23cm以內。針對市場需求,本設計還可以加大發射功率,讓測量的距離更加的遠。在顯示方面,也可以對程序做適當改動,使開始發射超聲波時LED顯示出溫度值,到超聲波回波接收到以後通過計算得出距離值時,LED自動切換顯示距離值,這樣在視覺效果上得到更加直觀的了解。
參考文獻:
[1]孫涵芳徐愛卿:MCS一51/96系列單片機原理及應用(修訂版)[M].北京:北京航空航天大學出版社.2002.46-170
[2]金篆芷王明時:現代感測器技術[M].電子工業出版社.1995.331—335
[3]孫涵芳徐愛卿:MCS一51/96系列單片機原理及應用(修訂版)[M].北京:北京航空航天大學出版社.2002.46-170
[4]路錦正王建勤楊紹國趙珂趙太飛:超聲波測距儀的設計[J].感測器技術.2002
僅供參考,請自借鑒
希望對您有幫助
8. 基於89C52單片機的HC-SR04超聲波測距系統程序
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit DU=P2^6;
sbit WE=P2^7;
sbit RS=P1^0;
sbit RW=P1^1;
sbit EN=P2^5;
sbit RX=P3^2;
sbit TX=P1^5;
uint time=0;
unsigned long S=0;
bit flag=0;
uchar disdat[]={0,0,0,0};
void delay(uint xms)
{
uint x,y;
for(x=xms;x>0;x--)
for(y=112;y>0;y--);
}
void write_com(uchar com)
{
RS=0;
RW=0;
P0=com;
delay(5);
EN=1;
delay(5);
EN=0;
}
void write_dat(uchar dat)
{
RS=1;
RW=0;
P0=dat;
delay(5);
EN=1;
delay(5);
EN=0;
}
void write_1602(uchar add,uchar dat2)
{
write_com(0x80+0x40+add);
write_dat(dat2);
}
void ZIFU(uchar *ch)
{
while(*ch!=0)
{
write_dat(*ch++);
delay(20);
}
}
void init()
{
DU=0;
WE=0;
EN=0;
write_com(0x38);
delay(2);
write_com(0x0f);
write_com(0x06);
write_com(0x80);
write_com(0x01);
ZIFU(" From JM Xiao");
}
void count()
{
time=TH0*256+TL0;//計時時間
TH0=0;
TL0=0;
S=time/58;
disdat[0]=S%1000/100;
disdat[1]=S%1000%100/10;
disdat[2]=S%1000%10%10;
write_1602(1,'D');
write_1602(2,'i');
write_1602(3,'s');
write_1602(4,'t');
write_1602(5,'a');
write_1602(6,'n');
write_1602(7,'c');
write_1602(8,'e');
write_1602(9,':');
write_1602(10,disdat[0]+0x30);
write_1602(11,disdat[1]+0x30);
write_1602(12,disdat[2]+0x30);
write_1602(13,'C');
write_1602(14,'M');
}
void start()
{
TX=1;
_nop_(); _nop_();
_nop_(); _nop_();
_nop_(); _nop_();
_nop_(); _nop_();
_nop_(); _nop_();
_nop_(); _nop_();
_nop_(); _nop_();
_nop_(); _nop_();
TX=0;
}
void timer0() interrupt 1
{
flag=1;
}
void main()
{
delay(400);
init();
TMOD=0x01;
TH0=0;
TL0=0;
EA=1;
ET0=1;
while(1)
{
start();
while(!RX);
TR0=1;
while(RX);
TR0=0;
count();
delay(20);
}
}
9. 基於單片機的超聲波測距儀
我也出現過這種情況,就是不停的在掃描,數碼管在閃爍,但沒有查出來原因,有可能是代碼問題,有可能是代碼和你的電路不符合一至,你可以用電表把作品查一遍,是否是某一個拐角接錯了,電平不對,導致局部電流不通,晶元的拐角作用都清楚嗎?如果硬體沒問題,那就應該是上述的兩種可能了。