I'm trying to interface 8 digits of 16-segment alphanumeric LED displays (common cathode) with an Arduino. I'm having difficulties finding the right driver IC for this.
Has anyone done this before and what IC did you use?
I have found a few possible solutions but they all have some draw-backs.
First I was planning to use the famous MAX7219. This looked good until I realised that the 16-seg displays I have only have a single common cathode. So I can't connect 2 of these to one digit.
Then I was looking at the 74HC595 8 bit shift register. That should work, but I would need 2 of these per digit, so 16 in total. That seems a bit excessive. But this is probably the solution I would go with if nothing better comes up.
I have also found the MAX6955 or MAX6954. This IC would do all 8 digits in one IC and even has the "font" built in. That would be great but I can't find any place to buy these in the UK.
I can't believe that it is so hard to find a driver for 16-segment displays while it is so easy to get these for 7 segment displays.
I did think about the MAX7219 for a while (since I already have the ICs) and was wondering whether I could just put some simple diodes in the digit select lines to prevent short circuit. I've drawn up some schematics for that. Have a look at the bottom where I put diodes in the lines. Any idea if that might work? I was also considering a XOR gate instead of the 2 diodes but I guess they wouldn't take the current and I'm not sure if adding transistors would interfere with the MAX's current sources.
The schematic only shows 2 digits for now. I just wanted to show what I meant. I would spread the "half digits" randomly across the MAX to minimise the likelihood of 2 MAX trying to drive the same physical digit at the same time. I take it that 2 daisy-chained MAX7219 don't sync their digit scan clocking? If they did, I could completely avoid 2 MAX driving the dame digit at the same time.
I'll also check out the TLC ICs you mentioned. I do think my project needs some TLC ..
Those diodes are what I was suggesting, they form an AND gate (XOR is not the right logic function here).
However I don't see the need for the second 7219, you have the equivalent of 4 digits and that be handled by a single chip.
Also you don't have the segments in parallal, eg A1 goes to G1. That will make your code really difficult as the bit pattern for a given character will be different for each display.
thanks for that. This has given me confidence to try it this way on a breadboard without the fear of frying something.
In the end I want to use 8 digits. I have only drawn 2 for now to show the idea I had with the diodes.
The cross wiring of the segments was intentional. The idea was to minimise the chance that 2 MAX would drive the same common cathode at the same time. Do you think that makes no sense?
The project will only display something like 10 fixed words, so I would create a bit array for those words (one bit per segment) and wouldn't need to convert text on-the-fly.
Are you sure that AND is the right logic though? In my understanding it should be either one or the other MAX driving that line but never both, which is, in my understanding, an XOR. But correct me if that's wrong...
aaahhhhhhh, I see what you mean...
Use 2 digit lines from the same MAX to drive the 2 halves of one physical digit connected to the same common cathode with diodes. That way it would NEVER try to drive the cathode from 2 places as only one digit line is active at any one time....
Will amend the schematic and post as I'm not sure I can put this in words properly ..
OK, I just wired this up on a bread board (and, boy, am I glad I stocked up on jumper wires recently).
While it does work in principle, it will always light up both segments that share a segment line. For example segment A1 and G1 as they are both connected to the SEG_A line. Having a look back at the schematic it makes perfect sense.
Back to the drawing board...
Any ideas how I could resolve this? Can it even be done with a single common cathode?
I've decided to go with the 8x8 matrix. I've ordered 2 of these now to see how it works. They are bi-colour (red and green) but I will only be using the red part.
I'll update the thread with my progress, if anyone is still interested.
I might even make it modular and design a small PCB that holds one matrix and one MAX7219. ;D