Un enfoque viable es utilizar una cadena de cuatro registros de desplazamiento de 8 bits (por ejemplo, 74HC595) para manejar todos los segmentos, y utilizar el mismo tamaño de resistencia limitadora de corriente para cada segmento (importante - cada segmento tiene su propia resistencia).
Entonces, simplemente cambie el patrón de 32 bits apropiado desde el AVR para el valor que está tratando de representar. Esto desacoplará los requerimientos de energía del LCD de las restricciones de suministro de corriente de los pines del AVR. También reducirá la utilización de los pines del AVR a tres pines (datos, reloj, latch).
En términos de complejidad del software, todo lo que necesitas es una tabla para asignar los valores de los dígitos a los patrones de bits. Si mantienes el cableado consistente entre los dígitos, eso es sólo una tabla de búsqueda de 10 entradas (si sólo estás mostrando números de base-10). El protocolo de comunicación de los registros de desplazamiento no podría ser mucho más simple - abrir el latch, introducir los bits de datos, cerrar el latch, y son capaces de operar de forma fiable a velocidades muy superiores a las que se pueden alcanzar con los AVRs, por lo que puedes simplemente mover los cables tan rápido como sea posible en el software. Si quieres reducir la potencia, puedes lograr PWM desplazando en 0x0000 durante el ciclo de apagado también y utilizando interrupciones del temporizador para asegurar la consistencia del ciclo de trabajo, por ejemplo.
Por último, estas cosas son baratas y vienen en paquetes DIP si eso es importante para usted.