打印

DYP-ME007使用

[复制链接]
1315|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xsqxiong|  楼主 | 2013-8-23 08:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
谁知道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;
          }
}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