当前位置: 首页 > news >正文

基于单片机巡迹避障智能小车系统

文章目录

  • 前言
  • 资料获取
  • 设计介绍
  • 设计程序
  • 具体实现截图
  • 设计获取


前言

💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗
👇🏻 精彩专栏 推荐订阅👇🏻
单片机设计精品实战案例
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人

资料获取

文章底部名片,详细资料联系我。

设计介绍

基于单片机巡迹避障智能小车系统是一个集成了单片机控制、传感器检测、路径识别和避障策略于一体的智能系统。以下是对该系统的详细介绍:

一、系统组成

  1. 核心控制器
    单片机作为整个系统的核心控制器,负责接收传感器数据、执行控制算法,并输出控制指令。常用的单片机型号包括STC89C52、Arduino、Raspberry Pi等,这些单片机具有性能稳定、功耗低、适合实时控制等特点。

  2. 传感器
    寻迹传感器:用于检测地面上的特定路径标记,如黑线。通常使用红外线传感器或光电传感器,通过检测反射光线的变化来确定路径位置。
    避障传感器:用于检测小车前方是否存在障碍物,并测量障碍物的距离。常用的避障传感器包括超声波传感器和红外测距传感器。

设计程序

#include <reg52.h>
#define uchar	unsigned char
#define uint	unsigned int
uchar temp, signal, tt1, t0, t1, t2, t3, t4, t5, t6;sbit	jia	= P3 ^ 1;
sbit	jian	= P3 ^ 2;uchar time = 20;void delay_1ms( uint d )
{uint i;while ( d-- )for ( i = 0; i < 75; i++ );
}void delay_50us( unsigned int t )  /* 延时函数 */
{unsigned int j, k;for (; t > 0; t-- ){for ( j = 10; j > 0; j-- ){for ( k = 1; k > 0; k-- );}}
}void motor_run()     /* 电机起动 */
{P1 = 0x35;delay_1ms( 220 - time );P1 = 0x53;delay_1ms( time );
}void motor_left()    /* 左进 */
{P1 = 0x30;delay_1ms( 220 - time );P1 = 0x00;delay_1ms( time );
}void motor_right()     /* 右进 */
{P1 = 0x05;delay_1ms( 220 - time );P1 = 0x00;delay_1ms( time );
}void motor_big_right()    /* 粗右进 */
{P1 = 0x55;delay_1ms( 220 - time );P1 = 0x00;delay_1ms( time );
}void motor_big_left()
{P1 = 0x33;delay_1ms( 220 - time );P1 = 0x00;delay_1ms( time );
}void motor_stop()      /* 电机停止 */
{P1 = 0x00;
}void  key_scan()
{if ( jia == 0 ) /* 判定 */{delay_50us( 100 );/* 延时 */if ( jia == 0 ){time++;if ( time == 200 )time = 200;while ( jia == 0 );/* 自锁 */}}if ( jian == 0 ) /* 判定 */{delay_50us( 100 );/* 延时 */if ( jian == 0 ){time--;if ( time == 20 )time = 20;while ( jian == 0 );/* 自锁 */}}
}void motor_back()
{P1 = 0x53;
}void main()
{t0	= 0;t1	= 0;t2	= 0;t3	= 0;t4	= 0;t5	= 0;t6	= 0;tt1	= 0;EA	= 1;ET1	= 1;TR1	= 1;TMOD	= 0x01;TH1	= -(1000 / 256);TL1	= -(1000 % 256);while ( 1 ){key_scan();if ( P3 == 0xfe ){motor_back();}else{temp	= P2;signal	= temp & 0xff;  /* 得到红外反向信号 */switch ( signal ){case 0xff:              /* 无偏差 */motor_run();t0++;if ( t0 == 10 ){t0 = 0;motor_left();motor_right();}t1 = t2 = t3 = t4 = t5 = t6 = 0;break;case 0xfd: /* 1轮右偏 */motor_big_left();t1++;if ( t1 == 4 ){t1 = 0;motor_left();}t0 = t2 = t3 = t4 = t5 = t6 = 0;break;case 0xef: /* 4轮左偏 */motor_big_right();t2++;if ( t2 == 4 ){t2 = 0;motor_right();}t0 = t1 = t3 = t4 = t5 = t6 = 0;break;case 0xfb:      /* 2轮右偏出轨 */case 0xf9:      /* 1、2轮右偏 */motor_big_left();t3++;if ( t3 == 4 ){t3 = 0;motor_left();}t0 = t1 = t2 = t4 = t5 = t6 = 0;
/*				delay_1ms(10); */break;case 0xdf:      /* 5左偏出轨 */case 0xcf:      /* 4、5轮左偏 */motor_big_right();t4++;if ( t4 == 4 ){t4 = 0;motor_right();}t0 = t1 = t2 = t3 = t5 = t6 = 0;
/*				delay_1ms(10); */break;case 0xfe: /* 0最右偏出轨 */case 0xfa:motor_big_left();t5++;if ( t5 == 1 ){t5 = 0;motor_left();motor_left();}t0 = t1 = t2 = t3 = t4 = t6 = 0;
/*				delay_1ms(10); */break;case 0xbf: /* 6最左偏出轨 */case 0x9f:motor_big_right();t6++;if ( t6 == 1 ){t6 = 0;motor_right();motor_right();}t0 = t1 = t2 = t3 = t4 = t5 = 0;
/*				delay_1ms(10); */break;case 0xeb:      /* 前两传感器压在黑线上 */case 0xdb:      /* 后两传感器压在黑线上 */case 0xbe:      /* 中间两传感器压在黑线上 */case 0xac:      /* 前四传感器压在黑线上 */case 0x9a:      /* 后四传感器压在黑线上 */motor_back();delay_1ms( 200 );motor_stop();/*				delay_1ms(1000); */default:
/**                      motor_back();*                      delay_1ms(50);*                      motor_left();*                      motor_right();*/break;}}}
}/*void time1() interrupt 3* {** TH1=-(1000/256);* TL1=-(1000%256);* tt1++;* if(tt1==300)* {* motor_back();* //	delay_1ms(1);* tt1=0;* }* } */

