Gestion d'un écran LCD - Tutoriel
Channel: PBElectronics
Date: 2017-07-15

https://pbelectronique.com/site/index.php/305-gestion-d-un-ecran-lcd
https://pbelectronique.com/site/index.php/shop/26-magasin/256-kitapprentissage
La gestion d'un écran LCD est un incontournable lorsqu'on veut ajouter un interface simple à nos projets d'électronique.

Les écrans LCD les plus répendus pour le marché des amateurs d'électronique sont des écrans en communication parallèle de 8-bit. Souvent, c'est des afficheurs LCD de 2 lignes de 16 caractères chacune ou de 4 lignes de 20 caractères chacune. Dans ce projet ainsi que dans le kit d'apprentissage, ce sont des afficheurs LCD 16x2. Dans les deux cas, la librairie est compatible et c'est la même gestion.

Au point de vue de l'écran, il nécessite une alimentation 5V stable entre la broche VDD et VSS. La broche V0 ou VEE sert à ajuster le contraste de l'écran. Ainsi en mettant un potentiomètre, on envoie une tension analogique ce qui ajuste le contraste. Ensuite, la broche RS ("Register Select") sert à changer le mode de l'écran. Le premier mode sert à envoyer des instructions à l'écran tandis que le deuxième mode sert à envoyer des caractères. La broche RW indique si on veut lire ou écrire à l'écran. Comme la plupart du temps on se sert de l'écran comme interface d'affichage, on relie cette broche à la masse. Ainsi, on va seulement pouvoir écrire des données à l'écran. La  broche E sert à activer ou désactiver la conversation entre le microcontrôleur et l'écran. Les broches D0 à D7 servent à l'envoie de données. C'est un bus parallèle de 8-bit, mais on peut l'utiliser en bus de 4 bits seulement (voir plus loin dans l'article). Finalement des deux autres broches (A et K) servent au rétroéclairage. Ces broches ne sont pas disponibles sur tous les modèles d'écran LCD, mais la plupart ont ces broches.

Lorsqu'on souhaite communiquer avec un écran LCD de ce type (avec contrôleur intégré), il faut initialiser le module interne afin qu'il ait les bonnes configurations. Par exemple, le nombre de bit de communication (4 ou 8), si le curseur est affiché, la grosseur des caractères etc. Ensuite, à l'aide des broches RS et E on fait des combinaisons (niveaux logiques 0 ou 1) afin de transmettre l'information à l'écran (avec le bus de données).

Ce qui rend cet écran intéressant c'est qu'il peut être relié en mode 4-bit, donc pour un microcontrôleur qui n'a pas beaucoup de broches, on peut contrôler un écran LCD de ce type avec seulement 6 broches. (RS, E, D4 à D7). Par contre, comme ce mode prend deux fois moins de bits pour transmettre l'information, l'écran réagira deux fois plus lentement.

Le projet ci-dessous est simplement un interface utilisateur avec un écran LCD 16x2. Afin de démontrer qu'on peut contrôler un tel écran avec peu de broches, j'ai utilisé un PIC16F688.

La librairie complète intègre les fonctions suivantes qui permettent de faire la majorité des projets d'affichage :

void vLcd_Cmd(unsigned char ucDonnee);
void vLcdClr(void);
void vLcdInit(unsigned char *ucSelectPort, unsigned char ucNbrBit);
void vLcdAffCar(unsigned char ucCarac);
void vLcdPoscurC0L1(unsigned char ucCol, unsigned char ucLigne);
void vLcdAffChaine(unsigned char *ucpMessage);
void vLcdAffEcran(unsigned char *ucpEcran);
void vLcdAffCarHex(unsigned char ucCarac);
void vHexToAscii(unsigned char ucByte, unsigned char *ucHi, unsigned char *ucLo);
void vLcdAffChaineC0L1(unsigned char ucCol, unsigned char ucLigne, unsigned char *ucpMessage);
void vLcdAffCarC0L1(unsigned char ucCol, unsigned char ucLigne, unsigned char ucCarac);