Table des matières:

LCD 3 fils HD44780 pour moins d'un dollar : 5 étapes
LCD 3 fils HD44780 pour moins d'un dollar : 5 étapes

Vidéo: LCD 3 fils HD44780 pour moins d'un dollar : 5 étapes

Vidéo: LCD 3 fils HD44780 pour moins d'un dollar : 5 étapes
Vidéo: Les afficheurs LCD à caractères et le contrôleur HD44780 2024, Juillet
Anonim
LCD 3 fils HD44780 pour moins de 1 dollar
LCD 3 fils HD44780 pour moins de 1 dollar

Dans cette instructible, nous apprendrons comment connecter un écran LCD basé sur le chipset HD44780 au bus SPI et le piloter avec seulement 3 fils pour moins de 1 $. Bien que je me concentre sur l'affichage alphanumérique HD44780 dans ce didacticiel, le même principe fonctionnera à peu près de la même manière pour tout autre écran LCD utilisant un bus de données parallèle 8 bits, et il peut être très facilement adapté aux affichages avec des bus de données 16 bits. Les écrans alphanumériques basés sur HD44780 (et compatibles) sont généralement disponibles en configurations 16x2 (2 lignes composées de 16 caractères) et 20x4, mais peuvent être trouvés sous de nombreuses autres formes. L'affichage le plus "compliqué" serait un affichage 40x4, ce type d'affichage est spécial car il dispose de 2 contrôleurs HD44780, un pour les deux rangées supérieures et un pour les deux rangées inférieures. Certains écrans LCD graphiques ont également deux contrôleurs. Les écrans LCD HD44780 sont géniaux, ils sont très bon marché, lisibles et assez faciles à utiliser. Mais ils ont aussi quelques inconvénients, ces écrans occupent beaucoup de broches d'E/S lorsqu'ils sont connectés à l'Arduino. Dans les projets simples, ce n'est pas un problème, mais lorsque les projets deviennent gros, avec beaucoup d'E/S, ou lorsque certaines broches sont nécessaires pour des choses telles qu'une lecture analogique ou PWM, le fait que ces écrans LCD nécessitent un minimum de 6 broches peut devenir un problème. Mais nous pouvons résoudre ce problème d'une manière peu coûteuse et intéressante.

Étape 1: Obtenir les composants

J'ai utilisé TaydaElectronics pour la plupart des composants que j'ai utilisés dans ce projet. Vous pouvez également obtenir ces pièces sur ebay, mais pour faciliter l'utilisation, je vais vous lier à Tayda. Shopping List2 - 74HC595 package DIP161 - En-tête mâle générique - 2 broches. Ce n'est pas nécessaire, je l'ai utilisé comme moyen de désactiver définitivement le rétroéclairage.3 - Condensateur céramique - capacité 0,1 µF; tension 50V1 - Condensateur électrolytique - capacité 10µF; tension 35V1 - Condensateur céramique - capacité 220pF; tension 50V1 - NPN-Transistor - pièce # PN2222A*1 - 1k Ω Résistance1 - Potentiomètre Trimmer - résistance maximale 5kΩ1 - 470 Ω Résistance* Avec un transistor NPN, le rétroéclairage restera éteint jusqu'à ce qu'il soit allumé par le logiciel. Si vous souhaitez activer le rétroéclairage par défaut, utilisez un transistor de type PNP. Des modifications du code de la bibliothèque fournie devront cependant être apportées. Le sous-total de cette liste est de 0,744 $. L'en-tête de broche n'est pas non plus requis, vous pouvez donc économiser 15 cents et le sous-total sera de 0,6 $.

Étape 2: Connaissez votre matériel #1

Connaissez votre matériel #1
Connaissez votre matériel #1

