Interfacer LCD 16x2 avec 8051 microcontrôleur

écran LCD est un élément incontournable dans les projets presque tous embarqués et cet article est interfacer un 16 × 2 LCD avec microcontrôleur 8051. Beaucoup de gars ont du mal à module d'interface LCD avec le 8051, mais le fait est que si vous apprenez correctement, son un emploi très facile et en sachant qu'il vous pouvez facilement concevoir des projets intégrés comme voltmètre numérique / ampèremètre, horloge numérique, affiche domotique , affichage de l'indicateur d'état, serrures de code numérique. compteur de vitesse / compteur kilométrique numérique. affichage pour les lecteurs de musique etc etc vont soigneusement à travers cet article vous fera capable d'afficher tout texte (y compris les caractères étendus) sur une partie de l'écran d'affichage 16 × 2. Pour comprendre l'entoilage d'abord vous devez savoir sur le 16 × 2 module LCD.







16 × 2 module LCD.

16 × 2 module LCD est un type très courant de module LCD qui est utilisé dans 8051 projets intégrés basés. Il se compose de 16 lignes et 2 colonnes de 5 × 7 ou 5 x 8 matrices de points à cristaux liquides. Le module a été parlons ici est de type numéro JHD162A qui est très populaire. Il est disponible dans un boîtier 16 broches avec une lumière de retour, la fonction de réglage du contraste et chaque matrice de points a 5 x 8 points de résolution. Les numéros de broches, leurs fonctions de nom et correspondants sont indiqués dans le tableau ci-dessous.

Cette broche doit être relié à la terre

broche de tension d'alimentation positive (5 V CC)

pin VEE est destiné à régler le contraste de l'écran LCD et le contraste peut être réglé en faisant varier la tension à cette broche. Cela se fait en connectant une extrémité d'un pot à Vcc (5 V), l'autre extrémité à la masse et reliant la borne centrale (d'essuie-glace) du pot de la broche de VEE. Voir le schéma de circuit pour une meilleure compréhension.

Le JHD162A a deux construit dans les registres à savoir registre de registre de données et commande. Registre de données est de placer les données à afficher. et le registre de commande est de placer les commandes. Le module LCD 16 × 2 comporte un ensemble de commandes de chaque destiné à faire un travail particulier avec l'écran. Nous discuterons en détail sur les commandes ultérieures. logique haut à la broche RS sélectionnera le registre de données et logique bas à la broche RS sélectionnera le registre de commande. Si nous faisons la RS et la broche haute PUT une donnée dans la ligne de données 8 bits (DB0 à DB7). le module LCD reconnaîtra comme une données à afficher. Si nous faisons RS épingler bas et mettre un ensemble de données sur la ligne de données, le module reconnaîtra comme une commande.

broche R / W est conçu pour sélectionner entre les modes de lecture et d'écriture. haut niveau à cette broche permet le mode de lecture et un faible niveau de cet axe permet le mode d'écriture.

E broches est destiné à permettre au module. Une transition haut vers bas à cet axe permettra au module.

DB0 à DB7 sont les broches de données. Les données à afficher et les instructions de commande sont placés sur ces broches.

LED + est l'anode de la lumière arrière LED et cette broche doit être relié à Vcc par l'intermédiaire d'un courant de série approprié limitant la résistance. LED- est la cathode de la lumière arrière LED et cette broche doit être connectée à la masse.

16 × 2 commandes de module LCD.

16 × 2 Module LCD possède un ensemble d'instructions de commande prédéfinies. Chaque commande fera le module à une tâche particulière. Les commandes les plus couramment utilisés et leur fonction sont donnés dans le tableau ci-dessous.

initialisation LCD.

Les étapes qui doit être fait pour initialiser l'écran LCD est donnée ci-dessous et ces étapes sont communes pour presque toutes les applications.

  • Envoyer 38H à la ligne de données 8 bits pour l'initialisation
  • Envoyer 0FH pour faire LCD ON, curseur et curseur clignotant ON.
  • Envoyer 06H pour incrémenter la position du curseur.
  • Envoyer 01H pour effacer l'écran et revenir le curseur.

Envoi de données à l'écran LCD.

Les étapes pour l'envoi de données au module LCD est donné ci-dessous. Je l'ai déjà dit que le module LCD a des broches à savoir RS, R / W et E. Il est l'état logique de ces broches qui font le module pour déterminer si une entrée de données donnée est une commande ou les données à afficher.







  • Faire R / W faible.
  • Faire RS = 0 si l'octet de données est une commande et faire RS = 1 si l'octet de données est une donnée à afficher.
  • Placez octet de données sur le registre de données.
  • Pulse E de haut en bas.
  • Répétez les étapes ci-dessus pour envoyer d'autres données.

Schéma.

Interfacer LCD 16x2 avec 8051 microcontrôleur

Entoilage 16 × 2 module LCD à 8051

Le schéma de circuit donné ci-dessus montre comment interfacer un module LCD 16 x 2 avec microcontrôleur AT89S1. C3 du condensateur, la résistance R3 et le bouton-poussoir S1 constitue le circuit de remise à zéro. condensateurs céramiques C1, C2 et le cristal X1 est en relation avec le circuit d'horloge qui produit la fréquence d'horloge du système. P1.0 aux broches P1.7 du microcontrôleur est connecté au DB0 aux broches DB7 du module respectivement, et par cette voie les données passe au module LCD. P3.3, P3.4 et P3.5 sont reliés à l'E, R / W, les broches RS du microcontrôleur et par cette voie les signaux de commande sont transffered au module LCD. La résistance R1 limite le courant à travers la lumière arrière LED et ainsi faire l'intensité de la lumière arrière. POT R2 est utilisée pour ajuster le contraste de l'affichage. Programme d'interface LCD à microcontrôleur 8051 est illustré ci-dessous.

