news 2026/4/18 11:53:25

51单片机两路超声波测距:从原理到代码实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
51单片机两路超声波测距:从原理到代码实现

51单片机程序 两路超声波测距 超声波测距,带温度补偿, 两路超声波测距,18b20测温带温度补偿,lcd1602显示温度和实测距离。 keil4程序源码,有proteus仿真文件。

在电子制作的世界里,超声波测距是一项非常实用的技术,今天咱就来讲讲51单片机如何实现两路超声波测距,并且带上温度补偿,再用18B20测温,最后通过LCD1602显示温度和实测距离,还会分享Keil4程序源码以及Proteus仿真文件哦。

超声波测距原理

超声波测距的基本原理就是通过发送超声波脉冲,然后检测反射回来的回波,根据超声波在空气中传播的时间来计算距离。公式为:距离 = 声速 × 时间 / 2 。但声速会随温度变化,所以温度补偿就很重要啦。

18B20测温原理

18B20是常用的数字温度传感器,它采用单总线通信协议。单片机只需一根线就能和它进行数据交互,读取到当前的温度值。

硬件连接

  1. 超声波模块:每个超声波模块有四个引脚,分别为VCC、GND、Trig(触发引脚)和Echo(回响引脚)。VCC接5V,GND接地,Trig和Echo分别接到51单片机的I/O口。
  2. 18B20:同样有三个引脚,VCC接5V,GND接地,DQ(数据引脚)接到51单片机的I/O口。
  3. LCD1602:VSS接地,VDD接5V,V0接电位器调节对比度,RS、RW、E分别接单片机I/O口,D0 - D7接单片机I/O口(也可以采用4位模式连接,这里为方便讲解采用8位模式)。

Keil4程序源码

头文件包含与全局变量定义

#include <reg51.h> #include <intrins.h> #include <1602.h> // 自定义的LCD1602驱动头文件 #include <18b20.h> // 自定义的18B20驱动头文件 sbit Trig1 = P1^0; // 第一路超声波触发引脚 sbit Echo1 = P1^1; // 第一路超声波回响引脚 sbit Trig2 = P1^2; // 第二路超声波触发引脚 sbit Echo2 = P1^3; // 第二路超声波回响引脚 unsigned int distance1, distance2; // 存储两路距离 float temperature; // 存储温度

这里定义了各个引脚的位变量,还有用于存储距离和温度的变量。

18B20温度读取函数

