找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4338|回復(fù): 0
收起左側(cè)

51單片機舵機驅(qū)動程序

[復(fù)制鏈接]
ID:191208 發(fā)表于 2017-4-19 14:17 | 顯示全部樓層 |閱讀模式
        #include<reg52.h>
        #include <intrins.h>
        sbit Sevro_moto_pwm  = P2^0        ;   //接舵機信號端輸入PWM信號調(diào)節(jié)速度
        unsigned char push_val_left=0;
           int pwm_val_left  = 0;//變量定義
        int pwm_val_left1  = 0;//變量定義
        unsigned long S=0;
        unsigned long S1=0;
        unsigned long S2=0;
        unsigned long S3=0;
        unsigned long S4=0;
        unsigned int  time=0;                       //時間變量
        unsigned int  timer=0;                        //延時基準(zhǔn)變量
        unsigned char timer1=0;                        //掃描時間變量                                       


/************************************************************************/
/*                    PWM信號產(chǎn)生控制舵機                               */
/************************************************************************/
/*                                                                      */
/*調(diào)節(jié)push_val_left的值改變電機轉(zhuǎn)速,占空比            */
void delay(void)
{
unsigned int i,j;
for(i=0;i<=500;i++)
   for(j=110;j>0;j--);

}        

void pwm_Servomoto(void)
{  

    if(pwm_val_left<=push_val_left)        //0
               Sevro_moto_pwm=1;
        else
               Sevro_moto_pwm=0;
          if(pwm_val_left>=200)
           pwm_val_left=0;


}

void pwm_Servomoto1(void)
{  

    if(pwm_val_left1<=20)  //135
        
               Sevro_moto_pwm=1;
        else
               Sevro_moto_pwm=0;

         if(pwm_val_left1>=200)
           pwm_val_left1=0;

}


/***************************************************/
///*TIMER1中斷服務(wù)子函數(shù)產(chǎn)生PWM信號*/
void time1()interrupt 3   using 2
{        
     TH1=(65536-100)/256;          //100US定時
         TL1=(65536-100)%256;
                          //定時器100US為準(zhǔn)。在這個基礎(chǔ)上延時
         pwm_val_left++;
         
         pwm_val_left1++;
      //         S1++;
     pwm_Servomoto();                  
    // pwm_Servomoto1();
         
}

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

void main(void)
{

        TMOD=0X11;
        TH1=(65536-100)/256;          //100US定時
        TL1=(65536-100)%256;
        TH0=0;
        TL0=0;  
        TR1= 1;
        ET1= 1;
        ET0= 1;
        EA = 1;

        
    //unsigned char push_val_left=15;          //舵機歸中


        while(1)                       /*無限循環(huán)*/
        {
       push_val_left=5;
          // delay();        
           delay();
           
            push_val_left=20;
        //        delay();
                delay();
               
        }
         
         

}

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表