I'm working on driving a 10*11 LEDs matrix by a µC since a while, and I decided to come to you because I'm a bit surprised/annoyed by my results.

So, I first started with simple 5mm white LEDs either 74HC595 or TPIC6B595 shift registers for driving rows and columns, as it seems to be a kind of "standard" method. The matrix was working pretty well, but the brightness was far less than expected … I know that I can't expect the same brightness than a continuous mode 5mm LED because of multiplexing. I noticed that on forums, people always advice to put transistors array as power interface between shift registers and LEDs, but as expected it doesn't change anything for me because my TPIC6B595 shift registers were able to sink enough current.

As my goal is to obtain the same brightness with my matrix than a continuous mode 5mm LED, I decided to try with more powerful LEDs and so I get SMD 5050 (PLCC6 3.1V 60mA) ones, using all of the three modules inside of them. I changed my shift registers for an HT1632C which is a dedicated component for LEDs matrix driving.

I followed instructions from HT1632C datasheet, especially the following diagram :

enter image description here

The results were more or less the same than the first ones (I succeeded in getting more brightness due to 5050 but not enough to reach continuous 5mm). So I decided to do several tests by connecting LEDs to 5V through resistors (to aim to get nominal current through them), and then without these resistors. I noticed a slight difference concerning the brightness but not so much.

I chose to come to you because It starts to drive me crazy. I may have missed something obvious ? Probably … !

I don't know what is the usual way of doing this, for example if LEDs can be overcharged without risks (because they are pulsed) or something else ?

In brief, what I'd like to get is a 10*11 SMD 5050 LEDs matrix which permits to get almost the same brightness as 5mm LEDs in continuous mode.

Thank you for taking a bit of you time to help me solve my problem.



2 Answers 2


Any LED multiplexing solution will inherently reduce intensity of the LEDs pretty much linearly by the factor of the multiplexing duty cycle. This change in intensity is not identical to the change in intensity observed when current through the LED is reduced by changing series resistance: The resistance value is not directly the determining factor, the resultant current through the LED is, and that does not enjoy a linear relationship to resistance.

The human eye's perception of intensity of light, LED or otherwise, is far from linear: Intensity variations at low LED intensity, or for that matter in low ambient light conditions, are much more sharply perceived, than a similar change in intensity at a brighter point in the intensity curve, or under brighter ambient light conditions. This explains why the change in resistors did not show a significant change in perceived intensity.

To answer the specific question about over-driving LEDs: Yes, that is a standard mechanism for countering loss of intensity in multiplexed displays. To counter a 8-way multiplexed LED display's intensity drop, i.e. 12.5% duty cycle per LED, hypothetically the LED should be driven at 8 times the constant current. However, that is rarely practical, so either compromises must be made, or risks of LED damage must be accepted.

How much a given LED can be safely overdriven by, is (a) possibly specified in the datasheet, but (b) more typically determined by the display designer through empirical testing, especially in hobby and low-cost applications, if the datasheet-specified overdrive current is not sufficient, and risk of LED failure is acceptable.

  • For more context on LED overdriving limits for pulsed load, see this answer.
  • For a more detailed description of LED intensity and human perception, see this answer.
  • Another answer in the same vein, with pretty graphs too.

It seems impossible to get more luminosity with matrix multiplexing without largely excees the characteristics of LED. To obtain sufficient brightness, I plan to use shift registers with integrated LED driver such as TLC5940.

enter image description here

Each LED will be connected to an output of a register (cf. diagram). However, to drive 110 LEDs, it takes at least seven registers (in chain). I think this a "brute force" solution and I wonder if chaining many registers will not generate problems.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.