51单片机智能小车

article/2025/8/4 4:59:46

最近学校举办了一个智能小车比赛,比赛内容为用手机蓝牙控制小车拥有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舵机和PWMSCON=0x50;PCON=0x00;TH0=(65536-100)/256;//定时0.1msTL0=(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


http://chatgpt.dhexx.cn/article/dfHLhJ7J.shtml

相关文章

51单片机智能循迹小车的通俗易懂讲解

. . 从上面导航图,我们可以看到,智能小车,共分为三步 外部检测,控制中心,轮子输出控制。 等于人的 . . 因为单片机控制中心和轮子输出控制是一样的,只有前面的外部检测,换个模块工作而已。 . …

基于51单片机四路循迹小车

文章目录 一. 任务要求二. 系统原理三. 整体方案1. 控制模块最小系统去除AD网格线 2. 电机驱动模块3. 电源模块4. 循迹模块5. 超声波测距模块 四. 车体实物图五. 软件实现 这学期开设的51单片机课程的课程设计即将验收,今天开始正式着手做循迹小车~ 一. 任务要求 二…

51单片机循迹小车

一.材料 1.51单片机开发板 2.L298N电机 3.红外循迹模块 4.直流电机 5.电池(提供电源,选用的是三节18650锂电池) 6.杜邦线 7.两个主动轮,一个万向轮 8.小车底板(亚克力板) 二.实现效果 使小车在两…

【51单片机实例教程】智能小车(一)让你的小车跑起来

文章目录 前言 一、硬件 1.小车底盘 2.51单片机最小系统板 3.L298N双路电机驱动板 二、仿真模拟图 三、代码部分 1.直行 2.后退 3.左转圈 4.右转圈 总结 前言 智能小车的项目非常多,比如说循迹避障、蓝牙遥控、视觉控制(这一块用51单片机比较…

基于51单片机的循迹小车(初学者必备!!!)

基于51单片机的循迹小车 文章目录 基于51单片机的循迹小车 前言一、系统概述1.工作原理2.控制系统结构框图 二、循迹小车硬件1.电机驱动模块2.循迹模块 三、循迹小车软件四、源码(仅供参考) 前言 该小车采用单片机STC89C52作为主控制核心,通过…

单片机小车

*## 单片机小车 本周作为单片机新手的我制作了我的第一个作品—单片机小车 一 元件:1.单片机最小系统板 2.杜邦线 3.USB转TTL CH340模块STC单片机下载线刷机板USB转串口 4.智能小车配件 红外寻迹 5.智能小车51单片机套件底盘组装寻迹避障开发板编程循迹机器人配件 …

51单片机之智能小车(避障、跟随、循迹)

目录 基本概述 硬件组成 功能 关键字 模块介绍 电机模块L9110S 循迹模块(TCRT5000传感器) 红外避障模块 测速模块 小车 移动小车(控制电机转动,使小车前进、后退、左转、右转 ) 遥控小车( 使…

详细介绍如何从零开始制作51单片机控制的智能小车(一)———让小车动起来

从本文开始,在之后的一段时间里,我会通过本系列文章,详细介绍如何从零开始用51单片机去实现智能小车的控制,本文作为本系列的第一篇文章,主要介绍如何让小车动起来。 本系列文章链接: ------------------…

乐观锁-基于CAS原理

乐观锁理论基础 乐观锁的操作过程中其实没有没有任何锁的参与,乐观锁只是和悲观锁相对,严格的说乐观锁不能称之为锁。下面我们就通过乐观锁与悲观锁的对比来更好的理解乐观锁。 乐观锁与悲观锁的概念 乐观锁:总是假设最好的情况…

JAVA CAS原理深度分析

CAS CAS:Compare and Swap, 翻译成比较并交换。 java.util.concurrent包中借助CAS实现了区别于synchronouse同步锁的一种乐观锁。 本文先从CAS的应用说起,再深入原理解析。 CAS应用 CAS有3个操作数,内存值V,旧的预期值A,要修…

CAS原理图

主要原理 1 用户第一次访问一个CAS 服务的客户web 应用时(访问URL :http://192.168.1.90:8081/web1 ),部署在客户web 应用的cas AuthenticationFilter ,会截获此请求,生成service 参数 2 然后redirect 到C…

java---CAS原理分析详解

目录 一、什么是CAS 二、乐观锁与悲观锁 1.乐观锁出现原因 2.乐观锁 3.乐观锁的实现机制---CAS 三、JAVA对CAS的支持 首先演示实际的操作 上述过程的内部原理(java层面) 四、CAS缺陷 1.ABA问题 解决ABA问题 2.循环时间长开销大 3.只能保证一个变量的原子操作 4.解…

AQS和CAS原理

锁机制(AQS和CAS) 一、AQS 1、AQS原理 AQS:AbstractQuenedSynchronizer抽象的队列式同步器。是除了java自带的synchronized关键字之外的锁机制。     AQS的全称为(AbstractQueuedSynchronizer),这个类…

CAS原理解析

什么是CAS cas全称为compareAndSwap,可以很清楚的翻译知道意思为“比较和交换”,字面意思其实就已经解释了CAS的实现原理 CAS简介 从jdk5开始,jdk提供了java.util.concurrent.*,此包下面的类在高并发场景下经常使用,包…

搞定CAS的原理,看这一篇就够了!

一、什么是CAS? CAS (compareAndSwap),中文叫比较交换,是一种无锁原子算法,映射到操作系统就是一条CPU的原子指令,其作用是让CPU先进行比较两个值是否相等,然后原子地更新某个位置的…

深入理解vue.js双向绑定的实现原理

vue.js是MVVM(模型到视图和视图到模型)结构的,同类的还有AngularJs;至于MVC、MVP、MVVM的比较网上已经有很多了,这样不再重复。这篇文章将给大家深入的介绍vue.js双向绑定的实现原理,有需要的朋友们可以参考…

MVVM数据双向绑定

MVVM采用双向数据绑定,view中数据变化将自动反映到viewmodel上,反之,model中数据变化也将会自动展示在页面上。把Model和View关联起来的就是ViewModel。ViewModel负责把Model的数据同步到View显示出来,还负责把View的修改同步回Mo…

vue双向绑定的理解

什么是双向绑定 把Model绑定到View,当我们用JavaScript代码更新Model时,View就会自动更新。在单向绑定的基础上,用户更新了View,Model的数据也自动被更新了,这种情况就是双向绑定 如: 当用户填写表单时&a…

实现vue数据双向绑定

关注公众号&#xff0c;每天都能领外卖红包 关于vue数据双向绑定也是面试很喜欢问的题目了&#xff0c;这里讲下实现方式&#xff0c;效果图、源码、demo在文章末尾 首先看下vue的基本结构 <div id"app"> <div>{{a.b.c}}</div></div> n…

双向绑定原理

适合读者: 了解 MV* 架构模式 希望了解双向绑定原理 从MVC、MVVM说起 参考阮一峰老师的文章:http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html 流程:View根据Model展示页面,当页面发生操作时(commander),View传递指令到Controller层,Controller层根据comman…