Mise en œuvre de l`afficheur LCD

publicité
Mise en œuvre de l’afficheur LCD
Documents ressource : documentation de l’afficheur AMC-1602A, page 18 de la
documentation du circuit intégré KS0066U.
1. Caractéristiques de l’afficheur :
 Type d’affichage (signification de LCD) : à cristaux liquides.
 Format de l’affichage : 2 lignes de 16 caractères.
 Type de commande : l’afficheur est commandé par un microcontrôleur,
par l’intermédiaire d’un bus de donnée et d’un bus de contrôle (fig. 1 page 4).
 Réglage du contraste : par résistance ajustable.
 Tension d’alimentation : 5 V.
2. Mémoires internes :
L’afficheur contient deux mémoires :
 la mémoire appelée DD RAM (display data RAM);
 la mémoire appelée CG RAM (character generator RAM).
2.1. Rôle de la mémoire DD RAM (fig. 2 page 4) :
 Lorsque le bit de donnée de poids le plus fort est à 0 :
Elle reçoit le code d’une instruction servant à commander l’afficheur :
 valider/inhiber l’afficheur (display ON/display OFF) ;
 définir le mode de fonctionnement de l’afficheur (Function SET,
Cursor or Display Shift, Entry Mode Set) ;
 ramener le curseur en haut à gauche (Cursor home) ;
 effacer l’afficheur (Display clear).
 Lorsque le bit de donnée de poids le plus fort est à 1 :
Elle recoit le code servant à placer le curseur sur une ligne et une colonne
déterminées.
 Faire l’exercice 1.
2.2. Rôle de la mémoire CG RAM :
 Elle stocke le code des caractères affichés.
La table donnant le code de chacun des caractères affichables est donnée dans le
document constructeur.
ESTI Electronique
Cours : Mise en œuvre de l’afficheur LCD
Page 1 /6
 Faire l’exercice 2.
ESTI Electronique
Cours : Mise en œuvre de l’afficheur LCD
Page 2 /6
3. Description des broches d’entrée/sortie de l’afficheur :
RS
R/W
E
D0 à D7
 D0 à D7 : c’est le bus de donnée.
Son rôle :
 Ecriture dans DD RAM : il permet d’envoyer à l’afficheur le code de
l’instruction.
 Ecriture dans CG RAM : il permet d’envoyer à l’afficheur le code du caractère
à afficher.
En lecture, il permet de récupérer le contenu de DD RAM ou de CG RAM.
 RS, R/W et E : ils forment le bus de contrôle.
 Rôle de RS : sélectionner la mémoire DD RAM si RS = 0,
sélectionner la mémoire CG RAM si RS = 1 (fig. 3 page 4).
 Rôle de R/W : opération d’écriture si R/W = 0,
opération de lecture si R/W = 1.
 Rôle de E (E étant initialement à 1) : un front descendant sur E permet de
valider la donnée présente sur D0 à D7 (en écriture, la donnée rentre dans la
mémoire DD RAM ou CG RAM).
4. Commande de l’afficheur :
4.1. Ecriture d’une instruction dans la mémoire DD RAM :
L’algorithme est le suivant.
Opération :
Commentaire :
Mise à 0 de R/W
Mise à 0 de RS
Mise à 1 de E
Positionnement des bits D0 à D7
Mise à 0 de E
Ecriture …
… dans DD RAM
Donnée non validée
en fonction de l’instruction voulue
Donnée validée
(exécution de l’écriture)
 Faire l’exercice 3.
ESTI Electronique
Cours : Mise en œuvre de l’afficheur LCD
Page 3 /6
4.2. Programmation en assembleur ST6 :
On relie RS et E à deux bits de port, PC0 et PC2 par exemple (R/W est fixé à 0).
On relie D0 à D7 à un port du microcontrôleur, le port A par exemple.
Des instructions de manipulation de bits permettent de commander RS et E.
Une instruction de chargement permet de positionner D0 à D7.
 Faire l’exercice 4.
5. Initialisation de l’afficheur :
5.1. Principe de l’initialisation :
Après la mise sous tension, l’afficheur n’est pas prêt à recevoir des codes de caractères :
il faut l’initialiser, c’est à dire le préparer à recevoir des caractères.
L’algorithme d’initialisation est par exemple celui-ci.
Opération :
Valeur :
Function SET
Display OFF
Clear Display
Cursor Home
Entry Mode Set
Display On
38h
08
01
02
06
0Ch
 Décrire la configuration de l’afficheur après cette initialisation.
Function Set : donnée de 8 bits, 2 lignes, petits caractères.
Entry Mode Set : décalage du curseur vers la droite (increment).
5.2. Programmation en assembleur ST6 :
L’afficheur étant commandé par un microcontrôleur, un sous-programme écrit en
langage assembleur permet d’initialiser l’afficheur.
En général ce sous-programme est inclus dans un fichier que l’on peut utiliser à chaque
nouveau programme.
 Pour utiliser ce fichier, on utilise la directive d’assemblage .input
Si le fichier s’appelle BAC00LCD.asm et se trouve dans le dossier C:\ST6, on écrit :
.input C:\ST6\BAC00LCD.asm
 Pour appeler le sous-programme d’initialisation, on utilise l’instruction call
Si le sous-programme s’appelle Initaff, on écrit :
call initaff
ESTI Electronique
Cours : Mise en œuvre de l’afficheur LCD
Page 4 /6
Figure 1 :
Microcontrôleur
PortA
PortB
Afficheur LCD
Bus de contrôle
Bus de donnée
RS, R/W et E
D0 à D7
Remarque : le choix des ports du microcontrôleur (port A pour le bus de contrôle et port
B pour le bus de donnée) est arbitraire.
Figure 2 :
Mémoire DD RAM
0
bit de poids fort
1
Code de l’instruction
Code de la position du curseur
autres bits
Donnée
Avec RS = 0 :
Mémoire
Bus de donnée
Bus de donnée DD RAM
Figure 3 :
ESTI Electronique
Cours : Mise en œuvre de l’afficheur LCD
Page 5 /6
Avec RS = 1 :
ESTI Electronique
Bus de donnée
Mémoire
CG RAM
Cours : Mise en œuvre de l’afficheur LCD
Page 6 /6
Mise en œuvre de l’afficheur LCD - Exercices
Exercice 1 :
 A partir des tableaux du document constructeur, donner la valeur hexadécimale à écrire
dans DD RAM (D7 à D0 ou DB7 à DB0) pour effectuer les actions suivantes.
 Inhiber complètement l’afficheur (Display OFF) : 08
 Valider l’afficheur (Display ON) sans le curseur : 0Ch
 Ramener le curseur en haut à gauche : 02
 Effacer l’afficheur : 01
 Configurer l’afficheur pour des données de huit bits et un affichage sur une ligne en
grands caractères : 34h
 On recherche la valeur à placer dans DD RAM pour positionner le curseur sur la ligne et
la colonne voulue.
Les bits D0 à D3 indiquent la colonne (0000 pour la première colonne).
Le bit D6 indique la ligne (0 pour la première ligne).
Le bit D7 est à 1.
Ecrire dans ce tableau la valeur hexadécimale pour toutes les positions possibles du
curseur.
Col
.
15
16
1
80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E
8F
2
C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF
Ligne
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Exercice 2 :
 La mémoire CG RAM étant remplie, que se passe-t-il si l’on arrête d’envoyer des
signaux à l’afficheur tout en laissant celui-ci alimenté ?
Les caractères restent affichés car leurs codes sont conservés en mémoire.
 Donner la succession de codes permettant d’afficher :
<Afficheur LCD>
3Ch 41h 66h 66h 69h 63h 68h 65h 75h 72h C0h 4Ch 43h 44h 3Eh
 A la mise sous tension, l’afficheur affiche des rectangles noirs. Pourquoi ?
Tous les bits de la CG RAM sont à 1 car la mémoire est vide
(un rectangle noir correspond au code FFh)
ESTI Electronique
Cours : Mise en œuvre de l’afficheur LCD
Page 7 /6
Exercice 3 :
 Tracer les chronogrammes des signaux d’écriture d’une instruction dans DD RAM.
RS
R/W
E
D0 à D7
Ancien code
Code de l’instruction
Exécution de l’instruction
 Que doit-on changer dans ces chronogrammes pour écrire le code d’un caractère dans la
mémoire CG RAM ? Il faut mettre RS à 1.
 Tracer les chronogrammes permettant d’afficher LCD. (codes : 4Ch, 43h, 44h)
RS
E
D0
D1
D2
D3
D4
D5
D6
D7
Exercice 4 :
4Ch
43h
44h
L’afficheur est initialisé. On veut afficher le caractère *.
Ecrire en assembleur ST6 les instructions suivantes.
Opération :
Instructions :
Mettre RS à 1
Mettre E à 1
Mettre dans l’accumulateur le code de *
Recopier le contenu de l’accumulateur dans le registre DRA
Mettre E à 0
set 0,drc
set 2,drc
ldi a,2Ah
ld dra,a
res 2,drc
ESTI Electronique
Cours : Mise en œuvre de l’afficheur LCD
Page 8 /6
Téléchargement