一、簡介
本文介紹如何用51STC單片機驅動超聲波傳感器來實現測距等功能。
二、實驗平臺
單片機型號:STC12C5A60S2
外設模塊型號:HC-SR04
編譯軟件:KEIL
硬件平臺:達芬奇51開發版
三、版權聲明
博主:老蔡玩科技(caibinguitar)
聲明:喝水不忘挖井人,轉載請註明出處。
抖音:laocaiwankeji
四、講解
超聲波傳感器對於51單片機外設來講是很常見的,它的工作原理也很簡單,所以看到此篇博客的同學按照我的步驟往下看完,一定會學明白的,如果有不明白的就暫停一下,自己想一想或者百度一下,再或者在下面留言,我會及時回覆的。
4.1 超聲波傳感器原理
由於超聲波指向性強,能量消耗緩慢,在介質中傳播的距離較遠,因而超聲波經常用於距離的測量,如測距儀和物位測量儀等都可以通過超聲波來實現。超聲波發射器向某一方向發射超聲波,在發射時刻的同時開始計時,超聲波在空氣中傳播,途中碰到障礙物就立即返回來,超聲波接收器收到反射波就立即停止計時。超聲波在空氣中的傳播速度為340m/s,根據計時器記錄的時間t,就可以計算出發射點距障礙物的距離(s),即:s=340t/2 。這就是所謂的時間差測距法。 超聲波測距的原理是利用超聲波在空氣中的傳播速度為已知,測量聲波在發射後遇到障礙物反射回來的時間,根據發射和接收的時間差計算出發射點到障礙物的實際距離。由此可見,超聲波測距原理與雷達原理是一樣的。
測距的公式表示為:L=C×T
式中L為測量的距離長度;C為超聲波在空氣中的傳播速度;T為測量距離傳播的時間差(T為發射到接收時間數值的一半)。 HC-SR04超聲波模塊可提供2cm~400cm的距離感測功能,測量精度可以達到3mm。模塊包括超聲波發射器,接收器與控制電路。
基本工作原理
- 採用Trig引腳觸發,給至少10us的高電平脈衝信號
- 模塊自動發送8個40kHz的方波,自動檢測是否有信號返回
- 有信號返回,通過Echo引腳輸出一個高電平脈衝,高電平脈衝持續的時間就是超聲波從發射到反射返回的時間。距離=(高電平脈衝時間*340)/2
4.2 程序邏輯
image.png
4.2 用代碼來實現它
<code>void
main
(
void
) { TMOD=0x01
; SCON=0x10
; UartInit(); TH0=0
; TL0=0
; TR0=1
; ET0=1
; TI=1
; EA=1
;while
(1
) { LED1 = ~LED1; StartModule();while
(!RX); TR0=1
;while
(RX); TR0=0
; Conut(); delayms(100
); } } /<code>
StartModule()
<code>void
StartModule
()
{unsigned
char
i, j, k; i =68
; j =61
; k =50
; TX=1
;do
{do
{while
(--k); }while
(--j); }while
(--i); TX=0
; } /<code>
void Conut(void)
<code>void
Conut
(
void
) { time=TH0*256
+TL0; TH0=0
; TL0=0
; S=(time*1.87
)/100
/2
-0.7
;if
(flag==1
) { flag=0
;printf
("-----\n"
); }printf
("S=%f\n"
,S); } /<code>
休息一下 等會把代碼上傳到git上