L'affichage est la partie nécessaire de toute machine, qu'il s'agisse d'appareils ménagers ou de machines industrielles. L'écran affiche non seulement les options de contrôle pour faire fonctionner la machine, mais également l'état et la sortie de la tâche effectuée par cette machine. Il existe de nombreux types d'écrans utilisés dans l'électronique tels que l'affichage à 7 segments, l'écran LCD 16x2, l'écran tactile TFT, l'écran OLED, etc.
L'écran LCD 16x2 est le module d'affichage le plus basique et également utilisé dans certains petits équipements électroniques comme la calculatrice, le compteur numérique, etc.
- Interfaçage LCD avec le microcontrôleur 8051
- Interface LCD avec le microcontrôleur ATmega32
- Interfaçage LCD avec microcontrôleur PIC
- Interfaçage LCD 16x2 avec Arduino
- Interfaçage LCD 16x2 avec Raspberry Pi en utilisant Python
Dans ce tutoriel, nous allons voir comment interfacer un LCD 16x2 avec le microcontrôleur Atmega16 AVR et afficher un simple message de bienvenue.
Composants requis
- Atmega16
- Module LCD 16x2
- Cavaliers
- Planche à pain
Schéma
Programmation Atmega16 pour écran LCD 16x2
La programmation ne nécessite aucune bibliothèque externe. Ici, l' Atmega16 est programmé en utilisant USBASP et Atmel Studio7.0. Le programme complet et la vidéo de travail sont donnés à la fin du projet, il suffit de télécharger le programme dans Atmega16 et de faire pivoter 10k POT pour régler la luminosité de l'écran LCD.Définissez initialement la fréquence du processeur et incluez les bibliothèques nécessaires fournies avec le package Atmel Studio, par exemple pour accéder aux broches IO et
Définissez les broches RS et EN de l'écran LCD dans le programme. Les broches RS sont utilisées pour sélectionner les données et le registre de commande. La broche d'activation verrouille les données.
#define en PA3 #define rs PA2
Définissez également quel PORT d'Atmega16 sera utilisé pour l'interface LCD. Ici, le PORTA est utilisé.
#define lcdDirection DDRA #define lcdPort PORTA
L'étape suivante consiste à construire une fonction qui acceptera une commande en passant un paramètre. Il existe de nombreuses commandes LCD HEX. Les commandes hexadécimales sont utilisées pour définir la fonction de l'écran LCD. Puisque nous utilisons le mode 4 bits de l'écran LCD, l'octet (8 bits) sera envoyé en deux paquets. Le premier paquet sera Upper Nibble (4 bits) et l'autre paquet sera Lower Nibble (4 bits).
void lcdCommand (commandes char non signées) { lcdPort = (lcdPort & 0x0F) - (commandes & 0xF0); lcdPort & = ~ (1 <
La prochaine étape serait d' accepter les caractères et de les verrouiller au port de l'écran LCD. Les caractères reçus sont ensuite envoyés au grignotage LCD par grignotage. La fonction prend le caractère en utilisant le paramètre de passage , puis prend le quartet supérieur et inférieur. La broche «rs» est réglée sur haut pour le registre de données, puis une impulsion montante est envoyée pour verrouiller les données. De même, le quartet inférieur est envoyé en modifiant la valeur d'activation et en envoyant l'impulsion montante pour l'activation.
void lcdChar (chaîne de caractères non signée) { lcdPort = (lcdPort & 0x0F) - (chaîne & 0xF0); lcdPort - = (1 <
Cette fonction convertit simplement le caractère en chaîne et peut être utilisée ultérieurement dans le programme où l'écriture de chaîne est nécessaire.
void lcdString (char * str) { int j; pour (j = 0; str! = 0; j ++) { lcdChar (str); } }
Maintenant, une fonction est écrite juste pour effacer l'écran. Il vous suffit d'envoyer la commande 01 en HEX puis de placer le curseur sur la position initiale.
void lcdClear () { lcdCommand (0x01); _delay_ms (2); lcdCommand (0x80); }
Maintenant dans la fonction principale, l'écran LCD est initialisé. Initialement, définissez la direction du PORT pour l'interface LCD. Ici, le PORT est défini comme OUTPUT, alors réglez FF.
lcdDirection = 0xFF; _delay_ms (20)
Réglez ensuite l'écran LCD en mode 4 bits en envoyant 02 en hexadécimal. Envoyez également 28 en hexadécimal pour le définir dans la ligne 2, 15x7 pixels de matrice en mode 4 bits.
lcdCommand (0x02); lcdCommand (0x28);
La commande 0c et 06 est utilisée pour contrôler la position du curseur. Et enfin, effacez simplement l'écran en envoyant 01 en hexadécimal. Cela terminera l'initialisation de l'écran LCD.
lcdCommand (0x0c); lcdCommand (0x06); lcdCommand (0x01);
Une fois l'initialisation terminée, testez simplement l'écran LCD en envoyant une chaîne. Ici, nous envoyons une chaîne " Interfacing LCD " dans la 1ère ligne.
lcdString ("LCD d'interfaçage");
Déplacez ensuite le curseur sur la ligne suivante en envoyant la commande c0 en hexadécimal. Et enfin sur cette position, écrivez la chaîne "With Atmega1 6".
lcdCommand (0xC0); lcdString ("Avec Atmega16");
Ceci termine le tutoriel complet sur l' interfaçage d'un écran LCD 16x2 avec Atmega16. Notez que si vous n'obtenez aucune image ou pixels, vérifiez votre câblage selon le code et le schéma de circuit ou modifiez la valeur du POT attaché à la broche V0 de l'écran LCD. Si vous avez des doutes ou des suggestions, vous pouvez nous contacter en écrivant sur notre forum ou en commentant ci-dessous.