1. 模块(OUT脚不知有什么用)

2. 工作原理

3. 时序图

4. 计算公式

5. 51测试源码,串口显示

/**********************************************************************************
* 功能:HY-SRF05超声波测距模块测试,通过串口打印
* 处理器:STC89C52RC
* 晶振:11.0592
* 编译环境:Keil uVision4
* 时间:2015-12-10
* 作者:ly
* 备注:Trig  ---  P1_0
*       Echo  ---  外部中断0(P3_2)
*       OUT   ---
*       Vcc   ---  VCC
*       GND   ---  GND
**********************************************************************************/
#include <reg52.h>
#include <stdio.h>      //sprintf
#include <string.h>     //strlen
#include <intrins.h>    //_nop_ #define uint  unsigned int
#define uchar unsigned charsbit TX   = P3^1;
sbit Trig = P1^0;int   time;     //计算回响信号脉冲宽度/******************************  初始化函数 *****************************************/
//外部中断0初始化(P3_2)
void int0_init(void)
{IE0 = 0;  //外部中断0标志位清0IT0 = 1;  //外部中断0下降沿触发EX0 = 1;  //外部中断0允许
}
//定时器0初始化
void time0_init(void)
{TMOD |= 0x09;  //0000 1001: GATE门控开,只有 TRx==1 && INTx==1 才可启动T0,T0定时方式1(16位)TH0 = 0;  TL0 = 0;TF0 = 0;  //T0标志位清0 ET0 = 1;  //T0中断允许TR0 = 1;  //T0工作允许
}
//串口初始化
void uart_init(void)
{SCON = 0x40;    //0100 0000:串行方式1TMOD |= 0x20;   //T1定时方式2(8位自动装入)TH1 = 0xFD;  TL1 = 0xFD;  //波特率:9600    ES = 0;         //串口中断禁止TR1 = 1;        //T1启动
}
void init(void)
{EA = 0;  //总中断禁止Trig = 0;uart_init();time0_init();int0_init();EA = 1;  //总中断允许
}
/************************************************************************************/void delay15us(void)
{_nop_();  _nop_();  _nop_();_nop_();  _nop_();  _nop_();_nop_();  _nop_();  _nop_();_nop_();  _nop_();  _nop_();_nop_();  _nop_();  _nop_();
}
void delay15ms(void)
{   int i;for (i = 0; i < 1000; i++)delay15us();
}
void uart_send_char(uchar ch)  //串口发送一个Byte
{SBUF = ch;while (!TI);TI = 0;
}
void uart_send_string(uchar str[], uint len)  //串口发送字符串
{int i;for (i = 0; i < len; i++)uart_send_char(str[i]);
}/* 主函数 */
void main(void)
{int i;float distance;     //距离uchar display[20];  //串口显示距离init();while (1){//建议测量周期60ms以上,以防止发射信号对回响信号的影响for (i = 0; i < 4; i++)delay15ms();//发送触发信号(10us以上TTL脉冲),如果检测到回响,Echo(P3^2)将拉高,则T0开始计时Trig = 1;delay15us();Trig = 0;//等待Echo(P3^2)下降沿到来(回响信号脉冲)触发外部中断   time = 0;  i = 0;while (time==0 && i<=65536)  //直到time被中断计算出时间或者被标记计时溢出或者i超时i++;  //防止死循环if (i > 65536)  //一直监测不到回响,Echo(P3^2)没有拉高,超时{uart_send_string("time out", 8);uart_send_char(0x0A);  //换行/新行uart_send_char(0x0D);  //回车continue;}if (time == -1)  //计时溢出{uart_send_string("T0 overflow", 11);uart_send_char(0x0A);  //换行/新行uart_send_char(0x0D);  //回车}else{distance = time / 58.0;  //公式:uS / 58 = 厘米sprintf(display, "%f CM", distance);uart_send_string(display, strlen(display));uart_send_char(0x0A);  //换行/新行uart_send_char(0x0D);  //回车}}
}/***************************  中断处理 ******************************/
// 外部中断0处理
void int0() interrupt 0
{EA = 0;  //总中断禁止time = TH0 * 256 + TL0;  //回响时间TH0 = 0;  TL0 = 0;EA = 1;  //总中断允许
}
// 定时器0中断处理
void time0() interrupt 1
{//进入到这里,说明计时溢出EA = 0;  //总中断禁止TH0 = 0;  TL0 = 0;time = -1;EA = 1;  //总中断允许
}
/********************************************************************/

6. 结果(串口助手之类软件)

