MCU Blue Bridge Cup - Ultrasónico

Inserte la descripción de la imagen aquí
P1 ^ 0 es el remitente, que se define como TX, y 1 es el envío.
P1 ^ 1 es el extremo receptor, que se define como RX, no se recibe 1 y no se recibe 0.
Después de transmitir la onda ultrasónica estableciendo TX en 1, y luego recibir la onda ultrasónica transmitida cuando RX se vuelve 0, la distancia se obtiene sustituyendo el tiempo consumido en la fórmula.

  • Transmisión ultrasónica
void Send_Ware()
{
    
    
  usnigned char i;
  for(i=0;i<8;i++)
  {
    
    
    TX = 1;
    Delay12us();//12MHZ,经过测试感觉12us效果挺不错 10us-13us都可以.
    RX = 0;
    Delay12us();
  }
}
  • Reconocimiento de recepción ultrasónica y cálculo de distancia.

En primer lugar, todavía tenemos que configurar el temporizador, necesitamos calcular el tiempo que tarda la onda ultrasónica en enviarse para recibir

void Timer1Init()//设置的定时器1
{
    
    
    AUXR &= 0xBF;//12T模式,似乎不设置AUXR默认也为12T	
	TMOD &= 0x0F;		
	TMOD |= 0x10; //打开定时器1的16位计数模式
	TH1 = 0;
	TL1 = 0;
	TF1 = 0;
}
因为不需要用到中断,所以暂时不打开

Aquí hay una referencia a void Send_Ware () // Definido antes

unsigned int distance;
void Ware_Dis()
{
    
    
  Send_Ware();
  TR1 = 1while(TF1 == 0&&RX == 1);//进行下一步只有两种情况,第一种就是接收到了超声波,即RX = 0,第二种就是计时器溢出,即TF1 = 0;
  TR0 = 0;
  if(TF1 == 1)
  TF1 = 0;
  if(RX == 0)
  {
    
    
    distance = TH1;
    distance = (distance<<8)|TL1;
    distance = (unsigned int)distance*0.017;//公式,可以推导
  }
  TH1 = TL1 = 0;
}

Simplemente muéstrelo de nuevo.

Supongo que te gusta

Origin blog.csdn.net/qq_52506984/article/details/115287042
Recomendado
Clasificación