找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4396|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机舵机驱动程序

[复制链接]
跳转到指定楼层
楼主
ID:191208 发表于 2017-4-19 14:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
        #include<reg52.h>
        #include <intrins.h>
        sbit Sevro_moto_pwm  = P2^0        ;   //接舵机信号端输入PWM信号调节速度
        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;                        //延时基准变量
        unsigned char timer1=0;                        //扫描时间变量                                       


/************************************************************************/
/*                    PWM信号产生控制舵机                               */
/************************************************************************/
/*                                                                      */
/*调节push_val_left的值改变电机转速,占空比            */
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中断服务子函数产生PWM信号*/
void time1()interrupt 3   using 2
{        
     TH1=(65536-100)/256;          //100US定时
         TL1=(65536-100)%256;
                          //定时器100US为准。在这个基础上延时
         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)                       /*无限循环*/
        {
       push_val_left=5;
          // delay();        
           delay();
           
            push_val_left=20;
        //        delay();
                delay();
               
        }
         
         

}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

无效楼层,该帖已经被删除
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表