如何控制74hc595驱动led产生灰度等级
问:
平常我们用595来驱动led的话要么亮,要么灭,灰度怎么产生呢?
整体的灰度倒是很好控制。
直接将数据送号,然后用一个pwm波形控制oe脚就可以了,但是如果要产生一个每个点都好像是有灰度,每个点的灰度值都不同改怎么处理呢?
市面上我见过一种灯饰控制器,七彩的流水效果,各个颜色之间是过渡色,并不是突兀的直接变化,比如大屏幕它们的灰度是怎么控制的呢?
-----------------------------------------------------------------------------------------------------------------------------------------
答:
我本来不想说的,因为以前有人说过现在LED的资料漫天飞,没什么行业秘密16个灰度,也就是 0--15,用4个BIT来表示, 8-4-2-1
用PWM产生4个联系不同占空比的脉冲
T8 8/16 对应BIT8
T4 4/16 对应BIT4
T2 2/16 对应BIT2
T1 1/16 对应BIT1
8/16表示的是把PWM的周期划分为16份,其中量的周期占8份,其他雷同
当这4个脉冲运行后,由于人的生理特点。
也会出现需他的灰度;
同上面的方法比较,它需要4次个周期人眼才能感觉出灰度;
但是对PWM的要求就很低;比如256种灰度,不过送8次,1024也不过要10次
大大减低了对硬件的要求,现在基本都是使用这种方法;
在一个595上+出现不同的灰度,就必须结合上面说的东东;
把一个灰度分解成4帧
例如灰度9: 1001
T8 8/16 对应BIT8
T4 不亮对应BIT4
T2 不亮对应BIT2
T1 1/16 对应BIT1
所以我们的各个灰度分解为4帧,送4次都595,就可以了
例如在1个595上出现下面不同灰度的4个点,(就以4个点举例,)
4个点的灰度
3,12,10,7
转化为BIN码
0011 1100 1010 0111
把8-4-2-1码分割出来,得到独立的4帧
BIT8
0 1 1 0
BIT4
0 1 0 1
BIT2
1 0 1 1
BIT1
1 0 0 1
步骤:
1.把BIT8的数据送到595,用PWM控制OE的脉冲为T8
2.把BIT4的数据送到595,用PWM控制OE的脉冲为T4
3.把BIT2的数据送到595,用PWM控制OE的脉冲为T2
4.把BIT1的数据送到595,用PWM控制OE的脉冲为T1
经过4帧的时间叠加后,就得到不同的灰度。
解释:
看了三遍才知道是怎么来的了。
呵呵偷着笑!
上面不少问的,我差点也同问了,还是先自己想想在问。
4个点的灰度分别是 3,12,10,7
转化为BIN码
0011 1100 1010 0111
把8-4-2-1码分割出来,得到独立的4帧
BIT8
0 1 1 0 //第一位0是来自3的最高位,第二位1是来自12的最高位,第三位1来自10的最高位,第四位0来自7的最高位。
BIT4
0 1 0 1 //第一位0是来自3的第二位,第二位1是来自12的第二位,第三位0来自10的第二位,第四位1来自7的第二位。
BIT2
1 0 1 1
BIT1
1 0 0 1
BIT2\BIT1类似上面。