云计算百科
云计算领域专业知识百科平台

蓝桥杯单片机组底层模块解读

(一)、超声波

1、原理(图 一)

      发送信号阶段:单片机通过翻转发送的引脚P1^0,发送8个40MHZ的方波,此时开始计时。

      等待接收信号:通过单片机的接收引脚P1^1检测,未接收到信号时,引脚处于高电平1;接收到信号时,引脚处于低电平0,此时停止计时。如果距离过远的话,定时器会超出计时的范围,数据溢出,成为一个无效的数据。

       计算距离:我们通过计算发送与接收之间的时间间隔,再利用数学公式Distance=v * t/2 (v代表声速340m/s ,v*t代表来回的距离,除2后就是要测量的距离),注意此时我们的单位是cm,而且测量的t单位为us,所以还需Distance还需 *103*10-6,换算成最终公式Distance = 0.017 * t (单位cm)

                        图 一 单片机超声波原理

  

2、代码解读

图 二 前置工作:开始需要引用头文件,_nop()函数需要定义INTRINS.h,要生成40MHZ方波,通过计算可知周期为25us。注意此时i = 33可以进行少许修改33-37都可以试试,哪个数据更加稳定就用哪个。

                  图 二 超声波代码解读(前置阶段)

                        

图 三 初始化工作:产生8个40MHZ方波,方波占空比为50%,占空比是高电平在一个周期中所占时间比,因此可以先拉高引脚,12us后再拉低引脚。stc-isp无法生成12.5us精度的延时,所以可以通过现象试一试12us、13us哪一个更适合。

                 图 三 超声波代码解读(初始化阶段)

     图 四做完准备工作后,就可以开始写测距的函数啦,这里我们用PCA计数器来计时。51单片机本身计时器比较少,定时器0需要用于显示功能扫描,定时器可能用于NE555频率获取,定时器2一般用于串口,当然,超声波也可以用定时器1。CMOD=0x00就是初始化PCA计数器,CL = CH = 0就是让它高八位与低八位为0。

                 图 四 超声波代码解读(测距阶段)

 

 

赞(0)
未经允许不得转载:网硕互联帮助中心 » 蓝桥杯单片机组底层模块解读
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!