Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基于单片机设计的超声波测距仪(采用HC-SR04模块)

基于单片机设计的超声波测距仪(采用HC-SR04模块)

作者头像
DS小龙哥
发布于 2023-11-28 04:56:28
发布于 2023-11-28 04:56:28
96802
代码可运行
举报
运行总次数:2
代码可运行

一、前言

本项目是基于单片机设计的超声波测距仪,主要采用了STC89C52单片机和HC-SR04超声波测距模块。通过LCD1602液晶显示屏来展示测量的距离信息。

超声波测距技术是一种常见的非接触式测距方法,利用超声波的传播速度测量物体与测距器之间的距离。它具有测量范围广、精度高、反应迅速等特点,在自动控制、机器人导航、无人驾驶等领域得到广泛应用。

本项目选用了STC89C52作为主控芯片,它是一款常见且功能强大的8051系列单片机,具有较强的计算和控制能力,适合用于各种嵌入式系统设计。

同时,采用了HC-SR04超声波测距模块作为测距模块。HC-SR04模块能够向前发射超声波信号,并接收回波信号,通过测量发射到接收之间的时间差来计算出距离。

通过STC89C52单片机与HC-SR04超声波测距模块的连接和控制,可以实时获取测得的距离,并通过LCD1602液晶显示屏进行显示。LCD1602液晶显示屏具有简单、直观、易于读取的优点,可以方便地展示测量的距离信息。

本项目目的是设计一款简单而实用的超声波测距仪,为用户提供准确、可靠的距离测量功能,以满足不同领域对测距需求的应用。

二、项目设计思路

2.1 硬件设计

本项目的硬件设计思路主要包括以下几个方面:主控芯片选择、超声波测距模块选择、电源设计与连接方式。

(1)主控芯片选择:在本项目中,选用STC89C52单片机作为主控芯片。STC89C52是一款基于8051架构的单片机,具有丰富的外设资源和强大的计算能力,适合用于嵌入式系统设计。

(2)超声波测距模块选择:在本项目中,选用HC-SR04超声波测距模块作为测距模块。HC-SR04模块具有发送超声波信号和接收回波信号的功能,能够准确测量物体与测距器之间的距离。

(3)电源设计与连接方式:为了给单片机和超声波测距模块提供稳定的工作电源,可以选择使用直流电源适配器或者电池供电。通常情况下,将电源正极连接到单片机和超声波测距模块的VCC引脚上,将电源负极连接到GND引脚上。

2.2 软件设计

(1)初始化设置:在程序的开始部分,需要对单片机进行初始化设置,包括引脚模式设置、定时器设置等。

(2)发送超声波信号:通过单片机控制超声波测距模块的发送引脚,发射一定频率和持续时间的超声波信号。

(3)接收回波信号:单片机通过控制超声波测距模块的接收引脚,监听回波信号并计时,记录回波信号的持续时间。

(4)距离计算:根据回波信号的持续时间,可以计算出物体与测距器之间的距离。在软件中进行相关的计算,并将计算结果保存在变量中。

(5)数据显示:通过LCD1602液晶显示屏,将测量得到的距离信息显示出来。可以通过单片机控制液晶显示屏的引脚,向其发送相应的数据和命令。

2.3 硬件模块与单片机的连接方式

将HC-SR04超声波测距模块和LCD1602液晶显示屏连接到STC89C52单片机的IO口:

HC-SR04模块引脚连接:

(1)Trig引脚连接到单片机的P1.0口

(2)Echo引脚连接到单片机的P1.1口

(3)VCC引脚连接到单片机的VCC引脚

(4)GND引脚连接到单片机的GND引脚

LCD1602液晶显示屏引脚连接:

(1)RS引脚连接到单片机的P2.0口

(2)RW引脚连接到单片机的P2.1口

(3)E引脚连接到单片机的P2.2口

(4)D4引脚连接到单片机的P2.4口

(5)D5引脚连接到单片机的P2.5口

(6)D6引脚连接到单片机的P2.6口

