最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

基于51单片机的循迹小车程序设计

来源:动视网 责编:小OO 时间:2025-10-05 23:59:03
文档

基于51单片机的循迹小车程序设计

#include#defineucharunsignedchar#defineuintunsignedintuintzkb1=0;//**右边电机的占空比**//uintzkb2=0;//**左边电机的占空比**//uintt=0;//**定时器中断计数器**//sbitrin1=P1^0;sbitrin2=P1^1;sbitlin1=P1^2;sbitlin2=P1^3;sbitlift2=P2^2;sbitlift1=P2^3;sbitmid=P2^4;sbitright1=P2^5;sb
推荐度:
导读#include#defineucharunsignedchar#defineuintunsignedintuintzkb1=0;//**右边电机的占空比**//uintzkb2=0;//**左边电机的占空比**//uintt=0;//**定时器中断计数器**//sbitrin1=P1^0;sbitrin2=P1^1;sbitlin1=P1^2;sbitlin2=P1^3;sbitlift2=P2^2;sbitlift1=P2^3;sbitmid=P2^4;sbitright1=P2^5;sb
#include

#define uchar unsigned char

#define uint unsigned int

uint zkb1=0 ;    //**右边电机的占空比**//

uint zkb2=0 ;    //**左边电机的占空比**//

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

sbit rin1=P1^0;

sbit rin2=P1^1;

sbit lin1=P1^2;

sbit lin2=P1^3;

sbit lift2=P2^2;

sbit lift1=P2^3;

sbit mid=P2^4;

sbit right1=P2^5;

sbit right2=P2^6;

sbit pwm1=P2^0;

sbit pwm2=P2^1;

//****************延时函数****************//

void delay(uint x)   

{

   uchar j;

   while (x--)

   {

for(j=0;j<123;j++);

   }  

}

//**********初始化定时器,中断***********//

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;

   ++t;  

if(t<=zkb1)

    { 

     pwm1=1;

    }

if(t>zkb1)

     {

     pwm1=0;

     }

if(t<=zkb2)

      {

      pwm2=1;

      }

if(t>zkb2)

      {

      pwm2=0;

        }

  if(t==1000)

    {t=0;}

}

//   zkb2=左,       zkb1=左

//******************直行******************//

void qianjin()

{  

  // zkb2=200; zkb1=170;    

     zkb2=1000;    zkb1=920;  

     lin1=1; //******给电机加电启动******//

     lin2=0;

     rin1=1;

     rin2=0;  

}

//***************左转1函数***************//

void turn_right1()

{  

   // zkb2=200; zkb1=0;    

      zkb2=950;    zkb1=100;rin1=0;rin2=1;    

}

//***************左转2函数***************//

void turn_right2()

{  

  // zkb2=300; zkb1=0;     

     zkb2=1000; zkb1=110;rin1=0;rin2=1;     

}

//***************右转1函数***************//

void turn_lift1()

{  

  // zkb2=0; zkb1=200;    

    zkb2=100;    zkb1=950; lin1=0;lin2=1;   

}

//***************右转2函数***************//

void turn_lift2()

{   

  //  zkb2=0; zkb1=300;  

    zkb2=110;    zkb1=1000;  lin1=0;lin2=1; 

}

//***************循迹函数*****************//

void xunji() 

   uchar flag;

   

   if((lift2==1)&&(lift1==1)&&(mid==0)&&(right1==1)&&(right2==1))

         { flag=0; }//*******直行*******//

   else  if((lift1==0)&&(mid==0)&&(right1==0))

         { flag=0; } //******直行*******//   

   //else  if((lift2==1)&&(lift1==1)&&(mid==1)&&(right1==1)&&(right2==1))

    //     { flag=0; } //*******直行*******//

   else  if((lift2==1)&&(lift1==0)&&(mid==1)&&(right1==1)&&(right2==1))

         { flag=1; } //*******左转1*******//

 

   else  if((lift2==0)&&(lift1==1)&&(mid==1)&&(right1==1)&&(right2==1))

         { flag=2; }//***左转2***//

 

   else  if((lift2==1)&&(lift1==1)&&(mid==1)&&(right1==0)&&(right2==1))

         { flag=3; }//***右转1***//

   

   else  if((lift2==1)&&(lift1==1)&&(mid==1)&&(right1==1)&&(right2==0))

         { flag=4; }//***右转2***//

   

  

   switch (flag)

     {  

        case 0:qianjin();

              break;

        case 1:turn_lift1();

              break; 

        case 2:turn_lift2();

              break; 

        case 3:turn_right1();

              break; 

        case 4:turn_right2();

              break;  

        default: break;

      }

}

//****************主程序****************//

void main()

{   

  init();

  while(1)

  {  lin1=1; //******给电机加电启动******//

     lin2=0;

     rin1=1;

     rin2=0;

    // pwm1=1;

    // pwm2=1;

    while(1)

     {

       xunji(); //*********寻迹**********//

//      zkb1=0;

//      zkb2=500;

//     qianjin();    

 //    turn_lift1(); 

  //   turn_lift2(); 

//     turn_right1(); 

//     turn_right2(); 

     }

    }

}

文档

基于51单片机的循迹小车程序设计

#include#defineucharunsignedchar#defineuintunsignedintuintzkb1=0;//**右边电机的占空比**//uintzkb2=0;//**左边电机的占空比**//uintt=0;//**定时器中断计数器**//sbitrin1=P1^0;sbitrin2=P1^1;sbitlin1=P1^2;sbitlin2=P1^3;sbitlift2=P2^2;sbitlift1=P2^3;sbitmid=P2^4;sbitright1=P2^5;sb
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top