HC-SR04(超声波模块)

一、主要参数

1:使用电压:DC—5V

2:静态电流:小于2mA

3:电平输出:高5V

4:电平输出:低0V

5:感应角度:不大于15度

6:探测距离:2cm-450cm

7:高精度 可达0.2cm

二、工作原理

1.采用IO口TRIG触发测距,给至少10us的高电平信号来启动模块。

2.模块自动发送8个40khz的方波,自动检测是否有信号返回。

3.如果有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。通过公式计算测试距离=(高电平时间*声速(340M/S))/2。

三、运用超声波模块测距

1.代码展示(C51单片机驱动超声波模块)

#include <reg52.h>
#include <stdio.h>
sbit TRIG = P2^7; //单片机2.7针脚对应 trig
sbit ECHO = P2^6; / /单片机2.6针脚对应 echo
#define uint unsigned int	
char buf[32];
float S;
   void Mydelay(uint i)//i*10us 延时
{ 
	uint z = 922;
	i = z*i;
	while(i != 0){i--;}
}
void delay(uint z)//1ms 延时
{ uint x,y;
	for(x=z;x>0;x--)
	for(y=110;y>0;y--);
}
void senddelay(unsigned long time){
	int i = 0;
	int j = 0;
	for(i = 0;i<100;i++){
		for(j = 0;j<time;j++);
	}
}
void init()//初始化函数
{
	TMOD=0X01; //设 T0 为方式 1, GATE=1;
	TH0=0;
	TL0=0;	
	EA=1; //开启总中断
	ET0=1; //允许 T0 中断
	TR0=0;
	TRIG = 0;
}
void initUart()
{
	EA = 1;
	ES = 1;
	SCON = 0x40;
	TH2 = 0xFF;
	TL2 = 0xFD;
	RCAP2H = 0xFF;
	RCAP2L = 0xFD;
	T2CON = 0x34;
}
void StartModule() //启动模块
 {
 	TRIG = 1;
	Mydelay(2);//20us的延时保证高电平持续时间足够来启动模块
	TRIG = 0;
 }
 void Conut(void) //计算距离
{	
	uint time;
	time=TH0*256+TL0;
	TH0=0;
	TL0=0;
	S=(time*1.7)/100;
}

void sendsingle(char single){ 		
	SBUF = single;
	while(TI != 1);
	TI = 0;
}
void sendMes(char *p)
{
	while( *p != '\0'){
	sendsingle(*p);
	p++;
	} 
	 senddelay(100);
}
void main(){ 	
	initUart();
	init();
		while(1){
			StartModule();
			while(!ECHO); //当 ECHO 为零时等待
			TR0=1; //开启计数
			while(ECHO); //当 ECHO为 1 计数并等待
			TR0=0; //关闭计数
		Conut(); //计算
		TH0=0;	 //计数器复位准备下一次计数
		TL0=0; 
	//	sendMes("Welcome\n");
		sprintf(buf,"S=%f\r\n",S);
		sendMes(buf);
		delay(80);
				}
}

2.结果展示

通过串口接收到超声波模块返回的信息。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值