Prueba con esta función. Me ha funcionado siempre y es sencilla escalarla para cualquier cantidad de displays. Importante que la declaración de variables
int display_1; // Variable que muestra el caracter 1 en el display 1 más significativo
int display_2; // Variable que muestra el caracter 2 en el display 2
int display_3; // Variable que muestra el caracter 3 en el display 3
int display_4; // Variable que muestra el caracter 4 en el display 4 menos significativo
//******************* Rutina para Mostrar Número cualquiera base 10 en el Display 7 Segmentos ********************
void displayValor(long int valor){
// Descomponemos la cuenta en unidades, decenas y centenas para mostrar en cada display
display_1 = (valor / 1000) % 10; // Dígito más significativo. Millares
display_2 = (valor / 100) % 10; // Centenas
display_3 = (valor / 10) % 10; // Decenas
display_4 = (valor % 10); // Unidades
}
Para este caso, la variable "valor" es suficiente con declararla long int o de 16 bits por la cantidad de display, es decir; solo cuento hasta 9999.
Espero te sea útil.
Saludos