Le sous-programme CMND définit la logique de la RS, R / W, les broches E du module à cristaux liquides de telle sorte que le module reconnaisse les données d'entrée (données DB0 à DB7) pour que la commande.

Le sous-programme DISP définit la logique de la RS, R / W, E épingles du module pour que le module reconnaît les données d'entrée en tant que données à afficher.

Module interfacer LCD pour 8051 en mode 4 bits (en utilisant seulement 4 broches d'un port)

Le microcontrôleur comme 8051 a seulement un nombre limité de broches GPIO (GPIO - sortie d'entrée à usage général). Donc, pour concevoir des projets complexes dont nous avons besoin nombre suffisant de broches d'E / S. Un module LCD peut être interfacé avec un microcontrôleur, soit en mode 8 bits (comme on le voit ci-dessus) ou en mode 4 bits. Mode 8 bits est le mode classique qui utilise huit lignes de données et RS, R / W, les broches E pour le fonctionnement. Toutefois mode 4 bits utilise seulement quatre lignes de données ainsi que les broches de commande. Cette volonté permet d'économiser le nombre de broches GPIO nécessaires à d'autres fins.

  • Interface un écran LCD avec 8051 en mode 4 bits
  • Utilisez un seul port du microcontrôleur pour les deux lignes de données et de contrôle de l'écran LCD.

Interfacer LCD 16x2 avec 8051 microcontrôleur

Module LCD 8051-4 Mode Bit

Comme le montre le schéma de circuit, le port 0 du dispositif de commande est utilisé pour l'interface avec ce module LCD. En mode 4 bits seulement quatre lignes D4-D7, avec RS, les repères R / W et E sont utilisés. Cela nous permettra d'économiser 4 broches de notre contrôleur que l'on pourrait employer à d'autres fins. nous avons besoin que ici pour écrire sur le module LCD. Ainsi, la broche R / W peut être broyé comme indiqué sur le schéma. De cette manière, le nombre total de broches peut être réduite à 6. Dans le mode de 4 bits des octets de données sont répartis en deux à quatre bits, et sont transférées sous la forme d'un demi-octet. La transmission de données à un écran LCD est effectuée en attribuant des états logiques des broches de commande RS et E. Le circuit de remise à zéro, le circuit d'oscillateur et l'alimentation électrique doivent être fournis pour le bon fonctionnement du circuit.

Programme - Module d'interface LCD 8051-4 mode binaire

aspects importants du programme

La partie de la programmation se fait en langage assembleur au lieu de C. intégré Comme indiqué précédemment, les 8 bits de données est en deux casse 4 bits de données et envoyer à écran LCD. Un sous-programme appelé « splitter » est utilisé dans le programme pour découper 8 bits de données dans des amuse-gueules. Il utilise deux emplacement de mémoire « U » et « L » pour mémoriser les quartets supérieurs et inférieurs. Le sous-programme appelé « MOVE » est utilisé pour mettre les quartets supérieur et inférieur dans les broches de données de l'écran LCD en faisant un haut à impulsion basse à la broche E du module LCD. Si nous avons besoin d'envoyer une commande « LCD_CMD » est utilisé. Dans ce sous-programme de la broche RS de l'écran LCD est effacé afin d'informer l'écran que l'octet à sa broche de données est une commande. Et sous-programme intitulé « LCD_DISP » est utilisé pour envoyer des données. Ici, la broche RS est réglée qui informera l'écran que l'octet est arrivé est une donnée pour l'affichage. Les commandes nécessaires à l'initialisation de l'écran LCD sont définis sur la partie de fin du programme. En plus de ce que le texte à il est également défini affichée avec une étiquette « TEXT1 ». « LINE1 » et des étiquettes « LINE2 » contient les commandes pour sélectionner le 1 er et 2 ème rangs de l'écran LCD respectivement.

#comprendre
#include » delay1sec.h »
#define lcd_dat P1
sbit rs = P3 ^ 0;
sbit rw = P3 ^ 1;
sbit en = P3 ^ 2;

write_lcd vide (char);
cmd_lcd vide (char);
disp_lcd vide (char);
init_lcd vide ();
str_lcd vide (char * s);
int_lcd vide (unsigned int);
float_lcd vide (float);

write_lcd vide (char dat)
lcd_dat = dat;
rw = 0;
fr = 1; // pour verrouiller une information d'octets
en = 0; // clair pour le verrouillage d'information suivante
delay_ms (2);
>

cmd_lcd vide (omble cmd)
rs = 0; // registre mis cmd
write_lcd (cmd);
>

disp_lcd vide (char c)
rs = 1; // ensemble registre de données
write_lcd (c);
>
annuler init_lcd ()
cmd_lcd (0x02); // retourner à la maison du curseur
cmd_lcd (0x38); // mode 8bit de fonctionnement
cmd_lcd (0x0E); // affichage hors cabot
cmd_lcd (0x01); // clr DDRAM (affichage RAM de données)
cmd_lcd (0x06); // Déplacer le curseur droit après chaque caractère affiché
cmd_lcd (0x80); // commencer AFF de la ligne 1 0 pos
>

principale()
unsigned char i;
init_lcd ();

cmd_lcd (0x80 + i);
str_lcd ( "Bienvenue");
delay_ms (500);
cmd_lcd (0x01);
cmd_lcd (0x80);







Articles Liés