Paul__B:
So in summary here, you have come across the worst possible display design, essentially an "orphan" product.
I sure hope they were cheap! Where did they come from?
(I'm not kidding! If they were common anode, one TPIC6B595 each would drive them easily, controlled by only three pins for many displays, not multiplexed and so at maximum brightness. As it is you are clearly in a terrible mess!)
The display is from an old gym, it wasnt bought ;D
CrossRoads:
Ah - I forgot the MAX7219 would be driving its outputs low for the common cathodes.
So, add an inverter chip (74HC240, 74HC540) between MAX7219 segment drives and ULN2803.
Still just a three chip addition vs all the transistors.
74HC595 is a poor chip for this. Limited to 8-9mA per output to avoid 70mA Absolute Max on the VCC & Gnd pin.
TD62783AP, sure if you can get them. Looks like an obsolete part, neither Digikey or Mouser carries them. Non-stocked, which usually they aren't made anymore. Looks the same to me as MIC2981, which is an active part.
I was asking, because I have some TD62783AP lying around here, so I will replace th UDN2981 with those
PaulRB:
You could remove 1 chip by driving both uln2803 with the same 74hc595. If you think about it, both those 2 '595 would be loaded with the same data at all times.
You could remove 3 chips by changing your multiplexing strategy. Multiplex by segment instead of by digit. So instead of lighting one or two whole digits at the same instant, light all the "a" segments together, then all the "b" segments etc. This would allow you to use 2 x tpic6b595 for the cathodes, replacing 2 x (74hc595+uln2803). Both udn chips could be driven by the same 74hc595 for the anodes.
Current capability of 74hc595 is not an issue in this circuit, because they only need to drive the ULN/UDN chips, which have high input impedance.
Not using the max7219 will of course mean that the Arduino will have to perform the multiplexing, making coding and timing in your sketch difficult.
Since there are 8 Displays per drivers, that would mean that in the worst case e.g. all SegA of all 8 Displays are on, drawing 50mAh each leading to 400mA for the Segment channel (+), is that reliably possible with the parts?
I would stick to multiplex the Displays instead of the Segments and would try to make it work with the Shift registers. I think its better to make the code a bit more difficult than having a lot of different hardware components
Not having the convenience of the MAX is fine for me, multiplexing wont be that hard in code I guess