I am looking at ways of reducing the amount of work involved in building a circuit that uses 7 segment LED displays.
I want to avoid needing 8 resistors per display. The obvious solution is to match the LED's forward voltage. The question is how best to do that.
I could run the AVR at the forward voltage too. An ATtiny2313 will do 8MHz at 2.7V, but that is still a little bit high for red LEDs. It would probably be fine and can easily interface with another AVR running at 5V with some 10k resistors and the internal clamping diodes (I only need three lines for comms).
However, I would like to run the 2313 at 5V if possible because then I could put a header for a drop-in character LCD module as an option. Since I am trying to keep the component count as low as possible that rules out transistor arrays.
My idea is to use common anode displays supplied at the forward voltage (say 2.2V for the sake of argument) from a regulator. The cathodes would be connected to AVR I/O pins. When set low the AVR will sink current and the LED turns on. When held high the LED will not conduct and will be off.
Rather than set the pin to output 5V I'd just set it as an input with pull-up, so even if the LED's reverse voltage is lower than the difference between 5V and 2.2V the amount of current will be tiny.
I'll try and get around to prototyping this soon, but in theory it seems solid.
PS. There is one other option. I could use 2.2V to the anodes and a SIL resistor array to pull the cathodes up to 2.2V unless the AVR pulls them low. It's one more component but one that is much easier to solder on than 8 independent resistors.