ftzlxylly 2021-10-04 09:32 采纳率: 100%
浏览 370
已结题

关于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,而右手和左手的中间的空隙在不断的增加,到一个点后,开始右手回去,此时中间的空隙在不断地减少。然后重复。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月13日
  • 已采纳回答 12月5日
  • 创建了问题 10月4日

悬赏问题

  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果