HC-SR04超声波测距模块壳提供2cm-400cm的非接触式距离感测功能,测距精度可高达3mm,模块包括超声波发射器,接受器与控制电路。

基本工作原理

1采用IO口TRIG触发测距给至少10us的高电平信呈

2模块自动发送8个40hz的方波,自动检测是否有信号返回

3有信号返回,通过IO口ECHO输出一个高电平,高电平持续时间就是超声波从发射到返回的时间,测试距离=(高电平时间*声速(340/2))/2

这里运用了数码管,和超声波模块,所以分别对它们进行位定义。

在关于数码管的代码中有数码管段码表0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F,0x6F,0x40,0x00/*-*/,

#include <REGX52.H>
#include <intrins.h>
sbit RX= P2^0;
sbit TX= P2^1;
sbit DU=P2^6;//数码管选位
sbit WE=P2^7;//数码管选位
unsigned int time=0;
unsigned int timer=0;
unsigned char posit=0;
unsigned long S=0;
bit flag=0;
unsigned char const discode[] ={ 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F,0x6F,0x40,0x00/*-*/};
unsigned char const positon[4]={ 0xfe,0xfd,0xfb,0xf7};
unsigned char disbuff[4]       ={ 0,0,0,0,};void Display(void)              //扫描数码管{DU = 0;   if(posit==0){P0=(discode[disbuff[posit]]);}else{P0=discode[disbuff[posit]];}DU = 1;DU = 0;WE = 0;P0=positon[posit];WE=1;WE=0;if(++posit>=4)posit=0;}void Conut(void){time=TH0*256+TL0;TH0=0;TL0=0;S=(float)(time*1.085)*0.17;     //算出来是MMif((S>=7000)||flag==1) //超出测量范围显示“-”{  flag=0;disbuff[0]=10;       //“-”disbuff[1]=10;    //“-”disbuff[2]=10;    //“-”disbuff[3]=10;    //“-”}else{disbuff[0]=S/1000;disbuff[1]=S%1000/100;disbuff[2]=S%100/10;disbuff[3]=S%10;}}
/********************************************************/void zd0() interrupt 1         //T0中断用来计数器溢出,超过测距范围{flag=1;                           //中断溢出标志}
/********************************************************/void  zd3()  interrupt 3       //T1中断用来扫描数码管和计800MS启动模块{TH1=0xf8;TL1=0x30;Display();timer++;if(timer>=400){timer=0;TX=1;                            //800MS  启动一次模块_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_();TX=0;} }
/*********************************************************/void  main(  void  ){  TMOD=0x11;          //设T0,T1为方式1定时模式,GATE=1;TH0=0;TL0=0;          TH1=0xf8;           //2MS定时TL1=0x30;ET0=1;             //允许T0中断ET1=1;            //允许T1中断TR1=1;             //开启定时器1EA=1;              //开启总中断while(1){while(!RX);      //当RX(ECHO信号回响)为零时等待TR0=1;               //开启计数while(RX);            //当RX为1计数并等待TR0=0;             //关闭计数Conut();          //计算}}

51智能小车超声波测距相关推荐

  1. STM32智能小车------超声波测距模块

    文章目录 一.原理讲解 1.实物图 2.工作原理: 3.接线: 二.软件驱动代码 1.接口定义 2.驱动函数 总结 最终效果 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的普通大学生. 进 ...

  2. 51智能小车超声波避障

    #include <REGX52.H> #include <intrins.h> #include <QXA51.H>sbit DU = P2^6;//数码管段选 ...

  3. 51智能小车(舵机、超声波、蓝牙)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.整体思路及器件 二.主要程序 1.自动避障函数 2.舵机超声波扫描函数 3.数据处理函数 4.超声波触发及超时处理 ...

  4. distance在函数 int_Arduino智能小车——超声波避障

    Arduino智能小车--超声波避障 Arduino智能小车系列教程时空门: Arduino智能小车--拼装篇 点击跳转 Arduino智能小车--测试篇 点击跳转 Arduino智能小车--调速篇 ...

  5. Arduino智能小车——超声波避障

    Arduino智能小车--超声波避障 Arduino智能小车系列教程时空门: Arduino智能小车--拼装篇 点击跳转 Arduino智能小车--测试篇 点击跳转 Arduino智能小车--调速篇 ...

  6. 利用51单片机+HC-SR04+51单片机制造超声波测距模块

    利用HC-SR04和51单片机制造超声波测距模块 完整的项目链接: https://github.com/linxinloningg/51_chip_core.git 硬件电路分析: 1.HC-SR0 ...

  7. 基于51单片机HC-SR04超声波测距带温度补偿

    基于51单片机HC-SR04超声波测距带温度补偿 1 开发环境 2 功能说明介绍 3 程序 3.1 工程文件 3.2 代码 4 原理图 5 元器件清单 6 PCB 7全部资料 1 开发环境 仿真图:p ...

  8. [博创智联]创新创客智能硬件平台——超声波测距传感器

    [博创智联]创新创客智能硬件平台--超声波测距传感器 准备工作 测试环节 编译驱动和测试代码 加载驱动并执行代码 准备工作 烧录原版系统,供电.连接串口线,配置网络,挂载NFS共享,拷贝超声波测距传感 ...

  9. 51智能小车小车之蓝牙遥控(二)

    当今世界,远距离遥控是最为实用,蓝牙远程操控是单片机入门的一项很不错的模块,不仅可以练习串口的使用 ,还能开发一些小东西,增加自信心,而且还非常简单. 我买的是汇承的HC-08的蓝牙模块,直接利用串口 ...

最新文章

  1. linux里面有mysql的僵尸进程_Linux的僵尸进程处理1
  2. CVPR2020 | 通过可微的代理投票损失进行6DoF对象位姿估计
  3. flask 渲染 vue 打包后的dist文件(直接用后端渲染)
  4. MyBatis框架使用(一)
  5. Office 2010的贴心功能:迷你翻译器
  6. mysql 注释写法有哪些_mysql的注释有几种写法?
  7. SAP License:SD和其他模块集成要点
  8. Java实现邮箱验发送证码、代码示例【qq邮箱】
  9. 随手一写,简单的四则运算练习
  10. 大数据shipin教程_尚硅谷大数据视频教程,粉丝众多,人手一套尚硅谷教程
  11. 百度贴吧安卓客户端网络通信行为分析
  12. PHP 中的 use function是什么意思
  13. java----判断闰年和平年
  14. 高品质后处理:十种图像模糊算法的总结与实现
  15. 从“穷逼VIP”论注释规范,你见过哪些奇葩的注释?
  16. SpringSecurity,jwt oathu sso,YeZiJie
  17. 【J2EE】J2EE简介
  18. 【数据结构】直接插入排序以及时间复杂度的分析
  19. pcie扰码的作用_物理层逻辑知识,关于扰码器需要遵循的规则
  20. Linux中常见软件安装方法及常见管理方法

热门文章

  1. 有感于《华裔博士难找工作加拿大自杀 曾是湖北理科状元》
  2. path r'c test.html',rtorrent使用方法
  3. 交换两个变量的值的4种方法,你了解了吗?
  4. Hash 碰撞是什么?如何解决?
  5. 机器学习(一)---KNN算法总结(手写体识别)
  6. 【咸鱼教程】Base64
  7. adb.exe无法运行,提示0xc000007b错误
  8. 微生物全基因组测序分子分型技术在食源性疾病中的应用
  9. 旅游市场火热,翔云人工智能平台助你快速解决发票问题
  10. C语言—选择结构总结