Connexions de l'afficheur à la carte
Dans un premier temps, il est important de noter que la carte MPLAB Xpress Evaluation Board fonctionne à un niveau logique de 3,3 V, alors que la plupart des afficheurs 16 X 2 sont conçus pour fonctionner à 5 V.
Il existe des afficheurs conçus pour fonctionner à 3,3 V. Si votre afficheur est conçu pour un fonctionnement à 5 V, il est possible qu'il fonctionne malgré tout, mais ce n'est pas certain.
L'afficheur comporte 16 broches, qui sont branchées à la carte de la façon suivante:
- VSS de l'afficheur : GND de la carte
- VDD de l'afficheur : 3,3 V de la carte (ou 5 V s'il s'agit d'un afficheur conçu pour 5 V)
- VO de l'afficheur: curseur d'un potentiomètre qui sert à régler le contraste
- RS de l'afficheur : RB0 de la carte
- RW de l'afficheur : RB1 de la carte
- E de l'afficheur : RB2 de la carte
- D0 de l'afficheur : RC0 de la carte
- D1 de l'afficheur : RC1 de la carte
- D2 de l'afficheur : RC2 de la carte
- D3 de l'afficheur : RC3 de la carte
- D4 de l'afficheur : RC4 de la carte
- D5 de l'afficheur : RC5 de la carte
- D6 de l'afficheur : RC6 de la carte
- D7 de l'afficheur : RC7 de la carte
- A de l'afficheur: 3,3 V de la carte (si un rétroéclairage est souhaité)
- K de l'afficheur: GND de la carte
Création d'un projet dans MPLAB Xpress
Je suis ensuite allé dans l'IDE en ligne MPLAB Xpress afin de créer un nouveau projet (Standalone Project). S'il s'agit de votre première utilisation de MPLAB Xpress, vous voudrez peut-être d'abord vous référer à ce précédent article.
Réglages dans MPLAB Xpress Code Configurator
Une fois le projet créé dans MPLAB Xpress, on ouvre le MPLAB Xpress Code Configurator (si MCC n'est pas déjà installé sur votre ordinateur, vous trouverez quelques informations utiles dans ce précédent article).
Vous n'avez pas à modifier quoi que ce soit dans la partie "System Module". Les paramètres par défaut conviennent parfaitement.
Au bas de la fenêtre, cliquez sur les cadenas de façon à définir les broches 0, 1 et 2 du port B et toutes les broches du port C comme sortie (OUTPUT):
Accédez ensuite à la zone "Pin Module" et décochez toutes les cases qui ont été réglées à "Analog" par défaut.
C'est tout! Il ne reste qu'à cliquer sur le bouton "Generate" pour que les fichiers d'en-tête soient automatiquement créés et ajoutés dans notre projet MPLAB Xpress.
Script
Le script ci-dessous peut être collé dans le fichier "main.c" de votre projet dans MPLAB Xpress.
Puisque je n'ai pas utilisé de bibliothèque, on y trouve la routine "initialisation_LCD" qui initialise l'afficheur au démarrage du programme, "envoie_commande" pour envoyer des instructions à l'afficheur, "affiche_caractere" pour afficher des lettres sur l'afficheur, et "gestion_string" qui divise une chaîne de caractères en caractères individuels afin qu'ils soient ensuite affichés.
Vous pourrez probablement laisser ces fonctions telles quelles, et vous contenter d'apporter des modifications à la partie "main", à la fin du programme. Dans cette partie, j'affiche le mot "ÉLECTRONIQUE" sur la première ligne de l'afficheur. Sur la deuxième ligne, j'affiche "EN AMATEUR", puis un nombre entier qui augmente d'une unité à chaque seconde.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/****************************************************************** | |
Contrôle d'un afficheur LCD avec le MPLAB Xpress Evaluation Board | |
Instructions complètes: | |
http://electroniqueamateur.blogspot.com/2018/10/afficheur-cristaux-liquide-lcd-et-mplab.html | |
*******************************************************************/ | |
#include "mcc_generated_files/mcc.h" // fichiers générés par MCC | |
#include "stdio.h" // pour l'utilisation de sprintf | |
unsigned int compteur = 0; | |
void envoie_commande(unsigned char commande) // utilisé pour envoyer une instruction à l'afficheur | |
{ | |
RB0=0; // RS (Register Select) à 0 | |
RB1=0; // RW (Read or write) à 0 | |
RB2=1; // E (Enable) à 1 | |
PORTC = commande; // Les broches D0 à D7 de l'afficheur réglées | |
// à la valeur correspondant à l'instruction voulue | |
__delay_ms(50); // délai | |
RB2=0; // E (Enable) à 0 | |
} | |
void affiche_caractere (unsigned char caract) // utilisé pour envoyer un caractère à afficher | |
{ | |
RB0=1; // RS (Register Select) à 1 | |
RB1=0; // RW (Read or write) à 0 | |
RB2=1; // E (Enable) à 1 | |
PORTC = caract; // Les broches D0 à D7 de l'afficheur réglées | |
// à la valeur correspondant au caractère voulu | |
__delay_ms(1); | |
RB2=0; // E (Enable) à 0 | |
} | |
void gestion_string (unsigned char* position) // affiche tous les caractère d'une chaîne | |
{ | |
while(*position != '\0') // jusqu'à ce qu'on soit arrivé à la fin de la chaîne de caractère | |
{ | |
affiche_caractere(*position); // on affiche le caractère | |
position++; // on passe au caractère suivant | |
} | |
} | |
void initialisation_LCD(void) // initialisation de l'afficheur | |
{ | |
__delay_ms(100); // délai | |
envoie_commande(0x38); //Mode 8 bits, 2 lighes | |
envoie_commande(0x01); // On efface le contenu de l'afficheur | |
envoie_commande(0x0E); | |
//envoie_commande(0x80); // Curseur placé au début de la première ligne | |
} | |
void main (void) | |
{ | |
SYSTEM_Initialize(); | |
initialisation_LCD(); | |
while (1) | |
{ | |
char data[16]; // contiendra la valeur du compteur en string | |
envoie_commande(0x80); // Curseur au début de la première ligne | |
gestion_string("ELECTRONIQUE"); | |
envoie_commande(0xC0); // curseur au début de la deuxième ligne | |
gestion_string("EN AMATEUR "); | |
sprintf(data, "%d", compteur); // conversion de la valeur du compteur en string | |
gestion_string(data); // affichage de la valeur du compteur | |
if (compteur <= 100){ | |
compteur++; | |
} | |
else { | |
compteur = 0; // on remet le compteur à zéro | |
envoie_commande(0x01); // 0x01 est la commande pour tout effacer sur le LCD. | |
} | |
__delay_ms(1000); // on attend une seconde avant de changer la valeur du compteur | |
} | |
} |
Vous trouverez ici d'autres projets impliquant le MPLAB Xpress Evaluation Board. Si c'est plutôt l'afficheur à cristaux liquides qui vous intéresse, voyez comment ils peut être utilisé avec d'autres cartes: Arduino, Raspberry Pi, STM32 Nucleo ou MSP430 Launchpad.
Yves Pelletier (Twitter, Facebook)
Aucun commentaire:
Enregistrer un commentaire