久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 四輪紅外模塊尋跡小車的單片機代碼 [打印本頁]

作者: 月明天裁    時間: 2018-11-1 21:48
標題: 四輪紅外模塊尋跡小車的單片機代碼
這個代碼是我參加比賽時用的,有興趣的可以參考下
硬件連接
    P1_6 接驅動模塊 ENA 使能端,輸入PWM信號調節速度
      P1_7 接驅動模塊 ENB  使能端,輸入PWM信號調節速度

      P3_4 P3_5 接IN1  IN2    當  P3_4=1,P3_5=0; 時左電機正轉   驅動藍色輸出端 OUT1
OUT2接左電機   
      P3_4 P3_5 接IN1  IN2    當  P3_4=0,P3_5=1; 時左電機反轉                  
      P3_6 P3_7 接IN3  IN4   當  P3_6=1,P3_7=0; 時右電機正轉   驅動藍色輸出端 OUT3
OUT4接右電機
      P3_6 P3_7 接IN3  IN4   當  P3_6=0,P3_7=1; 時右電機反轉

      P1_0接四路尋跡模塊接口第一路輸出信號即中控板上面標記為OUT1
      P1_1接四路尋跡模塊接口第二路輸出信號即中控板上面標記為OUT2   
      P1_2接四路尋跡模塊接口第三路輸出信號即中控板上面標記為OUT3
    P1_3接四路尋跡模塊接口第四路輸出信號即中控板上面標記為OUT4
   四路尋跡傳感器有信號(白線)為0  沒有信號(黑線)為 1
   四路尋跡傳感器電源+5V GND 取自于單片機板靠近液晶調節對比度的電源輸出接口
                       
                        
   關于單片機電源:本店驅動模塊內帶 LDO 穩壓芯片,當電池輸入最低的電壓 6V 時候
可以輸出穩定的5V
   分別在針腳標+5 與GND 。這個電源可以作為單片機系統的供電電源。
  ****************************************************************************/

  #include<AT89x51.H>

  #define Left_moto_pwm     P1_6      //接驅動模塊ENA  使能端,輸入 PWM 信
號調節速度
  #define Right_moto_pwm    P1_7      //接驅動模塊ENB

     #define Left_1_led        P1_0      //四路尋跡模塊接口第一路
  #define Left_2_led        P1_1      //四路尋跡模塊接口第二路
     #define Right_1_led       P1_2      //四路尋跡模塊接口第三路
  #define Right_2_led       P1_3      //四路尋跡模塊接口第四路


  #define Left_moto_go      {P3_4=0,P3_5=1;} //P3_4 P3_5  接 IN1  IN2     當
P3_4=0,P3_5=1; 時左電機前進
  #define Left_moto_back    {P3_4=1,P3_5=0;} //P3_4 P3_5  接 IN1  IN2     當
P3_4=1,P3_5=0; 時左電機后退      
  #define Left_moto_stp     {P3_4=1,P3_5=1;} //P3_4 P3_5  接 IN1  IN2     當
P3_4=1,P3_5=1; 時左電機停轉                 
  #define Right_moto_go     {P3_6=0,P3_7=1;} //P3_6 P3_7 接 IN1  IN2   當
P3_6=0,P3_7=1; 時右電機前轉
  #define Right_moto_back   {P3_6=1,P3_7=0;} //P3_6 P3_7 接 IN1  IN2   當 P3_6=1,P3_7=0; 時右電機后退
     #define Right_moto_stp    {P3_6=1,P3_7=1;} //P3_6 P3_7  接IN1  IN2   當
P3_6=1,P3_7=0; 時右電機停轉
      unsigned char pwm_val_left  =0;//變量定義
  unsigned char push_val_left =0;// 左電機占空比 N/10
  unsigned char pwm_val_right =0;
  unsigned char push_val_right=0;// 右電機占空比 N/10
  bit Right_moto_stop=1;
  bit Left_moto_stop =1;
  unsigned  int  time=0;
/************************************************************************/
    void delay(unsigned int k)      //延時函數
{      
      unsigned int x,y;
    for(x=0;x<k;x++)   
      for(y=0;y<2000;y++);
}

/************************************************************************/
      void  run(void)  //前進函數
{
      push_val_left  =3;  //PWM 調節參數 1-10   1 為最慢,10 是最快  改這個值可以改變
其速度
    push_val_right =3;    //PWM 調節參數 1-10   1為最慢,10是最快   改這
個值可以改變其速度
    Left_moto_go ;      //左電機前進
    Right_moto_go ;    //右電機前進
}

