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

关于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 Stata链式中介效应代码修改
  • ¥15 latex投稿显示click download
  • ¥15 请问读取环境变量文件失败是什么原因?
  • ¥15 在若依框架下实现人脸识别
  • ¥15 添加组件无法加载页面,某块加载卡住
  • ¥15 网络科学导论,网络控制
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错