51单片机智能小车

2023-05-16

最近学校举办了一个智能小车比赛,比赛内容为用手机蓝牙控制小车拥有5个功能,分别是超声波舵机避障,测距(显示在LCD1602上),红外跟随,循迹还有蓝牙控制小车前进后退左转又转以及停止。

 

文章目录

  • 蓝牙控制所有功能
  • 一、整体思路
  • 二、代码部分
  • 1、定时器初始化
  • 2、蓝牙部分控制所有功能
  • 3、红外跟随
  • 4、循迹
  • 三、完整代码

前言

基于51单片机的智能小车是比较基础的小车,很适合初学者学习

 

一、整体思路

这款小车单片机的芯片是52RC的,是有3个定时器T0,T1,T2,一般51的是只有两个定时器T0和T1,在这里我们将PWM模块和舵机共用一个定时器T0,定时器T1用于超声波,定时器T2用做串行口的波特率给蓝牙使用。

二、代码部分

1.定时器初始化

void TimeInit()
{
	
	T2MOD=0x01;//蓝牙
	T2CON=0x30;
	TH2=0xfd;
	TL2=0xfd;
	RCAP2H=0xFF;
	RCAP2L=0xDC;
	TMOD|=0x11;//定时器1用于超声波,定时器0舵机和PWM
	SCON=0x50;
	PCON=0x00;
    TH0=(65536-100)/256;//定时0.1ms
	TL0=(65536-100)%256;
	TH1=0x00;    
    TL1=0x00; 
	TR2=1;
	ET1=1;
    ET0=1;
	PS=1;
    EA=1;
    TR0=1;
	ES=1;
	PT1=0;
	IE=0x92;  
	}

2.蓝牙部分控制所有功能

while(1)                                //程序主循环
  {
		 if(flag_REC==1)				    //
	   {
		flag_REC=0;
		if(buff[0]=='O'&&buff[1]=='N')	//第一个字节为O,第二个字节为N,第三个字节为控制码
		switch(buff[2])
	     {
		      case up :						    // 前进
			  send_str( );
			  run();
			  ShowPort=LedShowData[1]; 
			  break;
		      case down:						// 后退
			  send_str1( );
			  back();
			  ShowPort=LedShowData[2]; 
			  break;
		      case left1:						// 左转
			  send_str3( );
			  leftrun();
			  ShowPort=LedShowData[3];  
			  break;
		      case right1:						// 右转
			  send_str2( );
			  rightrun();
			  ShowPort=LedShowData[4];
			  break;
		      case stop:						// 停止
			  send_str4( );
			  ShowPort=LedShowData[0];
			  stop1();
			  break;
			  case  csbcj:						    //舵机超声波测距
			  send_str5( );
              ShowPort=LedShowData[5];		    
			  Robot_Avoidance();
			  break;
				
				case  hwgs:						   //红外跟随
			   send_str6( );
               ShowPort=LedShowData[6];		    
			   Hwgs();
			   break;
               case  xj:						   //循迹 寻黑线
			   send_str7( );
               ShowPort=LedShowData[7];		    
			   Hwgs();
			   break;
				}
	
			}
}

 

3.红外跟随

void Hwgs()
{
	while(1)
	{
	  
              if(LeftIRBZ==1&&RightIRBZ==1)
			  stop1();	 //调用停止函数	  前面没有光线
              if(LeftIRBZ==1&&RightIRBZ==0)	    //右边检测到红外信号
			 	 {
				 	  rightrun2();	 //调用小车右转函数
					  delay(1);

			     }
			   
			  if(RightIRBZ==1&&LeftIRBZ==0)		//左边检测到红外信号
				 { 
				      
				  	  leftrun2();	  //调用小车左转函数
					  delay(1);

				  }
			  if(RightIRBZ==0&&LeftIRBZ==0)		//两边传感器同时检测到红外
				  {	  
				    run();		    //调用前进函数
					delay(1);		//前进40毫秒
				
				  }
				
			  if(buff[2]!=hwgs)return;
				  }
	          return;
				
      }

4.循迹

在这里我们用到的是三路循迹,有的小车可能有4路、5路循迹, 在这里可以自己根据PWM调节速度。