Voici une broche standard d'un écran LCD HD44780, elle est également très similaire à certains écrans LCD graphiques. Le HD44780 peut fonctionner dans deux modes: 1. Mode 4 bits, où chaque octet envoyé à l'écran LCD se compose de 2 parties de 4 bits. 2. Mode 8 bits, sur lequel nous allons nous concentrer. L'écran LCD a 16 broches au total, 3 broches de contrôle et 8 broches de données: RS - Contrôle si nous voulons envoyer une commande ou des données à l'écran LCD. Où « haut » signifie des données (un caractère) et « bas » signifie un octet de commande. R/W - Le contrôleur HD44780 vous permet de lire à partir de sa RAM. Lorsque cette broche est « élevée », nous pouvons lire les données à partir de ses broches de données. Quand il est « bas », nous pouvons écrire des données sur l'écran LCD. Bien que l'option de lecture à partir de l'écran LCD puisse être utile dans certains cas, nous ne l'aborderons pas dans ce didacticiel et nous mettrons simplement cette broche à la terre pour nous assurer qu'elle est toujours en mode écriture. E - E est la broche 'Activer', cette broche est basculée "haute" puis "bas" pour écrire les données dans sa RAM et éventuellement les afficher à l'écran. DB0-7 - Ce sont les broches de données. En mode 4 bits, nous n'utilisons que les 4 bits de poids fort DB4-DB7, et en mode 8 bits, ils sont tous utilisés. VSS - C'est la broche de masse. VCC - C'est la broche d'alimentation, l'écran LCD fonctionne avec une alimentation 5V, nous pouvons facilement l'alimenter à partir de la broche +5v de l'Arduino. Vo - C'est la broche qui vous permet de régler le niveau de contraste de l'affichage, elle nécessite un potentiomètre, normalement un pot de 5K Ohm est utilisé. LED+ - C'est le source d'alimentation pour le rétroéclairage. Certains écrans LCD n'ont pas de rétroéclairage et n'ont que 14 broches. Dans la plupart des cas, cette broche nécessite également une connexion +5v. LED- - C'est la masse du rétroéclairage.** Il est important de vérifier la fiche technique de l'écran ou d'inspecter son PCB pour vérifier la résistance de rétroéclairage, la plupart des écrans LCD les auront construits -in, auquel cas tout ce que vous avez à faire est d'alimenter LED+ et de mettre à la terre LED-. Mais dans le cas où votre LCD n'a pas de résistance intégrée pour le rétro-éclairage, il est important que vous en ajoutiez une, sinon le rétro-éclairage consommera beaucoup d'énergie et finira par griller. Dans la plupart des cas, la façon dont cet écran LCD est câblé à l'Arduino est de l'utiliser en mode 4 bits et de mettre à la terre la broche R/W. De cette façon, nous utilisons les broches RS, E et DB4-DB7. L'exécution en mode 4 bits présente un autre petit inconvénient en ce sens qu'il faut deux fois plus de temps pour écrire des données à l'écran que dans une configuration 8 bits. L'écran LCD a un temps de "stabilisation" de 37 microsecondes, cela signifie que vous devez attendre 37 microsecondes avant d'envoyer la prochaine commande ou l'octet de données à l'écran LCD. Étant donné qu'en mode 4 bits, nous devons envoyer des données deux fois pour chaque octet, le temps total nécessaire pour écrire un seul octet va jusqu'à 74 microsecondes. C'est encore assez rapide, mais je voulais que ma conception produise les meilleurs résultats possibles. La solution à notre problème avec le nombre de broches utilisées réside dans un convertisseur série vers parallèle…

Étape 3: Connaissez votre matériel #2

Connaissez votre matériel #2
Connaissez votre matériel #2

Ce que nous allons faire, c'est construire un adaptateur qui prend un type de communication série provenant de l'Arduino et convertit les données en une sortie parallèle qui peut être transmise à notre écran LCD. Vient ensuite la puce 74HC595. Il s'agit d'un registre à décalage très bon marché et simple à utiliser. Essentiellement, ce qu'il fait, c'est prendre une horloge et des signaux de données qu'il utilise pour remplir une mémoire tampon interne de 8 bits avec les 8 derniers bits qui ont été « cadencés ». Une fois que la broche « Latch » (ST_CP) a été placée « haute », elle déplace ces bits dans ses 8 sorties. Le 595 a une très bonne fonctionnalité, il a une broche de sortie de données série (Q7'), cette broche peut être utilisée pour connecter en guirlande 2 595 ou plus ensemble pour former des adaptateurs série vers parallèle de 16 bits ou plus de large. Pour ce projet, nous aurons besoin de 2 de ces puces. Le schéma peut également être modifié pour fonctionner avec un seul 595 en mode 4 bits, mais cela ne sera pas couvert par ce tutoriel.

Étape 4: Câblage de tout

Tout câbler
Tout câbler

