MSP430下超声波测距模块DYP-ME007技术与应用.pdfVIP

  • 0
  • 0
  • 约1.43千字
  • 约 2页
  • 2026-02-12 发布于北京
  • 举报

MSP430下超声波测距模块DYP-ME007技术与应用.pdf

这个模块叫DYP-ME007,一块红色的电路板,引出五个引脚,显得活泼时尚。阅读其技

术资料,发现真是简介明了

VCC引脚要求接5v,不够5v经验证不能正常工作..TRIG引脚用来主机发出10us的高电

平,以驱动模块发出超声波,超声波经过反射接受,模块自动处理,在ECHO引脚

输出一个脉宽和距离成正比的PWM信号.OUT引脚悬空..不知道是用来做什么的...按理

说可以检测发出时间和受到波形的时间,然后用声速来计算距离..但是在试验中却发现

这个时间几乎是不变的..不知道为什么..大家一起研究哈..

因为在做只能家居,可能各种计时器用的多,所以在这里写了一个不用计时器的.占

用两个io口.

#includemsp430x14x.h

inttemp[2],check;

intmain(void)

{

inti;

WDTCTL=WDTPW+WDTHOLD;

P2DIR|=0xff;

P2OUT=~BIT1;

P2DIR=~BIT2;

_DINT();

BCSCTL1=~XT2OFF;//采用xt2高频晶振

do

{

IFG1=~OFIFG;

for(i=0xff;i0;i--);

}

while(IFG1OFIFG);

_EINT();

BCSCTL2|=SELM_2+SELS+DIVS_3;//mclk与smclk选择高频

TACTL|=TASSEL_2;//ta选择smclk8分频

TACTL|=MC_1;

CCR0=10;

//时钟选择高频的可以提高精度

P2OUT|=BIT1;

while(!TACTLBIT0);

TACTL=~(TAIFG+MC_1);

P2OUT=~BIT1;//发送完成10us的

//10us驱动信号

TACTL|=MC_2;//增计数模式

while(!(P2INBIT2));//此处千万注意,!P2INBIT2与!(P2INBIT2)的区别...运算符的

优先级问题.要不你一辈子调不成功的

TACTL=~MC_2;//收到了ECHO信号,先停止时钟,再读TAR

temp[0]=TAR;

if(TAR10)//经过试验如果收不到ECHO信号,会瞬间返回一个然后持续一个相

对的

{//所以用if判断使程序不进入死循环

TACTL|=MC_2;

while(P2INBIT2);

TACTL=~MC_2;

temp[1]=TAR;//记录结束时的TAR

check=temp[1]-temp[0];//在此处设置断点以观察结果

}

}

这个程序还可以通过P2中断来写,以节省功耗,不过过程中,可能会有延迟...

同样可以用计时器的捕获模式来做,这里P2.1作为了TRIG,P2.2作为了ECHO

文档评论(0)

1亿VIP精品文档

相关文档