- Contrôleur LCD à matrice de points 16x2 IC HD44780:
- Affichage d'un caractère personnalisé sur un écran LCD 16x2:
- Programmation et explication de travail:
- Connexions et tests de circuits:
Dans notre tutoriel précédent, nous avons appris comment interfacer un écran LCD 16 * 2 avec un microcontrôleur PIC. Nous vous recommandons de le parcourir avant d'aller plus loin, si vous êtes débutant en microcontrôleur PIC. Auparavant, nous avons également appris les bases du PIC en utilisant le programme de clignotement des LED et les minuteries dans le microcontrôleur PIC. Vous pouvez consulter ici tous les tutoriels sur l'apprentissage des microcontrôleurs PIC utilisant le compilateur MPLABX et XC8.
Dans ce tutoriel, rendons-le plus intéressant en créant nos propres caractères personnalisés et en les affichant sur notre écran LCD à l' aide du microcontrôleur PIC16F877A PIC. Il existe également des caractères personnalisés prédéfinis, principalement utilisés, donnés par le HD44780A IC lui-même, nous verrons également comment nous pouvons les utiliser. Comme expliqué dans notre tutoriel précédent, notre écran LCD est doté d'un contrôleur Hitachi HD44780 intégré qui nous aide à afficher les caractères. Chaque caractère que nous affichons est déjà prédéfini dans la ROM du HD44780 IC. Nous allons en apprendre davantage sur le contrôleur LCD IC HD44780, avant d'afficher le caractère sur l'écran LCD.
Contrôleur LCD à matrice de points 16x2 IC HD44780:
Afin d'afficher un caractère personnalisé, nous devons en quelque sorte dire au CI à quoi ressemblera le caractère personnalisé. Pour ce faire, nous devons connaître les trois types de mémoires présents à l'intérieur du contrôleur LCD HD44780:
ROM générateur de caractères (CGROM): C'est la mémoire morte qui, comme dit précédemment, contient tous les modèles des caractères prédéfinis à l'intérieur. Cette ROM variera de chaque type de CI d'interface, et certains peuvent avoir un caractère personnalisé prédéfini avec eux.
Display Data RAM (DDRAM): Il s'agit d'une mémoire à accès aléatoire. Chaque fois que nous affichons un caractère, son motif sera extrait du CGROM et transféré vers la DDRAM, puis sera placé à l'écran. Pour faire simple, la DDRAM aura les modèles de tous les caractères actuellement affichés sur l'écran LCD. De cette façon, pour chaque cycle, l'IC n'a pas besoin de récupérer les données du CGROM et aide à obtenir une courte fréquence de mise à jour
Générateur de caractères RAM (CGRAM): Il s'agit également d'une mémoire à accès aléatoire, nous pouvons donc y écrire et lire des données. Comme son nom l'indique, cette mémoire sera celle qui pourra être utilisée pour générer le caractère personnalisé. Nous devons former un modèle pour le caractère et l'écrire dans le CGRAM, ce modèle peut être lu et affiché sur l'écran si nécessaire.
Maintenant, puisque nous avons une compréhension de base des types de mémoire présents dans le CI d'interface HD44780. Jetons un œil à sa fiche technique pour en comprendre un peu plus.
Comme l'indique la fiche technique, le circuit intégré HD44780 a fourni 8 emplacements pour stocker nos modèles personnalisés dans CGRAM, également à droite, nous pouvons voir qu'il y a des caractères prédéfinis qui peuvent également être affichés sur notre écran LCD. Voyons comment nous pouvons le faire.
Affichage d'un caractère personnalisé sur un écran LCD 16x2:
Pour afficher un caractère personnalisé, nous devons d'abord générer un modèle pour celui-ci, puis l'enregistrer dans le CGRAM. Puisque nous avons déjà les fonctions de la bibliothèque avec nous, cela devrait être facile à faire avec quelques commandes simples. Voici la bibliothèque pour les fonctions LCD, mais ici nous avons copié-collé toutes les fonctions de la bibliothèque dans le programme lui-même, donc pas besoin d'inclure ce fichier d'en-tête dans notre programme. Consultez également cet article pour le fonctionnement de l'écran LCD de base et ses brochages.
La première étape consiste à générer un motif ou le caractère personnalisé. Comme nous le savons, chaque caractère est une combinaison de 5 * 8 points. Nous devons sélectionner le point (pixel) qui doit aller haut et lequel doit rester bas. Dessinez simplement une boîte comme ci-dessous et ombragez les régions en fonction de votre personnage. Mon personnage ici est un homme de bâton (j'espère qu'il en ressemble à un). Une fois ombré, écrivez simplement la valeur binaire équivalente de chaque octet comme indiqué ci-dessous.
Mettez simplement un «1» sur la région ombrée et un «0» sur la région non ombrée pour chaque octet, et voilà notre modèle personnalisé est prêt. De même, j'ai créé 8 codes de motif personnalisés pour nos 8 espaces mémoire, le présenter au CGROM. Ils sont listés dans le tableau ci-dessous.
S.NO: |
Caractère personnalisé |
Code de modèle |
1 |
0b01110, 0b01110, 0b00100, 0b01110, 0b10101, 0b00100, 0b01010, 0b01010 |
|
2 |
0b00000, 0b00000, 0b01010, 0b00100, 0b00100, 0b10001, 0b01110, 0b00000 |
|
3 |
0b00100, 0b01110, 0b11111, 0b11111, 0b01110, 0b01110, 0b01010, 0b01010 |
|
4 |
0b01110, 0b10001, 0b10001, 0b11111, 0b11011, 0b11011, 0b11111, 0b00000 |
|
5 |
0b01110, 0b10000, 0b10000, 0b11111, 0b11011, 0b11011, 0b11111, 0b00000 |
|
6 |
0b00000, 0b10001, 0b01010, 0b10001, 0b00100, 0b01110, 0b10001, 0b00000 |
|
sept |
0b00000, 0b00000, 0b01010, 0b10101, 0b10001, 0b01110, 0b00100, 0b00000 |
|
8 |
0b11111, 0b11111, 0b10101, 0b11011, 0b11011, 0b11111, 0b10001, 0b11111 |
Remarque: Il n'est pas obligatoire de charger les 8 espaces fournis dans le CGRAM.
Programmation et explication de travail:
Maintenant que nos codes de motif sont prêts, il ne nous reste plus qu'à les charger sur le CGRAM du LCD et à les afficher à l'aide du microcontrôleur PIC. Pour les charger dans le CGRAM, nous pouvons former un tableau 5 * 8 d'éléments et charger chaque octet en utilisant une « boucle for ». Le tableau de code de modèle est illustré ci-dessous:
const unsigned short Custom_Char5x8 = {0b01110,0b01110,0b00100,0b01110,0b10101,0b00100,0b01010,0b01010, // Code pour l'espace mémoire CGRAM 1 0b00000,0b00000,0b01010,0b00100,0b00100,0b10001,0b011 // Code pour 00000, Espace mémoire CGRAM 2 0b00100,0b01110,0b11111,0b11111,0b01110,0b01110,0b01010,0b01010, // Code pour l'espace mémoire CGRAM 3 0b01110,0b10001,0b10001,0b11111,0b11011,0b11011,0b111,0b00000, // Code pour mémoire CGRAM space 4 0b01110,0b10000,0b10000,0b11111,0b11011,0b11011,0b11111,0b00000, // Code pour l'espace mémoire CGRAM 5 0b00000,0b10001,0b01010,0b10001,0b00100,0b01110,0b10001,0b00000, // Code pour l'espace mémoire CGRAM 6 0b00000,0b00000,0b01010,0b10101,0b10001,0b01110,0b00100,0b00000, // Code pour l'espace mémoire CGRAM 7 0b11111,0b11111,0b10101,0b11011,0b11011,0b11111,0b10001,0b11111 // Code pour l'espace mémoire CGRAM 8}
Chaque espace mémoire est chargé avec son modèle de caractère respecté. Pour charger ce modèle dans le circuit intégré HD44780, la fiche technique du HD44780 doit être référencée, mais ce ne sont que des lignes de commande qui peuvent être utilisées pour définir l'adresse du CGRAM
// *** Charger un caractère personnalisé dans le CGROM *** ////// Lcd_Cmd (0x04); // Définir l'adresse CGRAM Lcd_Cmd (0x00); //.. définir l'adresse CGRAM pour (i = 0; i <= 63; i ++) Lcd_Print_Char (Custom_Char5x8); Lcd_Cmd (0); // Retour à l'accueil Lcd_Cmd (2); //.. retour à l'accueil // *** Chargement du caractère personnalisé terminé *** //////
Ici, à l'intérieur de la « boucle for», chaque valeur binaire est chargée dans le CGROM. Une fois le motif chargé, les caractères personnalisés peuvent être affichés en appelant simplement l'emplacement du motif à l'aide de la fonction void Lcd_Print_Char (char data) comme indiqué ci-dessous.
Lcd_Print_Char (0); // Afficher le caractère personnalisé 0 Lcd_Print_Char (1); // Afficher le caractère personnalisé 1 Lcd_Print_Char (2); // Afficher le caractère personnalisé 2 Lcd_Print_Char (3); // Afficher le caractère personnalisé 3 Lcd_Print_Char (4); // Afficher le caractère personnalisé 4 Lcd_Print_Char (5); // Afficher le caractère personnalisé 5 Lcd_Print_Char (6); // Afficher le caractère personnalisé 6 Lcd_Print_Char (7); // Afficher le caractère personnalisé 7
Imprimer un caractère spécial prédéfini:
Le circuit intégré HD44780 contient des caractères spéciaux prédéfinis stockés dans la mémoire DDROM. Ces caractères peuvent être directement imprimés sur l'écran en se référant à sa valeur binaire dans la fiche technique.
Par exemple: La valeur binaire du caractère "ALPHA" est 0b11100000. Comment l'obtenir peut être compris à partir de la figure ci-dessous, de même, vous pouvez obtenir une valeur pour tout caractère spécial qui est prédéfini dans l'IC.
Une fois la valeur binaire connue, le caractère correspondant peut être imprimé à l'écran en utilisant simplement la fonction void Lcd_Print_Char (char data) comme indiqué ci-dessous, Lcd_Print_Char (0b11100000); // valeur binaire alpha de la fiche technique
Le code complet de ce projet est donné ci-dessous dans la section Code, vérifiez également le détail de l' explication vidéo à la fin de ce tutoriel.
Connexions et tests de circuits:
Ce projet n'a pas d'exigence matérielle supplémentaire, nous avons simplement utilisé les mêmes connexions du tutoriel d'interfaçage LCD précédent et utilisé la même carte que nous avons créée dans le tutoriel de clignotement des LED. Comme toujours, simulons le programme en utilisant Proteus pour vérifier notre sortie.
Une fois que nous avons exécuté la simulation comme prévu, nous allons directement graver le code dans notre configuration matérielle. La sortie du programme devrait être quelque chose comme ceci:
C'est ainsi que vous pouvez afficher n'importe quel caractère personnalisé sur un écran LCD 16x2 à l'aide du microcontrôleur PIC avec le compilateur MPLABX et XC8. Consultez également notre série complète d'apprentissage sur les microcontrôleurs PIC ici.