首页 > 其他分享 >基于单片机设计的超声波测距仪(采用HC-SR04模块)

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

时间:2024-09-19 13:21:54浏览次数:10  
标签:SR04 引脚 单片机 lcd 模块 HC 超声波 测距

一、前言

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

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

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

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

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

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

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

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

二、项目设计思路

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

四、项目完整代码设计

#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液晶显示屏的控制方法。


标签:SR04,引脚,单片机,lcd,模块,HC,超声波,测距
From: https://blog.51cto.com/u_11822586/12056440

相关文章

  • STM32F407单片机编程入门(七)USART串口485通讯实战含源码
    文章目录一.概要二.USART串口基本介绍三.STM32单片机USART内部结构图四.USART内部信号流向五.USART示波器信号解析六.485通讯基本概念七.CubeMX配置一个USART数据收发例程进行485通讯实验八.工程源代码下载九.小结一.概要USART(UniversalSynchronous/AsynchronousR......
  • 基于STM32单片机的OPENMV颜色识别小球追踪系统设计
    基于STM32单片机的OPENMV颜色识别小球追踪系统设计0、毕业设计选题原则说明(重点)1、项目简介1.1、系统功能1.2、演示视频2、部分电路设计2.1、STM32单片机核心板电路设计2.2、openmv使用说明2.3、stm32与openmv通信电路设计2.4、OLED液晶显示电路设计2.5、二维云台控制电......
  • 基于STM32单片机智能家居声音人体防盗GSM短信报警系统设计
    基于STM32单片机智能家居声音人体防盗GSM短信报警系统设计1、系统功能介绍2、资料下载3、系统电路介绍3.1、STM32单片机最小系统设计3.2、声音传感器模块电路设计3.3、LED信号指示灯电路设计3.4、GSM短信SIM800A模块电路设计3.5、蜂鸣器报警电路电路设计4、程序设计4.1......
  • HCIP Datacom认证是什么?深入解读华为HCIP数通方向!
    HCIPDatacom认证不单象征着个人于数据通信范畴所具备的专业技能,更是职业发展途中的关键里程碑。此文将深度剖析HCIPDatacom认证以及其在数通方向的重大意义。HCIPDatacom认证是什么?HCIPDatacom认证,全名叫做华为认证ICT专家-数据通信方向,乃是华为认证体系里的中级认证......
  • 【Proteus仿真】基于51单片机的宠物喂食系统设计
    目录一、主要功能二、硬件资源三、程序编程四、实现现象一、主要功能基于51单片机,两个按键调整重量阈值的大小,如果mpx4117压力传感器测重没超过阈值,则电机转动,表示投喂,蜂鸣器发出滴滴声,如果超过阈值,则全部停止;同时,再加三个按键,一个按键按下切换到闹钟设置模式,一个......
  • 【Proteus仿真】基于51单片机的L298N电机电速调节
    目录一、主要功能二、硬件资源三、程序编程四、实现现象一、主要功能基于51单片机,L298N电机驱动连接电机,采用调节PWM占空比来控制电机速度转动。仿真图:编辑二、硬件资源基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。1、51单片机2、L298N......
  • DHCP
    DHCP动态主机配置协议,用于集中对用户的IP地址进行动态管理和配置的协议使用C/S通信模式,协议报文基于UDP的方式进行交互,使用67(DHCP服务器)、68(DHCP客户端)两个端口号报文说明发送形式DISCOVERDHCP客户端首次登录网络时进行DHCP交互过程发送的第一个报文,用来寻找DHCP服......
  • STM32智能小车--测距模块(舵机+HC_SR04超声波)
    大家好哇!我是湫湫,一个正在摸索嵌入式的普通大学生。进入正题,最近在做智能小车,想通过文章记录学习过程。本次文章主要使用 stm32F1C8T6实现小车测距。非常感谢大家的阅读,如果有不对的地方欢迎指正。目录一.实物图1.舵机2.HC_SR04:二.基本工作原理1.舵机工作原理2.......
  • STM32F407单片机编程入门(三)ADC详解及实战含源码
    文章目录一.概要二.STM32F407VET6单片机ADC外设特点三.STM32单片机ADC内部结构图1.ADC相关引脚说明2.ADC通道分类3.触发源4.转换周期5.电压转换计算6.更精确电压转换计算四.规则通道ADC采集信号流向1.单次转换模式2.连续转换模式五.CubeMX配置一个ADC采集例程六.CubeMX......
  • 【Proteus51单片机仿真】PWM直流电机调速
    目录一、主要功能二、硬件资源三、程序编程四、实现现象一、主要功能**        基于AT89C51,L298N驱动两个电机,因为是平台,最后用两个电机驱动,然后第一个按键控制所有电机停止,第二个按键按下,电机顺时针转动,第三个按键按下,电机逆时针转动。然后加入pwm调速,分为......