ftzlxylly
2021-10-04 09:32
采纳率: 100%
浏览 61

关于51单片机pwm控制呼吸灯

计数周期怎么能和占空比比较呢

img

img

img


原理我懂,但最后控制led亮和灭的if语句看不懂

  • 好问题 提建议
  • 收藏

1条回答 默认 最新

  • 莫名其妙的代码 2021-10-08 21:46
    已采纳

    最后的if,作用相当与一个界限。
    这里我们就假设一下当tcount,dutyfactor,direct 都为0。那程序一开始 tcount计数累加,这个时候因为 dutyfactor一直为0,所以最后的if,一直为false,执行100次,所以灯一直为 1。然后tount计数满了,就到第一个 if,此时tcount=0,清空,然后direct为0,所以dutyfactor++为1。此时,灯设置为0,有一次,灯设置为1,有99次。然后tount计数满了,就到第一个 if,此时tcount=0,清空,然后direct为0,所以dutyfactor++为2。此时,灯设置为0,有两次,灯设置为1,有98次。一直下去,灯设置为0的次数增加,设置为1的次数减少。然后direct 设置为1,一直下去,灯设置为0的次数减少,设置为1的次数增加。然后重复。
    所以dutyfactor就像是一个界限一样,举个例子:双手合并,左手不动,右手向右移动,此时,你的右手就是dutyfactor,而右手和左手的中间的空隙在不断的增加,到一个点后,开始右手回去,此时中间的空隙在不断地减少。然后重复。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题