[蓝桥杯国赛]超声波模块

基本原理

接线方式:
VCC、trig(控制端)、 echo(接收端)、 GND
trig - P10
echo - P11

基本工作原理:
(1)采用IO口TRIG触发测距,给至少10us的高电平信号;
(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;
(3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2;

本模块使用方法简单,一个控制口发一个10US以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,即可以达到你移动测量的值

补充

①接受到RX==1时候再计数器1计数和发送超声波后立即TR1=1计数的结果差别不大
②超声波部分用到了定时器1,
③定时器1不能打开ET1,中断允许位

不要记忆步骤,记忆思路然后需要用到什么功能再去补充。
方法如下:

写main函数
if(sonic_flag)		//①写中断函数
{
	sonic_flag=0;		//②定义标志位和TX/RX
	send_wave();		//③发送超声波
	TR1=1;
	while((RX==1) && (TF1==0));
	TR1=0;
	if(TF1==1)TF1=0;
	else
	{
		sonic_time=TH1;
		sonic_time <<= 8;
		sonic_time |= TL1;
		sonic_distance=(unsigned int)(sonic_time*0.018);//为什么是乘0.018
	}
	TL1=0;
	TH1=0;
	smg_distance[5]=smg_duan[sonic_distance/100];
	smg_distance[6]=smg_duan[sonic_distance%100/10];
	smg_distance[7]=smg_duan[sonic_distance%10];
}
①中断函数
void Timer0_Interrupt() interrupt 1  using 1                   
{
	static int key_count=0,smg_count=0,i=0,sonic_count=0;
	key_count++;smg_count++;sonic_count++;
	if(key_count==10)				//10ms interrupt1
	{
		key_count=0;
		key_flag=1;
	}

	if(smg_count==3)				//3ms interrupt1
	{
		smg_count=0;
		P2=0xc0;P0=0;P2=0;			
		P2=0xe0;P0=~smg_distance[i];P2=0;
		P2=0xc0;P0=smg_wei[i];P2=0;
		i++;
		if(i==8) i=0;
	}
	if(sonic_count==50)	//这一部分是本次写的
	{
		sonic_count=0;
		sonic_flag=1;
	}

}
②定义标志位和TX/RX
bit sonic_flag;
u16 sonic_distance,sonic_time;
③发送超声波
void send_wave(void)
{
	u8 i;
	for(i=0;i<2;i++)
	{
		TX=1;
		Delay12us();
		TX=0;
		Delay12us();
	}
}
④定时器1如何写

一定要写成12T模式而且不能打开ET1
超声波部分也就是只计时并不中断,所以不用打开ET1

void Timer1Init(void)		//1毫秒@11.0592MHz
{
	AUXR &= 0xBF;		//12T
	TMOD |= 0x00;		//设置定时器模式
	TL1 = 0;		//设置定时初值
	TH1 = 0;		//设置定时初值
	TF1 = 0;		//清除TF1标志
	TR1 = 0;		//定时器1开始计时
}

  • 13
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值