weixin_68010154 2022-06-25 13:54 采纳率: 0%
浏览 68
已结题

单片机舵机程序问题,不大理解

51单片机舵机使用的程序,其中为什么设置time设上限175,为什么要让angle=13,和5,这些数字是怎么来的
unsigned int Time=0;
unsigned char Angle=5;

void main()
{
TMOD=0x02;
TH0=0x9c;
TL0=0x9c;
TR0=1;
ET0=1;
EA=1;

while(1){
    if(ren==0||ren2==0)
    {Angle=13;
    led=0;}
    else
    {
        Angle=5;
        }

}
void T_0() interrupt 1
{
TH0=0x9c;
TL0=0x9c;
if(Time<Angle)
{
dj=1;
}
else

{
    dj=0;
}
Time++;
if(Time==175)
{
    Time=0;
}

}

  • 写回答

4条回答 默认 最新

  • qllaoda 2022-06-25 14:36
    关注
    获得2.50元问题酬金

    这就是一个软件PWM。
    175决定了PWM的周期,是175个Timer0中断周期的长度,这个值要根据舵机的参数决定。Angle参数决定了在一个周期中,多少个周期输出1,1占比越高,角度越大,这个值也需要根据舵机的参数来确定。
    你用的这种舵机就是PWM驱动的,占空比越高,角度越大。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 7月3日
  • 创建了问题 6月25日

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置