51智能小车超声波测距
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智能小车超声波测距相关推荐
- STM32智能小车------超声波测距模块
文章目录 一.原理讲解 1.实物图 2.工作原理: 3.接线: 二.软件驱动代码 1.接口定义 2.驱动函数 总结 最终效果 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的普通大学生. 进 ...
- 51智能小车超声波避障
#include <REGX52.H> #include <intrins.h> #include <QXA51.H>sbit DU = P2^6;//数码管段选 ...
- 51智能小车(舵机、超声波、蓝牙)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.整体思路及器件 二.主要程序 1.自动避障函数 2.舵机超声波扫描函数 3.数据处理函数 4.超声波触发及超时处理 ...
- distance在函数 int_Arduino智能小车——超声波避障
Arduino智能小车--超声波避障 Arduino智能小车系列教程时空门: Arduino智能小车--拼装篇 点击跳转 Arduino智能小车--测试篇 点击跳转 Arduino智能小车--调速篇 ...
- Arduino智能小车——超声波避障
Arduino智能小车--超声波避障 Arduino智能小车系列教程时空门: Arduino智能小车--拼装篇 点击跳转 Arduino智能小车--测试篇 点击跳转 Arduino智能小车--调速篇 ...
- 利用51单片机+HC-SR04+51单片机制造超声波测距模块
利用HC-SR04和51单片机制造超声波测距模块 完整的项目链接: https://github.com/linxinloningg/51_chip_core.git 硬件电路分析: 1.HC-SR0 ...
- 基于51单片机HC-SR04超声波测距带温度补偿
基于51单片机HC-SR04超声波测距带温度补偿 1 开发环境 2 功能说明介绍 3 程序 3.1 工程文件 3.2 代码 4 原理图 5 元器件清单 6 PCB 7全部资料 1 开发环境 仿真图:p ...
- [博创智联]创新创客智能硬件平台——超声波测距传感器
[博创智联]创新创客智能硬件平台--超声波测距传感器 准备工作 测试环节 编译驱动和测试代码 加载驱动并执行代码 准备工作 烧录原版系统,供电.连接串口线,配置网络,挂载NFS共享,拷贝超声波测距传感 ...
- 51智能小车小车之蓝牙遥控(二)
当今世界,远距离遥控是最为实用,蓝牙远程操控是单片机入门的一项很不错的模块,不仅可以练习串口的使用 ,还能开发一些小东西,增加自信心,而且还非常简单. 我买的是汇承的HC-08的蓝牙模块,直接利用串口 ...
最新文章
- linux里面有mysql的僵尸进程_Linux的僵尸进程处理1
- CVPR2020 | 通过可微的代理投票损失进行6DoF对象位姿估计
- flask 渲染 vue 打包后的dist文件(直接用后端渲染)
- MyBatis框架使用(一)
- Office 2010的贴心功能:迷你翻译器
- mysql 注释写法有哪些_mysql的注释有几种写法?
- SAP License:SD和其他模块集成要点
- Java实现邮箱验发送证码、代码示例【qq邮箱】
- 随手一写,简单的四则运算练习
- 大数据shipin教程_尚硅谷大数据视频教程,粉丝众多,人手一套尚硅谷教程
- 百度贴吧安卓客户端网络通信行为分析
- PHP 中的 use function是什么意思
- java----判断闰年和平年
- 高品质后处理:十种图像模糊算法的总结与实现
- 从“穷逼VIP”论注释规范,你见过哪些奇葩的注释?
- SpringSecurity,jwt oathu sso,YeZiJie
- 【J2EE】J2EE简介
- 【数据结构】直接插入排序以及时间复杂度的分析
- pcie扰码的作用_物理层逻辑知识,关于扰码器需要遵循的规则
- Linux中常见软件安装方法及常见管理方法