LCD de lecteur dvd de salon récupéré, besoin d'aide pour optimiser le code

Etant donné que l'on ne peut allumer qu'un seul segment à la fois

je dirais plutôt un seul digit à la fois. C'est manifestement un afficheur à cathode commune donc tu mets la cathode d'un des digits à zéro et tu appliques un niveau un sur les segments que tu veux allumer pour ce digit. Tu fais une petite pause pour que l'observateur ait le temps de voir les segments allumés. Ensuite tu passes au suivant et ainsi de suite.

nous sommes obligé de passer par du multiplexage (charlieplexing)

Ce n'est à priori pas du charlieplexing qui nécessite une disposition particulière des LED tête-bêche.

Si tu vas sur le Playground http://playground.arduino.cc//Main/InterfacingWithHardware#Output et que dans la page tu cherches "Seven segment displays" tu verras qu'il y a déjà des librairies qui existent. Avec un peut de chance ce que tu veux faire existe déjà.

Autrement concernant l'optimisation de ton code, si tu regardes les fonctions que tu as créées, elles sont toutes identiques la seule différences entre elles étant les segments allumés. Donc dans ces cas là tu te dis "pourquoi dupliquer le code si c'est seulement l'information qui change à chaque fois. Il faudrait peut être faire un tableau qui décrive les segments allumés ou éteint pour chaque caractère et passer en argument à cette fonction un index dans le tableau qui pointe sur le caractère à afficher."