Filière : Ingénierie D´Automatisme Et Informatique Industriel
Module : Microcontrôleur
TP 01 :
COMMANDE D’UN AFFICHEUR LCD
Elabore par :
YASSER ERRATI
OUSSAMA BOUKTIB
Groupe : 1.2
Année universitaire : 2023 / 2024
I. Introduction :
Aujourd'hui, il a des milliers d’utilisateurs : étudiants, amateurs, passionnés
et professionnels utilisent la carte easypic v 7 .
Il est utilisé dans de nombreuses écoles et autres institutions éducatives à
travers le monde.
On peut dire qu'il est le plus célèbre du système de développement de PIC
dans le monde.
l'afficheur LCD est une technologie essentielle offrant une interface visuelle
compacte et économe en énergie. Utilisé dans des dispositifs variés tels que
smartphones, tablettes et instruments médicaux, l'afficheur LCD permet
l'affichage clair de textes, graphiques et images, tout en étant facilement
intégré à des microcontrôleurs pour une manipulation interactive des
données.
Ce document comprend deux parties :
Pour le premier chapitre,on a presentation de l’afficheur lcd16x2 .
Pour le deuxieme chapitre,on va présenter deux application dont chacune une
manipe différente.
Année universitaire : 2023 / 2024
II. Buts :
1) Se familiariser avec l'interface les commandes de
l’interface LCD en mode 4 bit.
2) Controler l’affichage via des entrées analogique et
numerique.
Année universitaire : 2023 / 2024
III. Outils :
Carte EasyPic v7 :
La carte de développement EasyPIC v7 de la société Mikroelektronica permet de
développer des projets utilisant les microcontrôleurs Microchip de la famille PIC
12/16/18.
A l’achat elle est équipée du PIC 18F45K22 dont nous verrons les caractéristiques par
la suite. EasyPIC v7 intègre un grand nombre de fonctionnalités :
• Leds et boutons poussoirs connectables aux différents ports.
• Switches et cavaliers de configurations afin de s’adapter aux microcontrôleurs et à leurs
caractéristiques.
• Des connecteurs E/S au format HE10 reliés aux différents ports des microcontrôleurs.
Année universitaire : 2023 / 2024
• Programmateur sur la carte permettant la programmation in situ (sans avoir à enlever le
microcontrôleur).
• Module ICD permettant le débogage du programme en simulation et en temps réel sur la
carte.
• Des connecteurs afin de relier des capteurs ( DS18S20 …) directement sur la carte.
• Un afficheur LCD et un afficheur GLCD tactile..
• Module de communication RS232, USB.
• Connecteur d’extension mikroBUS sockets permettant l’ajout de « click Boards »
Bluetooth,
MP3, CAN SPI etc…
• Une mémoire E²PROM I²C.
• Un buzzer.
•Un afficheur LCD (Liquid Crystal Display) fonctionne en exploitant les propriétés des
cristaux liquides situés entre deux couches de verre polarisé. Chaque pixel de la matrice
est composé de cristaux qui, en réaction à un champ électrique généré par des électrodes,
modifient l'orientation de la lumière qui les traverse. Des filtres polarisants et un
rétroéclairage sont utilisés pour créer des images visibles. Un contrôleur LCD convertit
les signaux électriques en commandes pour les pixels, permettant l'affichage
d'informations. Les afficheurs LCD peuvent être alphanumériques ou graphiques, avec
différentes technologies telles que des matrices passives ou actives, offrant diverses
applications allant des écrans d'ordinateurs aux panneaux de contrôle..
• Potentiomètres : Les potentiomètres sont des composants électroniques ajustables
utilisés pour régler la résistance électrique dans un circuit. Ils ont trois bornes, deux fixes
et une mobile, permettant de modifier la résistance en ajustant la position de la borne
mobile. Les potentiomètres sont couramment utilisés pour ajuster le volume, la luminosité
et d'autres paramètres dans divers équipements électroniques.
Année universitaire : 2023 / 2024
Applications
Loisirs et Enseignement
Logiciel MikroC :
Le mikroC PRO for PIC est un compilateur ANSI C complet, destiné
aux circuits PIC de Microchip. Il possède un IDE intuitif, un compilateur
puissant avec des optimisations évoluées, de nombreuses bibliothèques de matériel
et de logiciel, et des outils supplémentaires pour le développement de code.
Débuggeur MokroProg
MikroProg est un programmeur et un matériel rapides débogueur. Destiné à être
raccordé via une une liaison USB 2.0 à un compatible PC, le boîtier
"MikroProg" est capable de programmer votre microcontrôleur directement sur la
platine de votre application via un câble plat associé à un connecteur HE10 femelle
en bout.
Année universitaire : 2023 / 2024
Son électronique lui permet de générer des tensions de 1,8 V à 5 V avec un courant
de 250 mA max. afin de pouvoir gérer la plupart des microcontrôleurs.
Il est pris en charge dans les trois compilateurs MikroElektronika
(mikroC, mikroBasic, mikroPascal)
Année universitaire : 2023 / 2024
IV. Manipes :
1)
// LCD module connections
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// End LCD module connections
char txt1[] = "mikroElektronika";
char txt2[] = "EasyPIC6";
char txt3[] = "Lcd4bit";
char txt4[] = "example";
char i; // Loop variable
void Move_Delay() { // Function used for text moving
Delay_ms(500); // You can change the moving speed here
}
void main(){
ANSEL = 0; // Configure AN pins as digital I/O
ANSELH = 0;
C1ON_bit = 0; // Disable comparators
C2ON_bit = 0;
Lcd_Init(); // Initialize LCD
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1,6,txt3); // Write text in first row
Lcd_Out(2,6,txt4); // Write text in second row
Delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Out(1,1,txt1); // Write text in first row
Lcd_Out(2,5,txt2); // Write text in second row
Delay_ms(2000);
// Moving text
for(i=0; i<4; i++) { // Move text to the right 4 times
Lcd_Cmd(_LCD_SHIFT_RIGHT);
Année universitaire : 2023 / 2024
Move_Delay();
}
while(1) { // Endless loop
for(i=0; i<8; i++) { // Move text to the left 7 times
Lcd_Cmd(_LCD_SHIFT_LEFT);
Move_Delay();
}
for(i=0; i<8; i++) { // Move text to the right 7 times
Lcd_Cmd(_LCD_SHIFT_RIGHT);
Move_Delay();
}
}
}
1) Ce code permet d’afficher ces mots suivant :
"mikroElektronika","EasyPIC6","Lcd4bit","example"
Avec un delay de 2000ms pour chaque mots
2)
// LCD module connections
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
Année universitaire : 2023 / 2024
sbit LCD_D7_Direction at TRISB3_bit;
// End LCD module connections
char txt1[] = "mikroElektronika";
char txt2[] = "EasyPIC6";
char txt3[] = "Lcd4bit";
char txt4[] = "example";
char i; // Loop variable
char counter = 0; // Counter variable
void Move_Delay() { // Function used for text moving
Delay_ms(500); // You can change the moving speed here
}
void main() {
ANSEL = 0; // Configure AN pins as digital I/O
ANSELH = 0;
C1ON_bit = 0; // Disable comparators
C2ON_bit = 0;
Lcd_Init(); // Initialize LCD
Lcd_Cmd(_LCD_CLEAR); // Clear display
Année universitaire : 2023 / 2024
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1, 6, txt3); // Write text in the first row
Lcd_Out(2, 6, txt4); // Write text in the second row
Delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Out(1, 1, txt1); // Write text in the first row
Lcd_Out(2, 5, txt2); // Write text in the second row
Delay_ms(2000);
while (1) { // Endless loop
Lcd_Cmd(_LCD_CLEAR); // Clear display
// Display the counter value
WordToStr(counter, txt4);
Lcd_Out(1, 6, txt4);
// Increment the counter and take modulo 50
counter = (counter + 1) % 50;
Delay_ms(1000); // Wait for a second
}}
2)Ce programme permet de afficher un comptage du 0 jusqu’à 50.
Année universitaire : 2023 / 2024
3) // LCD module connections
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// End LCD module connections
unsigned int seconds = 0; // Variable to store seconds
void Move_Delay() {
Delay_ms(500);
void Timer_Init() {
T1CON = 0x80; // Enable Timer1 with external crystal
void main() {
ANSEL = 0;
Année universitaire : 2023 / 2024
ANSELH = 0;
C1ON_bit = 0;
C2ON_bit = 0;
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Timer_Init(); // Initialize Timer1 for timekeeping
while (1) {
// Display the seconds on the LCD
Lcd_Out(1, 1, "Seconds: ");
Lcd_Chr(1, 10, (seconds / 10) + '0');
Lcd_Chr(1, 11, (seconds % 10) + '0');
Delay_ms(1000); // Wait for 1 second
seconds++; // Increment the seconds
if (seconds == 60) {
seconds = 0; // Reset seconds to zero after one minute
3)Ce programme programme permet de compter les secondes
Année universitaire : 2023 / 2024
4) // Configuration des broches pour l'afficheur LCD
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// Fin de la configuration de l'afficheur LCD
char txt1[] = "Horloge Numerique";
char txt2[] = "Heure :";
char txt3[] = "Minute :";
char txt4[] = "Seconde :";
char time[6]; // Tableau pour stocker l'heure, les minutes et les secondes
unsigned int seconds = 0; // Variable pour compter les secondes
unsigned int minutes = 0; // Variable pour compter les minutes
unsigned int hours = 0; // Variable pour compter les heures
void Move_Delay() {
Delay_ms(500); // Vous pouvez ajuster la vitesse du déplacement ici
void DisplayTime() {
Année universitaire : 2023 / 2024
// Afficher l'heure, les minutes et les secondes sur l'écran LCD
WordToStr(hours, txt1);
Ltrim(txt1);
Lcd_Out(2, 8, txt1);
Lcd_Chr_CP(':');
WordToStr(minutes, txt1);
Ltrim(txt1);
Lcd_Out(2, 11, txt1);
Lcd_Chr_CP(':');
WordToStr(seconds, txt1);
Ltrim(txt1);
Lcd_Out(2, 14, txt1);
void main() {
ANSEL = 0; // Configurer les broches AN comme des entrées/sorties digitales
ANSELH = 0;
C1ON_bit = 0; // Désactiver les comparateurs
C2ON_bit = 0;
Lcd_Init(); // Initialiser l'afficheur LCD
Lcd_Cmd(_LCD_CLEAR); // Effacer l'écran
Lcd_Cmd(_LCD_CURSOR_OFF); // Désactiver le curseur
Lcd_Out(1, 1, txt1); // Écrire le texte dans la première ligne
while (1) { // Boucle infinie
// Afficher l'en-tête et l'heure
Lcd_Out(2, 1, txt2);
Année universitaire : 2023 / 2024
DisplayTime();
// Incrémenter les secondes
seconds++;
// Mettre à jour les minutes et les heures si nécessaire
if (seconds == 60) {
seconds = 0;
minutes++;
if (minutes == 60) {
minutes = 0;
hours++;
if (hours == 24) {
hours = 0;
// Actualiser l'affichage toutes les secondes
Delay_ms(1000);
4) Ce programme peut construire une horloge qui affiche l’heure ,les minutes
et les secondes.
Année universitaire : 2023 / 2024
V. Conclusion :
L'utilisation d'un afficheur LCD commandé par un microcontrôleur, comme illustré
dans les exemples de programmation fournis, offre une interface visuelle flexible
dans le domaine de l'électronique embarquée.
Cette combinaison permet de créer des dispositifs interactifs tels que des horloges
numériques, des systèmes de contrôle, des indicateurs en temps réel, etc.
L'afficheur LCD, en exploitant les cristaux liquides, offre des avantages tels que la
faible consommation d'énergie, la légèreté et la finesse, ce qui le rend adapté à une
variété d'applications.
La programmation du microcontrôleur, avec des langages tels que le C ou des
environnements de développement spécifiques comme MikroC, permet de
personnaliser et de contrôler l'affichage de manière précise. En résumé, l'intégration
d'un afficheur LCD avec un microcontrôleur offre une solution puissante pour la
création d'interfaces utilisateur dans divers projets électroniques.
Année universitaire : 2023 / 2024