LOCODUINO

Aide
Forum de discussion
Dépôt GIT Locoduino
Flux RSS

mardi 19 mars 2024

Visiteurs connectés : 19

Les écrans LCD alphanumériques

.
Par : Jean-Luc

DIFFICULTÉ :

Les écrans LCD alphanumériques présentent une solution facile d’emploi et bon marché de doter votre projet d’une interface indépendante de votre PC. Nous allons voir dans cet article comment se présentent ces écrans. Nous ne parlerons que des ecrans supportés par les bibliothèques Arduino, c’est à dire ceux dont le composant de pilotage est un Hitachi HD44780 ou compatible.

<

Vu de l’extérieur, les écrans LCD alphanumériques sont essentiellement caractérisés par leur taille. Deux modèles se rencontrent très fréquemment et sont les meilleurs marché, celui ayant 2 lignes et 16 colonnes d’affichage et celui ayant 4 lignes et 20 colonnes d’affichage. Voici, ci-dessous, ces deux modèles :

Ecrans LCD alphanumériques
Ecrans LCD alphanumériques
Les deux types de LCD que vous rencontrerez le plus souvent. En haut le modèle 20 colonnes et 4 lignes et en bas le modèle 16 colonnes et 2 lignes. Comme on peut le voir, le marquage des broches n’est pas systématique. Le grand modèle se trouve aux alentours de 5€ et le petit à 2€.

Le connecteur du LCD

Ces deux écrans ont exactement la même connectique, c’est à dire un connecteur 16 broches situé en haut et à gauche de l’écran. Ce connecteur véhicule plusieurs signaux dont une partie forme un bus de communication parallèle 4 ou 8 bits selon la configuration choisie ainsi que les signaux permettant de contrôler la communication entre l’Arduino et l’écran. La figure ci-dessous donne la nomenclature des broches de ce connecteur.

PNG - 28.1 kio

Ces broches ont le rôle suivant :

NuméroNomRôle
1 GND Masse 0V
2 VDD Alimentation +5V
3 VE Tension de réglage du contraste
4 RS Sélection du registre donnée ou commande
5 RW Lecture ou écriture
6 EN Activation pour un transfert (enable)
7 DB0 Bit 0 de la donnée/commande
8 DB1 Bit 1 de la donnée/commande
9 DB2 Bit 2 de la donnée/commande
10 DB3 Bit 3 de la donnée/commande
11 DB4 Bit 4 de la donnée/commande
12 DB5 Bit 5 de la donnée/commande
13 DB6 Bit 6 de la donnée/commande
14 DB7 Bit 7 de la donnée/commande
15 LED+ Anode (+) du rétro-éclairage
16 LED- Cathode (-) du rétro-éclairage

La communication avec le LCD

Nous n’allons pas entrer dans les détails du protocole de communication [1] entre l’Arduino et le LCD mais voici une présentation rapide. Le LCD peut fonctionner en mode 4 bits ou en mode 8 bits. En mode 8 bits, les octets sont transférés sur les lignes DB0 à DB7. En mode 4 bits les octets sont transférés en deux fois sur les lignes DB4 à DB7. Le LCD dispose de 3 registres internes, le registre de données permettant entre autre l’envoi des codes des caractères à afficher, le registre de commande permettant d’envoyer des commandes d’effacement de l’écran, de positionnement du curseur, etc, et le registre d’état qui permet de consulter notamment la disponibilité du LCD pour recevoir des commandes ou des données. La sélection de l’un ou l’autre de ces registres est effectuée via les états, LOW ou HIGH, des lignes RS et RW. Une fois l’état de ces deux lignes établi, EN est placé à HIGH, la donnée ou la commande est placée sur les lignes DBx puis EN est placé à LOW.

Piloter directement un LCD est donc un processus relativement compliqué. Évidemment, comme c’est très souvent le cas avec l’Arduino, il existe des bibliothèques pour ça, ce qui permet de les utiliser aisément sans avoir à plonger dans la datasheet.

La connexion avec l’Arduino

Dans la grande majorité des cas, on préfèrera une communication sur 4 bits car une communication sur 8 bits consomme 10 ou 11 broches, ce qui, hormis sur un Mega ou un Due, laisse peut de broches libres. Avec une communication 4 bits, 6 à 7 broches sont nécessaires. Le choix des broches est libre.

