超声波模块在日常很多地方都有使用到,它的原理是根据发出声波,接收返回的声波的时间来判断此时物体的距离,我们通常可以超声波来进行测距。
1、利用定时器来计算时间
我们利用定时器0的模式1:16位定时器来作为我们的时间计算。此时TMOD要设置为0x01
注意:如果是波特率为9600的时候,要注意此时有用到定时器1,如果要和超声波一起使用,最后使用移步来配置寄存器,直接赋值会将TMOD的值变化。
超声波初始化:
void chaoshenbo_init(){ //超声波初始化
TMOD |=0X01;
TH0=0;
TL0=0;
}
2、计算声波发出到接收声波的时间
超声波模块上有四个引脚,分别为VCC、GND、Echo、Trig,当给Trig一个脉冲后,Echo会发出声波,此时Echo会被拉高,当接收到返回的声波时候,Echo被拉低,所以我们可以根据Echo的变化来计算时间。
void chaoshenbo_start(){ //超声波发出声波
Trig=0;
Trig=1;
delay(200);
Trig=0;
}
float chaoshenbo_getone(){ //超声波计时,返回值为float型
chaoshenbo_start();
while(!Echo);
TR0=1; //开启定时器
while(Echo);
TR0=0; //关闭定时器
return chaoshenbo_getdis();
}
</