【1】基本原理

超声波发射模块向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时

【2】计算公式

距离 = 声速 × 发出超声波到接收返回的时间/2

因为超声波在空气中的传播速度受温度影响。声波在空气中的传播速度温度的关系是:

在20摄氏度时,声速V = 332 + 0.607t  (m/s)

利用超声波进行距离测量,要求精度一般都不高,取20摄氏度时候的声速344M/S进行计算,再进行适当的补偿就可以。所以,其计算公式为:距离L = 344M/S * T / 2 = 172M/S * T

【3】实现步骤

1-产生8个40KHz的超声波信号,通过TX引脚发射出去。

  2-启动定时器,计算计数脉冲。

  3-等待超声波信号返回,如果接收到反射回来的信号,RX引脚变为低电平。

  4-停止定时器,读取脉冲个数,即获得时间T。

  5-根据公式,L = V * T /2m,进行距离的计算。

【4】蓝桥杯训练样例

在蓝桥杯“单片机设计与开发”比赛中,超声波测距是一直以来都是国赛中重要的考点,几乎每届必考。虽然省赛还没有考过,但也不能排除以后不考哦。很多同学会觉得超声波测距很难,原因有二,一是它和其他的外设模块不同,没有底层驱动代码提供;二是同学们不了解其工作原理与实现步骤。其实,超声波测距一点都不难,希望小蜜蜂老师的文章能够帮到你。

在蓝桥杯单片机的竞赛综合平台CT107D中,超声波模块的TX引脚接到单片机的P1.0端口RX引脚接到单片机的P1.1端口。设计程序,进行超声波测距,最大测量范围约140cm。测量结果用cm作为显示单位,显示在数码管的最右边三位。如果测量距离超出范围,则以“F”作为标志,显示在数码管的最左边一位。

【5】参考源码共享

