- Matériaux nécessaires
- Schéma de circuit et connexion
- Programmation STM32 pour LCD en utilisant Arduino
- Téléchargement du programme vers STM32F103C8T6
Pour tout projet de microcontrôleur, l'interfaçage d'une unité d'affichage avec celui-ci rendrait le projet beaucoup plus facile et attrayant pour l'utilisateur. L'unité d'affichage la plus couramment utilisée pour les microcontrôleurs est les afficheurs alphanumériques 16 × 2. Ces types d'affichages sont non seulement utiles pour afficher des informations vitales à l'utilisateur, mais peuvent également servir d'outil de débogage pendant la phase de développement initiale du projet. Donc, dans ce tutoriel, nous allons apprendre comment nous pouvons interfacer un écran LCD 16 × 2 avec la carte de développement STM32F103C8T6 STM32 et la programmer à l'aide de l'IDE Arduino. Pour les personnes familiarisées avec Arduino, ce tutoriel ne sera qu'une promenade de gâteau car ils sont tous deux très similaires. Pour en savoir plus sur le STM32 Blue Pill Board, suivez notre tutoriel de démarrage.
Matériaux nécessaires
- Carte de développement STM32 Blue Pill
- Écran LCD 16 × 2
- Programmeur FTDI
- Connexion des fils
- LCD
Brève introduction à l'écran LCD à matrice de points 16 × 2
Comme indiqué précédemment, Energia IDE fournit une belle bibliothèque qui fait de l'interfaçage un jeu d'enfant et il n'est donc pas obligatoire de savoir quoi que ce soit sur le module d'affichage. Mais ne serait-il pas intéressant de montrer ce que nous utilisons !!
Le nom 16 × 2 implique que l'affichage comporte 16 colonnes et 2 lignes, qui ensemble (16 * 2) forment 32 cases. Une seule boîte ressemblerait à ceci dans l'image ci-dessous
Une seule boîte a 40 pixels (points) avec un ordre matriciel de 5 lignes et 8 colonnes, ces 40 pixels forment ensemble un caractère. De même, 32 caractères peuvent être affichés en utilisant toutes les cases. Jetons maintenant un œil aux brochages.
L'écran LCD a un total de 16 broches, comme indiqué ci-dessus, ils peuvent être classés en quatre groupes comme suit
Broches source (1, 2 et 3): ces broches fournissent le niveau de puissance et de contraste de l'écran
Broches de contrôle (4, 5 et 6): Ces broches définissent / contrôlent les registres dans le CI d'interfaçage LCD (vous en trouverez plus dans le lien ci-dessous)
Broches de données / de commande (7 à 14): ces broches fournissent les données sur les informations à afficher sur l'écran LCD.
Broches LED (15 et 16): Ces broches sont utilisées pour allumer le rétroéclairage de l'écran LCD si nécessaire (en option).
Sur l'ensemble de ces 16 broches, seules 10 broches sont à utiliser obligatoires pour le bon fonctionnement de l'écran LCD si vous voulez en savoir plus sur ces écrans LCD, passez à cet article LCD 16x2.
Schéma de circuit et connexion
Le schéma de circuit pour interfacer l' écran LCD à matrice de points 16 * 2 avec la carte STM32F103C8T6 STM32 Blue Pill est illustré ci-dessous. Il est réalisé à l'aide du logiciel Fritzing.
Comme vous pouvez le voir, la connexion complète se fait via une maquette. Nous avons besoin d'une carte FTDI pour programmer le microcontrôleur STM32. Donc, similaire à notre tutoriel précédent, nous avons câblé la carte FTDI à STM32, la broche Vcc et de masse du programmateur FDTI est connectée respectivement à la broche 5V et à la broche de masse du STM32. Ceci est utilisé pour alimenter la carte STM32 et l'écran LCD car les deux peuvent accepter le + 5V. Les broches Rx et Tx de la carte FTDI sont connectées aux broches A9 et A10 du STM32 afin que nous puissions programmer la carte directement sans le chargeur de démarrage.
Ensuite, l'écran LCD doit être connecté à la carte STM32. Nous allons utiliser l' écran LCD en mode 4 bits, nous devons donc connecter les 4 broches de bits de données (DB4 à DB7) et les deux broches de commande (RS et EN) à la carte STM32 comme indiqué dans le circuit d'interface LCD STM32F103C8T6 diagramme ci-dessus. De plus, le tableau ci-dessous vous aidera à établir la connexion.
Broche LCD No. |
Nom de la broche LCD |
Nom de broche STM32 |
1 |
Sol (Gnd) |
Terre (G) |
2 |
VCC |
5V |
3 |
VEE |
Terre (G) |
4 |
Inscription Sélectionner (RS) |
PB11 |
5 |
Lecture / écriture (RW) |
Terre (G) |
6 |
Activer (EN) |
PB10 |
sept |
Bit de données 0 (DB0) |
Pas de connexion (NC) |
8 |
Bit de données 1 (DB1) |
Pas de connexion (NC) |
9 |
Bit de données 2 (DB2) |
Pas de connexion (NC) |
dix |
Bit de données 3 (DB3) |
Pas de connexion (NC) |
11 |
Bit de données 4 (DB4) |
PB0 |
12 |
Bit de données 5 (DB5) |
PB1 |
13 |
Bit de données 6 (DB6) |
PC13 |
14 |
Bit de données 7 (DB7) |
PC14 |
15 |
LED positive |
5V |
16 |
LED négative |
Terre (G) |
Une fois les connexions effectuées, nous pouvons ouvrir l'IDE Arduino et commencer à le programmer.
Programmation STM32 pour LCD en utilisant Arduino
Comme indiqué dans ce tutoriel, nous utiliserons l' IDE Arduino pour programmer notre microcontrôleur STM32. Mais, l'IDE Arduino par défaut n'aura pas la carte STM32 installée, nous devons donc télécharger un package et préparer l'IDE Arduino pour le même. C'est exactement ce que nous avons fait dans notre précédent tutoriel pour démarrer avec STM32F103C8T6 en utilisant Arduino IDE. Donc si vous n'avez pas installé les packages requis, revenez à ce tutoriel et suivez-le avant de continuer ici.
Une fois la carte STM32 installée dans l'IDE Arduino, nous pouvons commencer la programmation. Le programme est très similaire à celui d'une carte Arduino, la seule chose qui changera ce sont les noms de broches puisque les notations sont différentes pour STM32 et Arduino. Le programme complet est donné à la fin de cette page, mais pour expliquer le programme je l'ai divisé en petits extraits significatifs comme indiqué ci-dessous.
Un avantage notable de l'utilisation d'Arduino pour la programmation de nos microcontrôleurs est qu'Arduino dispose de bibliothèques prêtes à l'emploi pour presque tous les capteurs et actionneurs célèbres. Nous commençons donc ici notre programme en incluant la bibliothèque LCD qui rend la programmation beaucoup plus facile.
#comprendre
Dans la ligne suivante, nous devons spécifier à quelles broches GPIO du STM32 nous avons connecté le contrôle de l'écran LCD et les lignes de données. Pour ce faire, nous devons vérifier notre matériel, pour plus de facilité, vous pouvez également vous référer au tableau donné en haut qui répertorie les noms de broches du LCD par rapport à la broche GPIO de STM32. Après avoir mentionné les broches, nous pouvons initialiser l'écran LCD à l'aide de la fonction LiquidCrystal . Nous appelons également notre écran LCD « lcd » comme indiqué ci-dessous.
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; // mentionne les noms des broches avec LCD est connecté à LiquidCrystal lcd (rs, en, d4, d5, d6, d7); // Initialise l'écran LCD
Ensuite, nous entrons dans la fonction de configuration . Ici, nous avons d'abord mentionné le type d'écran LCD que nous utilisons. Puisqu'il s'agit d'un écran LCD 16 * 2, nous utilisons la ligne lcd.begin (16,2). Le code à l'intérieur de la fonction de configuration void n'est exécuté qu'une seule fois. Nous l'utilisons donc pour afficher un texte d'introduction qui apparaît à l'écran pendant 2 secondes, puis est effacé. Pour mentionner la position où le texte doit apparaître, nous utilisons la fonction lcd.setcursor et pour imprimer le texte, nous utilisons la fonction lcd.print . Par exemple, lcd.setCursor (0,0) définira le curseur sur la première ligne et la première colonne où nous imprimons « Interfacing LCD » et la fonction lcd.setCursor (0,1) déplace le curseur sur la deuxième ligne de la première colonne où nous imprimons la ligne « CircuitDigest ».
void setup () {lcd.begin (16, 2); // Nous utilisons un écran LCD 16 * 2 lcd.setCursor (0, 0); // A la première ligne, première colonne lcd.print ("Interfacing LCD"); // Imprimer ce lcd.setCursor (0, 1); // À la deuxième ligne, première colonne lcd.print ("- CircuitDigest"); // Imprimer ce délai (2000); // attendez deux secondes lcd.clear (); // Effacer l'écran}
Après avoir affiché le texte d'introduction, nous maintenons le programme pendant 2 secondes en créant un délai afin que l'utilisateur puisse lire le message d'introduction. Ce retard est créé par le retard de ligne (2000) où 2000 est la valeur du retard en millièmes de secondes. Après le délai, nous effaçons l'écran LCD en utilisant la fonction lcd.clear () qui efface l'écran LCD en supprimant tout le texte sur l'écran LCD.
Enfin, à l'intérieur de la boucle vide, nous affichons «STM32 –Blue Pill» sur la première ligne et la valeur des secondes sur la deuxième ligne. La valeur de second peut être obtenue à partir de la fonction millis () . Le millis () est une minuterie qui s'incrémente dès le moment où le MCU est mis sous tension. La valeur est en millisecondes, nous la divisons donc par 1000 avant de l'afficher sur notre écran LCD.
boucle vide () { lcd.setCursor (0, 0); // A la première ligne, première colonne lcd.print ("STM32 -Blue Pill"); // Affiche ce lcd.setCursor (0, 1); // À la deuxième ligne, première colonne lcd.print (millis () / 1000); // Affiche la valeur des secondes }
Téléchargement du programme vers STM32F103C8T6
Comme indiqué dans le paragraphe ci-dessus, vous devriez être en mesure de remarquer la sortie dès que le code est téléchargé. Mais ce programme ne fonctionnera pas la prochaine fois que vous allumerez la carte, car la carte est toujours en mode de programmation. Ainsi, une fois le programme téléchargé, le cavalier du démarrage 0 doit être remis à 0 positions comme indiqué ci-dessous. De plus, maintenant que le programme est téléchargé sur la carte STM32, nous n'avons pas besoin de la carte FTDI et l'ensemble de la configuration peut être alimenté par le port micro-USB de la carte STM32, comme indiqué ci-dessous.
Ce n'est qu'un simple projet d'interfaçage pour aider à utiliser l'écran LCD avec la carte STM32, mais vous pouvez également l'utiliser pour créer des projets sympas. J'espère que vous avez compris le tutoriel et en avez appris quelque chose d'utile. Si vous avez rencontré un problème pour le faire fonctionner, veuillez utiliser la section des commentaires pour publier le problème ou utiliser les forums pour d'autres questions techniques. Le fonctionnement complet de l'écran LCD avec STM32 peut également être trouvé sous forme de vidéo ci-dessous.