(7)D7引脚连接到单片机的P2.7口

(8)VCC引脚连接到单片机的VCC引脚

(9)GND引脚连接到单片机的GND引脚

三、HC-SR04 模块介绍

HC-SR04 是一种常用的超声波测距模块,能够通过发射超声波脉冲并接收其回波来测量物体与模块之间的距离。以下是 HC-SR04 超声波测距模块的详细介绍:

(1)原理:HC-SR04 模块利用超声波的回波时间来计算物体与模块之间的距离。它由两个主要部分组成:超声波发射器和超声波接收器。发射器向前方发射短脉冲的超声波,然后接收器接收到回波。通过测量发射和接收之间的时间差,可以计算出物体到模块的距离。

(2)测量原理:HC-SR04 模块使用的超声波是不可闻的高频声波,通常工作频率为40 kHz。模块通过发送一个10微秒的脉冲来触发超声波的发射,然后等待接收回波。当接收到回波时,模块会停止计时,并将测量到的时间转换为距离。

(3)测量范围:HC-SR04 模块的测量范围通常在2cm到400cm之间,具体取决于环境条件和模块质量。较远距离的测量可能会有一定的误差。

(4)工作电压:HC-SR04 模块的工作电压通常为5V,可以通过连接到微控制器或其他适配器来供电。

(5)接口:HC-SR04 模块通常使用四个引脚进行连接。其中,两个引脚用于电源供电(VCC 和 GND),一个引脚用于触发超声波发射(Trig),另一个引脚用于接收超声波回波并输出测量结果(Echo)。

(6)使用方法:使用 HC-SR04 模块进行测距通常需要以下步骤:

  • 将模块连接到适当的电源和控制器。
  • 发送一个短脉冲触发信号到 Trig 引脚,使模块发射超声波。
  • 检测 Echo 引脚上的回波信号,并计算回波时间。
  • 根据回波时间和声速的关系,计算出物体到模块的距离。
  • 可以通过适当的算法和校准来提高测量的准确性。

(7)应用领域:HC-SR04 模块被广泛应用于距离测量、避障、无人机高度控制、智能车辆导航、自动门控制等领域。它具有简单易用、成本低廉和较好的测距精度等特点,适用于许多电子和机器人项目。

HC-SR04 超声波测距模块利用超声波的发射和接收来测量物体到模块之间的距离。它是一种常用的测距模块,具有简单易用、成本低廉和较好的测量精度等特点,适用于各种距离测量和避障应用。

四、项目完整代码设计

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <reg52.h>
#include <intrins.h>

#define LCD_RS P2_0  // 液晶显示屏的RS引脚连接到P2.0口
#define LCD_RW P2_1  // 液晶显示屏的RW引脚连接到P2.1口
#define LCD_E  P2_2  // 液晶显示屏的E引脚连接到P2.2口
#define LCD_D4 P2_4  // 液晶显示屏的D4引脚连接到P2.4口
#define LCD_D5 P2_5  // 液晶显示屏的D5引脚连接到P2.5口
#define LCD_D6 P2_6  // 液晶显示屏的D6引脚连接到P2.6口
#define LCD_D7 P2_7  // 液晶显示屏的D7引脚连接到P2.7口

#define TRIG P1_0    // 超声波测距模块的Trig引脚连接到P1.0口
#define ECHO P1_1    // 超声波测距模块的Echo引脚连接到P1.1口

sbit RS = LCD_RS;
sbit RW = LCD_RW;
sbit E = LCD_E;
sbit D4 = LCD_D4;
sbit D5 = LCD_D5;
sbit D6 = LCD_D6;
sbit D7 = LCD_D7;

void delay(unsigned int time) {
    while (time--) {
        for (int i = 0; i < 120; i++);
    }
}

void lcd_enable() {
    E = 1;
    _nop_();
    E = 0;
}

void lcd_write_cmd(unsigned char cmd) {
    RS = 0;
    RW = 0;
    P0 = cmd;
    lcd_enable();
}