float read_temperature() { unsigned char low, high; float temp; init_18b20(); // 初始化18B20 write_byte_18b20(0xcc); // 跳过ROM操作命令 write_byte_18b20(0x44); // 启动温度转换 _nop_(); _nop_(); init_18b20(); write_byte_18b20(0xcc); write_byte_18b20(0xbe); // 读取温度寄存器 low = read_byte_18b20(); high = read_byte_18b20(); temp = (high << 8) | low; if (temp & 0xf800) { // 负数处理 temp = ~temp + 1; temp = -((float)temp * 0.0625); } else { temp = (float)temp * 0.0625; } return temp; }

这个函数先初始化18B20,然后发送命令启动温度转换,再读取温度寄存器的值,最后根据数据格式计算出实际温度值。

超声波测距函数

unsigned int measure_distance(sbit Trig, sbit Echo) { unsigned int time; Trig = 0; _nop_(); _nop_(); Trig = 1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); Trig = 0; while (!Echo); TR0 = 1; // 启动定时器0 while (Echo); TR0 = 0; // 停止定时器0 time = TH0 * 256 + TL0; TH0 = 0; TL0 = 0; return time * 0.017; // 根据声速计算距离 }

这个函数通过控制Trig引脚发送超声波脉冲,然后等待Echo引脚回响,利用定时器0记录回响时间,从而计算出距离。

主函数

void main() { init_lcd(); // 初始化LCD1602 TMOD = 0x01; // 定时器0工作在模式1 TH0 = 0; TL0 = 0; while (1) { temperature = read_temperature(); distance1 = measure_distance(Trig1, Echo1); distance2 = measure_distance(Trig2, Echo2); // 根据温度补偿声速计算更准确的距离,这里简单示意,实际可优化 // 假设声速与温度关系:v = 331.5 + 0.607 * temperature // 重新计算distance1和distance2 display_temperature(temperature); // 自定义函数显示温度到LCD1602 display_distance1(distance1); // 自定义函数显示第一路距离到LCD1602 display_distance2(distance2); // 自定义函数显示第二路距离到LCD1602 delay(500); // 延时 } }

主函数里先初始化LCD1602和定时器0,然后在循环里不断读取温度和两路距离,最后显示在LCD1602上,并适当延时。

Proteus仿真

Proteus仿真文件可以帮助我们在实际制作硬件之前验证程序的正确性。在Proteus中搭建好51单片机、超声波模块、18B20和LCD1602的电路连接,然后导入编译好的Hex文件,运行仿真就能看到LCD1602上显示出实时的温度和两路超声波测量的距离啦。

51单片机程序 两路超声波测距 超声波测距,带温度补偿, 两路超声波测距,18b20测温带温度补偿,lcd1602显示温度和实测距离。 keil4程序源码,有proteus仿真文件。

希望通过这篇博文,大家能对51单片机的两路超声波测距、18B20测温以及LCD1602显示有更深入的理解,赶紧动手试试吧!

上述代码中的自定义函数(如display_temperature等)需根据实际情况编写,这里主要展示核心逻辑代码。完整的工程文件(Keil4项目和Proteus仿真文件)可以在相关论坛或我的个人资源分享区获取哦(如有)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 22:04:35

django基于数据挖掘技术的台风灾害预测系统-计算机毕业设计源码+无LW文档

Django基于大数据旅游数据分析与推荐系统的设计与实现 摘要 本文阐述了一个基于Django框架&#xff0c;结合大数据技术的旅游数据分析与推荐系统的设计与实现过程。该系统旨在利用大数据分析技术深入挖掘旅游数据&#xff0c;为游客提供精准的旅游推荐和全面的旅游资讯&#xf…

作者头像 李华
网站建设 2026/4/18 5:23:11

永磁同步电机(PMSM)矢量控制之旅:从理论到MATLAB仿真

永磁同步电机(PMSM)矢量控制&#xff0c;坐标变换到d-q轴后&#xff0c;采用SVPWM调制算法&#xff0c;进行速度电流双闭环控制&#xff0c;控制算法为PID&#xff0c;仿真结果如图所示。 (默认发MATLAB R2018b版本)永磁同步电机&#xff08;PMSM&#xff09;因其高效、功率密度…

作者头像 李华
网站建设 2026/4/18 11:25:33

英文论文降AI工具横评:留学生亲测这3款最靠谱

英文论文降AI工具横评&#xff1a;留学生亲测这3款最靠谱 TL;DR&#xff1a;留学生英文论文降AI首选AIGCleaner&#xff08;达标率95%&#xff0c;支持Turnitin/GPTZero&#xff09;&#xff0c;其次是HumText&#xff08;专注学术英文&#xff0c;6.8元起&#xff09;&#xf…

作者头像 李华
网站建设 2026/4/18 7:33:51

Google Cloud与AWS大数据AI服务对比(2026)

Google Cloud 与 AWS 的大数据 AI 服务&#xff0c;核心差异在于 “GCP 强 AI 原生与数据密集型任务性价比&#xff0c;AWS 胜在生态完整与企业级灵活可控”。选 GCP 优先用于深度学习、实时分析、生成式 AI 与数据仓库&#xff1b;选 AWS 优先用于企业级 MLOps、混合云、多元数…

作者头像 李华
网站建设 2026/4/18 9:43:57

AI结对测试:人类与机器协作的新范式

第一章 范式转移&#xff1a;从自动化测试到人机共生 1.1 传统测试的瓶颈与AI的破局 数据佐证&#xff1a;2025年ISTQB行业报告显示&#xff0c;73%企业面临测试用例爆炸性增长&#xff08;年均增幅300%&#xff09; 典型案例&#xff1a;某金融系统回归测试中&#xff0c;AI…

作者头像 李华
网站建设 2026/4/18 7:37:00

【开题答辩全过程】以 基于Python的健康食谱规划系统的设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

作者头像 李华