单片机:基于STC89C52RC单片机制作的红外循迹小车(4个传感器)

个人感觉红外循迹小车和那些遥控小车的区别就是信号发射不同:遥控小车是通过遥控器发出信号执行相应的动作,而红外循迹是通过红外传感器检测不同颜色来执行相应的操作,本例是以白底黑线为例。
小车跑道是恩智浦跑道,边缘是五厘米宽的黑线,用于检测识别,由于明年要参加第十五届恩智浦,所以先从51学起
我们先来看看小车所用的材料(硬件部分):
1.小车车壳是亚克力板材质,(后来发现很容易裂开,还不如用块木板)。

2.红外传感器:该传感器对环境光线适应能力强,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,绿色指示灯会亮起,可调节灵敏度,干扰小,可采用3-5V直流电源供电。两边各两个,根据检测的黑白色来执行前进,后退,停止。
连接方式:VCC-VCC,GND-GND,OUT-IO


3.驱动:驱动选用L298N,用L298N驱动模块驱动两个直流减速电机。引脚A,B可用于PWM控制。如果直行前进,则可将IN1,IN2和IN3,IN4两对引脚分别接高电平和低电平,仅用单片机的两个端口给出PWM信号控制使能端A,B即可实现直行,转弯,加减速等动作。
接线:ENA,ENB(使能端)——IO
IN1,IN2,IN3,IN4——IO
两侧端口分别连接电机引脚。

4.电池:电池采用的是3000mAh,11.1v的锂电池,

5.使用STC98C52RC芯片,本来自己焊了一个51最小系统,感觉调试的时候比较麻烦,所以用的现成的,取放芯片也方便。
6.前面加了舵机和超声波避障,结果发现没多大用,循迹就可以完成,我就暂且没用它。后面加了两个尾灯,通电后常亮。
我们来看一下整体布局(个人感觉不太好,线有点多,只简单用扎带扎起来)

我们来看看软件部分:
通过控制左右电机运动状态来控制小车。
1.定义正反转和占空比:

void Motor_left(bit ReverOrCoro,uchar DutyCycle)    //正反转 占空比
{if(ReverOrCoro == 1){IN1=1;if(cnt <= DutyCycle){IN2=0;}else{IN2=1;}}else{IN2=1;if(cnt <= DutyCycle){IN1=0;}else{IN1=1;}}
}void Motor_right(bit ReverOrCoro,uchar DutyCycle)    //正反转 占空比
{if(ReverOrCoro == 1){IN3=1;if(cnt <= DutyCycle){IN4=0;}else{IN4=1;}}else{IN4=1;if(cnt <= DutyCycle){IN3=0;}else{IN3=1;}}
}

2选择定时器:

void init()      //定时器T1工作方式1
{TMOD=0x10;TH1 = 0xff;TL1 = 0x9c;EA=1;ET1=1;TR1=1;
}

3.中断:

void InterruptTime0() interrupt 3
{TH1=0xff;TL1=0x9c;cnt++;if(cnt>=220){cnt=0;}
}

4.前进,左转,右转(因为没有障碍区,所以没有写后退函数,当然写的话也挺简单)

void qianjin()       //前进
{Motor_left(1,80);Motor_right(1,80);
}void turn_left()     //左转
{Motor_left(1,70);Motor_right(0,30);
}void turn_right()    //右转
{Motor_left(0,30);Motor_right(1,70);
}

5.四个传感器判断前进或转向(这个我先注释了,后面还有两个传感器函数,参见6)

/*void xunji()   //四个传感器
{uchar flag;if((rsen1==0)&&(lsen1==0)||(rsen2==0)&&(lsen2==0)){flag=0;}elseif((rsen1==1)&&(lsen1==0)||(rsen2==1)&&(lsen2==0)){flag=1;}elseif((rsen1==0)&&(lsen1==1)||(rsen2==0)&&(lsen2==1)){flag=2;}
*/

6.两个传感器判断状态

