專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

51單片機(jī)循跡小車電機(jī)驅(qū)動(dòng)程序PWM

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2013年07月07日   【字體:

這個(gè)是從一個(gè)制作成功的循跡小車?yán)锩嫣崛〕鰜淼?br />

原理圖及其源代碼壓縮包的下載地址:http://www.torrancerestoration.com/bbs/dpj-19526-1.html

下面是主要的程序文件預(yù)覽:#include<reg52.h>  // 快速  跑的
sbit P00=P0^0;   //循跡口  
sbit P01=P0^1;
sbit P02=P0^2;

sbit P04=P0^4;    //電機(jī)1  左輪
sbit P05=P0^5;

sbit P06=P0^6;    //電機(jī)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)      // 小車直走           定時(shí)0.002ms  
 {
 TH0=0XFF;    //定時(shí)0.005ms
 TL0=0Xfe;
 TR0=1;
 }
 if(P00==0&&P01==0&&P02==1)    //小車右轉(zhuǎn)  定時(shí)0.005ms  
  {
   TH0=0XFF;
   TL0=0Xfe;      //0.01
   TR0=1; 
  } 
   if(P00==1&&P01==0&&P02==0)    //小車左轉(zhuǎn)  定時(shí)0.005ms   
  {
   TH0=0XFF;
   TL0=0Xfe;
   TR0=1;
  }
    if(P00==1&&P01==1&&P02==1)      //全部檢測(cè)到黑線時(shí) 車停
   {
    TH0=0XFF;
       TL0=0Xfe;
       TR0=1; } 


 /***********************************/
  if(P00==0&&P01==1&&P02==1)    //兩個(gè)傳感器測(cè)到 左拐
   {TH0=0XFF;
       TL0=0Xfe;
       TR0=1; } 
   if(P00==1&&P01==1&&P02==0)    //兩個(gè)傳感器測(cè)到 左拐
   {TH0=0XFF;
       TL0=0Xfe;
       TR0=1; } 
  
/**********************************/ 
 
 }
}

 xiong() interrupt 1

  if(P00==0&&P01==1&&P02==0)        //小車直線快走  定時(shí)0.002ms     
    {
    TH0=0XFF;
    TL0=0Xfe;

 P04=0;    //電機(jī)1 左輪
 P05=1;
 P06=1;      //電機(jī)2  右轉(zhuǎn)
 P07=0;
  }

  if(P00==0&&P01==0&&P02==1)     //小車右轉(zhuǎn)  定時(shí)0.005ms  
   {     
        
    TH0=0XFF;
    TL0=0Xfe;

 P04=1;    //電機(jī)1    左輪
 P05=1;    
 P06=1;         //電機(jī)2
 P07=0;
 i=1;
   }
                   if(P00==0&&P01==0&&P02==0&&i==1)    // 特別    出線時(shí)用
                                {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)    //小車左轉(zhuǎn)   定時(shí)0.005ms
       {
        TH0=0XFF;
        TL0=0Xfe;
        P04=0;    //電機(jī)1
      P05=1;
     
     P06=1;      //電機(jī)2
     P07=1;
        j=1;        
       }
                           if(P00==0&&P01==0&&P02==0&&j==1)     // 特別     出線時(shí)用
                            { 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)
  {              //全部檢測(cè)到黑線時(shí) 車停
   TH0=0XFF;
      TL0=0Xfe;
   P04=1;   
   P05=1;
      P06=1;
      P07=1;}
 /*********************************************/


  if(P00==0&&P01==1&&P02==1)     //兩個(gè)傳感器測(cè)到 左拐
  {           
   TH0=0XFF;
      TL0=0Xfe;
   P04=1;   
   P05=0;         //  一個(gè)輪前轉(zhuǎn)一個(gè)輪后轉(zhuǎn) 轉(zhuǎn)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)     //兩個(gè)傳感器測(cè)到 右拐
    {           
     TH0=0XFF;
        TL0=0Xfe;     //
     P04=0;   
     P05=1;
        P06=0;          // 一個(gè)輪前轉(zhuǎn)一個(gè)輪后轉(zhuǎn) 轉(zhuǎn)90
        P07=1;
 // w=1;
  }   /* if(P00==0&&P01==0&&P02==0&&w==1)     //兩個(gè)傳感器測(cè)到 右拐
                   {           
                  TH0=0XFF;
                     TL0=0Xfe;   //0.008
                  P04=0;   
                  P05=1;     
                     P06=0;    //
                     P07=1;
         q=0;//i=0;j=0;
       }    */
 }
/***************************************/

 

 

關(guān)閉窗口

相關(guān)文章