#include "reg52.h"
#include "absacc.h"
#include "intrins.h"sbit TX = P1^0;
sbit RX = P1^1;unsigned int distance = 0;unsigned char code SMG_duanma[18]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,0xbf,0x7f};void DelaySMG(unsigned int t)
{while(t--);
}void DisplaySMG_Bit(unsigned char pos, unsigned char value)
{XBYTE[0xE000] = 0xFF;XBYTE[0xC000] = 0x01 << pos;XBYTE[0xE000] = value;
}void Display_Distance()
{if(distance == 999){DisplaySMG_Bit(0, SMG_duanma[15]);           //超出测量范围标志:FDelaySMG(500);}else{DisplaySMG_Bit(5, SMG_duanma[distance / 100]);DelaySMG(500);DisplaySMG_Bit(6, SMG_duanma[(distance % 100) / 10]);DelaySMG(500);DisplaySMG_Bit(7, SMG_duanma[distance % 10]);DelaySMG(500);}
}void Delay12us()                  //@12.000MHz 延时12us
{unsigned char i;_nop_();_nop_();i = 33;while (--i);
}void Send_Wave()                 //产生8个40KHx超声波信号
{unsigned char i;for(i = 0; i < 8; i++){TX = 1;Delay12us();  TX = 0;Delay12us();}
}void Measure_Distance()            //超声波测距
{unsigned int time = 0;TMOD &= 0x0f;              //定时器1模式0,13位,最大8192个计数脉冲                             TL1 = 0x00;                                        TH1 = 0x00;        Send_Wave();                //发送超声波信号                           TR1 = 1;            //启动定时器                        while((RX == 1) && (TF1 == 0));    //等待超声波信号返回或者等到测量超出范围TR1 = 0;            //停止定时器                if(TF1 == 0)              //正常测量范围                            {time = TH1;                                   time = (time << 8) | TL1;        distance = ((time / 10) * 17) / 100 + 3;}else                        //超出测量范围         {TF1 = 0;distance = 999;}
}void Delay(unsigned char n)        //数码管显示增强
{while(n--){Display_Distance();}
}void main()
{while(1){Measure_Distance();Delay(10);}
}

【6】更多干货请关注公众号

【蓝桥杯单片机进阶强化-06】超声波测距的基本原理与实现相关推荐

  1. 【蓝桥杯单片机进阶强化-04】PCF8591与24C02综合应用-智能照明自动控制器

    [1]题目要求 在蓝桥杯大赛"单片机设计与开发"的在CT107D综合训练平台上,利用竞赛提供的IIC底层驱动代码,设计程序,实现以下的功能: 1- 系统上电后,通过采样PCF859 ...

  2. 蓝桥杯单片机必备知识-----(9)超声波测距

    蓝桥杯单片机必备知识-----(9)超声波测距 超声波测距原理: 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立 ...

  3. 【蓝桥杯单片机进阶强化02】24C02存储器的基本原理与应用

    [蓝桥杯单片机进阶强化02]24C02存储器的基本原理与应用 内容来自B站小蜜蜂老师 一.24C02基础介绍 1.1 AT24C02功能概述 24C02是一个2K Bit的串行EEPROM存储器,内部 ...

  4. 【蓝桥杯单片机进阶强化-03】24C02存储器的基本原理与应用

    [1]24C02功能概述 24C02是一个2K Bit的串行EEPROM存储器,内部含有256个字节.在24C02里面有一个8字节的页写缓冲器.该设备的工作电压为1.8V到6.0V,芯片的第7引脚WP ...

  5. 蓝桥杯单片机设计与开发⑫ ---超声波模块

    一.基本原理 超声波发射模块向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时. 二.计算公式 距离 = 声速 × 发 ...

  6. 蓝桥杯单片机进阶模块--NE555

    在使用NE555模块时,NE555是不需要驱动程序的,NE555提供一个接口就是P3^4接口,当然这个接口不是默认连接的,需要将J3用跳线帽将P3^4和SIGNAL连接起来,我们可以看到P3^4是作为 ...

  7. 蓝桥杯单片机 | 特训案例【进阶06】基于PCF8591的DAC模拟电压输出

    [1]题目要求 新建工程,以I/O模式编写代码,在CT107D单片机综合训练平台上,实现以下功能: 1.将IIC总线的底层驱动代码文件正确移植到工程中. 2.将J5配置BTN模式,把S4设置为独立按键 ...

  8. 蓝桥杯单片机 | 特训案例【进阶03】24C02的基本读写操作

    [1]题目要求 新建工程,以I/O模式编写代码,在CT107D单片机综合训练平台上,实现以下功能: 1.将IIC总线的底层驱动代码文件正确移植到工程中. 2.系统上电后,从24C04存储器的0x01. ...

  9. 蓝桥杯单片机组——榨干选手资源包(芯片数据手册)

    文章目录 前言 DS18B20 原理图 1-Wire协议简介 赛场技巧 DS1302 原理图 SPI协议简介 赛场技巧 AT24C02 原理图 IIC协议简介 赛场技巧 PCF8591 原理图 赛场技 ...

最新文章

  1. devstack —— 单机部署 OpenStack 体验
  2. 大话设计模式—模板方法模式
  3. 大话数据结构13:二叉树 数组存储
  4. tornado学习笔记day02-进阶与提升
  5. 一名不加班的运维,怎能不会善待混合云容器
  6. 好看好用的字体软件-字体下载大全提供下载
  7. 《SegStereo: Exploiting Semantic Information for Disparity Estimation》
  8. 如何使用GOOGLE高级搜索技巧
  9. Apache Hadoop大数据集群及相关生态组件安装
  10. ​mac安装CentOS虚拟机
  11. 哪里可以买到苹果手机原装电池?
  12. SQL Server 数据库之身份验证和访问控制
  13. JS--JS运行三部曲--渡一教育(视频笔记)
  14. 电脑键盘各键名称及功能是什么
  15. 二维码解码程序的两大难点问题
  16. PDF合并:如何将两个PDF文件合并成一个PDF文件
  17. 更改office 365所有用户登录密码
  18. Minecraft Fabric 教程 #8 添加附魔书
  19. OpenGL学习脚印: 绘制一个三角形
  20. 软件输入中文出现乱码

热门文章

  1. 不等式约束问题-KKT条件 (1)
  2. phpexcel 读取数据
  3. 本科计算机辅导,计算机及应用自考本科辅导
  4. jzoj4271. 【NOIP2015模拟10.27】魔法阵
  5. 数字和字符的对照关系表(编码表)
  6. python编程猫下载_【编程猫软件下载】编程猫客户端 V1.6.5 电脑版-开心电玩
  7. Storm学习入门视频教程
  8. C++程序员发展方向有哪些?
  9. CLH、MCS锁的原理及实现
  10. 利用python制作几个简单的游戏