1. 程式人生 > 實用技巧 >HC-SR04超聲波測距模組使用

HC-SR04超聲波測距模組使用

HC-SR04超聲波測距模組

HC-SR04超聲波測距模組可提供2cm至400cm的非接觸式距離感測功能,測距精度可達3mm;模組自身包括超聲波發射器、接收器與控制電路。

實物正反兩面圖

HC-SR04電氣引數:

HC-SR04工作原理及說明:

1、 給Trig觸發控制訊號IO埠至少10us的高電平訊號;

2、 模組自動傳送8個40khz的方波,並自動檢測是否有訊號返回;

3、 有訊號返回時,Echo迴響訊號輸出埠輸出一個高電平,高電平持續的時間就是超聲波從發射到返回的時間;

4、 兩次測距時間間隔最少在60ms以上,以防止發射訊號對迴響訊號的影響;

超聲波時序圖

微控制器控制HC-SR04超聲波測距說明:

原理圖中,微控制器的P1.7口接HC-SR04的Trig埠,P1.6口接HC-SR04的Echo埠,超聲波在傳播時碰到障礙物即返回,HC-SR04模組收到回波訊號後Echo口輸出一個高電平,微控制器檢測到高電平後即啟動計數器開始計數,直到微控制器檢測到Echo口變成低電平後結束計數,計數器的計數值乘以微控制器計數週期就是超聲波從發射到接收的往返時間,即距離S=v*t/2

以下是實現程式碼:

 1 #include <OLED12864.H>
 2 #include <stdio.h>
 3
unsigned long record; 4 unsigned int number_1; 5 char Display[10]; 6 /*P17 HC-SR04觸發訊號輸入,P16 HC-SR04迴響訊號輸出*/ 7 void delay_10us(unsigned int i)//約延時10us 8 { 9 while(i--); 10 } 11 //主函式 12 void main(void) 13 { 14 LCD_Init();//顯示屏初始化 15 while(1) 16 { 17 TMOD=0x10; 18 TH1=0x00
; 19 TL1=0x00; 20 /*觸發超聲波測距*/ 21 P17=0; 22 P17=1; 23 delay_10us(2); 24 P17 = 0; 25 while (!P16) 26 { 27 TR1 = 0; 28 } 29 while (P16) 30 { 31 TR1 = 1; 32 } 33 number_1=TH1*256+TL1; 34 record =(unsigned long)(number_1*0.17+20); 35 } 36 }

來源:E小電