蓝桥杯单片机超声波

1.编程思想:

(1)打开定时器开始定时

(2)发射超声波40KHz(每个电平维持100个NOP,一共8周期脉冲)

(3)检测是否有RX的情况,若RX == 0则接收到了反馈的波

(4)停止定时器,读时间

(5)计算距离

2.代码:

#include "ultrasonic.h"sbit TX = P1 ^ 0; // 发射引脚
sbit RX = P1 ^ 1; // 接收引脚void Timer0Init(void) // 定时长度12us		@12.000MHz
{AUXR &= 0x7F;TMOD &= 0xF0;TL0 = 0xF4;TH0 = 0xFF;TF0 = 0;TR0 = 0;//定时器0停止计时
}unsigned char Wave_Recv(void)
{unsigned char ucDist, ucNum = 10;TX = 0;TL0 = 0xF4;//设置定时初始值TH0 = 0xFF;//设置定时初始值TR0 = 1;//定时器0开始计时while(ucNum--){while(!TF0);清除TF0标志,TF0=0TX ^= 1;TF0 = 0;//清除TF0标志}TR0 = 0;//停止定时器TL0 = 0;//设置定时初始值TH0 = 0;//设置定时初始值TR0 = 1;//定时器0开始计时while(RX && !TF0);//等待收到脉冲TR0 = 0;//停止定时器if(TF0)//发生溢出{TF0 = 0;//清除TF0标志ucDist = 255;}elseucDist = ((TH0 << 8) + TL0) * 0.017;//计算距离单位为cm,时间单位为usreturn ucDist;
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部