RaspBerry Pi et afficheur LCD Hitachi HD44780 1602 [PART 1]

raspberrypi-lcd

Comme vous le savez j’ai récemment récupéré un RaspBerry Pi et du coup je me suis dis pourquoi ne pas essayé d’intéragir avec les pins GPIO (General Purpose Input Output).

Je me suis donc donné pour projet de réaliser un petit programme qui affiche des informations systèmes sur un écran LCD connecté via les ports GPIO de mon RaspBerry Pi.

Les GPIO du RaspBerry Pi

Un RaspBerry Pi possède 26 pins GPIO qui permettent de connecter une multitude d’équipement et périphériques: LED, transistor, radio, cerveeau, afficheur lcd, dalle tactile, …

Le schéma suivant détail l’utilisation de chacun des pins.

La première chose à voir est la numérotation des ports GPIO. Celle-ci est relativement importante notamment lorsqu’on commencera à programmer dessus.

On note donc qu’il y a 2 pins servant à l’alimentation électrique (en 3.3V et en 5V) et un pin servant à la masse (en noir sur le schéma).

Les pins en blanc ne doivent JAMAIS être utilisé.

Les pins en vert sont les ports GPIO utilisables. Il y en a 8 en tout.

Les pins en violet sont des ports SPI (Serial Peripheral Interface) qui sont utilisables dans certains cas précis.

Il en est de même pour les ports jaunes UART (Universal Asynchronous Receiver Transmitter) et les ports bleu I²C.

Vous allez me dire que c’est dommage que seuls 8 ports GPIO soient utilisable directement. Rassurez vous, il est tout à fait possible de reconfigurer les ports UART, I²C et SPI afin de pouvoir utiliser les 17 ports GPIO de votre RaspBerry Pi.

Ainsi la librairie WiringPi, permet de les utiliser facilement.

Choisir un afficheur LCD pour RaspBerry Pi ?

Il existe une infinité de références d’afficheur LCD. Il en existe de toutes les tailles, toutes les formes et tous les prix.

Après plusieurs recherches, j’ai porté mon choix sur un afficheur LCD Hitachi HD44780 1602.

J’ai choisi cet afficheur LCD car le contrôleur HD44780 est un des plus couramment utilisé, il y a donc énormément de documentation technique.
De plus il ne nécessite pas énormément de pins pour être connecté et il fonctionne en 5V.

Et enfin, il est relativement peu coûteux (j’ai trouvé le mien à 3€ livré sur Ebay :-))

A la découverte du LCD HD44780 1602

Présentation du LCD HD44780 1602

L’afficheur est d’une taille compacte (ce qui est pratique pour l’intégrer dans un boitier de RaspBerry Pi).

Il dispose de deux lignes de 16 caractères chacune. Il existe également des versions à 3 lignes et 4 lignes.

Le brochage du LCD HD44780 1602

Une des notions fondamentales lorsque l’on souhaite utiliser un afficheur LCD est la connexion et le brochage.

Le chipset HD44780 étant relativement simple, les afficheurs se basant dessus utilisent en général 16 broches, la branche 1 étant la broche la plus a gauche.

Voici le détail de l’utilisation de chaque broche:

  • la broche 1 (VSS) sera reliée à la masse.
  • la broche 2 (VDD) sera reliée à l’alimentation positive de 5V.
  • la broche 3 (V0) est une entrée analogique qui permet de régler le contraste de l’afficheur. Il faut savoir qu’une tension de 5V correspondra au contraste le plus faible alors qu’une mise à la masse correspondra au contraste le plus élevé. Je vous conseille d’utiliser un potentiomètre pour gérer le contraste (nous verrons cela plus tard).
  • la broche 4 (RS pour Register Select) est une entrée numérique qui sert à sélectionner le registre. Cela permettra à l’afficheur de déterminer si une commande (signal niveau bas) ou une donnée (signal niveau haut) lui est envoyée.
  • la broche 5 (R/W pour Read/Write) est une entrée numérique qui sert à lire (niveau haut) ou écrire (niveau bas).
  • la broche 6 (E pour Enable) est une entrée numérique qui valide la lecture ou l’écriture. La validation est active sur le front descendant d’une impulsion, dont la durée de l’état haut doit être au moins de 450 ns.
  • les broches 7 à 14 sont des entrées numériques. Ce sont des bus de données bidirectionnels qui servent à envoyer ou à recevoir les données ou les commandes via l’afficheur LCD.
  • les broches 15 et 16 servent à alimenter le rétroéclairage (backlight). La broche 15 (l’anode) doit être alimentée en +5V et la broche 16 (la cathode) doit être mise à la masse.

Les modes d’utilisation du LCD HD44780 1602

Il existe deux modes possibles pour utiliser le LCD HD44780 1602:

  • le mode 8 bits où les données et les commandes sont envoyées grâce aux broches D0 à D7 (broches 7 à 14).
  • le mode 4 bits qui limite le nombre de broches nécessaire pour commander l’afficheur. Juste les broches D4 à D7 sont utilisées sur le LCD, les broches D3 à D0 étant mises à la masse.

Personnellement je vous conseille d’utiliser le mode 4 bits car le RaspBerry Pi est limité en ports GPIO.

En effet, le mode 4 bits demande sept broches (voire six si l’on ne fait qu’écrire) alors que le mode huit bits en requiert 11.

Pour envoyer les différents bits représentant les caractères, on transmet séquentiellement les quatre bits de poids forts suivis des quatre bits de poids faibles.

Une impulsion de minimum 450 ns séparant chaque demi-octet est envoyée sur l’entrée E pour valider ces derniers.

Les mémoires et registres du LCD HD44780 1602

Les afficheurs basé sur le chipset HD44780 utilisent 2 types de mémoire:

  • La DDRAM qui stocke les caractères que l’on veut afficher à l’écran.
  • La CGRAM qui contient le jeu de caractères affichables. Elle permet d’afficher 200 caractères différents dont huit peuvent être définis par l’utilisateur.

Les afficheurs basé sur le chipset HD44780 utilisent 3 types de registre:

  • le registre d’instruction (unidirectionnel) qui reçoit des commandes venant de l’utilisateur. Il est utilisable uniquement en écriture et permettra de déplacer le curseur ou effacer l’afficheur.
  • le registre d’état (unidirectionnel) qui est utilisé uniquement en lecture et qui sert à indiquer lorsque l’afficheur est prêt à recevoir une instruction ou une donnée. La demande d’état se fait grâce à la broche R/W (R/W = 0, lorsque l’on écrit et R/W = 1, lorsque l’on veut lire l’état).
  • le registre de données (bidirectionnel) qui permet de recevoir les caractères à afficher ou à envoyer les caractères stockés dans la DDRAM.

 

6 Responses to RaspBerry Pi et afficheur LCD Hitachi HD44780 1602 [PART 1]

  1. Idleman says:

    “Vous allez me dire que c’est dommage que seuls 7 ports GPIO soient utilisable”

    Hum, n’y aurait il pas une petite confusion dans les chiffres ? 😀

    Article intéressant cela dit, es tu parvenu a quelque chose qui fonctionne ?

  2. jhd says:

    Bien sur je voulais dire 8, merci pour le fix Idleman.

    Oui je suis parvenu à quelquechose d’intéressant, je suis en train de rédiger la partie 2 🙂 j’espère la publier la semaine prochaine 🙂

  3. vlp says:

    Super tuto ! On attend la suite 😉 !

  4. […] ceux qui n’ont pas lu la première partie, je vous conseille de le […]

Leave a Reply

Your email address will not be published. Required fields are marked *