Christophe Jacquet

Afficheurs LCD

20090131_lcd.jpg Il existe de nombreux modèles d’afficheurs alphanumériques LCD, qui varient par la taille (nombre de lignes et de colonnes), par la présence de rétroéclairage et son type, ainsi que par le jeu de caractères disponibles. Malgré une telle diversité, les fabricants ont en général la bonne idée de s’aligner sur la norme de fait Hitachi HD44780.

Ce billet constitue une introduction générale aux afficheurs. Deux articles ultérieurs détailleront leur utilisation avec un microcontrôleur PIC, via l’interface parallèle standard, et via la variante sur bus I2C.

La norme Hitachi HD44780

La norme Hitachi HD44780 est mise en œuvre par la plupart des afficheurs LCD classiques.

Modèle de l’afficheur

Un afficheur possède deux mémoires RAM :

On peut envoyer à l’afficheur des commandes et des données à écrire en mémoire (DDRAM et CGRAM), ainsi que lire des données situées en mémoire. Les commandes permettent de configurer l’afficheur, ainsi que de positionner un pointeur pour les écritures et lectures en DDRAM.

Interface de communication

La norme HD44780 définit une liaison parallèle pour la connexion de l’afficheur. Cette liaison permet de lire et écrire des données, et d’envoyer des commandes. L’unité de base des transferts est l’octet.

Les signaux sont :

Autant que je le sache, le brochage de l’interface de communication parallèle est le même quel que soit le modèle d’afficheur.

Protocole

Le protocole est abondamment documenté dans la littérature. Une très bonne introduction est disponible sur le site Aurel32. L’utilisation est assez simple ; schématiquement il faut :

Variante sur bus I2C : PCF2119

20090131_lcd.jpg

Philips a spécifié le contrôleur LCD PCF2119, qui fonctionne sur bus I2C. Cela simplifie grandement le câblage par rapport à l’interface parallèle, car il n’y a besoin que de deux fils en plus de la masse (horloge et données). De plus, l’interface PCF2119 ne définit pas de nouveau protocole, mais l’encapsule dans des trames I2C le protocole HD44780, ce qui ne gâche rien…

La transposition du protocole parallèle exposé ci-dessus se fait selon les principes suivants :

Format général simplifié pour l’envoi d’une ou plusieurs commandes :

I2C startadresse I2C0x76contrôle0x00 (commande)commande 1commande nI2C stop

Format général simplifié pour l’envoi de données :

I2C startadresse I2C0x76contrôle0x40 (données)donnéesoctet 1donnéesoctet nI2C stop

Notons qu’il est possible d’envoyer plusieurs salves de commandes ou données dans une même trame I2C en utilisant le bit de poids fort de l’octet de contrôle : s’il est à 1, un nouvel octet de contrôle sera attendu ; seul le dernier octet de contrôle d’une trame a son bit de poids fort à 0.

Au niveau du brochage des afficheurs, contrairement au protocole parallèle, rien n’est standardisé ici. Il m’est arrivé de tomber sur deux afficheurs I2C aux caractéristiques identiques, dont les références concordaient jusqu’au 10ème caractère, mais qui possédaient des brochages radicalement différents !

Mise à jour, 7 novembre 2009 : mise en œuvre d’un afficheur LCD sur I2C avec un PIC.

Pour l’anecdote, sur la photo, le fil bleu au milieu ne sert à rien. C’est une masse en l’air oubliée là, qui, quelques instants après la prise de cette photo, est allée faire un court-circuit qui a grillé le PIC… ChrisJ ou « je vais te fumer derrière les cyprès. »

HTML5 valide ? © . ✍ Contact. Mentions légales.