找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机怎么控制一直来回摇摆的舵机停止在当前角度,主函数部分程序如下

[复制链接]
跳转到指定楼层
楼主
ID:588046 发表于 2019-8-22 08:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void Time0_Int() interrupt 3
{
TH1  = 0xff;            
TL1  = 0x1a;
    if(count<jd)         
      pwm=1;               
    else
      pwm=0;                 
    count=(count+1);         
    count=count%80;     }



void main()
{
.............................
...............................
while(1){

if(dj==1)                                    //红外按键4被按下
   {

    while(jd<12)
  {
    jd++;
count=0;
     delay(500);
  }

  while(jd>1)
{ jd--;
count=0;
  delay(500);}
         }
if(dj==2)                                                      //红外按键5被按下
{
  count=jd;                                                //这里不会写程序了。。。。。。

}  
   
   
    }

......................................................
..............................................
}


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

使用道具 举报

沙发
ID:235200 发表于 2019-8-27 16:25 | 只看该作者
程序中count用于计数PWM脉冲的周期,最大80,jd是维持高电平的时间计数,主程序中按下键时jd加1,或jd减1来控制舵机的运动,因为jd是不断变化的,所以舵机会来回摆动,要使舵机停留在某一位置,其实只需要固定jd值就可以,可以把程序改为按下4键 jd=4,按下5键jd=8,按下6键jd=6,这样就会使舵机停留在左右中三个位置.  (根据你程序中1个PWM周期80来算的,因为舵机PWM周期是20ms,而舵机旋转只有当高电平时间在1-2ms间偏转),高电平在1ms时逆时钟旋转到底,高电平在2ms时顺时钟旋转到底,高电平在1.5ms时旋转至中部
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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