void Robot_Traction()  //机器人循迹子程序                   
{
	   
	         if(Left_1_led==0&&mid_1_led==1&&Right_1_led==0)//亮的时候为0,不亮才检测到黑线
			   {
			     run1();   
			   }
				              
			  if(Left_1_led==1&&mid_1_led==1&&Right_1_led==0)	   
			 	 {
				 	  left2();		  
					
			     }
			   if(Left_1_led==1&&mid_1_led==0&&Right_1_led==0) //原地向左旋转
			   {
			     leftrun();   
				 
			   }
			  if(Left_1_led==0&&mid_1_led==1&&Right_1_led==1)		
				  {	  
				      right2();		  
					 
				  }
			  
			  if(Left_1_led==0&&mid_1_led==0&&Right_1_led==1) //原地向右旋转
			   {
			     rightrun();   
				 
			   }
			  if(Right_1_led==1&&Left_1_led==1)		
				  {	  
				      run();		   
				  }
}

				

 

 

 


三、完整代码

下面是完整的代码

https://pan.baidu.com/s/1CYsrn7LoVRdI6DA6AxBVkw

链接:https://pan.baidu.com/s/1CYsrn7LoVRdI6DA6AxBVkw

提取码:srkl

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

51单片机智能小车 的相关文章

  • MySQL设置更改root密码

    MySQL设置更改root密码 方法一 xff1a 通过MySQL console直接设置密码 首先打开MySQL console 输入原始密码后按回车键 xff08 如果没有原始密码 xff0c enter password后面为空 xf
  • Unity2D—利用UGUI纯代码实现简易摇杆

    目标 xff1a 拖动摇杆实现平面物体的移动 一 制作摇杆UI 平面物体 xff08 1 xff09 新建画布Canvas xff0c 将Canvas的UI缩放模式设置为屏幕大小播放 xff08 如不设为该模式则会因界面缩放而导致UI消失
  • Unity2D—骨骼绑定、IK系统、动画(一)

    目标 xff1a 使用素材实现特定的2D人物动画 一 导入包资源和素材 xff08 本人的Unity版本为2021 1 7 xff09 xff08 1 xff09 Unity注册表中 xff1a 2D Animation 2D PSD Im
  • Unity2D—骨骼绑定、IK系统、动画(二)

    目标 xff1a 使用素材实现特定的2D人物动画 三 IK系统简介 小知识 xff1a IK动画全名是Inverse Kinematics 意思是反向动力学 xff0c 子骨骼节点带动父骨骼节点运动 比如跳街舞的少年用手撑着身体在地上转圈
  • 手把手教你做计算机网络基础大题—报文交换

    一 题目 如图所示 xff0c 主机A要向主机B发送一个长度为300KB的报文 xff0c 发送速率为10Mbps xff0c 传输路径上要经过8个路由器 xff0c 连接路由器的链路长度为100km xff0c 信号在链路上的传播速度为2
  • 手把手教你做计算机网络基础大题—TCP头部结构

    一 题目 已知TCP头部用十六进制数表示为 xff1a 05320017 00000001 00000055 500207FF 00000000 请回答以下问题 xff1a xff08 1 xff09 源端口号是多少 xff1f xff08
  • 雅思大作文写作模版

    模版整理自Vince9120老师 xff0c 逻辑清晰 xff0c 对于写作遇到瓶颈的同学有帮助 xff0c 而且易上手使用 Vince老师视频在Bilibili xff0c 备考时间充足的同学建议观看学习 xff01 一 大作文段落详情及
  • 手把手教你做计算机网络基础大题—ARQ协议

    一 题目 假定使用连续ARQ协议 xff0c 发送窗口大小是3 xff0c 而序号范围是 0 xff0c 15 xff0c 而传输媒体保证在接收方能够按序收到分组 在某一时刻 xff0c 在接收方 xff0c 下一个期望收到的序号是5 试问
  • ARM开发中ubuntu设置成静态IP的优劣分析

    ARM linux开发中 xff0c 我们经常将主机ubuntu设置成静态IP 这有一些好处 xff0c 譬如你的uboot的环境变量中serverip就不用每次改来改去的了 我一直也是这么做的 xff0c 但是今天突然发现这样会带来很多问
  • 手把手教你做计算机网络基础大题—路由表

    一 题目 设某路由器建立了如下路由表 xff1a 目的网络子网掩码下一跳128 96 39 0255 255 255 128接口m0128 96 39 128255 255 255 128接口m1128 96 40 0255 255 255
  • 新手入门:ST-Link和J-Link仿真器的使用

    当编译完成之后 xff0c 点击下载 xff0c 出现这样的错误提示 xff0c 说明我们的仿真器配置没有配置好 xff0c 下面我们讲讲J Link和ST Link分别应该如何配置 xff08 1 xff1a 编译 xff0c 后续只编译
  • 深度学习图像分类实战——pytorch搭建卷积神经网络(AlexNet, LeNet, ResNet50)进行场景图像分类(详细)

    目录 1 一 实验过程 1 1 实验目的 1 2 实验简介 1 3 数据集的介绍 1 4 一 LeNet5网络模型 1 5 二 AlexNet网络模型 1 6 三 ResNet50 xff08 残差网络 xff09 网络模型 二 实验代码
  • c++实现经典游戏贪吃蛇(超详解)

    经典版 要求 xff1a 1碰到四周和自身游戏结束 xff1b 2迟到食物蛇身增长 xff1b 3食物吃得越多游戏越快 xff1b 4通过w a s d可控制蛇头的方向 xff1b 5蛇身颜色不一致 源码 xff08 需要easy x 贪吃
  • c++中求数组的长度

    c 43 43 中求数组的长度 数组长度 61 sizeof 数组名 sizeof 数组类型 span class token macro property span class token directive hash span span
  • 实验 1 UML 类图实验

    实验内容 作图工具 xff1a PowerDesigner 1 绘制以下类图并生成源代码 xff08 语言不限 xff09 xff1a 2 根据以下描述绘制类图 xff0c 再正向工程生成 Java 源代码 xff08 也可生成其他面 2
  • 贪吃蛇(C++)

    一 项目思路 该项目用于计算机软件课设 贪吃蛇要解决的问题有 xff1a 蛇身的移动 xff0c 事物的随机生成 xff0c 蛇头与食物重合 xff0c 蛇吃食物身体的变长 蛇身移动的处理可以改变蛇首元素 xff08 蛇身用数组存储 xff
  • C语言编程工具Dev C++的安装教程

    一 Dev C 43 43 安装包 xff08 5 11版本 xff09 无偿分享 Dev C 43 43 5 11 简体中文版下载地址 xff1a 百度网盘 xff1a 链接 xff1a https pan baidu com s 1Yb
  • winform基础 C#编程

    1 winform应用程序是一种智能客户端技术 xff0c 帮助我们获得信息或者传输信息 2 当后台需要获取前台控件属性 xff0c 需要使用Name属性 visible 指示一个空间是否可见 enabled 指示一个空间是否可用 3 事件
  • 联合索引为啥需要满足最左前缀原则?

    在回答这个问题之前 首先需要先了解清楚何为联合索引 联合索引就是MySQL设计大叔为了节省内存而创建的将多个列的值作为非叶子节点存储的B 43 树结构 比如按照key part1 key part2 key part3列创建了idx key
  • 堆栈和变量的分配区域

    转载自 http mengren425 blog 163 com blog static 56903931200791003721118 一 预备知识 程序的内存分配 一个由c C 43 43 编译的程序占用的内存分为以下几个部分 1 栈区

