云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 基于51单片机的智能循迹避障小车+C源程序

基于51单片机的智能循迹避障小车+C源程序

  • 62 次阅读
  • 3 次下载
  • 2026/4/25 23:30:53

开始 前进 否 否 扫描I/O口,是否检测到黑线 扫描I/O口,是否检测到障碍 是 右/左行进 左/右行进 是 左/右检测到黑线 左/右检测到障碍

循迹避障程序 #include<>

#define uchar unsigned char #define uint unsigned int unsigned char zkb1=0 ;

//**左边电机的占空比**// unsigned char zkb2=0 ;

//**右边电机的占空比**// unsigned char t=0;

//**定时器中断计数器**// sbit LSEN2=P2^0; sbit LSEN1=P2^1; sbit RSEN1=P2^2; sbit RSEN2=P2^3; //**传感器***/ sbit IN1=P1^0; sbit IN2=P1^1; sbit IN3=P1^2; sbit IN4=P1^3; sbit ENA=P1^4; sbit ENB=P1^5;

//**********初始化定时器中断***********// void init() {

TMOD=0x01;

TH0=(65536-100)/256; TL0=(65536-100)%6; EA=1; ET0=1; TR0=1; }

//***********中断函数+脉宽调制***********// void timer0() interrupt 1 {

if(t

ENA=0; if(t

ENB=0; t++; if(t>=50) {t=0;} }

//******************直行******************// void qianjin() {

zkb1=50; zkb2=50;

}

//***************左转函数1***************// void turn_left1() {

zkb1=0; zkb2=50; }

//***************左转函数2***************// void turn_left2() {

zkb1=0; zkb2=50; }

//***************右转函数1***************// void turn_right1() {

zkb1=50; zkb2=0; }

//***************右转函数2***************// void turn_right2() {

zkb1=50; zkb2=0; }

//***************循迹函数*****************// void xunji() {

uchar flag;

if((RSEN2==1)&&(RSEN1==0)&&(LSEN1==0)&&(LSEN2==1)) { flag=0; }

//*******直行*******//

else if((RSEN2==1)&&(RSEN1==1)&&(LSEN1==0)&&(LSEN2==1)) { flag=1;}

//***左偏1,右转***//

else if((RSEN2==1)&&(RSEN1==0)&&(LSEN1==1)&&(LSEN2==1)) { flag=2; }

//***右偏1,左转***//

else if((RSEN2==0)&&(RSEN1==0)&&(LSEN1==0)&&(LSEN2==1)) { flag=3; }

//***右偏2,左转***//

else if((RSEN2==1)&&(RSEN1==0)&&(LSEN1==0)&&(LSEN2==0)) { flag=4;}

//***左偏2,右转***//

switch (flag) {

case 0:qianjin(); break;

case 1:turn_right1(); break; case 2:turn_left1(); break; case 3:turn_left2(); break;

case 4:turn_right2(); break; default: break; } }

//****************主程序****************// void main() {

init(); zkb1=50; zkb2=50; while(1) {

//******给电机加电启动******// IN1=1; IN2=0; IN3=1; IN4=0; ENA=1; ENB=1; while(1) {

xunji(); //*********寻迹**********// } } }

五、系统测试过程

本小车能实现循迹避障功能,它能沿着地面上黑色轨迹行驶实现循迹功能,也能检测到跑道两侧的挡板,沿挡板行驶实现避障功能。

寻迹避障小车轨迹图介绍:轨道由循迹部分(黑线)和避障部分(道路两侧加挡板)两部分组成,小车先进入循迹轨道,沿黑线行驶,到达两部分连接处进入避障轨道沿挡板行驶,从而实现寻迹和避障功能的展示。轨道示意图如下:

为保证小车能正常行驶,循迹部分的黑线宽度应在至4cm。避障轨道的宽度应大于20cm小于25cm。

六、总结

测试结果表明:本组智能小车能很好的完成了循迹和避障功能,循迹跑道是由黑色胶布在白色地面上拉线完成,小车可以从O型跑道的任何段为起点,跑完全程。避障跑到是通过摆放障碍物,小车可以走出障碍区间。

七、附录:系统元器件

L298N模块/步进电机直流电机驱动模块/小车电机驱动模块/输出5V 四路红外探测 寻迹光电传感器 寻迹小车 循迹避障模块 黑白线识别 51单片机最小系统板/USB下载程序/51单片机开发板

智能小车底盘/寻迹小车/机器人/带码盘/强磁电机/ZK-2WD 四节五号电池板组 附带四节五号干电池 导线若干

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

开始 前进 否 否 扫描I/O口,是否检测到黑线 扫描I/O口,是否检测到障碍 是 右/左行进 左/右行进 是 左/右检测到黑线 左/右检测到障碍 循迹避障程序 #include #define uchar unsigned char #define uint unsigned int unsigned char zkb1=0 ; //**左边电机的占空比**// unsigned char zkb2=0 ; //**右边电机的占空比**// unsigned char t=0; //**定时器中断计数器**// sbit LSEN2=P2^0; sbit LSEN1=P2^1; sbit RSEN1=P2^2; sbit RSEN2=P2^3; //*

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com