void lcd_write_data(unsigned char dat) {
    RS = 1;
    RW = 0;
    P0 = dat;
    lcd_enable();
}

void lcd_init() {
    lcd_write_cmd(0x38);    // 初始化8位数据接口,2行显示,5x7点阵字符
    lcd_write_cmd(0x0c);    // 开启显示,不显示光标
    lcd_write_cmd(0x06);    // 光标右移,不移动显示
    lcd_write_cmd(0x01);    // 清屏
}

void lcd_clear() {
    lcd_write_cmd(0x01);
}

void lcd_print(const unsigned char *str) {
    while (*str) {
        lcd_write_data(*str++);
    }
}

unsigned int measure_distance() {
    unsigned int distance;
    TRIG = 0;   // 发送触发信号
    delay(10);
    TRIG = 1;
    delay(12);
    TRIG = 0;
    while (!ECHO);  // 等待回波信号
    TH0 = 0;    // 初始化定时器初值
    TL0 = 0;
    TR0 = 1;    // 启动定时器
    while (ECHO);  // 等待回波信号结束
    TR0 = 0;    // 停止定时器
    distance = TH0 * 256 + TL0; // 计算距离
    distance = distance / 58;   // 将时间转换为距离(单位:厘米)
    return distance;
}

void main() {
    unsigned int distance;
    lcd_init();
    lcd_clear();
    while (1) {
        distance = measure_distance();  // 测量距离
        lcd_clear();
        lcd_print("Distance: ");
        if (distance >= 100) {
            lcd_write_data(distance / 100 % 10 + '0');
            lcd_write_data(distance / 10 % 10 + '0');
            lcd_write_data('.');
            lcd_write_data(distance % 10 + '0');
            lcd_print(" m");
        } else {
            lcd_write_data(distance / 10 % 10 + '0');
            lcd_write_data('.');
            lcd_write_data(distance % 10 + '0');
            lcd_print(" cm");
        }
        delay(200);
    }
}

五、总结