随机推荐

  • 2023海南大学835软件工程原理方法与应用考研总结

    不知不觉23考研已经结束一个星期了 xff0c 考试的过程还历历在目 政治复习虽然看完了徐的视频 xff0c 刷完了1000题 xff0c 写了肖8肖4 xff0c 背了肖4大题 xff0c 但选择题写的时候还是十分纠结 xff0c 用了一
  • vue 封装 axios 请求

    需求 xff1a 向后端请求拿数据 好处 xff1a 把所有的请求方法放在一个文件夹里面 xff0c 方便优化 先把 axios 安装起 npm install axios save 接下来按照步骤走吧 go go go 1 在src路径下
  • Python:从清华源安装第三方库

    python 在使用pip安装的时候 xff0c 一些小一点的还好 xff0c 安装一些大的包的时候 xff0c 会非常的慢甚至出现timeout的报错 xff0c 这时我们就可以使用清华大学的镜像来安装 xff0c 打开终端 xff1a
  • 用OpenStack搭建简单的云平台并启动云主机

    OpenStack OpenStack简介OpenStack重要集成组件OpenStack平台部署部署环境建立虚拟机 配置时间同步安装OpenStack安装 RabbitMQ 消息队列服务Memcached缓存令牌的安装安装和配置OpenS
  • 关于VMware USB arbitration Serve 服务无法启动的问题

    文章目录 问题方法一方法二 问题 虚拟机插入U盘或者PA等其他USB设备时无法识别 xff0c 经过一番查询发现是本机的VMware USB arbitration Serve 没有启动 xff0c 然后 打开以后尝试启动VMware US
  • keil5安装记录(基于stm32芯片配置)

    参考资料地址正点原子 下载上述地址中的文件 xff0c 根据自己芯片的型号下载 xff0c 如仅安装keil仅下载网盘中的 软件资料 即可 xff0c 同时也可在官网下载 xff0c 但是不推荐下载最新版本 xff0c 因为很多报错没有可参
  • 黎曼几何与黎曼流形

    目录 0 黎曼几何 1 欧几里得几何与黎曼几何的区别 2 黎曼流形 3 黎曼距离 4 切空间 5 黎曼均值 6 SPD矩阵如何形成黎曼流型 7 切线空间映射 8 同余变换和同余不变 9 黎曼对齐 科普性笔记 xff0c 做了解 xff0c
  • Faster R-CNN

    1 论文简介 论文名 xff1a Faster R CNN Towards Real Time Object Detection with Region Proposal Networks 论文地址 xff1a Faster R CNN 论
  • 手把手教你安装VSCode(附带图解步骤)

    一 前端工具vscode 1 1 概述 前端开发是创建Web页面或app等前端界面呈现给用户的过程 xff0c 通过HTML xff0c CSS及JavaScript以及衍生出来的各种技术 框架 解决方案 xff0c 来实现互联网产品的用户
  • 前端小知识:1.A标签的用法

    前端小知识 1 A标签的用法 Hello xff0c 大家好 xff0c 我是仲桉君 因为一些不可抗因素停更了很久 xff0c 但是我还是回来了从今天开始正式开始更新 这个系列是有关一些前端的小知识的小博文 预计更新20篇以上 争取做到每日
  • 从uboot中学习C语言基本功(uboot/lib_generic/vsprintf.c/simple_strtoul)

    此函数有以下几点值得注意 xff1a 1 第一个参数中的const 一般在函数的形参中 xff0c 如果我们只是希望调用者使用该参数 xff0c 而不会去改变该 参数内容 xff08 一般是指针指向的内容 xff09 xff0c 则可以声明
  • C++语法基础

    C 43 43 环境安装和基础知识 1 xff1a C 43 43 环境安装与配置 我使用的编译器是Clion xff0c 解释器配置的是Dev C 43 43 自带的解释器 xff0c Clion安装见下文 Clion的安装和配置 xff
  • Samba服务

    目录 配置yum源 安装samba服务 配置samba服务 Windows环境使用Samba服务 Linux环境使用Samba服务 xff08 1 xff09 方法一使用smbclient命令 xff08 2 xff09 方法二使用挂载的方
  • 已解决—The connection to the server localhost:8080 was refused - did you specify the right host or port

    运行 kubectl get namespace时报错 xff1a root 64 ip 10 0 0 8 kubectl get namespace E0320 07 39 20 866425 32422 memcache go 265
  • 修改ideal中java项目jdk版本,记得收藏

    1 Ctrl 43 Shfit 43 Alt 43 S 进入Settings 窗口 xff0c 修改红框标记的两处jdk版本 2 Ctrl 43 Shfit 43 Alt 43 S 进入Project Structure窗口 xff0c 先
  • GO语言开发环境配置(Linux)

    Go语言开发环境配置 xff08 Linux xff09 一 Go安装二 IDE安装三 Vim IDE 常用功能 一 Go安装 Go 有多种安装方式 xff0c 比如 Go 源码安装 Go 标准包安装 第三方工具 xff08 yum apt
  • HBase过滤器

    目录 一 介绍 1 hbase运算符 2 Hbase 过滤器的比较器 二 代码 1 hbase建表 2 创建数据 3 导入依赖 4 列值过滤器 5 单列值过滤器 6 单列值排除过滤器 7 rowkey过滤器 8 rowkey前缀过滤器 xf
  • Hive与HBase之间的区别和联系

    目录 概念 Hive HBase 共同点 区别 关系 首先要知道Hive和HBase两者的区别 xff0c 我们必须要知道两者的作用和在大数据中扮演的角色 概念 Hive 1 Hive是hadoop数据仓库管理工具 xff0c 严格来说 x
  • VSCode(Visual Studio Code )软件(插件)安装与使用

    VSCode 简介 Visual Studio Code 简称 VS Code VSC 是微软公司推出的一款免费开源的现代化轻量级代码编辑器 xff0c 支持几乎所有主流的开发语言的语法高亮 智能代码补全 GIT 等特性 xff0c 支持插
  • 51单片机智能小车

    最近学校举办了一个智能小车比赛 xff0c 比赛内容为用手机蓝牙控制小车拥有5个功能 xff0c 分别是超声波舵机避障 xff0c 测距 xff08 显示在LCD1602上 xff09 xff0c 红外跟随 xff0c 循迹还有蓝牙控制小车