TLC5940 and 74HC595 Shift Register

Hello forum,

First post here, and I am just looking for some help in understanding how these two components - the TLC5940 and the 74HC595 Shift Register - differ from one another. I am just getting started with my first few projects with Arduino, working towards building a 8x8 LED grid. Seems like one, or both, of these components should be helpful... do they essentially do the same thing? I read some older posts where people are using both together, too.

Thanks in advance for sharing your knowledge.

So far my favorite source of datasheets:

Go there, and get familiar with these components.
I wonder, why do you think that you could use them? Sounds like you are trying too much in the beginning.


Look at the LED multiplexing examples for use of the '595...

Oops, and again, I was too busy while reading the first question. LED grid was mentioned there, so these components are needed.


So, my current understanding is that the TLC5940 and the 74HC595 are both types of shift registers, but the TLC5940 is specially designed as a LED driver (it combines a high-power, low-side switch and a shift register... but can only be used to sink current, whereas the 74HC595 can be wired through a high-side switch to send current???). I am pulling this from this video (4:20 - 5:35)... Am I understanding this correctly??

I will then be unable to form a matrix using only TLC5940's because they are only low-side, and unable to send current?

Many thanks to all who have replied to this thread... datasheetcatalogue has been a big help!


I will then be unable to form a matrix using only TLC5940’s because they are only low-side, and unable to send current?

Minor point of correction, nothing “sends” current. Current is a flow so there are “sources” and “sinks”. The TLC5940 is a current sink. Something else must source the current, generally the power supply.

You are correct both the 5940 and 595 are basically shift registers. The 5940 is designed specifically for high power PWM applications. The 595 is more generic. As I recall, the 595 is not able to source very much current, so you typically need to use them with a transistor.

How you design your matrix will determine what components you can and cannot use. For low power 8x8 you really don’t need any additional components. The only reason you start add in additional components like shift registers is so you can use less pins or buffer the I/O output. For example, if you are just using standard LEDs and you limit the current to 5 or 10mA you can just drive the matrix directly from the Arduino’s I/O pins. (It will take all 16 available I/Os.)

Thanks for the correction James! Good point about being able to do an 8x8 with just the Arduino's outputs, as well. I guess I am looking down the road hardware-wise, as I hope to eventually use common cathode RGB led's to make a similar matrix with (which I think should require 48 pins for an 8x8??? Might start with a 4x4 for those).

Thanks again,


gooduinofaith: ... the TLC5940 is specially designed as a LED driver (it combines a high-power, low-side switch and a shift register...

IsThere any equivalent High-Side device??

Since the TLC5940 can control LED current, the high side does not need to, right???

IsTHere a nice array of high-side configuration FETs in a small package that a 595 could drive easily??


I was thinking of pulling from one of "Grumpy Mike's" monome projects he had posted on his website (

His schematic (located halfway down the page, and downloadable in pdf) shows him using TCP6108 MOSFETS for the rows triggered by the Arduino pins (I think?)... To quote:

"The TLC5940 controls the LEDs by means of a current sink, that is, it pulls the LED to earth. Therefore, in order to multiplex it we have to connect four cathodes, one on each row, to the input of the driver chip and the other end of the LEDs have to be pulled up to 5V when it is time to light up that row. This can be done with a p-channel FET, when it’s gate is a 5V then the FET is off or high resistance, when the gate is at earth then it is turned on, or has a very low resistance. The Arduino drives these FETs by pulling one low at any one time." Mike Cook

I must admit, my growing but rudimentary understanding of diagrams is slowing me in fully understanding his layout. I don't think I quite understand how the current is flowing here. These are common cathode RGB LED's, right? Where is the current flowing from? Is it Arduino Pin 15 - 18? I'm a little lost...

ps: Terry, thanks very much for you post! It's wonderful having you weigh in on the topic, as many of your enlightening postings all over the forum have been integral in getting me this far.


Oh, I LIKE this FET: Now, IsThere an easy-to-connect TO92 or other 3-pin version?? It's great for heat-sinking to a PCB, though...

OK, I need to look at the schematic more. The current basically flows from +5V through one of these FET 'switches' to a ROW of 4 LEDS. Then the TLC5940 decides how much current will flow in each LED. I Think..

Chris, thanks... what keeps a lot of us going with Arduino is knowing that we're not in a vacuum no matter where on the Earth (Or the Space Station?) we are. Right now I'm in the Middle of the Middle East and people are getting shot North of me. And South, like 40 yesterday. And East in Baharain. And West in Libya. It's pretty damn distracting. And disappointing. Some feelings of friendliness and collaboration and tolerance go a long way right now.