基于Proteus的51单片机超声波测距
myzbx 2025-07-24 20:19 6 浏览
之前发过一期使用51单片机开发板完成的超声波测距。今天再发一个基于Proteus仿真的超声波测距。Proteus8.0之前的版本中都没有超声波测距这个模块,所以在Proteus7的软件中大部分超声波测距仿真都是采用的网友自制的超声波测距模块,自制的模块在仿真时交互性不是很友好,所以今天分享的仿真是基于Proteus8.8版本。文章的最后会告知如何仿真和软件的下载方式。
超声波测距模块在Proteus中的名称叫做SRF04,它的工作原理与之前文章中介绍的超声波模块工作原理一致,都是通过一个IO控制超声波模块的发射,通过另外一个IO对超声波接收端的信号进行检测,计算出超声波信号的运动时间,进而计算出模块与障碍物之间的距离。
原理方面就不在多说了,贴一下仿真图。
今天分享的超声波测距仿真如图所示,显示部分使用的是LCD1602,由于声波在不同温度下的传播速度不同,所以仿真中使用DS18B20对环境温度进行采集,以便实现超声波的温度补偿。
检测部分程序如上图所示,程序的大致流程为显示初始化->外设初始化->检测DS18B20温度->发送超声波并启动定时器->等待声波信号返回->计算距离->判断距离是否在范围内->更新显示->进入下一个循环。
仿真运行时效果如图所示。在该仿真的基础上增加按键、蜂鸣器等外设就可以实现倒车雷达的功能。有兴趣的小伙伴可以自行下载研究。
Proteus8.8软件可以在公众号主页发送”Proteus”,系统即可自动回复对应的下载链接。
本文分享的仿真及程序可以在公众号发送”超声波测距仿真”获取相应的下载链接。
下面贴一下主程序。
#include "reg51.h"
#include <stdio.h>
#include "LCD.H"
#include "18B20.H"
#include "delay.h"
sbit csb=P2^5; //超声波发送引脚
sbit csbint=P3^2; //超声波接收引脚
unsigned char aa[]={' ',' ','D','i','s','t','a','n','c','e',':'}; //Distance
unsigned char bb[11]={' ',' ',' ',' ','.',' ',' ',' ',' ',' ',};
unsigned char cc[]={'A','.','A','A','m'};
unsigned char zf; //zf 温度正负标志位
unsigned int s,j,bgz,k;
int temp;
float temperature,csbc,wdz; //温度及温度补偿变量
void main(void)
{
TH0=0;
TL0=0; //定时器0计数器清0
TMOD=0X11; //T1,T0为16位定时器
EA=0; //关闭总中断
init(); //初始化
Init_DS18B20(); //DS18B20初始化
bb[6]=0xdf; //显示摄氏度符号
bb[7]=0x43;
LCD_Write_String(0,0,aa); //对数据进行显示
while(1)
{
temp=ReadTemperature(); //读取DS18B20温度数据
DelayMs(100); //延时100毫秒
if(temp<0) //如果温度小于0
{
temp=-(temp-1); //温度取反处理,并显示负号
zf=1;
bb[0]='-';
}
else //温度为正值
{
zf=0;
bb[0]=' ';
}
csb=0; //给超声波模块发送一个启动脉冲
_nop_();
_nop_();
_nop_(); //启动脉冲需要一定宽度
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
csb=1; //置位
ET0=1; //启动计数器T0,用以计时
TR0=1;
EA=1; //开启总中断
j=80; //延时一段时间
while(j--){}
csbint=1;
j=0;
while(csbint) //判断接收回路是否收到超声波的回波
{
j++;
if(j>=2500) //如果达到一定时间没有收到回波,则将csbint置零,退出接收回波处理程序
csbint=0;
}
TR0=0; //关闭定时器0
s=TH0*256+TL0; //读取时间数据
TH0=0; //定时器清0
TL0=0;
wdz=0.00000607*temp; //计算温度补偿值
if(zf==0)
{
csbc=0.03315+wdz; //对超声波速度进行温度补偿,温度为正值时+,温度为负值时-
}
else csbc=0.03315-wdz;
csbc=csbc/2; //
s=s*csbc-4; //速度*时间=位移
if(s<5) //测量值小于下限
{
cc[0]='-';
cc[2]='-'; //测量距离小于下限,显示---,
cc[3]='-';
}
else if(s>500) //测量值大于上限
{
cc[0]='C';
cc[2]='C'; //测量距离大于上限值,显示CCC
cc[3]='C';
}
else
{
cc[0]=s/100+'0';
cc[2]=s/10%10+'0'; //距离在范围内,显示距离数值
cc[3]=s%10+'0';
}
//显示测量的温度
bb[1]=temp/1000+0x30;
bb[2]=temp/100%10+0x30; //显示十位
bb[3]=temp%100/10+0x30; //显示个位
bb[5]=temp%10+0x30; //小数
if(zf==0)
{
if(temp<1000)
{
bb[1]=' ';
if(temp<100)
{
bb[2]=' ';
}
}
}
else
{
if(temp<1000)
{
bb[1]='-';
bb[0]=' ';
if(temp<100)
{
bb[0]=' ';
bb[1]=' ';
bb[2]='-';
}
}
}
LCD_Write_String(4,1,bb);
LCD_Write_String(11,0,cc);
}
}
相关推荐
- 别让水 “跑” 出卫生间!下沉设计打造滴水不漏的家
-
你是否遭遇过卫生间的水“偷偷溜”进客厅,导致木地板鼓起、墙角发霉的糟心事?又是否为卫生间门口反复渗漏,不得不一次次返工维修而头疼不已?在家庭装修中,卫生间防水堪称“兵家必争之地”,而卫生间门口下...
- 歼-10CE vs 阵风:谁才是空中霸主?全面性能对比解析
-
歼10CE与法国阵风战斗机性能深度对比分析一、总体定位与设计哲学歼10CE:单发中型多用途战斗机,侧重于空优(制空权争夺)和对地对海打击,具有较高的性价比和较强的多任务能力。法国阵风战斗机:双发中型多...
- 知名移植工作室肯定Switch2的图形性能,却被CPU拖了后腿
-
虽然Switch2发售多日,但没入手的玩家对其性能还是有顾虑。近日,知名移植工作室Virtuos的技术总监在接受采访时讨论了Switch2的性能,并给出了他们工作室的评价。简单来说,Switch2在D...
- 虹科实测 | CAN XL vs CAN FD传输性能深度对比:速率翻倍,抖动锐减!
-
导读在汽车电子与工业通信领域,CAN协议持续进化,推动着数据传输效率的提升。本次实测基于虹科PCAN-USBXL与虹科PCAN-USBProFD硬件,在同等严苛条件下对比CANXL与CANF...
- 1J117合金材料优异的耐腐蚀性、机械性能
-
1J117合金材料概述定义:1J117是一种不锈软磁精密合金,属于铁铬基合金,其圆棒产品具有特定的形状和尺寸,可满足各种工业应用中的特定需求。标准:技术条件标准为GB/T14986,品种规格标准...
- 据高管所称,Switch2能轻松移植XSS平台60帧游戏
-
任天堂,作为主机游戏界的御三家之一,一直注重游戏性而不注重更新升级硬件设备是其最大的特点。各位任豚们,忍受着任天堂早已落后硬件设备,真想感叹一句,天下苦任久矣!但Switch2的出现或许正在渐渐的改变...
- FJK-110LED-HXJSN磁传感器有哪应用
-
作为一名从事电子技术相关工作的自媒体人,我经常会遇到各种传感器的应用问题。其中,FJK-110LED-HXJSN磁传感器是一款在工业自动化、智能设备等领域比较常见的磁场检测元件。今天我想和大家聊一聊这...
- 浅谈欧标方管200x200x5-12mm质S275JRH的优势与劣势
-
欧标方管200x200x5-12mm材质S275JRH是一种常见的结构用钢材,广泛应用于建筑、机械制造、桥梁、钢结构等领域。本文将对这种方管的优势与劣势进行浅谈,以帮助读者更好地了解其特性和适用场景。...
- 宽带拨号错误 651 全解析:故障定位与修复方案
-
在使用PPPoE拨号连接互联网时,错误651提示「调制解调器或其他连接设备报告错误」,通常表明从用户终端到运营商机房的链路中存在异常。以下从硬件、系统、网络三层维度展开排查:一、故障成因分类图...
- 模型微调:从理论到实践的深度解析
-
在人工智能领域,模型微调已成为提升模型性能、使其适应特定任务的关键技术。本文将全面系统地介绍模型微调的各个方面,帮助读者深入理解这一重要技术。一、什么是模型微调模型微调是指在已经训练好的预训练模型基础...
- 汉语拼音 z、c、s图文讲解(拼音字母表zcs教学视频)
-
以下是汉语拼音z、c、s的图文讲解,结合发音要领、书写规范及教学技巧:一、发音方法与口诀1.z的发音发音要领:舌尖轻抵上齿背,形成阻碍后稍放松,气流从窄缝中挤出,声带不振动(轻短音)。口诀:“写字写...
- 吴姗儒惹怒刘宇宁粉丝!吴宗宪护航「是综艺梗」叮咛女儿对话曝光
-
记者孟育民/台北报道Sandy吴姗儒在《小姐不熙娣》因为节目效果,将男星刘宇宁的头像踩在地上,引起粉丝怒火,节目发声明道歉后仍未平息,她也亲自发文郑重道歉:「我对刘宇宁本人完全没有任何恶意,却在综艺表...
- 苹果错误地发布了macOS Tahoe公开测试版 现已将其撤下
-
一些Beta测试人员下载了他们以为是macOSSequoia15.6RC的版本,但却错误地下载了macOSTahoe26公开测试版,后来苹果修复了该问题。苹果预计将于7月25...
- make的多种用法!(make 的用法总结)
-
一、make的用法美make[meik]①V.制造;制定,拟定;使变得,使处于;造成,引起;整理(床铺);做,作出;强迫;挑选,任命…②n.(机器、设备等的)品牌,型号;结构,构造;通电,接电⑤[...
- 北顿尖刀哗变?俄第20近卫集团军损失惨重,拒绝执行指挥官命令?
-
【军武次位面】作者:太白近日,外国社交媒体“电报”上传出了一些消息,称俄罗斯在北顿涅兹克战场上的“尖刀”部队之一,俄第20近卫集团军因为损失惨重,已经出现了部分部队拒绝执行指挥官命令,甚至哗变的情况。...
- 一周热门
- 最近发表
- 标签列表
-
- HTML 简介 (30)
- HTML 响应式设计 (31)
- HTML URL 编码 (32)
- HTML Web 服务器 (31)
- HTML 表单属性 (32)
- HTML 音频 (31)
- HTML5 支持 (33)
- HTML API (36)
- HTML 总结 (32)
- HTML 全局属性 (32)
- HTML 事件 (31)
- HTML 画布 (32)
- HTTP 方法 (30)
- 键盘快捷键 (30)
- CSS 语法 (35)
- CSS 轮廓宽度 (31)
- CSS 谷歌字体 (33)
- CSS 链接 (31)
- CSS 定位 (31)
- CSS 图片库 (32)
- CSS 图像精灵 (31)
- SVG 文本 (32)
- 时钟启动 (33)
- HTML 游戏 (34)
- JS Loop For (32)