标题: 台灯的pwm调光单片机代码问题 [打印本页]

作者: 烤奶全糖    时间: 2019-5-10 18:31
标题: 台灯的pwm调光单片机代码问题
网上找的一个程序,想请教大佬们,这段代码是怎么实现PWM的?X1为低电平时间,X2为高电平时间,LED置0时点亮,置1时熄灭。这段代码逻辑是啥?到底能不能实现PWM,连占空比都看不出来是多少,很急,谢谢大家。

图片1.png (19.95 KB, 下载次数: 55)

图片1.png

作者: ccl09    时间: 2019-5-10 21:28
本帖最后由 ccl09 于 2019-5-11 13:38 编辑

while(x1!=0){},等待 x1*指令周期   的时间  ,x1<1000, while(x2!=0){},等待 x2*指令周期   的时间,占空比x2/1000.
作者: mkkop    时间: 2019-5-11 03:29
你的截图代码不完整,没办法解释, 而且X2本来就有问题,117-120行已经表明X1永远都是等于0后才往下执行,那么X2=1000-X1;这个就是多余的,123行的X2永远都是从1000开始减,
这个程序如果不给出完整的代码只能认为是错误的
作者: ygshg    时间: 2019-5-11 06:26
占空比=X1/1000.总时间是1000个时间量,低电平时X1个时间量,高电平是1000-X1个时间量,改变X1就是改变占空比,实现亮与暗的时间比例变化,由于时间短,看到的是光的总亮度变化。
作者: m182892    时间: 2019-5-11 08:26
PWM周期是1000,首先是灯亮,等待X1低电平时间到,转为灯灭,持续X2时间,高电平占空比为X2/1000
作者: JJJ1234    时间: 2022-12-21 10:34
看到你这个代码  让我想到的是呼吸灯的代码,从灭到亮 逐渐变化的
作者: Hephaestus    时间: 2022-12-21 16:51
m182892 发表于 2019-5-11 08:26
PWM周期是1000,首先是灯亮,等待X1低电平时间到,转为灯灭,持续X2时间,高电平占空比为X2/1000

问题是楼主位代码算X2的值算错了。
作者: awang79    时间: 2022-12-22 10:05
占空比=X1/1000.总时间是1000个时间量,低电平时X1个时间量,高电平是1000-X1个时间量,改变X1就是改变占空比,实现亮与暗的时间比例变化,由于时间短,看到的是光的总亮度变化。
作者: dyx811    时间: 2022-12-22 14:24
进来学习的,可惜代码不全。
作者: TTQ001    时间: 2022-12-24 23:59
PWM是一种方波脉冲串,占空比可调,占空比是开和关持续时间的比值。 该代码分别控制开启和关闭持续时间 X1 和 X2。 循环时间/计数为 1000。
作者: jinhua1916    时间: 2022-12-27 14:11
搞个2812灯带玩一玩,可以任意颜色和亮度。





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1