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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1431|回復: 0
收起左側

為什么我的單片機小車程序只能一個輪子動,求大神解惑

[復制鏈接]
ID:945628 發表于 2021-6-28 21:18 | 顯示全部樓層 |閱讀模式
#include<reg52.h>//包含51單片機頭文件,內部有各種寄存器定義

    //定義小車驅動模塊輸入IO口
   sbit L293D_IN1=P1^2;
   sbit L293D_IN2=P1^3;
   sbit L293D_IN3=P1^4;
   sbit L293D_IN4=P1^5;
   sbit L293D_EN1=P1^6;
   sbit L293D_EN2=P1^7;

   sbit Left_moto_pwm=P1^6;           //PWM信號端
   sbit Right_moto_pwm=P1^7;   //PWM信號端

        sbit Left_1_led =P3^7;           //左傳感器
        sbit zhong_1_led =P3^5;
    sbit Right_1_led = P3^6;         //右傳感器
        /***蜂鳴器接線定義*****/
    sbit BUZZ=P2^3;
         
                                                                   /*        
                                                                        #define Left_moto_go      {P1_2=1,P1_3=0;}  //左電機向前走
                                                                        #define Left_moto_back    {P1_2=0,P1_3=1;}         //左邊電機向后轉
                                                                        #define Left_moto_Stop    {P1_2=0,P1_3=0;}         //左邊電機停轉                     
                                                                        #define Right_moto_go     {P1_4=1,P1_5=0;}        //右邊電機向前走
                                                                        #define Right_moto_back   {P1_4=0,P1_5=1;}        //右邊電機向后走
                                                                        #define Right_moto_Stop   {P1_4=0,P1_5=0;}              //右邊電機停轉   
                                                                           */
        unsigned char pwm_val_left  =0;//變量定義
        unsigned char push_val_left =15;// 左電機占空比N/20
        unsigned char pwm_val_right =0;
        unsigned char push_val_right=15;// 右電機占空比N/20
                                                                        //        bit Right_moto_stop=1;
                                                                        //        bit Left_moto_stop =1;
                                                        
                                                                //unsigned  int  time=0;
                                                                 
                                                        
                                                        /*        unsigned int tt = 0x00;
                                                            unsigned int ii = 0x00;
                                                                unsigned int xx = 0x00;
                                                                        unsigned int i = 0x00;
                                                                unsigned char yy,vv,bb;*/
/************************************************************************/        
//延時函數        
/*  void delay(unsigned int k)
{   
     unsigned int x,y;
         for(x=0;x<k;x++)
           for(y=0;y<2000;y++);
} */
/************************************************************************/
/*                    PWM調制電機轉速                                   */
/************************************************************************/
/*                    左電機調速                                        */
/*調節push_val_left的值改變電機轉速,占空比            */
                void left_moto(void)
{  

    if(pwm_val_left<=push_val_left)           //17
               {
                     Left_moto_pwm=1;
                   }
        else
               {
                 Left_moto_pwm=0;
                   }

                 
}         
/******************************************************************/
/*                    右電機調速                                  */  
void right_moto(void)
{

    if(pwm_val_right<=push_val_right)
              {
               Right_moto_pwm=1;
                   }
        else
              {
                     Right_moto_pwm=0;
                    }

         
}  
/************************************************************************/
//前速前進
void  run(void)
{
     push_val_left=17;         //速度調節變量 0-20。。。0最小,20最大
         push_val_right=17;
         
         L293D_IN1=1,L293D_IN2=0,L293D_IN3=1,L293D_IN4=0;

}

                                        //后退函數
                                        //     void  backrun(void)
                                        //{
                                        //     push_val_left=12;         //速度調節變量 0-20。。。0最小,20最大
                                        //         push_val_right=12;
                                        //         Left_moto_back;   //左電機往后走
                                        //         Right_moto_back;  //右電機往后走
                                        //}

//左轉

void  leftrun(void)
{         //vv++;         
     push_val_left=5;
         push_val_right=10;


         L293D_IN1=1; L293D_IN2=0, L293D_IN3=0;  L293D_IN4=1;
        
}

//右轉
void  rightrun(void)
{
         //bb++;
         push_val_left=10;
         push_val_right=5;

         L293D_IN1=1;  L293D_IN2=0,L293D_IN3=0; L293D_IN4=1;

         
}







/*********************************************************************/        

                                        //#endif   
                                        //主函數
                                       
                                        //unsigned int leijia=1;
        void main(void)
{        
        
    P1=0X00;   //關電機        

                         TMOD=0X01;
                TH0= 0XFc;                  //1ms定時
                 TL0= 0X18;
                   TR0= 1;
                ET0= 1;
                EA = 1;                           //開總中斷


        while(1)        //無限循環
        {
         
                         //有信號為0 沒有信號為1


         
         
          if(Left_1_led==0&&Right_1_led==0&&zhong_1_led==0)
                        {
                        
                //        run();   //調用前進函數
                         }
                                 
                                                
                                    
                else if(Left_1_led==1&&Right_1_led==0&&zhong_1_led==1)            //左邊檢測到黑線
                 {
                                           rightrun();
                                
                                        }
                                         

                           
         else if(Right_1_led==1&&Left_1_led==0&&zhong_1_led==1)                //右邊檢測到黑線
                                     {         
                                       leftrun();
                                          
                                     }
                else if(Right_1_led==1&&Left_1_led==1&&zhong_1_led==0)                //右邊檢測到黑線
                                     {         
                                     run();        
                                         
                                     }

                                 
                else
                                          {    L293D_IN1=0;
                                                   L293D_IN2=0;
                                                    L293D_IN3=0;
                                                    L293D_IN4=0;        }                                                                                                               
                                        }

                        }         
/***************************************************/
///*TIMER0中斷服務子函數產生PWM信號*/
         void timer0()interrupt 1   using 2
{
     TH0=0XFc;          //1Ms定時
         TL0=0X18;
         //time++;
         
         pwm_val_right++;
         pwm_val_left++;
         right_moto() ;
        left_moto()          ;

        if(pwm_val_left>=20)
                 { pwm_val_left=0;}
          if(pwm_val_right>=20)
          {pwm_val_right=0; }
}

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91av视频在线观看 | 国产精品久久久久久久久久久久冷 | 日本三级网址 | 欧美精品99 | 成人一级黄色毛片 | 亚洲国产成人在线 | 色综合99| 亚洲欧洲一区二区 | 91免费视频 | 天天操天天天 | 青青久久久 | 久久久久久网 | 欧美日产国产成人免费图片 | 欧美精品一区二区免费 | 欧美一区二区三区在线观看 | 欧美黄色片在线观看 | 欧美精品二区 | 久久精品手机视频 | 婷婷色国产偷v国产偷v小说 | 久久亚洲91| 午夜精品在线 | 久久网一区二区三区 | 亚洲人成在线观看 | 久久尤物免费一区二区三区 | 国产精品99久久久久久久久久久久 | 久久中文字幕一区 | 久草视频在| 国产在线精品一区 | 日韩av一区二区在线观看 | 91麻豆精品国产91久久久久久 | 日韩av中文 | 中文字幕电影在线观看 | 视频一二区 | 欧美一级二级视频 | 国产精品99久久久久 | 久久国产视频网 | 婷婷综合 | 色888www视频在线观看 | 中文字幕av亚洲精品一部二部 | 成人影院在线观看 | 日本久久www成人免 成人久久久久 |