微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > DYP-ME007使用

DYP-ME007使用

时间:10-02 整理:3721RD 点击:
   谁知道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;
          }
}

我也看不懂啊

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top