超声波模块的调试——该碰到的都碰到了超声波模块的调试——该碰到的都碰到了
原文来自:牛奶动力博客 www.milk-power.com
接着上一篇《超声波工作原理》开讲。
由于项目需要,我们并没有使用超声波测量距离的功能,我们只用来判断是否有障碍物。另外,我们只让超声波检测1.5米范围内是否有障碍物,超出1.5米之外,全部要忽略掉。因此我编写的程序可能和大家不太一样。
我使用12Mhz的晶振,机器周期为1us,即定时器每次加1用1us时间。1.5米的距离,超声波来回一次走3米,3m/340米每秒 = 8823us,就是说,如果经...
超声波模块的调试——该碰到的都碰到了
原文来自:牛奶动力博客 www.milk-power.com
接着上一篇《超声波
》开讲。
由于项目需要,我们并没有使用超声波测量距离的功能,我们只用来判断是否有障碍物。另外,我们只让超声波检测1.5米范围内是否有障碍物,超出1.5米之外,全部要忽略掉。因此我编写的程序可能和大家不太一样。
我使用12Mhz的晶振,机器周期为1us,即定时器每次加1用1us时间。1.5米的距离,超声波来回一次走3米,3m/340米每秒 = 8823us,就是说,如果经过8823us后,还没有收到回响信号,说明距离已经超出了1.5米,我直接丢弃,并警告距离超出1.5米。这样,定时器的初始值可以设置为(65536 - 8823us)。那么怎么判断是否溢出呢?我使用TF0来做。程序如下,其中P1.7 、P0.7、P3.7是测试用的脚,可忽略,硬件链接为:
Trig -->P1.0
Echo-->P3.2
VCC -->VCC
GND -->GND
还有一个脚空着。
/*======超声波控制线=====*/
Trig BIT P1.0 //发射端,高电平有效
Echo BIT P3.2 //接收端,探测高脉冲有效,高脉冲持续时间,与距离成正比
//OUT BIT
ORG 0000H
AJMP CSB
ORG 0003H
AJMP INTT0
ORG 0100H
CSB: SETB EA /*首先开启总中断 */
SETB EX0 /*开启外部中断 0 */
SETB IT0 /* 设置成 下降沿触发方式*/
MOV TMOD,#01H
MOV TH0,#0DDH
MOV TL0,#89H
CLR P1.7
CLR Echo
SETB Trig
LCALL DELAY_10us
CLR Trig
/*==============END=====================*/
WAITE_1:NOP
JNB Echo,WAITE_1 //检测高电平出现,启动定时
SETB TR0
CLR P0.7
LCALL DELAY_1
SETB P0.7
LJMP CSB
/*==============外部中断0=====================*/
INTT0: CLR EA
CLR TR0
JNB TF0,NEXT1
CLR TF0
LJMP BACK
NEXT1: CLR P3.7
LCALL DELAY_1
SETB P3.7
//SETB EA
BACK: RETI
/*====延迟1s子程序====*/
DELAY_1:
MOV R0,#100
DEL2: MOV R1,#10
DEL1: MOV R2,#7DH
DEL0: NOP
NOP
DJNZ R2,DEL0
DJNZ R1,DEL1
DJNZ R0,DEL2
RET
/*====延迟10us子程序====*/
DELAY_10us:
MOV R0,#10
DEL3: NOP
DJNZ R0,DEL3
RET
END
本文档为【超声波模块的调试——该碰到的都碰到了】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。