Interface I2C ou USART pour afficheur LCD 1602

Introduction

Les afficheurs LCD 1602 sont très pratiques, faciles à trouver et bon marché, par contre ils ont toujours le même inconvévient d'avoir beaucoup de fils à raccorder et de consommer des ports gpio pas toujours disponibles sur le processeur hôte. En utilisant un petit processeur, il est possible de réduire l'interface à 4 fils, y compris le commun et l'alimentation, et fournir une interface de type I2C ou série commutable à la demande.

Ce projet reprend la page Commande Afficheur LCD 16x2 dont la rédaction est récente mais la réalisation plus ancienne. Il est réalisé avec un processeur PIC 18f14k22 à 20 broches (parce que j'en ai sous la main).

Réalisation

Voici Le schéma électrique. Cliquez pour agrandir.

Et une photo face avant et une photo face arrière.

photo montage face avant
photo montage face arrière

La consommation du montage est de 15 mA sous 5 Volts.

Fonctionnement

Le montage se comporte comme un périphérique I2C esclave fonctionnant à la vitesse standart de 100 kHz ou comme un usart fonctionnant à la vitesse 9600 / 115200 bits/s. La sélection du mode se fait par un commutateur à glissière.

Noter que lorsque le commutateur relie les entrées I2C au connecteur, l'interface UART reste opérationnel à condition de s'y connecter avec les moyens du bord.

La sélection de la vitesse de l'usart se fait par la lecture de l'eeprom à l'adresse 2. Si la valeur est à 0, la vitesse est 115200, sinon 9600.

Une commande B<adresse>,<valeur> sur l'entrée uart permet d'écrire une valeur à l'adresse en eeprom. La lecture peut se faire par la commande b<adresse>.

B2,0                 # écrit 0 à l'adresse 2 dans l'eeprom

b2                   # lit la valeur à l'adesse 2 dans l'eeprom

La commande de l'afficheur se fait par ligne de commnande sur l'une ou l'autre des interfaces. Plusieurs commandes peuvent être envoyées dans le même message à condition de ne pas dépasser la longueur des buffers.

Voici la liste des charactères de commande:

Les commandes cmd sont celles décrites dans la datasheet de l'afficheur et entres autres:

K1           # clear lcd
K2           # lcd home
Abonjour     # write on first line first col

KC0          # set cursor on first col on second line
k40          #  exactley the same

Les valeurs données sont celles de mon afficheur et pas forcément pour le votre. Les commandes K80 et k0 sont identiques.

Noter que la séquence d'initialisation dans lcd_init est assez critique et peut être différente d'un afficheur à l'autre. Si celle ci ne marche pas pour vous, il faut, sans hésitation, en essayer une autre

Outils

Le logiciel est développé sous Linux avec SDCC - Small Device C Compiler - voir SDCC pour le download et la documentation. La version utilisée est sdcc-src-3.6.0.tar.bz2.

SDCC utilise le paquet gputils pour gpasm et gplink, l'assembleur et le linker pour les microprocesseurs PIC. voir gputils package. La version utilisée est gputils-src-20161229-1294.tar.gz.

Les schémas sont réalisés avec gschem de la suite gEDA - voir [3]. Vous pourriez en avoir besoin pour modifier, imprimer, visualiser les schémas et pourquoi pas en créer d'autres.

Compilation du logiciel

Après avoir installé les outils nécessaires et rendu accessible par la modification de la variable PATH, vous pouvez exécuter les commandes suivantes:

export PATH="${PATH}:/home6/pic/gputils/bin/:/home6/pic/sdcc/bin/"
tar Jxvf piclcd-yyyymmdd.tar.xz
cd piclcd-yyyymmdd
make

Programmation du PIC

La première fois, car il y a toujours une première fois mais il peut y en avoir plusieurs, la programmation se fait par un outil ICSP (in circuit serial programming) et Pgrm le fait pour les PIC que j'utilise.

Ensuite Pgrm, connecté par la liaison série, permet le chargement du logiciel que l'on vient de modifier et recompiler. Il permet également de lire et modifier les variables internes du programme et le registres du micro.

References

  1. [1] Commande Afficheur LCD 16x2.
  2. [2] An Pic Avr bootloader program.
  3. [3] my gEDA symbols.
  4. [4] you can find the datasheet of the 18f14k24 processor on the Microchip Site.
  5. [5] Pgrm - a Microprocessor and Eprom Programmer.

LICENSE

The Piclcd software is licensed under the terms of the GNU General Public License as published by the Free Software Foundation. See the file "COPYING" in the download directory.

Download