具体实现截图

在这里插入图片描述
在这里插入图片描述

设计获取

文章下方名片联系我即可~

精彩专栏推荐订阅:在下方专栏👇🏻

毕业设计精品实战案例

收藏关注不迷路!!

🌟文末获取设计🌟

相关文章:

基于单片机巡迹避障智能小车系统

文章目录 前言资料获取设计介绍设计程序具体实现截图设计获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们…...

Python163邮箱发送:提升发送效率的技巧?

python163邮箱发送邮件教程&#xff1f;python怎么使用163邮箱&#xff1f; Python163邮箱发送作为一种自动化邮件发送方式&#xff0c;越来越受到开发者和企业的青睐。AokSend将探讨如何通过多种技巧提升Python163邮箱发送的效率&#xff0c;从而更好地满足用户需求。 Pytho…...

springboot中的异步任务

在springboot项目中可以通过EnableAsyncAsync的方式简化异步操作&#xff0c;下文使用springboot:3.2.1 源码分析 若一个bean中的公共方法上标注了Async&#xff0c;在系统启动时&#xff0c;会给这个类创建一个代理对象&#xff0c;并将该代理对象作为bean注册到spring容器中 …...

Linux学习笔记8 理解Ubuntu网络管理,做自己网络的主人

本文讲解了Ubuntu下网络由什么管理&#xff0c;介绍了临时ip和路由的设置方法&#xff0c;介绍了静态持久化网络配置的方法以及各网络管理软件之间的关系。 来看看Ubuntu网络管理。 序言 原本学习ubuntu网络管理就是为了检查nginx安装过程中使用wget获取压缩包为什么解析不出…...

理解线程的三大特性:原子性、可见性和有序性

在并发编程中&#xff0c;保护线程安全是一个重要课题。要实现线程安全&#xff0c;我们必须理解并掌握三个核心概念&#xff1a;原子性、可见性和有序性。下面将详细介绍这三个特性及其解决方案。 一、原子性 原子性是指一个操作要么全部完成&#xff0c;要么完全不执行。在多…...

英特尔®以太网网络适配器E810-CQDA1 / E810-CQDA2 网卡 规格书 e810 网卡 规格书 Intel100G E810 网卡 白皮书