void xunji()   //两个传感器
{uchar flag;if((rsen1==0)&&(lsen1==0)){flag=0;}elseif((rsen1==1)&&(lsen1==0)){flag=1;}elseif((rsen1==0)&&(lsen1==1)){flag=2;}

7.通过信号短检测到的三种情况来执行不同状态函数

 switch(flag){case 0:qianjin();break;case 1:turn_right();break;case 2:turn_left();break;default:break;}

8.主函数

void main()
{init();while(1){xunji();}
}

9.最后给大家看一下全程序(调速还不是很好,转弯有点卡顿,还请大神多多指教qq:1534066323)

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned charsbit IN1=P1^0;
sbit IN2=P1^1;
sbit IN3=P1^2;
sbit IN4=P1^3;
sbit ENA=P1^4;
sbit ENB=P1^5;sbit lsen1=P2^0;
sbit rsen1=P2^1;
/*
sbit lsen2=P2^2;
sbit rsen2=P2^3;
*/void  Motor_right();   //声明函数
void  Motor_left();uchar ReverOrCoro;
uchar cnt=0;/*void delayms(uchar xms)
{int x,y;for(x=xms;x>0;x--)for(y=110;y>0;y--);
}*/void Motor_left(bit ReverOrCoro,uchar DutyCycle)    //正反转 占空比
{if(ReverOrCoro == 1){IN1=1;if(cnt <= DutyCycle){IN2=0;}else{IN2=1;}}else{IN2=1;if(cnt <= DutyCycle){IN1=0;}else{IN1=1;}}
}void Motor_right(bit ReverOrCoro,uchar DutyCycle)    //正反转 占空比
{if(ReverOrCoro == 1){IN3=1;if(cnt <= DutyCycle){IN4=0;}else{IN4=1;}}else{IN4=1;if(cnt <= DutyCycle){IN3=0;}else{IN3=1;}}
}void init()        //定时器T1工作方式1
{TMOD=0x10;TH1 = 0xff;TL1 = 0x9c;EA=1;         //打开总中断ET1=1;TR1=1;
}void InterruptTime0() interrupt 3
{TH1=0xff;TL1=0x9c;cnt++;if(cnt>=220){cnt=0;}
}void qianjin()
{Motor_left(1,80);Motor_right(1,80);
}void turn_left()
{Motor_left(1,70);Motor_right(0,30);
}void turn_right()
{Motor_left(0,30);Motor_right(1,70);
}/*void xunji()   //四个传感器
{uchar flag;if((rsen1==0)&&(lsen1==0)||(rsen2==0)&&(lsen2==0)){flag=0;}elseif((rsen1==1)&&(lsen1==0)||(rsen2==1)&&(lsen2==0)){flag=1;}elseif((rsen1==0)&&(lsen1==1)||(rsen2==0)&&(lsen2==1)){flag=2;}
*/void xunji()   //两个传感器
{uchar flag;if((rsen1==0)&&(lsen1==0)){flag=0;}elseif((rsen1==1)&&(lsen1==0)){flag=1;}elseif((rsen1==0)&&(lsen1==1)){flag=2;}switch(flag){case 0:qianjin();break;case 1:turn_right();break;case 2:turn_left();break;default:break;}}void main()
{init();while(1){xunji();}
}

基于STC89C52RC单片机制作的红外循迹小车(4个传感器)相关推荐

  1. 51单片机-蓝牙遥控红外循迹小车-代码+硬件连接

    2021/04/28-更新工具的连接 ----------------------------------------- 前几天弄了个基于51芯片的蓝牙红外小车,因为是新手也没有人教,网上的资料也不够 ...

  2. Micropython教程之TPYBoard制作蓝牙+红外循迹小车

    1.实验目的 学习在PC机系统中扩展简单I/O接口的方法. 进一步学习编制数据输出程序的设计方法. 学习蓝牙模块的接线方法及其工作原理. 学习L298N电机驱动板模块的接线方法. 学习蓝牙控制小车的工 ...

  3. 基于STC89c52rc单片机的红外循迹小车

    循迹小车 由于要准备明年的恩智浦飞思卡尔智能车比赛,飞思卡尔智能车用的是K60系列的单片机,以我目前的阶段来说还处于学习阶段,所以先试着用51单片机做一个智能循迹小车.学习一下小车硬件以及软件程序,这 ...

  4. 红外循迹小车简单实现

    红外循迹小车简单实现 这是第一次写博客来记录第一次成功的简单小项目,希望在记录自己学习过程时也能帮助到和我一样正在入坑的小白. 硬件篇 首先,我们要实现一个小车能够在我们的控制下前进.转向.后退等等, ...

  5. 基于STM32,TB6612,TCRT5000的简易红外循迹小车

            提醒:本文章只叙述此小车相关大概内容(如模块的设置,C语言基础实现等),单片机详细教学不涉及. 摘要 循迹小车是学习单片机的"地基",它能够让初学者认识单片机内部硬 ...

  6. 智行小车(基于51单片机)——避障+循迹+停

    讲道理,这辆小车是我们参加校赛所制作的,在这次的小车制作过程之中存在的很多的不足和时间的浪费情况. 队员的选择和分工也都存在着一定的问题(这应该是我最头疼的问题) 但是总得来说还算是取得了一个不错的结 ...

  7. 以51单片机为基础的自动循迹小车

    51单片机自动循迹小车 #include<reg52.h>sbit IN1=P1^2; //左电机正转 sbit IN2=P1^3; //左电机反转 sbit IN3=P1^6; //右电 ...

  8. 基于51单片机的红外循迹小车

    在前面(废话):金沙滩的板子入门51单片机,有幸见过学长的各种小车视频,亿点点羡慕,于是在期末考试前计划寒假上手尝试,刚好学校社团又有比赛 材料: 小车套件(包含底盘,轮子,减速电机,若干铜柱螺丝螺帽 ...

  9. 基于MSP432控制的红外循迹爬坡小车设计报告

    基于MSP432控制的红外循迹爬坡小车设计报告 竞赛选题:坡道行驶电动小车(C题) 摘要 本小车基于TI的MSP432平台,设计了可以沿指定路线在坡道上循迹行驶的四轮小车.小车采用L298N驱动芯片控 ...

最新文章

  1. 835 由于安全层无法对远程计算机进行身份验证_干货 | 看黑客都是这样远程桌面安全设置...
  2. 深度学习100例-卷积神经网络(CNN)实现mnist手写数字识别 | 第1天
  3. C语言-求字符串长度-strlen()与sizeof()
  4. linux操作mysql的语法_MySQL数据库的基本操作命令
  5. JVM中GC Root对象有哪些?
  6. 【内容管理系统】之 Strapi
  7. 使用app-inspector时报错connect ECONNREFUSED 127.0.0.1:8001的解决方案
  8. ASP.NET开发51种常用代码
  9. UVA11752 The Super Powers —— 数论、枚举技巧
  10. ubuntu20.04【一键脚本安装wps并配置字体】
  11. bu zhi dao yao zen me zuo
  12. 计算机专业的情书,【实用】大学各专业表白情书,你能看懂几个
  13. git上传详细步骤和提交代码的各种报错解决方式.
  14. 【论文泛读171】具有对抗性扰动的自监督对比学习,用于鲁棒的预训练语言模型
  15. mysql——时间显示格式 dateformat函数
  16. 【HTML】Angular JS + Table 根据数据动态合并单元格
  17. 多边形(n边形)面积计算公式hdu2036
  18. 找不到位于wsd扫描的计算机,在基于 Windows 的计算机上单击新扫描 Windows 传真和扫描时出现错误消息...
  19. TcaplusDBX光与夜之恋 | 与众不同的真实恋爱
  20. SQL Server 2012 最新技术 PowerView 让你的业务会说话 [上篇]

热门文章

  1. Golang单元测试快速上手(三) 高级技巧
  2. C13:Unity3D制作智能家居设计软件——定制系统
  3. 钉钉 api 的 Nginx 代理配置
  4. 使用DQL命令查询数据(总篇1~3)
  5. BZOJ2152 聪聪可可(点分治)
  6. 微信读书从本地导入书籍失败
  7. 左手坐标系和右手坐标系(以及右手定则左手定则)
  8. 杨宁反思创业痛点:没有将项目和公司坚持下去
  9. AUTOSAR实战教程 - 通信协议栈CAN_CANIF_PDUR_CANTP_COM_XCP_ECUC配置一网打尽
  10. 考研数据结构算法题总结