51单片机循迹、红外避障、遥控综合小车

    #include<AT89x51.H>
    #include <intrins.h>
    #include<HJ-4WD_PWM.H>          //包含HL-1蓝牙智能小车驱动IO口定义等函数
    #define Left_1_led        P3_7     //左循迹传感器    
    
    #define Right_1_led       P3_6     //右循迹传感器 
    
    #define LeftIRBZ          P3_5     //左避障传感器      
    
    #define RightIRBZ         P3_4     //右避障传感器        

sbit SB1=P2^3;                            //定义蜂鸣器端口
sbit IRIN=P3^3;                                       //定义红外接收端口

unsigned char code  LedShowData[]={0x03,0x9F,0x25,0x0D,0x99,  //定义数码管显示数据
                                   0x49,0x41,0x1F,0x01,0x19};//0,1,2,3,4,5,6,7,8,9
unsigned char code  RecvData[]={0x19,0x46,0x15,0x43,0x44,0x40,0x0D,0x0E,0x00,0x0F};
unsigned char IRCOM[7];

#define ShowPort P0                                   //定义数码管显示端口
unsigned char temp = 1;

void Delay1ms(unsigned int i) 

unsigned char j,k; 
do{ 
  j = 10; 
  do{ 
   k = 50; 
   do{ 
    _nop_(); 
   }while(--k);     
  }while(--j); 
}while(--i); 

void delay_nus(unsigned int i)  //延时:i>=12 ,i的最小延时单12 us

  i=i/10;
  while(--i);
}   
void delay_nms(unsigned int n)  //延时n ms

  n=n+1;
  while(--n)  
  delay_nus(900);         //延时 1ms,同时进行补偿
  
}  

void delayms(unsigned char x)                         //0.14mS延时程序
{
  unsigned char i;                                    //定义临时变量
  while(x--)                                          //延时时间循环
  {
    for (i = 0; i<13; i++) {}                         //14mS延时
  }
}

void Delay()                                          //定义延时子程序

  unsigned int DelayTime=30000;                       //定义延时时间变量
  while(DelayTime--);                                 //开始进行延时循环
  return;                                             //子程序返回
}

void ControlCar_yaokong(unsigned char ConType)    //定义电机控制子程序    (红外遥控单独设置一个 switch  case  语句  )
{
 
  stop();
 switch(ConType)                          //判断用户设定电机形式
 {
  case 1:  //前进                         //判断用户是否选择形式1
  { 
    stop();                              //进入前进之前 先停止一段时间  防止电机反向电压冲击主板 导致系统复位
    Delay1ms(150);
//    LeftLed = 0 ;
    run();
    break;
  }
  case 2: //后退                          //判断用户是否选择形式2
  { 
    stop();                                      //进入后退之前 先停止一段时间  防止电机反向电压冲击主板 导致系统复位
    Delay1ms(150);
  //  LeftLed = 1 ;      
    back();                                 //M2电机反转
    break;
  }
  case 3: //右转                          //判断用户是否选择形式3
  { 
     stop();                                  //进入左转之前 先停止一段时间  防止电机反向电压冲击主板 导致系统复位
     Delay1ms(150); 
     rightrun();                                //M2电机正转
     break;
  }
  case 4: //左转                          //判断用户是否选择形式4
  { 
     stop();                                  //进入右转之前 先停止一段时间  防止电机反向电压冲击主板 导致系统复位
     Delay1ms(150);
     leftrun();                                  //M1电机正转  //M2电机反转
      break;
  }
  case 8: //停止                          //判断用户是否选择形式8
  {
    stop();
    break;                                //退出当前选择
  }
 }
}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值