DYP-ME007使用

2019-07-15 22:51发布

   谁知道DYP-ME007怎么使用,用AVR128单片机控制,进行避障没有任何效果,下面是用来测试流水灯的程序,大神们帮忙改正一下,多谢!!!!!!
#include<iom128v.h>
#include<macros.h>

#define uint unsigned int
#define uchar unsigned char

#define ctl_007_PORT PORTC
#define ctl_007_DDR  DDRC
//控制端口

#define data_007_PORT PORTE
#define data_007_DDR  DDRE
//数据端口

#define ctl_007_Trig    PC0
#define ctl_007_Echo    PD0

#define Echo_L   ctl_007_PORT&=~BIT(ctl_007_Echo);
#define Echo_H   ctl_007_PORT|=BIT(ctl_007_Echo);

#define Trig_L   ctl_007_PORT&=~BIT(ctl_007_Trig);
#define Trig_H   ctl_007_PORT|=BIT(ctl_007_Trig);

#define Echo_IS_LOW  (PIND & 0xFF)
#define Echo_IS_HIGH (PIND & 0xFF)

#pragma interrupt_handler timer3_ovf:30

void delay_ms(uint ms)
{
   uint i;
   for(ms=0;ms>0;ms--)
    {
          for(i=0;i<1141;i++)
                  _NOP();
                  _NOP();
                  _NOP();
                  _NOP();
                  _NOP();
        }

}

void delay_us(uint us)
{
    uint i;
        for(us=0;us>0;us--)
        {   
                _NOP();
        }
}

void init_007()
{
        DDRC=0XFF;   //端口输出
       
        DDRD=0X00;
        PORTD=0X00;  //端口输入
               
        Trig_H;     //触发探测                       
        delay_ms(20);        //产生10us的触发信号
        Trig_L;
               
    Echo_L         //将 ECHO 口置为低
}

int timer3_ovf()
{
         TCCR3B = 0X00; //关闭定时器 3
         TCNT3H = 0x00;
         TCNT3L = 0x00;
}

int bizhang()
{       
     uint temp = 0;
         init_007();
         timer3_ovf();
          
         while(Echo_IS_LOW);               //若检测为低电平则等待,高电平说明有障碍物             
         
         TCCR3B = 0X02;                       //8分频,启动定时器 3       
         TIMSK|=BIT(2);
         SREG|=BIT(7);
         while(Echo_IS_HIGH)
         {
                temp = TCNT1H;
                temp <<= 8;
                temp += TCNT1L;
                  if( temp > 2900 )          //大于0.5米的距离,继续前进
                {
                    return 0;              //继续前进
                }
                else
                 {
                    TCCR3B = 0X00;         //关闭定时器 3
                return 1;              //小于0.5米距离,小车右转
            }
               
         }
}

int main()
{
       uint temp;
        bizhang();
        switch(temp)
          {
               case 0:PORTD=~BIT(1);break;
                case 1:PORTD=~BIT(2);break;
          }
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。