资源简介

自己做的五路循迹,基于51单片机的。能成功寻迹。四路驱动

资源截图

代码片段和文件信息

#include
#define uchar unsigned char
#define uint unsigned int
#define lcd P0
sbit lcden=P2^7;
sbit lcdrs=P2^6;
sbit lcdrw=P2^5;
uchar code table1[]=“cm/s“;
uchar code table2[]=“s“;
uchar code table3[]=“Speed“;
uchar code table4[]=“Time“;
void delay(uint xms);
sbit ENA=P3^4;//左前pwm使能
sbit ENB=P3^5;//右前电机pwm使能
sbit ENC=P3^6;//左后
sbit END=P3^7;//右后
uchar pwmA=0;//左前轮的占空比
uchar pwmB=0; //右前
uchar pwmC=0;// 左后
uchar pwmD=0;// 右后

sbit left1=P2^0;//四路寻迹左一探头
sbit left2=P2^1;
sbit right1=P2^2;
sbit right2=P2^3;//从左到右依次为左二左一,右一右二
sbit middle=P2^4;

sbit left_front1=P1^0;//四个电机的io口
sbit left_front2=P1^1;
sbit right_front1=P1^2;
sbit right_front2=P1^3;
sbit left_back1=P1^4;
sbit left_back2=P1^5;
sbit right_back1=P1^6;
sbit right_back2=P1^7;


uchar t=0;
uint numz;
long int miao=0;
long int v;
long int M1s;
long int  M=0;
uchar baishigebaitshitget;
void T1_init()//用于产生调pwm

TMOD=0x10;  
TH1=(65536-50)/256;  
TL1=(65536-50)%256;  
EA=1; 
ET1=1; 
TR1=1;
}
void timer1() interrupt 3//频率20k,pwm 

TH1=(65536-50)/256;  
TL1=(65536-50)%256;
t++;  
if(t else           {ENA=0;}
 
if(t else    {ENB=0;} 

if(t else    {ENC=0;}

if(t else    {END=0;}

if(t>=100)  
{t=0;}  
}

void straight()
  {
left_front1=1;
left_front2=0;
pwmA=99;//60
TR1=1;
   
right_front1=1;
right_front2=0;
pwmB=99;//35
TR1=1;
  
left_back1=1;
left_back2=0;
   pwmC=99;//35
TR1=1;
  
right_back1=1; 
right_back2=0;
pwmD=99;//
TR1=1;  
}
void stop()
{
    left_front1=1;
left_front2=1; 
right_front1=1;
right_front2=1;
left_back1=1;
left_back2=1;
right_back1=1; 
right_back2=1;

}
void lefts()//小幅度左转
  {   
left_front1=0;
left_front2=0;
pwmA=15; 
right_front1=1;
right_front2=0;
 pwmB=80;
left_back1=0;
left_back2=0;
  pwmC=20;
right_back1=1; 
right_back2=0;
pwmD=80;
}
void leftq()//大幅度左转
  {
left_front1=0;
left_front2=1;
pwmA=15; 
right_front1=1;
right_front2=0;
 pwmB=50;
left_back1=0;
left_back2=1;
  pwmC=15;
right_back1=1; 
right_back2=0;
pwmD=50;
}
void rights()
  {
left_front1=1;
left_front2=0;
  pwmA=60;
right_front1=1;
right_front2=0;
pwmB=25;
left_back1=1;
left_back2=0;
pwmC=60; 
right_back1=1; 
right_back2=0;
pwmD=20;
}
void rightq()
  {
left_front1=1;
left_front2=0;
  pwmA=50;
right_front1=0;
right_front2=1;
pwmB=15;
left_back1=1;
left_back2=0;
pwmC=50; 
right_back1=0; 
right_back2=1;
pwmD=15;
}

void xunji()
{
uchar flag;
      if((left1==1)&&(left2==1)&&(middle==0)&&(right1==1)&&(right2==1)||(left1==0)&&(left2==1)&&(middle==0)&&(right1==0)&&(right2==1))
                  {
                              flag=1;//直行
                  }
  
  else if((left1==1)&&(left2==1)&&(middle==1)&&(right1==0)&&(right2==1)||(

评论

共有 条评论