I want to drive lots of LEDs in a spinning persistence-of-vision (POV) device. I need one output pin per LED, because matrix techniques don't work right in spinning POV devices. A serial-input, parallel-output (SIPO) chip is the best way to independently control lots of output pins using only a few pins on my microcontroller, right? Which SIPO chip should I choose?

  • 74HC4094 used in Doboz
  • 74HC595 used in bicycleledpov aka spokepov
  • TPIC6595 used in ... (a POV device I can't find the link to right now)
  • ... or perhaps something I'm overlooking?

Does one SIPO chip clearly have more capabilities or easier to use than another, or are they all more-or-less equivalent functionality? They all can be connected in the "daisy-chain SPI" configuration, right? If I only have room for one kind of SIPO chip in my box of "electronics components I always have on hand", which one should it be?


3 Answers 3


I'm working on a LED POV project, and I'm using TI's TLC5925. It's pretty much a latched shift register with constant current sinking outputs. They have more advanced chips as well; some with digital brightness control and even PWM settings for each channel. It also has 16 output channels. Non-SMT versions are also available.

  • \$\begingroup\$ that family of parts looks pretty useful. Thank you for telling me about it. \$\endgroup\$
    – davidcary
    Commented Nov 18, 2010 at 12:23
  • \$\begingroup\$ Might even use that might self in a different project; would work for 8*8 LED matrix's and not have to worry bout wether there common cathode or anode if I'm not mistaken. Will have to read more about them \$\endgroup\$ Commented Jan 2, 2011 at 9:58
  • \$\begingroup\$ @AshleyHughes These chips only SINK current, so you can only hook them up to the cathodes of LEDs. You would need a common-anode LED array, or have the anodes driven by transistors. \$\endgroup\$
    – W5VO
    Commented Jan 3, 2011 at 5:11
  • \$\begingroup\$ I order a heap of common anode displays by mistake and can't use them the MAX7219's that I have due to the max being common cathode. So should work for what I want I will have to look at how I am going to do it another time. \$\endgroup\$ Commented Jan 15, 2011 at 23:57

I hadn't looked at the 74HC4094, having always used the 74HC595, but the 74HC4094 looks like it has a couple of interesting differences:

  1. The load signal is level-sensitive, rather than edge sensitive, allowing the device to be used in a "transparent" mode, where bits from the input are immediately shown on the output.

  2. It has a cascading output which triggers on the same clock edge as the input, as well as a cascading output which is delayed by half a clock. Use of this latter output will greatly improve sample and hold margins when feeding the output of the device into another one; the former may be useful in some situations when feeding a device which is known to receive the clock before the data.

  3. The 74HC4094 does not have the asynchronous clear function of the 74HC595. There have been times I would have used the 74HC595's asynchronous clear if the load signal was level-sensitive (so that asserting clear and load simultaneously would clear the outputs), and times I would have used a synchronous clear (wire the cascade output to synchronous clear and synchronous load signals, and reduce communications requirement to two wires), but I don't think the signal will be missed on the 74HC4094.

  • \$\begingroup\$ Good points, but I wanted to add that you can use the format <number><period><space> to define better formatted lists. See the "Simple Lists" and "Advanced Lists - Nesting" sections of the Markdown editing help page. \$\endgroup\$ Commented Mar 4, 2011 at 16:11

Read the datasheets. TPIC6595 is for when you need more output current. HC595 is very cheap & widely available, and would be the 'default' choice - I think the HC4094 similar but may be some small differences - I've only used the old CMOS 4094 ages ago.

  • 1
    \$\begingroup\$ "Read the datasheets" is always good advice. However, how is it possible to deduce from the datasheet of a part whether it is a "super-useful part that I should always keep a few on hand" vs a "specialized part to only buy as needed" vs a "completely obsolete part that there's no point buying -- instead part YYY is cheaper and better in every way"? \$\endgroup\$
    – davidcary
    Commented Dec 30, 2010 at 16:08

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.