(玩電子) 電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

51單片機循跡小車電機驅動程序PWM

作者:佚名   來源:本站原創   點擊數:x  更新時間:2013年07月07日   【字體:

這個是從一個制作成功的循跡小車里面提取出來的

原理圖及其源代碼壓縮包的下載地址:http://www.ljflms.live/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;
       }    */
 }
/***************************************/

 

 

發表評論】【告訴好友】【收藏此文】【關閉窗口

文章評論

相關文章

全天计划时时彩