Multiplexing lots of LED displays

Discussion in 'General Electronics Chat' started by autorelease, May 5, 2009.

  1. autorelease

    Thread Starter Active Member

    Jan 26, 2009
    I'm in the process of procuring a bunch of 16-segment alphanumeric display modules (part no. HDSP-6508) that I want to wire up into a big display controlled by an AVR. They're from the 1970s, and have 8 characters per unit, common cathode.

    I want to hook up sixteen of them, giving 4 rows of 32 characters. But instead of multiplexing all 128 characters, I want to multiplex each row in parallel. (i.e. illuminate the first character of all rows, then the second character of all rows, ..., then the 32nd character of all rows) Each row will have a parallel-out 16-bit shift register (actually, two cascaded 74HC595's) connected to the segment anodes of all modules in the row. The microcontroller will clock data into all four shift registers in parallel.

    Four 74HC138s will be connected to make a 1-of-32 decoder, and each output of the decoder will be connected to the cathodes of the 4 characters in the appropriate column.

    Here are my questions:

    1. Do I really need one current-limiting resistor per character? I don't want to use 128 discrete resistors, but I could use 32 four-resistor networks since each decoder output controls 4 characters.

    2. Will I need any special LED driver chips? The datasheet says that current draw is "as low as 1.0-1.5 mA average per segment," and since I don't have the actual units on hand yet, I can't measure their current draw. Can the 74HC595 and 74HC138 source/sink enough current to light these things up?

    3. Any other ideas for reducing the number of components required?

    Designing this PCB will be a doozy. :)
  2. mik3

    Senior Member

    Feb 4, 2008
    You can control the common cathode of each display with a transistor. Connect the same segments of each display in parallel.
    In this way you will be able to choose which display you want to illuminate each time and which segment of the display. If you select the displays in a sequence and illuminate the desired segments fast you will think that all the segments are on the same time due to the phenomenon of persistence of vision. It really works, I tried it with my spectrum analyzer (second link below) and you experience it every day with the TV.:)
  3. Wendy


    Mar 24, 2008
    Here is a sample of something I came up with a while back. It might give you some ideas...

  4. eblc1388

    Senior Member

    Nov 28, 2008
    Simple question to you.

    If a segment in a character is supposed to be ON. How much time it will be switched ON and OFF, i.e. the duty cycle in your multiplexing.

    Do you have sufficient brightness in this case?
  5. SgtWookie


    Jul 17, 2007
    You might take a look at MAX6954 driver IC's. You can find the datasheet here:

    Here's an application note on how to use it with 14-segment LEDs:

    Here's an application note on how to use it with 16-segment LEDs:

    Sure, you could program all of the characters into flash memory, but that'll be a pretty good-sized table, and you'll be dealing with a number of discrete components. It'll be a lot easier to use these driver ICs.
  6. autorelease

    Thread Starter Active Member

    Jan 26, 2009
    eblc1388: Since I haven't built the circuit yet, I haven't decided on a switching frequency (other than "as fast as possible.") I'm pretty sure the display would flicker if a character's duty cycle was 1/128, so I'm going to multiplex the columns instead of the individual characters, giving a duty cycle of 1/32.

    SgtWookie: I've looked at those Maxim drivers before, but I want more flexibility with the character set, so I'm going to use a table in flash memory. With 2 bytes per character and 256 possible characters, that's only a 512-byte table; shouldn't be a problem on a microcontroller with 16K of ROM.

    The displays won't be arriving for another few days, so all of this is speculative at this point.
  7. eblc1388

    Senior Member

    Nov 28, 2008
    It is not the frequency of multiplexing but the duty cycle. 1/32 is a small duty cycle for display.

    I would advise you to do a test first, even with common 7-segment display. Just write a simple loop to turn on all segments for 1/32 of time and observe the resultant brightness.