历史上的今天
今天是:2025年10月25日(星期六)
2022年10月25日 | 【51单片机STC89C52】HC-SR04超声波模块测距
2022-10-25 来源:csdn
一、HC-SR04超声波模块
1、简介
HC-SR04 超声波测距模块可提供 2cm-400cm的非接触式距离感测功能,测距精度可达高达3mm;模块包括超声波发射器、接收器与控制电路。
基本工作原理:
(1)采用 IO 口 TRIG 触发测距,给最少 10us 的高电平信呈。
(2)模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回;
(3)有信号返回,通过 IO 口 ECHO 输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2;
让它发送波:给Trig端口至少10us的高电平
开始发送波:Echo信号由低电平跳转到高电平
接收返回波:Echo信号由高电平跳转回低电平
计算时间 :Echo引脚维持高电平的时间!
开始发送波,启动定时器,接收到返回波,停止计时器
计算距离 :测试距离=(高电平时间*声速(340m/s))/2
接线参考:
TRIG—>P1.5
ECHO—>P1.6
2、超声波的时序图

二、定时器计算时间

将TH0和TL0拼接为16进制,需要将TH0左移8位
十进制2左移1位,变成20,相当于乘以10
二禁止1左移1位,变成10(2),相当于乘以2。左移8位,乘以2的8次方=256
//4. 计算时间
time = (TH0 * 256 + TL0)*1.085;//us为单位
三、编程实现
#include "reg52.h"
//距离小于10cm,D5亮,D6灭,反之相反现象
sbit D5 = P3^7;//根据原理图(电路图),设备变量led1指向P3组IO口的第7口
sbit D6 = P3^6;//根据原理图(电路图),设备变量led2指向P3组IO口的第6口
sbit Trig = P1^5;
sbit Echo = P1^6;
void Delay10us() //@11.0592MHz
{
unsigned char i;
i = 2;
while (--i);
}
void Time0Init()
{
TMOD &= 0xF0; //设置定时器模式
TMOD |= 0x01;
TH0 = 0;
TL0 = 0;
//设置定时器0工作模式1,初始值设定0开始数数,不着急启动定时器
}
/*
十进制2左移1位,变成20。相当于乘以10
二禁止1左移1位,变成10(2)。相当于乘以2,左移8位,乘以2的8次方=256;*/
void startHC()
{
Trig = 0;
Trig = 1;
Delay10us();
Trig = 0;
}
void main()
{
double time;
double dis;
Time0Init();
while(1){
//1. 让它发送波:给Trig端口至少10us的高电平
startHC();
//2. 开始发送波:Echo信号由低电平跳转到高电平
while(Echo == 0);
// 开始发送波,启动定时器
TR0 = 1;
//3. 接收返回波:Echo信号由高电平跳转回低电平
while(Echo == 1);
// 接收返回波,停止定时器
TR0 = 0;
//4. 计算时间
time = (TH0 * 256 + TL0)*1.085;//us为单位
//5. 距离 = 速度 (340m/s)* 时间/2
dis = time * 0.017;
if(dis < 10){
D5 = 0;
D6 = 1;
}else{
D5 = 1;
D6 = 0;
}
//定时器数据清零,以便下一次测距
TH0 = 0;
TL0 = 0;
}
}
史海拾趣
|
单片机与PC机通信 1 PC机编程 PC采用Toubr C 进行编写。程序如下: #include<stdio.h> #define port 0x3f8 ...… 查看全部问答> |
|
大家好!我想设计一个电路,可以产生两路同步的波形,还在波形产生到某个点的时候触发一个采集卡采集数据,请问我是用cpld,单片机,arm,fpga,dss,plc中的哪种?因为我要学会了才弄,希望大家给点意见。… 查看全部问答> |
|
哎,感觉wince驱动的效率也太低了。难道就没有效率高点的吗? 每次改个地方就要生成bin文件。太慢了。 另外问下。为什么我用VS2005生成的驱动dll文件,替换wince里的驱动dll文件,(通过修改驱动注册表里的dll加载目录)无法正常运行驱动。 但是 ...… 查看全部问答> |
|
我最近想做一个用两片595级联控制LED,单片机用STC89C52,中断用的是霍尔开关。。 硬件基本上是完成了,可是软件却不知道怎么下手,按自己的想法写了代码可是效果还是没有。。 希望各位高手能帮我一下,在线等~~ 先在这里感谢各位了。。 … 查看全部问答> |
|
TI(德州仪器)和利尔达联合推出“DSP,MSP430开发工具让利大酬宾” DSP开发工具史无前例的超低价热卖!----支持全系列的超低价革命! http://www.lierda.com/reward2/index.html 让利给工程师们,是我们的应该做的!因为是您们的耕耘和支持成就了我们! 另外TI(德州仪器)和利尔达联合推出“DSP,MSP430开发工 ...… 查看全部问答> |
|
昨天给客户发货的时候,碰掉了一片STM32F103ZET6 不小心把它的脚摔断了!倒霉啊,只有自己掏腰包赔啊,还有没有用啊,谁要是觉得有用送给你好了!QQ:744324742… 查看全部问答> |