本项目成功地设计和实现了一个基于STC89C52单片机和HC-SR04超声波测距模块的超声波测距仪。实现了距离测量和LCD显示的功能。这个简单而实用的设备可以广泛应用于距离测量和自动控制领域,为生活带来了便利。通过项目的实施,可以获得丰富的经验和知识。学会如何正确地连接硬件设备,理解和操作单片机的IO口,以及使用超声波测距模块进行距离测量。同时,可以提高C语言编程的技巧,掌握LCD1602液晶显示屏的控制方法。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-11-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
STM32与传感器技术结合打造智能行李箱 | 自动跟随与报警系统【免费开源】
完整项目已打包,开源免费:https://blog.csdn.net/weixin_52908342/article/details/150453749
一键难忘
2025/08/16
1300
4.9 51单片机-(HC-SR04)超声波测距模块
HC-SR04 超声波测距模块可提供 2cm-400cm 的非接触式距离感测功能,测距精度可达高到 3mm;模块包括超声波发射器、 接收器与控制电路。
DS小龙哥
2022/01/12
2.3K0
4.9 51单片机-(HC-SR04)超声波测距模块
基于STM32的HC-SR04超声波测距模块实验
超声波测距是借助于超声脉冲回波渡越时间法来实现的。设超声波脉冲由传感器发出到接收所经历的时间为t,超声波在空气中的传播速度为c,则从传感器到目标物体的距离D可用下式求出:D = ct/2,图 2是相应的系统框图。
用户8913398
2021/08/16
8K0
基于STM32的HC-SR04超声波测距模块实验
超声波测距灯
介绍 硬件准备 本篇文章专门介绍用Arduino制作超声波测距灯,需要的材料是:
跋扈洋
2021/02/02
8500
超声波测距灯
基于STM32和HC-SR04模块实现超声波测距功能
本文用的单片机是STM32F103C8T6,超声波测距模块是HC-SR04,显示测距结果用的是0.96寸OLED屏模块。
zeruns
2022/11/11
2.6K0
基于STM32和HC-SR04模块实现超声波测距功能
毕设_基于单片机的倒车雷达/超声波测距(HC-SR04+1602显示屏)
本课题以AT89C51单片机为核心设计一种超声波倒车雷达系统,同时兼顾车内温度测量。
蒋宇智
2024/04/10
4380
毕设_基于单片机的倒车雷达/超声波测距(HC-SR04+1602显示屏)
超声波测距模块
硬件介绍 1.使用场景 超声波测距模块在平时做电子产品、机器人、智能设备中的应用里还是非常常用的,使用非常简单,但是代码的编写和理解其实并不容易,在这里想和大家交流一下。有不同的意见和建议可以给我留言或者私信我。 2. 工作原理
跋扈洋
2021/01/28
1.2K0
Arduino 入门项目系列 (3) - 超声波距离检测警报器
这周主要学习的是蜂鸣器和超声波传感器的使用,超声波传感器在智能小车上会有很多的用处。后来结合了 LCD 的使用,搭建了简易的距离检测警报器。
caoqi95
2019/03/28
4K0
Arduino 入门项目系列 (3) - 超声波距离检测警报器
stm32f103+HC-SR04+ssd1306实现超声波测距
如果你经常做一些嵌入式设备,HC-SR04应该不陌生,一款便宜简单的超声波测距装置,可以应用在智能小车测距壁障,航模飞行器定高等。这篇文章简单讲解,通过一个示例来揉和。
秋名山码神
2023/11/07
5470
stm32f103+HC-SR04+ssd1306实现超声波测距
LabVIEW控制Arduino实现超声波测距(进阶篇—5)
超声波测距是一种传统而实用的非接触测量方法,与激光、涡流和无线电测距方法相比,具有不受外界光及电磁场等因素影响的优点,在比较恶劣的环境中也具有一定的适应能力,且结构简单、成本低,因此在工业控制、建筑测量、机器人定位方面有广泛的应用。
不脱发的程序猿
2022/06/12
1.8K0
LabVIEW控制Arduino实现超声波测距(进阶篇—5)
雷达测距和超声波测距_超声波测距的原理是什么
本实验是基于MSP430利用HC-SR04超声波传感器进行测距,测距范围是3-65cm,讲得到的数据显示在LCD 1602液晶屏上。
全栈程序员站长
2022/10/03
9020
雷达测距和超声波测距_超声波测距的原理是什么
C51 单片机开发认识超声波测距传感器
闲话:数学功底好的人,对于编程来说是真的好。高精尖的东西都涉及深厚的数学知识,算法的优化也涉及各种数学知识、……编译器对于除法的优化,数学不好都搞不明白,只能记个结论算啦!如果有大把的时间用来学习的程序员,比如还在学校当学生的准程序员,那么花时间研究数学是太值得了。
码农UP2U
2024/07/04
4060
C51 单片机开发认识超声波测距传感器
基于单片机设计的激光测距仪(采用XKC-Kl200模块)
随着科技的不断进步和应用需求的增加,测距仪成为了许多领域必备的工具之一。传统的测距仪价格昂贵、体积庞大,使用起来不够方便。本项目采用STC89C52单片机作为主控芯片,结合XKC-KL200激光测距模块和LCD1602显示器,实现了一个简易且高效的激光测距仪。这个测距仪可以帮助用户快速准确地测量目标与测距仪之间的距离,并将结果通过LCD1602显示器直观地展示出来。
DS小龙哥
2023/12/01
6700
基于单片机设计的激光测距仪(采用XKC-Kl200模块)
超声波传感器模块
超声波传感器有很多种类的型号:HC-SR04、UC-025、UC-026、UC-015、US-100等等,但是他们都大同小异。他们的主要区别是工作参数有点不一样,像是工作的电压或者温度,探测距离或精度有点差别。引脚是一样的,都是4个引脚(us-100多了一个GND引脚),引脚的工作和作用也是一样的。
破晓的历程
2025/05/14
2670
超声波传感器模块
七行代码实现一个超声波测距仪
shineblink core 开发板(简称Core)的库函数支持US-015超声波测距传感器,所以只需要调用两个API,即可实现超声波测距功能。
shineblink
2020/11/16
3830
基于STC89C51/2的的超声波测距(1602A显示)「建议收藏」
8. D0 ~ D7我接入的是P 0 ^ 0~P 0 ^ 7(注意不要接到VCC管脚上去),还有接入P0口要接上拉电阻,否则会烧坏的。
全栈程序员站长
2022/09/29
4740
基于STC89C51/2的的超声波测距(1602A显示)「建议收藏」
利用LCD1602显示超声波测距
介绍 一、需要的器件 1. 51单片机:任意一款都可以,我这里使用的是STC89C52 2. LCD1602显示屏:我这里使用的是LCD1602A不带转接板的八位显示屏,是比较正常的一款。 3. 超声波测距模块:根据价钱的不同有很多可供选择,我这里推荐使用HC-SR04,因为便宜。。。 4. 杜邦线若干:在这里使用母对母杜邦线。 二、原理
跋扈洋
2021/01/29
8310
树莓派基础实验24:超声波测距传感器实验
   超声波传感器使用超声波来准确检测物体并测量距离。他发出超声波并将它们转换成电信号,主要应用于汽车的倒车雷达、机器人自动避障行走、建筑施工工地以及一些工业现场。