RW or not RW

Cette broche peut être ou ne pas être employée. Son rôle est de permettre la consultation du registre de contrôle du LCD. En consultant le registre de contrôle, on sait si le LCD est disponible pour recevoir des commandes ou des données ou si il est occupé à dessiner des caractères sur l’écran. Si cette information manque, il faudra attendre un certain temps entre deux commandes ou données afin d’être sur que le LCD est disponible. L’envoi d’information au LCD est donc plus lent mais on économise une broche.

En mode 4 bits, les broches à connecter à l’Arduino sont donc RS, EN, DB4, DB5, DB6 et DB7 ainsi que, de façon optionnelle, RW.

Le réglage du contraste

La broche VE permet de régler le contraste. Il est nécessaire d’y connecter un potentiomètre de réglage, un 10kΩ par exemple, dont les broches externes sont connectées à l’alimentation (+5V) et à la masse (GND) et la broche centrale à VE. Il suffit ensuite de tourner ce potentiomètre dans tous les sens avec patience jusqu’à ce que le contraste soit correctement réglé.

Potentiomètre de réglage vertical.
Potentiomètre de réglage vertical.
Le réglage s’effectue au moyen d’un tournevis. Il existe également des modèles horizontaux.

Le rétro-éclairage

Le rétro-éclairage est assuré par des DEL. Il faut donc limiter le courant avec une résistance en série sur LED+ ou LED-. Sur certains modèles de module LCD, cette résistance est présente, sur d’autres elle ne l’est pas. La datasheet des LCD recommande de mettre une résistance serie d’une valeur comprise entre 50 et 100Ω. Ajouter une résistance de 56Ω en série ne nuira pas, vous aurez juste un rétro-éclairage un peu moins puissant et vous assurerez une meilleure durée de vie du rétro-éclairage.

Dans beaucoup d’exemple de câblage que vous trouverez sur Internet, cette résistance est omise. C’est une errreur à ne pas reproduire.

L’implantation montrée ci-dessous résume les différents branchements nécessaires pour piloter un LCD avec votre Arduino. Ce n’est qu’un exemple puisque n’importe quelles entrées/sorties numériques de l’Arduino peuvent être employée pour les broches RS, EN, RW, DB4, DB5, DB6 et DB7 du LCD.

Câblage d'un écran LCD sur un Arduino Uno
Câblage d’un écran LCD sur un Arduino Uno
Le potentiomètre de réglage du contraste est un modèle horizontal.

Quelle bibliothèque ?

Deux bibliothèques sont disponibles pour piloter un écran LCD en connexion directe : LiquidCrystal qui fait partie des bibliothèques standards et ne gère pas la broche RW bien qu’elle propose de la connecter [2] et LiquidCrystalFast qui gère, elle, la broche RW et n’offre qu’une connexion sur 4 bits. Comme son nom l’indique la seconde est plus rapide car elle n’utilise pas de temps d’attente en aveugle.

Le pilotage via le bus I2C

Il existe également de petits modules permettant d’interfacer un écran LCD avec un bus I2C. Cette solution peut être intéressante si vous manquez désespérément de broches sur l’Arduino pour votre projet puisqu’au lieu de monopoliser 6 à 7 broches, l’écran n’en utilisera plus que 2. Evidemment, la bibliothèque pour les piloter n’est pas la même. Il en existe même plusieurs selon le circuit intégré qui fait l’interface entre l’I2C et le bus parallèle de LCD.

Toutefois, le module que l’on rencontre le plus souvent est construit autour du PCF8574P de NXP, un circuit permettant d’augmenter le nombre d’entrées sorties numériques via l’I2C. La bibliothèque correspondante est LiquidCrystal_I2C.

Les bibliothèques évoquées ici feront l’objet d’un article séparé.

