- Écran LCD alphanumérique 16x2
- Bibliothèque CCS LCD 16x2 pour MSP430
- Fonctions LCD pour écran LCD 16x2 sur MSP430
- Schéma de circuit pour l'interface LCD avec MSP430
- Programmation du MSP430 à l'aide de Code Composer Studio pour écran LCD
Cet article est la suite de notre série de tutoriels sur la programmation de MSP430 à l'aide de Code Composer Studio. Le dernier tutoriel était basé sur des interruptions externes sur MSP430 utilisant des broches GPIO. Ce tutoriel concerne l' interfaçage d'un écran avec le MSP430, lorsqu'il s'agit d'afficher l' écran LCD 16 * 2, c'est le premier choix pour tout amateur d'électronique. Auparavant, nous avons également interfacé LCD avec MSP430 en utilisant Arduino IDE.Dans ce tutoriel, nous utiliserons la plate-forme native du studio Code Composer au lieu d'utiliser l'IDE Arduino.De cette façon, en tant que concepteur, nous obtenons plus de flexibilité.
Pour en savoir plus sur l'écran LCD 16x2 et son utilisation avec d'autres microcontrôleurs, veuillez consulter les didacticiels ci-dessous.
- Interface LCD avec ATmega16
- Interfaçage LCD avec Raspberry Pi
- Interfaçage de l'écran LCD avec le microcontrôleur PIC
- Interface LCD avec ARM7-LPC2148
- Interfaçage de l'écran LCD avec NodeMCU
- Interface LCD avec STM32
- Interface LCD avec MSP430G2
- Interface LCD avec STM8
Il a un IC hd44780 intégré qui peut stocker la commande et les données qui lui sont transmises. Le module LCD a environ 16 broches. 8 d'entre eux sont des broches de données, 4 d'entre elles sont des broches d'alimentation pour la LED de rétroéclairage et l'ensemble du module LCD, 3 pour contrôler le fonctionnement et 1 pour le réglage du contraste. Le tutoriel est basé sur la bibliothèque créée par Dennis Eichmann. Il est très facile d'utiliser une bibliothèque avec des fonctions séparées pour imprimer différents types de données. Il a également des dispositions pour afficher les données sous différentes formes avec des zéros en début, en blanc et supprimés. C'est une bibliothèque assez vaste et complète et est configurable pour les différentes connexions. Ici, le fichier d'en-tête est modifié pour accueillir une configuration parallèle à 8 broches pour la communication de données.
Écran LCD alphanumérique 16x2
Un écran 16x2 générique a un circuit intégré hd44780 intégré (entouré en rouge ci-dessous), qui peut stocker la commande et les données qui lui sont transmises. Le module LCD a environ 16 broches. 8 d'entre eux sont des broches de données, 4 d'entre elles sont des broches d'alimentation pour la LED de rétroéclairage et l'ensemble du module LCD, 3 pour contrôler le fonctionnement et 1 pour le réglage du contraste.
Ce module LCD est illustré ci-dessus polyvalent et utilise un minimum de broches par rapport aux autres LCD segmentés. Si vous êtes curieux de savoir comment tout cela fonctionne exactement, vous devriez vérifier le fonctionnement de l'écran LCD 16x2 où nous avons déjà discuté en détail du fonctionnement de l'écran LCD.
RS Pin: RS = 1 activera le registre de données dans l'écran LCD, qui est utilisé pour écrire les valeurs dans le registre de données dans l'écran LCD. RS = 0 activera le registre d'instructions de l'écran LCD.
Activer la broche: déclenchement par front négatif; lorsque la broche passe de l'état HIGH à l'état LOW, l'écran LCD est invité à écrire sur les broches de données. Déclenchement par front positif; lorsque la broche passe de l'état BAS à l'état HAUT, l'écran LCD est invité à lire à partir des broches de données.
Broche R / W: R / W = 0 écrira dans le registre d'instructions ou le registre de données selon la sélection de la broche RS. R / W = 1 lira à partir de l'IR ou du DR selon la sélection de la broche RS.
Fonctionnement RS R / W
0 0 Écriture IR en tant qu'opération interne (affichage effacé, etc.)
0 1 Lecture de l'indicateur occupé (DB7) et du compteur d'adresses (DB0 à DB6)
1 0 DR écriture en tant qu'opération interne (DR vers DDRAM ou CGRAM)
1 1 DR lu comme une opération interne (DDRAM ou CGRAM vers DR)
Broches D0-D7: Les données sont transférées vers et depuis les registres de commande et de données via ces broches.
Broches d'alimentation: Les broches V ss, V dd sont utilisées pour alimenter le module LCD. Les broches A, K alimenteront le rétroéclairage LED. Les broches V 0 sont utilisées pour contrôler le contraste.
Bibliothèque CCS LCD 16x2 pour MSP430
Le tutoriel est basé sur la bibliothèque créée par Dennis Eichmann. Il est très facile d'utiliser une bibliothèque avec des fonctions séparées pour imprimer différents types de données. Il a également des dispositions pour afficher les données sous différentes formes avec des zéros en début, en blanc et supprimés. C'est une bibliothèque assez vaste et complète et est configurable pour les différentes connexions. Ici, le fichier d'en-tête est modifié pour accueillir une configuration parallèle à 8 broches pour la communication de données. La bibliothèque peut être téléchargée à partir du lien ci-dessous, après le téléchargement, vous suivez les étapes ci-dessous pour ajouter la bibliothèque à CCS.
Télécharger la bibliothèque 16x2 pour MSP430 - Code Composer Studio
Étape 1: Création de fichiers et de projets
Un projet CCS par défaut est créé à l'aide du menu Fichier. Dans la boîte de dialogue Créer un projet, sélectionnez le périphérique et attribuez hd44780 comme nom de projet. Sous le type de projet et la chaîne d'outils, sélectionnez le type de sortie en tant que bibliothèque statique et créez le projet.
Dans la voie de l'Explorateur de projets (côté gauche), créez un fichier d'en-tête dans le dossier d'inclusion et nommez-le hd44780.h . Copiez ensuite le contenu du fichier hd44780.h téléchargé dans ce fichier nouvellement créé.
Créez maintenant le projet principal en changeant le type de sortie en exécutable et créez un projet nommé CCS_LCD .
Étape 2: inclure les chemins de recherche vers le projet principal
Dans la boîte de dialogue des propriétés du projet hd44780 et dans les options d'inclusion du compilateur MSP430, ajoutez le dossier d'inclusion dans le fichier au chemin de recherche.
Ensuite, générez ce projet pour créer les fichiers de l'éditeur de liens nécessaires tels que les fichiers.lib . Construire ceci créera le fichier hd44780.lib dans le dossier de débogage.
Étape 3: inclure les chemins de recherche pour l'éditeur de liens
Dans la boîte de dialogue des propriétés du projet CCS_LCD et dans le chemin de recherche de fichier de l'onglet Éditeur de liens MSP430, incluez le hd44780.lib situé dans le dossier de débogage du projet hd44780. Le dossier de débogage est également inclus dans le chemin de recherche de fichier.
Le dossier d'inclusion est à nouveau ajouté aux options d'inclusion du compilateur MSP430 du projet CCS_LCD .
La bibliothèque est compilée avec succès et ajoutée à l'éditeur de liens du projet principal.
Fonctions LCD pour écran LCD 16x2 sur MSP430
void hd44780_timer_isr (void): Ceci est périodiquement appelé dans l'ISR de la minuterie A. La minuterie A est utilisée pour effectuer périodiquement les fonctions LCD comme effacer l'écran, régler le curseur et afficher les données. La fonction doit être utilisée dans l'ISR. Il ne renvoie rien.
uint8_t hd44780_write_string (char * ch__string, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): Il écrira la chaîne spécifiée dans le premier argument.
char * ch__string: La chaîne à écrire dans le tampon de données (à l'intérieur de la fonction hd44780_timer_isr ). Les données seront copiées dans le registre de données et le registre d'instructions du CI LCD lorsque le hd44780_timer_isr est périodiquement appelé.
uint8_t u8__row: Il définit la ligne dans laquelle la chaîne sera écrite.
uint8_t u8__column: Il définit la colonne dans laquelle la chaîne sera écrite.
uint8_t u8__cr_lf: S'il est défini sur 1, la ligne sera transmise à la suivante. S'il vaut 0, l'impression s'arrête à la même ligne.
void hd44780_clear_screen (void): Cette fonction effacera tout l'écran. Il ne renvoie rien.
uint8_t hd44780_output_unsigned_16bit_value (uint16_t u16__value, uint8_t u8__leading_zero_handling, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): La fonction affichera la valeur 16 bits non signée de l'écran LCD souhaité.
uint16_t u16__value: L'entier à afficher est donné dans le premier argument.
uint8_t u8__leading_zero_handling: Si 0 est passé, les zéros non significatifs seront affichés à la valeur entière seront affichés. Si 1 est passé, les zéros seront effacés. Si 2 est passé comme paramètre, seuls les chiffres significatifs seront affichés.
uint8_t u8__row: La ligne dans laquelle l'entier est affiché est sélectionnée.
uint8_t u8__column: La colonne à imprimer est sélectionnée à l'aide de l'argument.
uint8_t u8__cr_lf: S'il est défini sur 1, la ligne sera transmise à la suivante. S'il vaut 0, l'impression s'arrête à la même ligne.
Schéma de circuit pour l'interface LCD avec MSP430
Le schéma de circuit complet est illustré dans l'image ci-dessous. Comme vous pouvez le voir, les connexions matérielles sont très simples et nous avons alimenté la carte complète en utilisant un adaptateur 5V.
Les connexions sont effectuées selon le schéma ci-dessus. Veuillez consulter le tableau ci-dessous pour les connexions détaillées.
Vss | Masse de l'alimentation 5V |
Vdd | 5V |
V0 | Sortie potentiomètre |
RS | P2.1 |
R / W | Sol |
E | P2.0 |
D0 | P1.0 |
D1 | P1.1 |
D2 | P1.2 |
D3 | P1.3 |
D4 | P1.4 |
D5 | P1.5 |
D6 | P1.6 |
D7 | P1.7 |
UNE | Résistance 220 Ohm |
K | Sol |
L'anode du rétroéclairage LED ne peut pas être connectée directement à une alimentation 5V. Il doit être connecté à une résistance pour minimiser le flux de courant à travers le module LCD. J'ai fait mes connexions en utilisant une carte de performance pour souder l'écran LCD, puis j'ai utilisé des fils de cavalier pour connecter l'écran LCD à la carte MSP430, ma configuration ressemble à ceci ci-dessous, mais vous pouvez également simplement utiliser une carte d'expérimentation pour effectuer vos connexions.
Programmation du MSP430 à l'aide de Code Composer Studio pour écran LCD
Le code complet utilisé dans ce projet est donné en bas de cette page. L'explication de l'utilisation du code est la suivante. Tout d'abord, ouvrez le fichier d'en-tête (hd44780.h) et incluez le numéro de référence du microcontrôleur dans la première partie du fichier.
#include "msp430g2553.h"
Le chronomètre du chien de garde doit d'abord être arrêté. Les registres de contrôle DCOCTL et BCSCTL1 sont utilisés pour configurer l'oscillateur du microcontrôleur. Les lignes ci-dessous configureront le MCLK à 1MHZ.
WDTCTL = (WDTPW - WDTHOLD); BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ;
Les broches du port 1 doivent être mentionnées comme sortie, qui doit être utilisée pour les broches de données. La broche 0 et la broche 1 doivent également être mentionnées comme sortie dans le port 2, qui sera utilisé pour les broches RS et R / W.
P1DIR = 0xFF; P2DIR = (0x01 - 0x02);
La minuterie intégrée est utilisée pour afficher les valeurs périodiquement. La minuterie A est sélectionnée avec SMCLK (1MHZ) comme source d'horloge et le mode continu étant le mode de fonctionnement.
TA0CCR1 = 32768; TA0CCTL1 = CCIE; TA0CTL = (TASSEL_2 - MC_2 - TACLR);
Les interruptions pour les canaux de comparaison 1 et 2 et l'interruption de dépassement de la minuterie partagent le même vecteur d'interruption ( TIMER0_A1_VECTOR ) avec des adresses de départ différentes. Le canal de comparaison de capture 1 (CCR1) utilise 2 comme adresse, qui est utilisée dans le boîtier du commutateur.
#pragma vector = TIMER0_A1_VECTOR __interrupt vide timer_0_a1_isr (void) { switch (TA0IV) { case 2: { hd44780_timer_isr (); Pause; } } }
Une fois votre code compilé, vous pouvez le télécharger sur la carte MSP430, comme expliqué dans le didacticiel de mise en route du MSP430. Si tout se passe comme prévu, vous devriez voir un certain contraste sur votre écran LCD, comme indiqué ci-dessous.
Si votre test est très faible, vous pouvez essayer d'ajuster le potentiomètre pour obtenir un meilleur contraste. Le fonctionnement complet du projet peut également être trouvé dans la vidéo ci-dessous. J'espère que vous avez apprécié le projet et que vous avez trouvé intéressant de créer le vôtre. Si vous avez des questions, veuillez les laisser dans la section commentaires ci-dessous. Vous pouvez également rédiger toutes vos questions techniques sur les forums pour obtenir des réponses ou pour lancer une discussion.