/************************************************************************/
      void  left(void)  //左轉函數
{
      push_val_left  =8;  //PWM 調節參數 1-10   1 為最慢,10 是最快  改這個值可以改變
其速度
    push_val_right =8;    //PWM 調節參數 1-10   1為最慢,10是最快   改這
個值可以改變其速度
    Right_moto_go;    //右電機繼續
    Left_moto_stp;      //左電機停走
}
  /************************************************************************/
      void  right(void)  //右轉函數
{
      push_val_left  =8;  //PWM 調節參數 1-10   1 為最慢,10 是最快  改這個值可以改變
其速度
    push_val_right =8;    //PWM 調節參數 1-10   1為最慢,10是最快   改這個值可以改變其速度
    Right_moto_stp;    //右電機停走
    Left_moto_go;   //左電機繼續
}
   
   
/************************************************************************/
/*                    PWM 調制電機轉速                                    */
/************************************************************************/
/*                    左電機調速                                         */
/*調節push_val_left的值改變電機轉速,占空比             */
    void pwm_out_left_moto(void)
{   
    if(Left_moto_stop)
    {
     if(pwm_val_left<=push_val_left)
          Left_moto_pwm=1;   
  else   
          Left_moto_pwm=0;
  if(pwm_val_left>=10)
  pwm_val_left=0;
    }
    else  Left_moto_pwm=0;
}
/******************************************************************/
/*                    右電機調速                                   */   
    void pwm_out_right_moto(void)
{   
   if(Right_moto_stop)
    {   
     if(pwm_val_right<=push_val_right)
          Right_moto_pwm=1;   
  else   
          Right_moto_pwm=0;
  if(pwm_val_right>=10)
  pwm_val_right=0;
    }
    else    Right_moto_pwm=0;
}
/***************************************************/
///*TIMER0中斷服務子函數產生 PWM信號*/
    void timer0()interrupt 1   using 2
{
      TH0=0XF8;     //1Ms定時
    TL0=0X30;     time++;
    pwm_val_left++;
    pwm_val_right++;
    pwm_out_left_moto();
    pwm_out_right_moto();
  }   
  /***************************************************/

  void main(void)
{

  TMOD=0X01;
  TH0= 0XF8;       //1ms定時
    TL0= 0X30;
  TR0= 1;
  ET0= 1;
  EA = 1;

  while(1)              /*無限循環*/
  {   
   
       //四路尋跡傳感器有信號(白線)為0  沒有信號(黑線)為1   

       switch(P1&0x0f)
  {
    case 0x00:            // 全部沒有壓線,直轉
      run();
      break;
    case 0x01:            // 右壓線,左轉
      left();
      break;
    case 0x02:            // 右壓線,左轉
         left();
      break;
    case 0x04:            // 左壓線,右轉
      right();
      delay(6);          //轉向延時
      break;
    case 0x08:            // 左壓線,右轉
      right();           
      delay(6);          //轉向延時
      break;
   
     }
     }
}
   
全部資料51hei下載地址:
尋跡小車.pdf (117.16 KB, 下載次數: 79)


作者: h505459004    時間: 2019-7-15 21:19
謝謝樓主分享
作者: 入土單片機    時間: 2019-10-25 21:14
您是用了四個電機嗎





歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产综合亚洲精品一区二 | 日韩在线视频网站 | 99久久久国产精品 | 久久国产精品免费视频 | 亚洲精品久久久久久久久久久 | av手机版 | 一区在线观看视频 | 亚洲精品国产一区 | 在线视频a | 免费午夜视频 | 欧美激情一区二区三区 | 麻豆国产91在线播放 | 成人免费福利视频 | 国产精品久久免费 | 男男成人高潮片免费网站 | 国产成人精品网站 | 一区二区av | 免费一级片 | 九色91在线 | 香蕉视频一直看一直爽 | 亚洲 欧美 激情 另类 校园 | 亚洲免费精品视频 | 国产精品伦理一区 | 日本不卡在线播放 | 国产一级二级 | 夜夜贪欢〈高h〉 | 91精品久久久久 | 国产理论在线 | 影音先锋国产精品 | 91免费福利 | 日韩三级久久 | 超碰精品在线 | 午夜网| 亚洲美女网站 | 欧美一区二区三区在线观看视频 | 国产精品一区二区视频 | 欧美一区不卡 | 日日拍夜夜拍 | 超碰成人av| 国产一级二级三级 | 日韩毛片在线播放 |