[1le lecteur intéressé pourra se référer à l’article Wikipedia du HD44780.

[2C’est toujours vrai dans la version 1.6 mais ça pourrait évoluer dans le futur.

17 Messages

Réagissez à « Les écrans LCD alphanumériques »

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rubrique « Matériel »

Le microcontrôleur ATtiny45 (1)

Le microcontrôleur ATtiny45 (2)

Le microcontrôleur ATtiny45 (3)

Le microcontrôleur ATtiny45 (4)

Le microcontrôleur ATtiny45 (5)

Le microcontrôleur ATtiny45 (6)

Le microcontrôleur ATtiny45 (7)

Le microcontrôleur ATtiny45 (8)

Le microcontrôleur ATtiny45 (9)

Le microcontrôleur ATtiny45 (10)

Fonctionnement et pilotage d’une DEL

Qu’est ce qu’une carte Arduino ?

Amplifier le signal de sortie d’un ARDUINO avec un ULN 2803

Un minimum pour jouer rapidement avec un Arduino

Où acheter ?

Résistances, kézako ?

Les cartes Teensy

Relais électromagnétique

Les diodes classiques

Détecteurs à ultrasons

De nouveaux composants pour continuer à jouer

La carte Arduino Uno

Bouton poussoir

Les différents types de mouvements d’un servomoteur

Les encodeurs en quadrature

Les indispensables du prototypage

Les écrans LCD alphanumériques

Des bus de communication pour l’Arduino

Les interrupteurs

Signaux lumineux et Arduino

Les shields de prototypage et de connexion

Commande de moteur à courant continu

Choisir sa carte Arduino

Une station DCC complète, polyvalente et économique avec JMRI.

Écran couleur tactile Kuman

Capteurs à effet Hall

Programmation des ATtiny Digispark

Ma première centrale DCC

Ma première manette DCC (1)

Une station DCC minimale avec boutons de commande et écran Oled

Ma première manette DCC (2)

Le Raspberry Pi Pico

Signalisation et sonorisation du va-et-vient pour deux trains

Configurateur de CV sur base de la station DCC minimale

Fabrication d’un programmateur pour microcontrôleurs ATtiny

Détection RailCom© avec ESP32 (ou Arduino)

Adieu Uno, bonjour Uno !

Ma nouvelle manette DCC avec ESP32 (1)

Ma nouvelle manette DCC avec ESP32 (2)

LES SATELLITES AUTONOMES : une nouvelle approche du concept de Satellites Locoduino. (1)

LES SATELLITES AUTONOMES : une nouvelle approche du concept de Satellites Locoduino. (2)

LES SATELLITES AUTONOMES : une nouvelle approche du concept de Satellites Locoduino. (3)

LES SATELLITES AUTONOMES : une nouvelle approche du concept de Satellites Locoduino.(4)

LES SATELLITES AUTONOMES : une nouvelle approche du concept de Satellites Locoduino. (5)

Les derniers articles

LES SATELLITES AUTONOMES : une nouvelle approche du concept de Satellites Locoduino. (5)


bobyAndCo

LES SATELLITES AUTONOMES : une nouvelle approche du concept de Satellites Locoduino.(4)


bobyAndCo

LES SATELLITES AUTONOMES : une nouvelle approche du concept de Satellites Locoduino. (3)


bobyAndCo

LES SATELLITES AUTONOMES : une nouvelle approche du concept de Satellites Locoduino. (2)


bobyAndCo

LES SATELLITES AUTONOMES : une nouvelle approche du concept de Satellites Locoduino. (1)


bobyAndCo

Détection RailCom© avec ESP32 (ou Arduino)


bobyAndCo, catplus

Ma nouvelle manette DCC avec ESP32 (2)


msport

Ma nouvelle manette DCC avec ESP32 (1)


msport

Adieu Uno, bonjour Uno !


Christian

Fabrication d’un programmateur pour microcontrôleurs ATtiny


Christian, Dominique, Jean-Luc

Les articles les plus lus

Une station DCC complète, polyvalente et économique avec JMRI.

Commande de moteur à courant continu

Capteurs à effet Hall

Les différents types de mouvements d’un servomoteur

Le Raspberry Pi Pico

Programmation des ATtiny Digispark

LES SATELLITES AUTONOMES : une nouvelle approche du concept de Satellites Locoduino. (5)

Des bus de communication pour l’Arduino

Les interrupteurs

Bouton poussoir