61 基于单片机的小车雷达避障及阈值可调

所有仿真详情导航:

PROTEUS专栏说明-CSDN博客

目录

一、主要功能

二、硬件资源

三、主程序编程

四、资源下载


一、主要功能

        基于51单片机,采用超声波传感器检测距离,通过LCD1602显示屏显示,三个按键,第一个按键是切换模式,切换到阈值设置,两个按键负责阈值增减,初始阈值设置为20,如果低于20,则蜂鸣器报警,继电器断开,电机停止转动,高于阈值,则停止报警,继电器吸合,电机转动。

具体动态效果看B站演示视频(高清需要跳转到B站看)

基于单片机的小车雷达避障及阈值可调

二、硬件资源

基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。

三、主程序编程

#include <REGX52.H>
#include <intrins.h>
#include <stdio.h>
#include "Delay.h"
#include "LCD1602.h"
#define uchar unsigned char
#define uint unsigned  int
typedef unsigned char u8;
typedef unsigned int  u16;
typedef unsigned char uint8;
typedef unsigned int uint16;
typedef unsigned long uint32;sbit Tr=P3^0;//触发信号
sbit Ec=P3^1;//回响信号
sbit beep=P2^7;
sbit key1 = P1^0;
sbit key2 = P1^1;
sbit key3 = P1^2;
sbit motor = P1^3;
uchar Recv_Buffer[4];
uint Voltage[]={'0','0','0','0'};
bit bdata IIC_ERROR;unsigned int distance;
static unsigned char num;unsigned int Read_value(void);//读值函数
unsigned int jlyz=20;
static int moshi = 0;void Delay10us(void);//10us延时函数
void cslsz(void);void Time0_Init()          //定时器初始化
{TMOD = 0x01;TH0 = 0x00;TL0 = 0x00;TR0 = 0;//先关闭定时器0
}void Time0_Int() interrupt 1 //中断程序
{TH0  = 0xfe;             //重新赋值TL0  = 0x33;
}unsigned int Read_value()
{uint result;Tr=1;//触发引脚发出11us的触发信号(至少10us)Delay10us();Tr=0;while(!Ec);//度过回响信号的低电平TR0=1;//开启定时器0while(Ec);//度过回响信号高电平TR0=0;//关闭定时器0result=((TH0*256+TL0)*0.034)/2;		// 距离cm=(时间us * 速度cm/us)/2return result + 2;	//+2修正补偿	
}void main()					  //主函数
{	Tr=0;//出发引脚首先拉低LCD_Init();         //显示屏初始化Time0_Init();	   //定时初始化LCD_ShowString(1,1,"-----kaiji-----");Delay(1000);LCD_Init();LCD_ShowString(1,1,"yuzhi:");LCD_ShowString(2,1,"distance:");while(1){Delay(200);cslsz();//按键判断distance = Read_value();//读值distance = distance-1;LCD_ShowNum(2,10,distance,3);LCD_ShowNum(1,7,jlyz,3);if(moshi == 0) //判断{if(distance < jlyz){beep = 1;motor = 1;}else{beep = 0;motor = 0;}}}
}void cslsz()
{if(!key1){moshi++;if(moshi>1)moshi=0;while(!key1);}if(!key2){if(moshi==1)jlyz++;while(!key2);}if(!key3){if(moshi==1)jlyz--;while(!key3);}
}void Delay10us()
{TL0=0xF5;TH0=0xFF;TR0=1;while (TF0==0);TR0=0;TF0=0;
}

四、资源下载

全部资料(源程序、仿真文件、安装包、演示视频):
链接: https://pan.baidu.com/s/1Tiy7k1Fqj31cTDXlXew8AQ?pwd=vhh9 提取码: vhh9 
--来自百度网盘超级会员v4的分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/63183.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux基本命令---文件权限与用户管理

在Linux系统中&#xff0c;文件权限与用户管理是两个核心概念&#xff0c;它们共同维护着系统的安全性和稳定性。以下是如何在Linux系统中体验文件权限与用户管理的详细步骤&#xff1a; 一、用户管理 创建新用户 使用adduser命令可以创建新用户。例如&#xff0c;创建一个名为…

