找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1451|回复: 0
收起左侧

红外小车源代码

[复制链接]
ID:237486 发表于 2017-10-6 16:10 | 显示全部楼层 |阅读模式
#include<reg52.h>  

#define uchar unsigned char  
#define uint unsigned int
  
unsigned char zkb1=0 ;   
//**左边电机的占空比**//
   
unsigned char zkb2=0 ;     
//**右边电机的占空比**//

unsigned char t=0;        
//**定时器中断计数器**//

sbit LSEN1=P0^0;
sbit LSEN2=P0^1;
sbit MSEN1=P0^2;
sbit MSEN2=P0^3;  
sbit RSEN1=P0^4;
sbit RSEN2=P0^5;

//**传感器***/
sbit ENA=P1^5;
sbit IN1=P1^4;  
sbit IN2=P1^3;  
sbit IN3=P1^2;
sbit IN4=P1^1;   
sbit ENB=P1^0;
  
//**********初始化定时器中断***********//  
void init()  
{   
        TMOD=0x01;     
        TH0=(65536-10)/256;     
        TL0=(65536-10)%256;     
        EA=1;   
        ET0=1;   
        TR0=1;   
}
  
//***********中断函数+脉宽调制***********//  
void timer0() interrupt 1  
{  
    if(t>=50)      
    {
      t=0;
    }
    if(t<zkb1)      
        ENA=1;   
    else        
        ENA=0;   
    if(t<zkb2)        
        ENB=1;   
    else        
        ENB=0;      
    t++;   

  }
  
//******************直行******************//  
void qianjin()  
{  
   zkb1=30;   
   zkb2=30;
}
  
//***************小左转函数***************//
void turn_left1()  
{  zkb1=10;   
   zkb2=25;  
}  


//***************中左转函数***************//
void turn_left2()  
{  zkb1=10;   
   zkb2=20;  
}
  
//***************大左转函数***************//
void turn_left3()  
{  zkb1=5;   
   zkb2=25;
}

//***************小右转函数***************//  
void turn_right1()  
{   zkb1=25;   
   zkb2=10;
  
}

//***************中右转函数***************//  
void turn_right2()  
{   
   zkb1=20;   
   zkb2=10;
  
}
      
//***************大右转函数***************//  
void turn_right3()  
{  
   zkb1=25;   
   zkb2=5;
  
}

//***************循迹函数*****************//  
void xunji()   
{  
      uchar flag;   
      if((LSEN1==1)&&(LSEN2==1)&&(MSEN1==0)&&(MSEN2==0)&&(RSEN1==1)&&(RSEN2==1))      
      { flag=0; }
//*******直行*******//     
       else  
       if((LSEN1==1)&&(LSEN2==0)&&(MSEN1==0)&&((MSEN2==0)||(MSEN2==1))&&(RSEN1==1)&&(RSEN2==1))      
      { flag=1; }     
  //******小左转*******//
       else  
       if((LSEN1==1)&&(LSEN2==1)&&((MSEN1==0)||(MSEN1==1))&&(MSEN2==0)&&(RSEN1==0)&&(RSEN2==1))      
      { flag=2; }
  //******小右转*******//
       else  
       if((LSEN1==0)&&(LSEN2==0)&&(MSEN1==0)&&((MSEN2==0)||(MSEN2==1))&&(RSEN1==1)&&(RSEN2==1))      
      { flag=3; }
  //*******中左转*******//      
       else  
       if((LSEN1==1)&&(LSEN2==1)&&((MSEN1==0)||(MSEN1==1))&&(MSEN2==0)&&(RSEN1==0)&&(RSEN2==0))      
      { flag=4; }
   //*******中右转*******//
       else  
       if((LSEN1==0)&&((LSEN2==0)||(LSEN2==1))&&(MSEN1==1)&&(MSEN2==1)&&(RSEN1==1)&&(RSEN2==1))      
      { flag=5; }  
   //*******大左转*******//
      else  
       if((LSEN1==1)&&(LSEN2==1)&&(MSEN1==1)&&(MSEN2==1)&&((RSEN1==0)||(RSEN1==1))&&(RSEN2==0))      
      { flag=6; }
    //*******大右转*******//

   
switch (flag)      
{
        case 0:
          qianjin();              
        break;         
        case 1:
         turn_left1();               
        break;           
        case 2:
         turn_right1();
        break;
        case 3:
          turn_left2();
        break;
        case 4:  
          turn_right2();
        break;
        case 5:
          turn_left3();
        break;
        case 6:  
          turn_right3();
        break;
        default: break;  
}  
}
  
//****************主程序****************//  
void main()  
{
        init();   
        zkb1=30;   
        zkb2=30;   
while(1)   
{  
      qianjin();
}  
}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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