Nous avons 27 invités et aucun membre en ligne

La gestion d'un écran LCD est un incontournable lorsqu'on veut ajouter une interface simple à nos projets d'électronique.

Les écrans LCD les plus répandus sur le marché des amateurs d'électronique sont des écrans utilisant une communication parallèle de 8-bits. Ce sont souvent des afficheurs LCD disposant de 2 lignes de 16 caractères ou de 4 lignes de 20 caractères chacune. Dans le projet que nous vous présentons ici, ainsi que dans le kit d'apprentissage, nous utilisons des afficheurs LCD 16x2. A noter que pour les deux types d’afficheur, la librairie est compatible et on utilisera les mêmes commandes que l’on adaptera en fonction du nombre de caractères affichés. L’écran nécessite une alimentation stabilisée de 5V appliquée entre la broche VDD et VSS. 

La broche V0 ou VEE permet d’ajuster le contraste de l'écran. Ainsi en insérant un potentiomètre entre le 5V et la masse en plaçant le curseur sur la broche V0 ou VEE, on envoie une tension analogique qui permet d’ajuster le contraste.

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.

La broche RS ("Register Select"), quant à elle, sert à changer le mode de fonctionnement de l'écran. Le premier mode sert à envoyer des instructions à l'écran tandis que le second mode permet l’envoi de caractères.

La broche RW (Read / Write) est utilisée soit pour lire soit pour écrire sur 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 sur l'écran.

La broche E permet d’activer ou de désactiver la communication entre le microcontrôleur et l'écran.

Les broches D0 à D7 servent à l'envoi de données. C'est un bus parallèle de 8-bits, mais on peut également l'utiliser en bus de 4 bits seulement (voir plus loin dans l'article).

Finalement les deux dernières broches (A et K) servent au rétro éclairage. Ces broches ne sont pas disponibles sur tous les modèles d'écrans LCD, mais la plupart disposent de 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 puisse disposer des bonnes informations. Par exemple, connaître le nombre de bit de communication (4 ou 8), savoir si le curseur est ou non affiché, connaître la grosseur des caractères etc. Ensuite, à l'aide des broches RS et E on réalise des combinaisons de niveaux logiques (0 ou 1) afin de transmettre l'information à l'écran par l’intermédiaire du bus de données.

Ce qui rend cet écran particulièrement intéressant c'est qu'il peut être configuré en mode 4-bits, donc si on utilise un microcontrôleur qui ne dispose pas de beaucoup de broches, on peut contrôler l’écran LCD de ce type avec seulement 6 broches. (RS, E, D4 à D7). Par contre, comme ce mode utilise deux fois moins de bits pour transmettre l'information, l'écran réagit deux fois plus lentement.

Le projet ci-dessous est simplement une 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 réaliser 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);

Sans abonnement Abonnés et Abonnés VIP
 <--- Schéma  <--- Schéma Complet
<--- Code en Hexa <--- Librairie pour écran LCD en C modifiable