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).
Voici Le schéma électrique. Cliquez pour agrandir.
Et une photo face avant et une photo face arrière.
La consommation du montage est de 15 mA sous 5 Volts.
Une deuxième réalisation a été effectuée en 2022 à partir d'un afficheur lcd 1 line 16 caractères provenant d'un super téléphone Thomson. Ce téléphone, tombé en panne en 2000, généreusemnt cédé par le téléphoniste à ma demande parce que je m'intéressais à l'afficheur, a donc séjouné 22 ans dans une de mes boites à composants.
Il y a eu une tentative de mise en route en 2004 qui ne fut pas concluante et ce fut le retour à la boite à composants.
Ce n'est qu'en 2022 que j'ai jeté un dernier sort à mon afficheur en lui disant, maintenant tu fonctionnes ou tu dégages... Il faut dire que l'afficheur était connecté au téléphone par une nappe "psycho rigide", de 14 fils espacés de 0.1 pouce et soudés sur l'afficheur. Je vous laisse deviner le point de fragilité de ce genre de cable.
A l'examen avant le dernier essai, de nombreuses cassures de fils sont apparues au raz du circuit imprimé au départ de la nappe. Il fallait la démonter et resouder.... Et dans un premier temps, ce fut des cosses permettant le raccordement rapide de "fil Dupont" au montage décrit pour la première réalisation et le résultat était là!.
Il n'y avait donc qu'à reproduire le montage de commande suivant le schéma ci-dessus et reprogrammer un PIC avec le programme que vous trouvez en téléchargement.
Le circuit de rétroéclairage n'a pas été cablé, l'afficheur n'en disposant pas.
L'afficheur est un classique LCD controlé par un HD44100 avec 1 ligne et 16 caractères. Il est utilisé avec une interface 4 bits. La dimension du verre à l'intérieur du cadre noir est 99 x 13 mm.
Le montage fonctionne en 5 V, imposé par l'afficheur. Pour l'utiliser en 3.3 V on peut insérer entre le circuit fonctionnant en 3.3 V et l'afficheur le montage décrit sur la page Convertisseur de niveaux 3.3 V à 5 V.
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
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-4.1.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.
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
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.
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.