HY-SRF05超声波测距相关推荐

  1. arduino UNO 与 超声波测距模块 实验详情

    US-015 超声波测距模块 超声波传感器 US-020升级版 送全套资料 资料下载地址:http://pan.baidu.com/s/1c0AfkIG US-015超声波测距模块 1. 概述 US- ...

  2. 超声波测距测速升压可调中周倒车雷达变频器传感器1:10

    简 介: 通过对于是用于超声波测速变压器的基本分析,为后面构成150kHz 放大节能信标组的感应信号打下基础. 关键词: 中周,电压器,超声波 ▌01 中周变压器   购买到这个周中变压器主要是为了构 ...

  3. 【 FPGA 】超声波测距小实验(一)

    超声波测距原理: 超声波测距原理是在超声波发射装置发出超声波,它的根据是接收器接到超声波时的时间差,与雷达测距原理相似. 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播 ...

  4. 51单片机c语言测距,求助 关于C51单片机超声波测距 C语言程序设计 高手帮帮忙...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 C51编程:超声波测距程序(附图) [请帮助] 2006-9-30 18:44:03 #include #define k1 P3_4 #define c ...

  5. Arduino的光敏传感器和超声波测距传感器测试代码

    光敏传感器测试代码 使用的是一个未知名4pin模块, 4pin依次为Vcc, Gnd, DO, AO, 板载一个可调电阻以及一个LED, 调节电阻大小, 可以控制LED亮灭和DO输出变化对光亮的灵敏度 ...

  6. arduino 超声波测距原理_超声波测距灯

    介绍硬件准备 本篇文章专门介绍用Arduino制作超声波测距灯,需要的材料是: 1. Arduino开发板 2. HC-SR04超声波模块 3. LED灯 4. 杜邦线若干 注意事项   之所以要写这 ...

  7. stm32超声波测距代码_超声波模块另类用法,悬浮,你也能做到

    今天,给大家介绍一个 「超酷的DIY声波悬浮」研究项目. 虽然超声波悬浮,不能像磁悬浮那样悬浮比较重的物品.不过能把小泡沫球.水滴或者蚂蚁这样的小物体悬浮起来也是很有意思的. 制作这样一个简易的超声波 ...

  8. 通过串口打印--超声波测距模块测得距离

    通过串口打印--超声波测距模块测得距离 原理 超声波测距模块 串口传输 实战代码 原理 超声波测距模块 在这里首先需要了解超声波测距模块的原理.在我的这篇博客有很多介绍.超声波模块介绍 串口传输 串口 ...

  9. 利用LCD1602显示超声波测距

    利用LCD1602显示超声波测距 介绍 一.需要的器件 二.原理 工程代码 一. LCD1602 二.超声波测距及主程序 运行图 介绍 一.需要的器件 51单片机:任意一款都可以,我这里使用的是STC ...

  10. 探测距离机器人模型:通过超声波测距控制舵机转向,LED灯,语音播放,蜂鸣器(米思齐mixly,arduino)

    ** ------------探测距离机器人模型:通过超声波测距控制舵机转向,LED灯,语音播放,蜂鸣器(米思齐mixly,arduino) 一. 初始化设置 在初始化这里要先设置波特率.并且把初始超 ...

最新文章

  1. 32位处理器是什么意思
  2. Handle table中CAS操作与A-B-A Problem解析
  3. Python_序列对象内置方法详解_String
  4. 2013.5.21号面试心得
  5. 【精选】Nginx模块Lua-Nginx-Module学习笔记(一)Nginx Lua API 接口详解
  6. 输入两个链表,找出它们的第一个公共结点
  7. 如何防止IDEA 每次启动javaWEB项目都自动打开浏览器标签页
  8. Android设为系统默认的短信应用
  9. 循环神经网络-Recurrent Neural Networks
  10. 湘潭大学计算机网络试卷答案,湘潭大学计算机网络试卷
  11. 天天生鲜Django项目
  12. 点击上下左右按钮让背景上下左右移动
  13. 台湾大学林轩田机器学习技法课程学习笔记14 -- Radial Basis Function Network
  14. oracle查询是否包含英文字符串,oracle字符串载取及判断是否包含指定字符串
  15. OpenCV角点检测源代码分析(Harris和ShiTomasi角点)
  16. 机器视觉_HALCON_示例实践_1.检测圆形
  17. pbl和sbl_探讨:PBL教学法
  18. python 城市代号数据的保存及读取
  19. Delphi Web前端开发教程(9):基于TMS WEB Core框架
  20. d3dcompiler_47.dll缺失怎么修复

热门文章

  1. Linux网络服务之常规vsFTP服务配置(超级详细图解一步骤一图)
  2. 生产中使用ssh-copy-id复制公钥到多台服务器
  3. 远程访问openwrt路由器+配置动态DNS
  4. 软考试题中经常混淆的概念
  5. android11下文件管理,华为文件管理器下载-华为文件管理器 安卓版v10.11.11.301-PC6安卓网...
  6. halcon例程学习笔记(11) 一维码、二维码识别
  7. 如何分析留存率?(案例:留存率堆积直方图+留存率下降分析)
  8. 三进制 四进制计算机原理,三进制计算机(中国三进制计算机)
  9. 利用akshare读取50EFF期权1
  10. EFF称强行删除代码侵犯人权