Maintenant que nous savons comment fonctionne notre matériel, nous pouvons tout câbler. Dans le schéma, nous voyons 2 595 puces enchaînées ensemble pour former une sortie parallèle 16 bits. La puce du bas est en fait la puce principale, et la puce supérieure y est connectée en guirlande. Ce que nous voyons ici, c'est que le 595 du bas pilote les broches de données de l'écran LCD dans une configuration 8 bits, la puce du haut contrôle le signal RS et le rétroéclairage en allumant ou en éteignant un transistor. Souvenez-vous de la *note concernant le rétroéclairage LCD sur la page Connaissez votre matériel #1, dans le cas où votre LCD n'a pas de résistance de rétroéclairage, n'oubliez pas d'en ajouter une dans votre circuit. Dans mon cas, les écrans LCD que j'ai déjà livrés avec une résistance intégrée, j'ai donc sauté cette étape. Le contraste est appliqué via un potentiomètre de 5K Ohm, une broche va à GND, la seconde à VCC et l'essuie-glace à la broche Vo sur l'écran LCD. Les condensateurs utilisés sur les lignes VCC des LCD et 595 sont des condensateurs de découplage, ils sont là pour se débarrasser des interférences. Ils ne sont pas indispensables si vous travaillez sur une maquette, mais doivent être utilisés au cas où vous construisez votre propre version de ce circuit à utiliser en dehors des "conditions de laboratoire". R5 et C9 dans cet ordre très spécifique créent un délai RC, ce qui garantit que les données dans les sorties du 595 ont le temps de se stabiliser avant que la broche Enable sur l'écran LCD ne soit réglée sur "haut" et lise les données. Q7' du 595 du bas va dans l'entrée de données série du 595 du haut, cela crée une guirlande de 595s et donc une interface 16 bits. Le câblage à l'Arduino est facile. Nous utilisons une configuration à 3 fils, en utilisant les broches SPI d'Arduino. Cela permet des transferts de données très rapides, l'envoi de 2 octets à l'écran LCD prend généralement environ 8 microsecondes. C'est très rapide, et c'est en fait beaucoup plus rapide que le temps qu'il faut à l'écran LCD pour traiter les données, donc un délai de 30 microsecondes est nécessaire entre chaque écriture. Un très gros avantage de l'utilisation de SPI est que les broches D11 et D13 sont partagées avec d'autres périphériques SPI. Cela signifie que si vous avez déjà un autre composant qui utilise SPI, tel qu'un accéléromètre, cette solution n'utilisera qu'une seule broche supplémentaire pour le signal d'activation. Sur la page suivante, nous verrons le résultat. J'ai construit un sac à dos sur un perfboard et cela fonctionne très bien pour moi jusqu'à présent.

Étape 5: Le résultat + la bibliothèque

Le Résultat + Bibliothèque
Le Résultat + Bibliothèque
Le Résultat + Bibliothèque
Le Résultat + Bibliothèque
Le Résultat + Bibliothèque
Le Résultat + Bibliothèque
Le Résultat + Bibliothèque
Le Résultat + Bibliothèque

"Une image vaut mille mots", je suis d'accord avec cette affirmation, alors voici quelques images du résultat final de ce projet. Ce sont des images du produit terminé, la vue Fritzing PCB est la disposition de la carte perf que j'ai utilisée pour construire mon sac à dos. Cela peut vous être utile si vous souhaitez créer le vôtre. Je l'ai tellement aimé que j'ai conçu un PCB à l'aide de DipTrace et commandé un lot de 10 PCB. J'aurai besoin de 2 ou 3 unités pour moi mais je mettrai le reste à disposition pour un prix symbolique lorsque je les recevrai. Donc si quelqu'un est intéressé merci de me le faire savoir. * Edit: Les PCB sont là, et ils fonctionnent. Voici la galerie d'images complète de ce projet, y compris les PCB réels. https://imgur.com/a/mUkpw#0 Bien sûr, je n'ai pas oublié la chose la plus importante, une bibliothèque avec laquelle utiliser ce circuit. Il est compatible avec la bibliothèque LiquidCrystal incluse avec l'IDE Arduino, vous pouvez donc facilement remplacer les déclarations en haut de votre croquis et ne rien changer d'autre dans votre croquis. Il existe également un exemple de croquis qui montre comment fonctionne chaque fonction de la bibliothèque, alors jetez-y un coup d'œil.

Conseillé: