Can't figure out how this 4 digit display works

4_digit_LED_display.jpg (98456Bytes)


Sorry this isn't really a robot related question, just an electronics one.

I was cruising through a local electronics shop. They have lots of salvaged parts. They had a whole box of old 4 digit LED clock displays. Since they were only about $3, I picked one up. My son wanted to build a clock.

After working through all the connections, here's the schematic.


If you check carefully, you’ll see that there are a lot of shared pins. The problem is that there are combinations that are needed that also light unwanted LEDs.

For example, if I want the display to write 12:00, I need to light the following LEDs:

  • Digit 1: 1b, 1c
  • Digit 2: 2a, 2b, 2g, 2e, 2d
  • Colon: dp3, dp4
  • Digit 3: 3a, 3b, 3c, 3d, 3e, 3f
  • Digit 4: 4a, 4b, 4c, 4d, 4e, 4f

For Digit 1, I need a logical low on pin 2, and a logical high on pins 6 and 9.

For Digit 2, I need a logical low on BOTH pins 1 and 2, and a logical high on pins 13, 10, 9, and 12.

Already, we are in trouble. Because both pins 1 and 2 need to be low, but now setting pin 13 high will also turn on LED 2f, which we don’t want when we are writing the number 2. The situation gets worse as you proceed through each digit, but I won’t bore you with the details. Try it your self if you are interested.

So my question is, how the heck did this display ever work? There are several pins that are not connected to anything, but there are also two pins (7 and 8) that are connected but don’t seem to do anything. Maybe they provide some sort of control?

Or maybe the clock that ran this display cycles pins 1 and 2 on and off in time with the enable pins for the LEDs, so that you don’t have pin 2 set low when pin 13 is high to make a ‘2’ on Digit 2. That’s the only way I can see. Any other ideas? 


Persistance of Vision perhaps? Flash the correct segments fast enough not to notice that they are flashing, while preventing two segments from lighting up at the same time?

I’m just taking stabs here.

Definitely PoV as rik

Definitely PoV as rik suggests. Note that, with the exception of the dot LEDs, each anode/+ pin is only connected to two segment LEDs - one of which uses cathode pin 1/29, and the other cathode pin 2/26.

It might seem like a pain to toggle between cathode pins 1 and 2 to get the main display to work, but it does save having to use a lot of pins on the anode side. As far as programming goes you could make life easier for yourself by using a sequence like:
• Decide which segments need to be on across the whole display (clock stuff goes here)
• Pull pin 1 low (probably need a transistor or something to handle the current of up to 13 LEDs at once)
• Set the pins high for only the segments required in ‘zone 1’ (i.e. the LEDs you want turned on that share pin 1 as cathode)
• Start a timer, something less than 20ms is preferable to avoid flicker, <5ms makes for a smooth display
• When timer is complete, turn off anode and cathode pins
• Pull pin 2 low
• Set the pins high for only the segments required in ‘zone 2’ (LEDs that share pin 2 as cathode)
• Restart the timer
• Do the calcs for the next display while waiting for the timer
• When timer is complete, turn off anode and cathode pins, go back to the start!

To keep the brightness consistent on all the LEDs I’d also think about linking the cathode pins for the dots to either pin 1 or 2 (or split them across both), which also means a few less cathode pins to think about.

Thanks, TF. Those are good

Thanks, TF. Those are good ideas.

I’ve started mapping out the sequences for each digit. You and rik came to the same POV conclusion that I did. It helped me just to post this and think through the problem.