• 大小: 33KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-22
  • 语言: 其他
  • 标签: 红外循迹  

资源简介

3路、4路红外循迹智能小车程序,包括pwm对小车的速度调制。附proteus仿真图

资源截图

代码片段和文件信息

#include
#define uchar unsigned char
#define uint unsigned int
unsigned char zkb1=0 ;    //**左边电机的占空比**//
unsigned char zkb2=0 ;    //**右边电机的占空比**//
unsigned char t=0;        //**定时器中断计数器**//
sbit LSEN1=P1^0;       // 右光对管1
sbit LSEN2=P1^1;       //右光对管2
sbit RSEN1=P1^2;        //左光对管1
sbit RSEN2=P1^3;        //左光对管2
sbit IN1=P0^0;
sbit IN2=P0^1;
sbit IN3=P0^2;
sbit IN4=P0^3;
sbit ENA=P0^4;
sbit ENB=P0^5;
//****************延时函数****************//
void delay(int z)   
{   while (z--);  }
//**********初始化定时器,中断***********//
void init()
{  TMOD=0x01;
   TH0=(65536-100)/256;
   TL0=(65536-100)%256;
   EA=1;
   ET0=1;
   TR0=1;
}
//***********中断函数+脉宽调制***********//
void timer0() interrupt 1
{   
    TH0=(65536-100)/256;
   TL0=(65536-100)%256;
  if(t     ENA=1;
  else
     ENA=0;
  if(t      ENB=1;
  else
      ENB=0;
        t++;
  if(t>=100)
    {t=0;}
}
//******************直行******************//
void qianjin()
{  IN1=1; //******给电机加电启动******//
     IN2=0;
     IN3=1;
     IN4=0; 
    zkb1=30;
    zkb2=30;
}
//***************左转函数1***************//
void turn_left1()
{  
 IN1=1; //******给电机加电启动******//
     IN2=0;
     IN3=1;
     IN4=0;
    zkb1=0;
    zkb2=50;
}
//***************左转函数2***************//
void turn_left2()
{  
 IN1=1; //******给电机加电启动******//
     IN2=0;
     IN3=1;
     IN4=0;
    zkb1=0;
    zkb2=60;
}
//***************右转函数1***************//
void turn_right1()
{   
     IN1=1; //******给电机加电启动******//
     IN2=0;
     IN3=1;
     IN4=0;
zkb1=50;
    zkb2=0;
}
//***************右转函数2***************//
void turn_right2()
{   
     IN1=1; //******给电机加电启动******//
     IN2=0;
     IN3=1;
     IN4=0;
zkb1=60;
    zkb2=0;
}
//***************stop***************//
void goback()
{  
     IN1=0; //******给电机加电启动******//
     IN2=1;
     IN3=0;
     IN4=1;
    zkb1=50;
    zkb2=50;
}
//***************循迹函数*****************//
void xunji()
{ uchar flag;
  if((RSEN1==0)&&(RSEN2==0)&&(LSEN1==0)&&(LSEN2==0))
    { flag=0; }//*******直行*******//
   else  if((RSEN1==1)&&(RSEN2==0)&&(LSEN1==0)&&(LSEN2==0))
    { flag=1;} //***左偏1右转1***//
   else  if(((RSEN1==1)&&(RSEN2==1)&&(LSEN1==0)&&(LSEN2==0))||((RSEN1==0)&&(RSEN2==1)&&(LSEN1==0)&&(LSEN2==0)))
    { flag=2;} //***左偏2右转2***//
   else if((RSEN1==0)&&(RSEN2==0)&&(LSEN1==0)&&(LSEN2==1))
    { flag=3; }//***右偏1,左转1***//
  else if(((RSEN1==0)&&(RSEN2==0)&&(LSEN1==1)&&(LSEN2==1))||((RSEN1==0)&&(RSEN2==0)&&(LSEN1==1)&&(LSEN2==0)))
    { flag=4; }//***右偏2,左转2***//
  else if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==1)&&(LSEN2==1))
    { flag=5; }//***stop***//
switch (flag)
     {  case 0:qianjin();
              break;
        case 1:turn_right1();
              break;
        case 2:turn_right2();
              break;
        case 3:turn_left1();
              break;
        case 4:turn_left2();
              break; 
    case 5:goback();
              break; 
      

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-07-11 13:39  3路4路红外循迹\
     文件        6475  2014-07-11 13:08  3路4路红外循迹\3路4路红外.txt
     文件      168051  2014-07-11 12:55  3路4路红外循迹\DCMOTOR.dsn
     文件        3029  2014-07-11 12:56  3路4路红外循迹\TEST.C
     文件        3467  2014-07-11 12:55  3路4路红外循迹\xj.c

评论

共有 条评论