Ubuntu——extrepo添加部分外部软件源

extrepo 是一个用于 Ubuntu 和其他基于 Debian 的系统的工具&#xff0c;它的主要作用是简化和管理外部软件源&#xff08;repositories&#xff09;的添加和更新。通过使用 extrepo&#xff0c;用户可以方便地添加、删除和管理第三方软件源&#xff0c;而不需要手动编辑源列表…

Java集合排序技术详解

在Java编程中&#xff0c;对集合进行排序是一项常见的任务。Java提供了多种方式来对集合进行排序&#xff0c;包括使用Collections.sort()、Arrays.sort()、List接口的sort()方法以及Java 8引入的Stream API。本文将详细介绍这些排序技术&#xff0c;并探讨它们的使用场景和性能…

WEB开发: Node.js路由之由浅入深(一) - 全栈工程师入门

作为一个使用Node.js多年的开发者&#xff0c;我已经习惯于用Node.js写一些web应用来为工作服务&#xff0c;因为实现快速、部署简单、自定义强。今天我们一起来学习一个全栈工程师必备技能&#xff1a;web路由。&#xff08;观看此文的前提是默认你已经装好nonde.js了&#xf…

【机器学习算法】——逻辑回归

目录 逻辑回归理解损失函数代码练习1. 房屋价格与面积的关系2.基于学生特征的录取概率预测 逻辑回归理解 逻辑回归是用来二分类的&#xff01; 是在线性回归模型之后加了一个激活函数&#xff08;Sigmoid)将预测值归一化到【0~1】之间&#xff0c;变成概率值。 一般计算其中一…

一个有意思pytorch的简单应用小实验

通过一个简单的脚本&#xff0c;来学习pytorch的基本应用&#xff0c;比如&#xff1a;前向传播、反向传播、学习率以及预测、模型的基本原理和套路。 得到结果。。。保存模型。。。输入参数。。。预测。。。像不像&#xff1f;。。。像多少&#xff1f;。。。 设计目标&#x…

使用lumerical脚本语言创建定向耦合器并进行数据分析(纯代码实现)

本文使用lumerical脚本语言创建定向耦合器波导、计算定向耦合器的偶数和奇数模式、分析定向耦合器的波长依赖性、分析定向耦合器的间隙依赖性(代码均有注释详解)。 一、绘制定向耦合器波导 1.1 代码实现 # 这段代码主要实现了绘制定向耦合器波导几何结构的功能。通过定义各种…

Linux 35.6 + JetPack v5.1.4之RTP实时视频Python框架

Linux 35.6 JetPack v5.1.4之RTP实时视频Python框架 1. 源由2. 思路3. 方法论3.1 扩展思考 - 慎谋而后定3.2 扩展思考 - 拒绝拖延或犹豫3.3 扩展思考 - 哲学思考3.4 逻辑实操 - 方法论 4 准备5. 分析5.1 gst-launch-1.05.1.1 xvimagesink5.1.2 nv3dsink5.1.3 nv3dsink sync05…

企业风险投资、融资事件数据(1921-2024)

数据包括历年上市与非上市企业的风险投资融资数据等数据&#xff0c;包括融资时间、被投企业、投资方、退出方等数据&#xff0c;希望对大家的研究有所帮助 一、数据介绍 数据名称&#xff1a;企业风险投资、融资事件 数据范围&#xff1a;上市与非上市企业 数据年份&#x…

移远5G模块移植

移远5G模块移植 1.NCM网卡配置2.拨号工具编译3.程序运行 1.NCM网卡配置 1.1、内核配置 打开内核配置界面&#xff0c;并找到USB Network Adapters进行NCM网卡配置 > Device Drivers > Network device support > USB Network Adapters 1.2、驱动修改 打开内核源码钟的…

基于单片机的智能农田灌溉节水系统设计及应用

