Driving (9x 4digit) 7-segment displays. (12x3 digits)

Bear with me, this my first project.

Please include details that are assumed knowledge to an experienced person.

I’m planning to build an external display for PC racing simulators (ie. rFactor)

Mock up:

http://i42.tinypic.com/z8mrk.jpg

The plan is to build on breadboard then transfer to perfboard at a later date.

I’m going to use 9x red 4-digit modules (0.56") from here [12 pin version]:

http://www.kingbrightusa.com/category.a … 6in&Page=1

Should I get Common Cathode, or Common Anode?

My main concerns right now are:

1. Power - How to physically wire power to all of the displays. (using a 5v bench supply most likely)

2. Data Transfer - How to get the data from the arduino onto the displays. (multiplexing? hardware/pin wiring?)

3. Fast display refresh rate/speed - I’ve seen displays lag with only four 7-segment displays, so i’d rather use extra pins on the Arduino then daisy chain.

4. Special characters. - In addition to (0-9,A,B,C,E,F) Ideally I want to be able to use the segments to form whatever other letters I can. (n, r, o, d, b, etc)

Oh and also, while talking about speed, I plan on also driving two (possibly 3) of these using the (TM1638) library.

http://www.dealextreme.com/p/8x-digital … dule-81873

Let’s leave the TM1638 based modules out of the equation for now, unless we need to somehow wire them together with these displays, in order to not have display lag???

I obviously cannot drive (9x12) pins right off of the arduino, so what is my best option?

For that many displays, you should probably use some sort of display controller. The MAX7219 is popular, but only drives 8 digits, and is pretty expensive. I’d be inclined to throw additional AVRs at the problem. An ATmega328 should be able to drive 12 digits, especially if it’s not doing anything else except listening to a “master” for new digits to display (12 pins to drive cathodes, 8pins to drive segments (traditional multiplexed display), and a pin to talk to your arduino. It should JUST squeeze in.) And it’s cheaper than the Maxim chip, can be programmed to do exactly what you want (even using the Arduino environment.) The Arduino itself could use one software-serial pin to talk to each of the three 12-digit displays. You can use bare chips programmed in the arduino and moved to the display board, or you could use cheaper arduino cones (Modern Devices’ RBBB) to save a bit of time. Go to a 40pin AVR if it makes you nervous… You’d be essentially creating a module similar to the TM1638 you mention, only with just the number of digits you need and not the switches/etc.

Common Cathode displays seem to yield more readily understandable circuits; for common anode displays you end up outputing a “0” to make a digit/segment light up.

Why not use a 240x128 Graphic LCD such as [this. You can easily display/simulate 0.56in. tall 7-segment (or other fonts) characters on it. Plus you can use all ASCII characters (upper and lower case). You should be able to drive the entire display with just about any Arduino. In the image below, the smaller 7-segment characters are about 0.45in. and the large ones are about 1.5in. tall.](White on Dark 240x128 Graphic LCD from Crystalfontz)

You’re going to need at least a 6A supply for the leds, assuming a worst case of all 7 segments plus the decimal turned on.

As others have suggested, I would also look at multiple processors and break the display into 3, 12 character displays.

I don’t know what would determine common anode vs cathode in a new design, since you can make the rest of the circuit match the leds you choose. If you were driving several segments per micro pin, you would have to see which was higher, sourcing or sinking current, but I think you’ll end up with fets driving the leds.