张国平
2020/09/27
2.4K0
基于单片机设计的电子指南针(LSM303DLH模块(三轴磁场 + 三轴加速度)
本项目是基于单片机设计的电子指南针,主要利用STC89C52作为主控芯片和LSM303DLH模块作为指南针模块。通过LCD1602液晶显示屏来展示检测到的指南针信息。
DS小龙哥
2023/11/18
5950
基于单片机设计的电子指南针(LSM303DLH模块(三轴磁场 + 三轴加速度)
基于51单片机智能小车的设计与实现转弯避障_基于单片机的智能小车设计
学习智能小车系统,有助于提高搭建系统的能力和对自动控制技术的理解。智能小车是一个较为完整的智能化系统,而智能化的研究已成为我国追赶世界科技水平的重要任务。智能小车有它特有的特点:成本低,涉及的知识面广,易于拓展[1]。整个智能小车系统作为一个完整的系统,从它的原理图的实现到实物的完成的过程,不仅需要深厚的电子方面的知识,还有对电路实现的良好掌握,对于培养学生的实践能力都有重要的意义。智能小车的竞赛在我国各大高校中都受到了重视,吸引了大批的高校学生的兴趣,而且取得了很多优异的成果,为我国推进智能化的进程做出了巨大的贡献,也为智能汽车的发展提供了理论依据[2-3]。只有当把理论和模型应用到实践中,这样的创新才用意义,我们国家这几年在智能化方面的进步越来越快,也推动了我国在国际社会上在智能化方面的话语权。智能小车是智能化的一部分,它的系统里的避障、循迹、红外遥控的技术用到了智能化,将智能化应用到传统技术上是21世纪发展的趋势。我国虽然从改革开放以来大力发展科技创新,但是在智能化的创新水平与国外较发达的国家相比还有巨大的差距,智能竞赛在高校越来越流行,也证明了我国教育在这方面很快会赶上世界上的发展水平。本次设计是以单片机为CPU,通过编程和一些外围电路的设计来实现红外遥控,避障,循迹等功能。最重要的是把模型上的研究应用到实际生活中,智能车辆便做到了这一点[4-6]。在实际应用中比如在倒车的过程中实现的红外警报系统是以智能小车为模型而研发出来的。对于电子知识的热爱与钻研有利于研发更多智能车辆,使我们的生活更加便利、智能化。
全栈程序员站长
2022/11/02
2.5K0
推荐阅读
相关推荐
STM32与传感器技术结合打造智能行李箱 | 自动跟随与报警系统【免费开源】
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验