控制数码管亮度就要输出更高频率的PWM,单片机移位频率不够。 用FPGA的高速移位时钟可使74HC595的Q0~Q7输出上Mhz的信号。 |
都没回到到点子上。用595驱动时一样可以用PWM的概念控制亮度。楼主一定是觉得亮度太高想降低亮度对不对。你可以这样,我自己就是这么做的,完全没有任何问题。 首先定义一个最高亮度,比如200,这个数字可以随意定,数字越大可控制的亮度级别越精细 #define MAX_BRIGHT 200 然后定义一个你需要的亮度,这个亮度取值0-200,比如2 #define BRIGHT 2 再定义1个变量用于PWM计数 uchar nowPwm; 然后在main函数的while循环中(或者定时器中)写以下代码 while(1){ nowPwm++; if (nowPwm<=BRIGHT) { // PWM计数还没有超过你指定亮度值的时候点亮数码管(也就是让位选端的IO通电) // 根据你自己的写法填在这里 } else { // 当PWM计数已经超过你设置的亮度值以后,就关闭所有数码管的输出 // 根据你自己的写法填在这里 } // 计数超过最大亮度值时计数值归零,进行下一个PWM的Cycle if (nowPwm>=MAX_BRIGHT) { nowPwm=0; } } |
yzwzfyz 发表于 2019-5-7 11:25 用SS8050,1.5A |
本帖最后由 yzwzfyz 于 2019-5-9 08:20 编辑 当然亮度是有极限的,另外扫描时,亮度占空比也是关键。 |
本帖最后由 yzwzfyz 于 2019-5-9 08:19 编辑 如果你是一般的LED,则不需要加三极管,因为普通LED 40mA 时亮度已达到最亮捌点,电流再大,亮度提升也不大了,也就是说,你只能让LED的亮度在3-40mA之间变化。再大再小意义都不大。非普通LED即便电流不同,但意思一样。 595的I/O输出吸收电流=40mA是没有问题的(=0时亮),但高电平输出电流(=1亮)就小得多了! 再加上的扫描输出,如果是1/8扫描,其平均电流只有1/8,所以设计到60mA也可以! 综上所说,你只要改一下限流电阻就OK了! |
兰州hsd 发表于 2019-5-7 15:40 好的好的,我先试试。 |
tzs233 发表于 2019-5-7 14:47 哦哦,谢谢您,我试试。 |
找个开发板看看成熟的数码管应用,别闷头瞎想 |
你需要加三极管来供电,I\O口只需要给三极管一个导通截至的信号即可,否则I\O口电流太小亮度无法提高的。 |
你这电路图设计思路就不对 一般595的I/O电流 才25mA 数码管亮的笔段一多DIG0~DIG3不能提供足够多的电流,数码管亮度就不受控了。 你可以先通过单片机或595的I/O控制 三极管/场管, 连到数码管共阳极DIG0~DIG3上。 这样PWM占空比来调节通断时间达到控制总电流,进而稳定控制数码管亮度 |
数码管的亮度:取决于加上它上面的电流。 你有办法增加它的电流吗(含通电的时间,好即平均电流)? |