找回密码
 立即注册

QQ登录

只需一步,快速开始

帖子
查看: 9495|回复: 5
收起左侧

四路红外模块循迹程序。

[复制链接]
ID:147656 发表于 2016-11-27 23:14 | 显示全部楼层 |阅读模式
#include<reg51.h>
sbit RSEN2=P1^4;
sbit RSEN1=P1^3;
sbit LSEN1=P1^2;
sbit LSEN2=P1^1;
sbit IN1=P2^0;
sbit IN2=P2^1;
sbit IN3=P2^2;
sbit IN4=P2^3;      
//****************延时函数****************//
int i,j;
void delay(int z)   
{  
for(i=0;i<z;i++)
   for(j=0;j<110;j++);
}
//***************循迹函数*****************//
main()
{
  while(1)
  {
   if((RSEN1==0)&&(RSEN2==0)&&(LSEN1==0)&&(LSEN2==0))   
    { IN1=1,IN3=0,IN2=1,IN4=0; }//*******直行*******//
   else  if((RSEN1==0)&&(RSEN2==0)&&(LSEN1==1)&&(LSEN2==0))
    {
IN1=0,IN3=1,IN2=1,IN4=0;
     delay(30);
} //***左偏1
  else  if((RSEN1==0)&&(RSEN2==0)&&(LSEN1==0)&&(LSEN2==1))
    {
IN1=0,IN3=1,IN2=1,IN4=0;
delay(200);
} //***左偏2
   else  if((RSEN1==1)&&(RSEN2==0)&&(LSEN1==0)&&(LSEN2==0))
    {
  IN1=1,IN3=0,IN2=0,IN4=1;
  delay(30);
  } //***右偏1
   else  if((RSEN1==0)&&(RSEN2==1)&&(LSEN1==0)&&(LSEN2==0))
    {
IN1=1,IN3=0,IN2=0,IN4=1;
delay(200);
  }//***右偏2

   else if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==1)&&(LSEN2==1))
    {IN1=1,IN3=1,IN2=1,IN4=1;}//停止
   
}
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

举报

ID:143842 发表于 2016-12-6 00:45 来自触屏版 | 显示全部楼层
然后就没了?...这是四轮差速麽
回复

举报

ID:183120 发表于 2017-5-18 16:54 | 显示全部楼层
楼主试过没
回复

举报

ID:219500 发表于 2017-7-22 21:58 | 显示全部楼层
程序可以吗
回复

举报

ID:219529 发表于 2017-8-2 21:17 | 显示全部楼层
楼主试过没
回复

举报

ID:222394 发表于 2017-8-5 18:13 | 显示全部楼层
不错,但是我觉得可能会出现bug,因为     else if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==1)&&(LSEN2==1))
     {IN1=1,IN3=1,IN2=1,IN4=1;}//停止
这里有问题,因为小车不会四个检测的端口会同时出现高电平,因为小车是移动的,应该在前面赋值四个电机端口初值为0,不然有可能在前面的两个端口检测到黑线时,也就是RSEN1==1 RSEN1==1 LSEN1==0 LSEN1==0,因为没有定义,小车可能会乱跑
   
回复

举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表