Commande D'Un Afficheur LCD: Réaliser Par

Télécharger au format docx, pdf ou txt
Télécharger au format docx, pdf ou txt
Vous êtes sur la page 1sur 17

TP 01 :

COMMANDE D’UN AFFICHEUR LCD

Réaliser par :

 HIBA EL MESBAHY
 KHAOULA BENAMAR

Groupe : 2.1

Année universitaire : 2023 / 2024


I. Introduction :

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 la présentation de l’afficheur lcd16x2 .

Pour le deuxième chapitre ,on va présenter deux applications dont chacune


une manip différente.

Année universitaire : 2023 / 2024


II. Buts :

 Se familiariser avec l'interface les


commandes de l’interface LCD en
mode 4 bit.
 Controler l’affichage via des entrées
numériques et analogies .

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

 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'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

Vous aimerez peut-être aussi