- 0
- 0
- 约1.43千字
- 约 2页
- 2026-02-12 发布于北京
- 举报
这个模块叫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
您可能关注的文档
最近下载
- 《毛选》读后感打印版.pdf VIP
- 自动水平缠绕机装置设计--毕业论文设计.doc VIP
- 南京医科大学《马哲》1中国马克思主义与当代3.ppt VIP
- 2024年新教科版五年级下册科学全册精编知识点(超全).doc VIP
- 2023机电工程装配式支吊架安装及验收规程.docx VIP
- 课件:直升机基本维护擦洗和润滑保养工作课件讲解.pptx VIP
- 新材料科学与技术产业领域研究与应用的合作模式与合作机制.pptx VIP
- 2025年新洋丰肥业万新型复合肥陶赖昭工业园化工业园新洋丰环评报告.docx VIP
- 肾盂输尿管连接部梗阻护理常规及健康教育.docx VIP
- 2025年安全工器具管理规定.docx VIP
原创力文档

文档评论(0)