摘 要 &#xff1a; 针对传统的灌溉方法浪费水资源节水系统设计。该系统从节水角度出发&#xff0c;对传感器和主电路进行了设计&#xff0c;主要采集灌溉地的湿度与温度数据&#xff0c;根据测量土壤中的温度与湿度作为主要参数&#xff0c;对农田灌溉节水系统进行实时控制&am…

煤矿 35kV 变电站 3 套巡检机器人 “上岗”,力破供电瓶颈

近日&#xff0c;杭州旗晟智能科技与甘肃某变电站配电室的三套智能巡检机器人线下测试顺利完成&#xff0c;并成功交付使用&#xff0c;这为电力运维工作注入了全新的活力与强大的技术支撑。 一、项目背景 甘肃某变电站总建筑面积1098平方米的变电站集变电、配电、监控等多功能…

什么是封装性?C++ 中如何实现封装?封装性的好处是什么?

一、引言 在面向对象编程中&#xff0c;封装性是一个重要的概念。封装可以帮助我们更好地组织和管理代码&#xff0c;提高代码的可维护性、可扩展性和安全性。本文将详细介绍什么是封装性&#xff0c;C 中如何实现封装以及封装性的好处。 二、什么是封装性&#xff1f; 封装…

docker 相关问题记录

docker mysql 一直重启解决办法&#xff08;断电或者重启&#xff09; 一直重启。。因为是内部开发&#xff0c;也没有备份最新的。所以不能删了重来。 方法&#xff1a; docker logs mysql5.7 看到错误跟innodb有关。 具体原因可以参考 http://acuilab.com/articles/2019/1…

如何在自动化安全测试中,实现多工具集成与数据融合,以提高对Spring Boot应用程序安全漏洞的检测效率与准确性?

为了在自动化安全测试中实现多工具集成与数据融合&#xff0c;以提高对Spring Boot应用程序安全漏洞的检测效率与准确性&#xff0c;可以采取以下策略和方法&#xff1a; 文章目录 1. 工具选择与集成2. 数据标准化与聚合3. 数据分析与融合4. 持续改进5. 实施示例 1. 工具选择与…

Java快速分组技术解析

在Java开发中&#xff0c;我们经常需要对数据进行分组处理&#xff0c;比如根据某个属性将数据集合中的元素分组。这种需求在处理数据库查询结果、日志分析、报表生成等场景中非常常见。本文将介绍几种Java中快速分组的技术&#xff0c;帮助开发者提高数据处理的效率。 1. 使用…

龙蜥 Linux 安装 JDK

龙蜥 Linux 安装 JDK 下载安装解压到目标路径设置环境变量直接在启动脚本中临时设置 参考资料 下载 这个就不赘述了&#xff0c;参考资料中的另外两篇安装帖&#xff0c;都有。 如果不能上网&#xff0c;也可以去内网其他之前装过JDK的服务器&#xff0c;直接复制过来。 tar …

Linux中Crontab(定时任务)命令详解

文章目录 Linux中Crontab&#xff08;定时任务&#xff09;命令详解一、引言二、Crontab的基本使用1、Crontab命令格式2、Crontab常用操作 三、Crontab的配置与服务管理1、配置Crontab2、服务管理 四、使用示例1、每天凌晨2点备份网站数据2、每周一凌晨3点清理临时文件3、每月的…

记录学习《手动学习深度学习》这本书的笔记(三)

这两天看完了第六章&#xff1a;卷积神经网络&#xff0c;巧的是最近上的专业选修课刚讲完卷积神经网络&#xff0c;什么卷积层池化层听得云里雾里的&#xff0c;这一章正好帮我讲解了基础的知识。 第六章&#xff1a;卷积神经网络 6.1 从全连接层到卷积 在之前的学习中&…

测试知识-高阻示波器的探头补偿

目录 探头补偿 探头补偿 调节补偿电容 调节补偿电容 探头补偿 设计到一个知识盲点&#xff0c;刚好复习补充下 探头补偿 理论知识 示波器和 10:1 探头的简化模型如上图所示&#xff0c;其中示波器的输入阻抗为 RscopeRscope​&#xff0c;探头的补偿电容为 CcompCcomp​。…