英特尔以太网800系列网络适配器 英特尔以太网网络适配器E810-CQDA1 / CQDA2 在10到100Gbps的以太网速度下实现高效的工作负载优化性能 关键特性 •单、双端口QSFP28 •应用设备队列(ADQ) •PCI Express (PCIe) 4.0 x16 •动态设备个性化(DDP) •以太网端口配置工具(EPC…...

好用的idea方法分隔符插件

好用的idea方法分隔符插件...

通过 Xshell 无法连接到 Ubuntu

无法通过 Xshell 连接到 Ubuntu 服务器&#xff0c;通常与 SSH 服务、网络连接、主机防火墙设置问题有关。以下是排查并解决这个问题的步骤&#xff1a; 1. 确保 SSH 服务正在运行 在 Ubuntu 上&#xff0c;SSH 服务必须启动才能连接。如果你有虚拟机或物理机的访问权限&…...

Java面试篇基础部分-Synchronized关键字详解

Synchronized关键字用于对Java对象、方法、代码块等提供线程安全操作。Synchronized属于独占式的悲观锁机制,同时也是可重入锁。我们在使用Synchronized关键字的时候,可以保证同一时刻只有一个线程对该对象进行访问;也就是说它在同一个JVM中是线程安全的。   Java中的每个…...

数据结构之线性表——LeetCode:67. 二进制求和,27. 移除元素,26. 删除有序数组中的重复项

67. 二进制求和 题目描述 67. 二进制求和 给你两个二进制字符串 a 和 b &#xff0c;以二进制字符串的形式返回它们的和。 运行代码&#xff08;javaC) class Solution {public String addBinary(String a, String b) {StringBuilder ansnew StringBuilder();int ca0;for(i…...

SQL_HAVING小例子

例一 求众数的sql语句1&#xff1a; select income,count(*) as cnt from graduates group by income having count(*) > all(select count(*) from graduates group by income);这段SQL语句的作用是从一个名为graduates的表中找出income&#xff08;收入&#xff09;字段…...

Avalonia第三方UI库Semi.Avalonia用法详解

文章目录 简介一、安装Semi Avalonia二、基本项目结构三、使用基本控件1 按钮控件2 输入框控件3 选择框控件四、自定义样式和主题五、使用布局控件六、数据绑定七、事件处理八、使用图标和其他资源九、响应式设计十、交互与导航总结简介 Semi是一个基于Avalonia的UI库,旨在提供…...

宠物智能化听诊器的健康管理!

智能听诊器在宠物健康领域的应用正逐渐普及&#xff0c;它通过创新技术为宠物医疗保健带来革新。以下是智能听诊器如何影响宠物健康管理的概述&#xff1a; 数据分析与机器学习 智能听诊器利用深度学习算法&#xff0c;识别宠物心脏和呼吸模式&#xff0c;提供健康分析和诊断建…...

MyBatis-Plus 实体类注解

MyBatis-Plus 实体类注解详解 MyBatis-Plus 是 MyBatis 的增强版&#xff0c;旨在简化开发者的 CRUD 操作。它通过丰富的特性和注解&#xff0c;简化了数据库与 Java 实体类之间的映射。MyBatis-Plus 提供了一系列的实体类注解&#xff0c;帮助开发者更轻松地映射数据库表、字…...

如何写一个自动化Linux脚本去进行等保测试--引言

#我的师兄喜欢给我的休闲实习生活加活&#xff0c;说是让我在实习期间写一个自动化脚本去进行等保测试。呵呵哒。 怎么办呢&#xff0c;师兄的指令得完成&#xff0c;师兄说让我使用Python完成任务。 设想如下&#xff1a; 1、将Linux指令嵌入到python脚本中 2、调试跑通 …...

美团测开OC!

大家好&#xff0c;我是洋子&#xff0c;最近测试社区里面的一个25届同学参加秋招&#xff0c;已经拿到美团测开offer&#xff0c;今天来分享一下他的求职经历&#xff0c;文末附面经 他求职目前的进展如下&#xff1a; 互联网大厂&#xff1a;字节&#xff0c;阿里&#xff…...

HyperWorks的实体几何创建与六面体网格剖分

创建和编辑实体几何 在 HyperMesh 有限元前处理环境中&#xff0c;有许多操作是针对“实体几何”的&#xff0c;例如创建六面体网格。在创建实体网格的工作中&#xff0c;我们既可以使用闭合曲面创建实体网格&#xff0c;也可以使用完整的实体几何创建实体网格。与闭合曲面相比…...

项目实战:Ingress搭建Nginx+WP论坛+MariaDB

1. 网站架构 本次部署形式完全舍弃 Docker&#xff0c;将所有应用都置于Kubernetes&#xff0c;采用 Deployment 而非单 Pod 部署&#xff0c;稳定性得到升级。 2. 部署 MariaDB [rootk8s-master ~]# mkdir tdr [rootk8s-master ~]# cd tdr/ &#xff08;1&#xff09;定义 …...

UWA支持鸿蒙HarmonyOS NEXT

华为在开发者大会上&#xff0c;宣布了鸿蒙HarmonyOS NEXT将仅支持鸿蒙内核和鸿蒙系统的应用&#xff0c;不再兼容安卓应用&#xff0c;这意味着它将构建一个全新且完全独立的生态系统。 为此&#xff0c;UWA也将在最新版的UWA SDK v2.5.0中支持鸿蒙HarmonyOS NEXT&#xff0c…...

【齐家网-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...