专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

51单片机循迹小车电机驱动程序PWM

作者:佚名   来源:本站原创   点击数:  更新时间:2013年07月07日   【字体:

这个是从一个制作成功的循迹小车里面提取出来的

原理图及其源代码压缩包的下载地址:http://www.51hei.com/bbs/dpj-19526-1.html

下面是主要的程序文件预览:#include<reg52.h>  // 快速  跑的
sbit P00=P0^0;   //循迹口  
sbit P01=P0^1;
sbit P02=P0^2;

sbit P04=P0^4;    //电机1  左轮
sbit P05=P0^5;

sbit P06=P0^6;    //电机2
sbit P07=P0^7;
unsigned int i=0,j=0;//q=0,w=0;
void main()
{
   while(1)
  { 
   P04=1;P05=1;P06=1; P07=1;
   TMOD=0X01;
   EA=1;
   ET0=1;  
 
if(P00==0&&P01==1&&P02==0)      // 小车直走           定时0.002ms  
 {
 TH0=0XFF;    //定时0.005ms
 TL0=0Xfe;
 TR0=1;
 }
 if(P00==0&&P01==0&&P02==1)    //小车右转  定时0.005ms  
  {
   TH0=0XFF;
   TL0=0Xfe;      //0.01
   TR0=1; 
  } 
   if(P00==1&&P01==0&&P02==0)    //小车左转  定时0.005ms   
  {
   TH0=0XFF;
   TL0=0Xfe;
   TR0=1;
  }
    if(P00==1&&P01==1&&P02==1)      //全部检测到黑线时 车停
   {
    TH0=0XFF;
       TL0=0Xfe;
       TR0=1; } 


 /***********************************/
  if(P00==0&&P01==1&&P02==1)    //两个传感器测到 左拐
   {TH0=0XFF;
       TL0=0Xfe;
       TR0=1; } 
   if(P00==1&&P01==1&&P02==0)    //两个传感器测到 左拐
   {TH0=0XFF;
       TL0=0Xfe;
       TR0=1; } 
  
/**********************************/ 
 
 }
}

 xiong() interrupt 1

  if(P00==0&&P01==1&&P02==0)        //小车直线快走  定时0.002ms     
    {
    TH0=0XFF;
    TL0=0Xfe;

 P04=0;    //电机1 左轮
 P05=1;
 P06=1;      //电机2  右转
 P07=0;
  }

  if(P00==0&&P01==0&&P02==1)     //小车右转  定时0.005ms  
   {     
        
    TH0=0XFF;
    TL0=0Xfe;

 P04=1;    //电机1    左轮
 P05=1;    
 P06=1;         //电机2
 P07=0;
 i=1;
   }
                   if(P00==0&&P01==0&&P02==0&&i==1)    // 特别    出线时用
                                {TH0=0XFF;
                                 TL0=0Xfe;
                              P04=1;
                              P05=1;
                           P06=1;
                           P07=0;
         j=0;// q=0;w=0;
                          }
       
    if(P00==1&&P01==0&&P02==0)    //小车左转   定时0.005ms
       {
        TH0=0XFF;
        TL0=0Xfe;
        P04=0;    //电机1
      P05=1;
     
     P06=1;      //电机2
     P07=1;
        j=1;        
       }
                           if(P00==0&&P01==0&&P02==0&&j==1)     // 特别     出线时用
                            { TH0=0XFF;
                                TL0=0Xfe;
                             P04=0;
                             P05=1;
                          P06=1;
                          P07=1;
            i=0;//q=0;w=0;  
             }       
  if(P00==1&&P01==1&&P02==1)
  {              //全部检测到黑线时 车停
   TH0=0XFF;
      TL0=0Xfe;
   P04=1;   
   P05=1;
      P06=1;
      P07=1;}
 /*********************************************/


  if(P00==0&&P01==1&&P02==1)     //两个传感器测到 左拐
  {           
   TH0=0XFF;
      TL0=0Xfe;
   P04=1;   
   P05=0;         //  一个轮前转一个轮后转 转90
      P06=1;
   P07=0;
 //  q=1;
   }
  /*   if(P00==0&&P01==0&&P02==0&&q==1)
      {
      TH0=0XFF;
                     TL0=0Xfe;
                  P04=1;   
                  P05=0;       //
                     P06=1;
                     P07=0;
                  w=0;//i=0;j=0;
      }    */
       if(P00==1&&P01==1&&P02==0)     //两个传感器测到 右拐
    {           
     TH0=0XFF;
        TL0=0Xfe;     //
     P04=0;   
     P05=1;
        P06=0;          // 一个轮前转一个轮后转 转90
        P07=1;
 // w=1;
  }   /* if(P00==0&&P01==0&&P02==0&&w==1)     //两个传感器测到 右拐
                   {           
                  TH0=0XFF;
                     TL0=0Xfe;   //0.008
                  P04=0;   
                  P05=1;     
                     P06=0;    //
                     P07=1;
         q=0;//i=0;j=0;
       }    */
 }
/***************************************/

 

 

关闭窗口

相关文章