版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/LinLingPeng_/article/details/8944933
產品簡介
HC-SR04超聲波測距模塊可提供2cm-400cm的非接觸式距離感測功能,測距精度可達高到3mm;模塊包括超聲波發射器、接收器與控制電路。
產品應用領域
機器人避障 物體測距 液位檢測 公共安防 停車場檢測
主要技術參數
1:使用電壓:DC5V 2:靜態電流:小於2mA3:電平輸出:高5V 4:電平輸出:底0V
5:感應角度:不大於15度 6:探測距離:2cm-450cm 7:高精度 可達0.2cm
接線方式,VCC、trig(控制端)、 echo(接收端)、 GND
基本工作原理
- 採用IO口TRIG觸發測距,給至少10us的高電平信號;
- 模塊自動發送8個40khz的方波,自動檢測是否有信號返回;
- 有信號返回,通過IO口ECHO輸出一個高電平,高電平持續的時間就是超聲波從發射到返回的時間。測試距離=(高電平時間*聲速(340M/S))/2;
使用方法
一個控制口發一個10US以上的高電平,就可以在接收口等待高電平輸出.一有輸出就可以開定時器計時,當此口變爲低電平時就可以讀定時器的值,此時就爲此次測距的時間,方可算出距離.如此不斷的週期測,即可以達到你移動測量的值。
代碼
//(1)採用 IO 觸發測距,給至少10us 的高電平信號;
//(2)模塊自動發送8 個40khz 的方波,自動檢測是否有信號返回;
//(3)有信號返回,通過IO 輸出一高電平,高電平持續的時間就是
//(4)超聲波從發射到返回的時間.測試距離=(高電平時間*聲速(340M/S))/2
#include <12C5A60S2.h>
#include "lcd5110.h"
#define uint unsigned int
sbit echo = P3^2;
uint sing = 5;
void main()
{
int Distance = 0;
uint delay = 0;
EA = 1;
TMOD = 0x01;
ET0 = 1;
TH0 = 0;
TL0 = 0;
TR0 = 0; //定時器中斷;
EX0 = 1;
IT0 = 1; //下降沿觸發中斷
P3 &= ~0x10;
Initial_5110();
Clean_5110();
Write_X_Y_5110(0,0);
Write_Int_5110(23);
while(1)
{
P3 |= 0x10;
delay = 50;
while(--delay);
P3 &= ~0x10;
delay = 0;
while( ((P3 & 0x04) == 1) && (delay < 3000) ) delay ++;
Distance = sing;
Write_X_Y_5110(0,2);
Write_Int_5110(Distance);
delay = 0;
while(delay < 40000) delay++;
}
}
void time0()interrupt 1
{
TH0 = 0;
TL0 = 0;
}
void wai_inter() interrupt 0
{
uint count_high = 0;
EA = 0;
EX0 = 0;
TH0 = 0;
TL0 = 0;
TR0 = 1;
while( ((P3 & 0x04) == 0) && (count_high < 2000) ) count_high ++;
if(count_high < 2000) sing = TH0*16 + TL0;
else sing = 0;
TR0 = 0;
TH0 = 0;
TL0 = 0;
EX0 = 1;
EA = 1;
}