蓝桥杯超声波模块原理以及编程

 ​​​​​​

 超声波模块工作时,要用跳线帽连接J2的1,3引脚,2,4引脚。即P10引脚代表发射引脚,P11代表接收引脚。

 当CX20106A接收到40kHz的信号时,会在第7脚产生一个低电平下降脉冲,这个信号可以接到单片机的外部中断引脚作为中断信号输入。

所以要用发射电路发射频率为40kHz的方波信号,这个信号可以用定时器控制周期。

sbit Tx=P1^0;//定义引脚
sbit Rx=P1^1;

void Timer0Init(void)		//12微秒@12.000MHz
{
	AUXR &= 0x7F;		//定时器时钟12T模式
	TMOD &= 0xF0;		//设置定时器模式
	TL0 = 0xF4;		//设置定时初值
	TH0 = 0xFF;		//设置定时初值
	TF0 = 0;		//清除TF0标志
	TR0 = 0;		//定时器0不计时
}


unsigned char Wave_Recv(void)
{
	unsigned char Wave_Num = 10;
	unsigned char Dis;
	
	Tx=0;//发射引脚设为低电平
	TL0 = 0xF4;		//设置定时初值
	TH0 = 0xFF;		//设置定时初值
	TR0 = 1;     //定时器0计时
	
	while(Wave_Num--)//发射10个连续的频率为40kHz的方波信号,
	{
		while(!TF0);//TF0为定时器0的中断标志位,定时时间到,TF0置1,产生中断标志
		Tx^=1;
		TF0=0;
	}
	
	TR0 = 0;         //关闭定时器0计时
	TL0 = 0;		//设置定时初值0
	TH0 = 0;		//设置定时初值0
	TR0 = 1;        //开启定时器0计时
	
	while(Rx&&(~TF0));
	TR0 = 0;
	//等待接收方波信号,初值为0,定时器到65535时才会产生中断,这个时间很长,在这段时间内,TF0为0,所以在这段时间内,接收到信号,Rx置0,跳出循环,测出时间。
	if(TF0==1)
	{
		Dis=250;
		TF0=0;
	}
	else
	{
		Dis=(((TH0<<8) |TL0 )*0.017);//Dis=时间t*10^(-6)*340*10(-2)/2	
	}

return Dis;
}

 Dis=时间t*10^(-6)*340*10(-2)/2  算出来的单位是厘米。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值