1、基本工作原理
2、实物图
3、驱动程序
#include "reg52.h"
sbit TRIG=P1^0;
sbit ECHO=P1^1;
void Init() //初始化相关寄存器及相关I/O口
{
TMOD=0x11; //定时器0和1选择16位计数
TH0=0X00; //定时器0赋值
TL0=0X00;
TR0=0; //关闭定时器0
TRIG=0; //超声波初始化
ECHO=0;
}
void delay_us(int i) //延时函数us i=1 延时10us
{
while(i--);
}
void delay_ms(int i) //延时函数ms i=1 延时1ms
{
for(i;i>0;i--){
TH1=0xfc;
TL1=0x66;
TR1=1;
while(!TF1);
TR1=0;
TF1=0;
}
}
int main(){
Init();
while(1){
TRIG=1;
delay_us(2);
TRIG=0;
while(!ECHO); //等待ECHO高电平
TR0=1; //打开T0计时
while(ECHO); //等待ECHO变回低电平
TR0=0; //关闭T0计时
j=TH0*256+TL0;
TH0=0X00; //T0定时器赋值
TL0=0X00;
jl=(float)j*0.017; //计算距离 单位:cm
delay_ms(100); //间隔100ms检测一次
}
}