ymasquel wrote:Tu dis "il semble qu'il initialise pour un mode 2 lignes". Un afficheur 1 ligne de 16 caractères dispose d'une mémoire d'affichage organisée en 2 lignes (virtuelles) de 8 caractères.
Quand tu connecte un afficheur 2 lignes de 16 caractères tu te retrouve avec la moitié gauche du texte affichée sur la deuxième ligne physique.
Jettes un oeil sur les fiches de caractéristiques de ces deux types d'afficheurs et tu devrais comprendre. Dans le cas contraire reposte sur le forum.
Tout d'abord : je n'ai jamais utilisé de 16x1, pas vérifié plus que ça le source ni essayé à fortiori.
AFAIK il y a 2 sortes d'afficheurs 16x1, un avec 1 puce simple, 1 avec 2 puces ou 1 puce simulant un "deux puces" comme les 16x2 et autres.
Dans un "2 puces", l'auto-incrément du pointeur fait que l'on passe automatiquement à la ligne suivante en fin de ligne.
Dans un "1 puce" (cas le plus courant pour un 8x1 ou 16x1), c'est pareil sauf que la puce a été conçue au départ pour un afficheur 1x8 ou 2x8. Donc si on a initialisé un mode "2L", après le 8ème caractère on passe sur la "deuxième ligne" mais sur un afficheur 16x1 elle est mappée sur la première ligne physique 9ème position, donc c'est bon.
En gros, la puce croit qu'elle pilote un 2x8 alors qu'elle pilote un 1x16.
Si le mode "2L" n'était pas activé (mode par défaut), l'afficheur n'afficherait que les 8 premiers caractères les autres seraient écrits dans des cases non visibles; c'est le mode "compatibilité" pour de vrais 1x8 que plus personne n'utilise.
Pourquoi faire simple quand on veut faire compliqué ? En fait on en est arrivé là de mode "compatibilité" en mode "compatibilité"... Et je ne vous ai pas parlé des 4 lignes et autres.
Si on met un 2x16 ça devrait faire pareil sauf si on adresse explicitement le pointeur puisqu’ils n'ont pas le même adressage mémoire; si on se contente d'un envoi de CLEAR/HOME + 16 caractères, ça devrait être compatible.