Cette
page est destinée à tous ceux qui désirent
commander un afficheur LCD sans
utiliser
mon
interface LCD-RS232.
Vous y trouverez toutes les informations nécessaires à l'élaboration de votre propre programme de gestion
d'affichage LCD.
Brochage
des modules LCD :
Numéro
|
Symbole
|
Niveau
|
Fonction
|
1
|
Vss
|
GND
|
Masse
|
2
|
Vcc
|
+5V
|
Alimentation
du module LCD
|
3
|
Vc
|
0
- 5V (x)
|
Réglage
du contraste
|
4
|
RS
|
H/L
|
Sélection
du registre : H = données. L = instructions.
|
5
|
R/W
|
H/L
|
Read/Write
: H = Read (LCD > uP). L = Write (uP > LCD)
|
6
|
E
|
H/L/Z
|
Sélection
du module (Enable)
|
7
|
DB0
|
H/L/Z
|
Bit
de données 0 (poids faible)
|
8
|
DB1
|
H/L/Z
|
Bit
de données 1
|
9
|
DB2
|
H/L/Z
|
Bit
de données 2
|
10
|
DB3
|
H/L/Z
|
Bit
de données 3
|
11
|
DB4
|
H/L/Z
|
Bit
de données 4
|
12
|
DB5
|
H/L/Z
|
Bit
de données 5
|
13
|
DB6
|
H/L/Z
|
Bit
de données 6
|
14
|
DB7
|
H/L/Z
|
Bit
de données 7
|
(x)
=Cet
intervalle est donné pour les afficheurs standards.
Pour les afficheurs fonctionnant sous une plus grande
plage de température, le réglage s'effectue
entre 0 et -7V.
H
= Etat haut. L
= Etat bas. Z
= Etat haute impédance.
|
Signaux
utilisés pour la gestion des modules d'affichage LCD :
Tous les modules afficheurs ont en commun de disposer du même
brochage (SIL 14 ou 16 broches) et du même jeu de commandes.
Leur mise en oeuvre fait appel à une liaison parallèle
de 4 ou 8 bits, accompagnée de 3 signaux de commande. La
sélection d'un caractère reprend quant à elle
le codage ASCII.
La
figure ci-dessous montre la manière dont les différents
signaux doivent être configurés :
Le signal RS
indique au module si le mot qui lui est destiné est une commande
ou un caractère.
Le signal R/W
est en général non utilisé, et de ce fait,
purement et simplement forcé à la masse.
Le signal E
est l'équivalent du signal "Strobe" d'une liaison
parallèle de type Centronic et a pour fonction de déclencher
la validation du mot présent sur le bus de données
(D0 - D7).
Initialisation
du module afficheur :
L'initialisation
du module se fait en respectant
un timing
bien particulier. C'est notamment à cet endroit que l'on
précise si l'accès se fait en mode 4
bits
ou en 8
bits.
Les
symboles "X"
signifient état indifférent.
La signification des autres
symboles tel que I/D
et S
sont explicités dans le tableau récapitulatif complet
un peu plus bas dans cette page...
Les
commandes les plus courantes :
Voici
un petit extrait des commandes les plus courantes, accompagnées
de leur code hexadécimal.
Valeurs
Hexadécimales
|
Fonction
|
$20
|
Passage
en mode 4 bits
|
$01
|
Effacement
|
$02
|
Retour
au début de ligne
|
$0C
|
Pas
de curseur
|
$06
|
Curseur
se déplace vers la droite
|
$C0
|
Passage
en ligne suivante
|
$80
|
Retour
en première ligne
|
$0F
|
Curseur
clignotant
|
Tableau
récapitulatif des différentes commandes d'un afficheur
LCD :
Le
tableau suivant est valable pour les afficheurs LCD X
lignes / Z
caractères utilisant comme "intelligence" locale
un processeur HITACHI HD44780 ou un modèle compatible. Avec
: X
compris entre 1 et 4
et Z
valant respectivement 16 ou 20.
Commandes
|
RS
|
R/W
|
D7
|
D6
|
D5
|
D4
|
D3
|
D2
|
D1
|
D0
|
Description
|
Mode
de commande
|
0
|
0
|
0
|
0
|
1
|
DL
|
N
|
F
|
*
|
*
|
DL=0
: module commandé sous 4 bits. DL=1
:
module commandé sous 8 bits. N=1
: pour un afficheur 2 lignes ou plus. N=0
: pour un afficheur 1 ligne. F=1
: pour une fonte 5x11. F=0
:
pour une fonte 5x8. Temps d'exécution : 40us.
|
Mode
d'affichage
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
D
|
C
|
B
|
D=1
: initialise l'afficheur. C=1
:
active le curseur. (C=0 le curseur n'apparaît
pas). B=1
:
efface le caractère à la position du curseur. Temps
d'exécution : 40us.
|
Mode
d'entrée des données
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
I/D
|
S
|
S=1
: à chaque entrée de données, le
curseur reste fixe et l'affichage se décale (scrolling). S=0
:
à chaque entrée de données,
le curseur se décale et l'affichage reste
fixe. I/D=1
:
le décalage se fait vers la droite. I/D=0
: le décalage se fait vers la gauche. Temps
d'exécution : 40us.
|
Effacement
de l'affichage
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
Efface
la totalité de la mémoire d'affichage.
Elle ramène le curseur en haut à
gauche (pour un afficheur multi-lignes). Temps d'exécution
: 1,64 ms.
|
Retour
du curseur
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
*
|
Retour
du curseur à l'origine, sans effacer la RAM. Temps
d'exécution : 1,64ms.
|
Scrolling
du curseur
|
0
|
0
|
0
|
0
|
0
|
1
|
S/C
|
R/L
|
*
|
*
|
Déplace
le curseur ou scroll l'affichage sans changer la RAM. S/C=1
: scrolle l'affichage. S/C=0
:
déplace le curseur. R/L=1
: à droite. R/L=0
: à gauche. Temps d'exécution : 40us.
|
Saut
de lignes ou segments
|
0
|
0
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
Permet
d'accéder à la ligne suivante pour un
afficheur multi-lignes. Permet de sélectionner
le segment de x caractères pour certains modèles
d'afficheurs 1 ligne.
|
Adressage
de la CG RAM
|
0
|
0
|
0
|
1
|
A
|
A
|
A
|
A
|
A
|
A
|
1AAAAAA
=
Spécifie l'adresse pointant sur le Character
Generator RAM (CGRAM). Celle-ci occupe un emplacement
différent de la DD RAM et contient les masques
pour les caractères redéfinissables par
l'utilisateur. Après cette commande, toute
donnée lue ou écrite proviendra de la
CG RAM. L'adressage de la CG RAM se fait sur 6 bits
(AAAAAA). Temps d'exécution : 40us.
|
Adressage
de la DD RAM
|
0
|
0
|
1
|
A
|
A
|
A
|
A
|
A
|
A
|
A
|
1AAAAAAA
= Spécifie l'adresse de la DD RAM. Après
cette commande, toute donnée lue ou écrite
proviendra de la DD RAM. L'adressage de la DD RAM
se fait sur 7 bits (AAAAAAA). Temps d'exécution
: 40us.
|
Ecriture
d'une donnée
|
1
|
0
|
D
|
D
|
D
|
D
|
D
|
D
|
D
|
D
|
La
donnée DDDDDDDD
est
écrite dans la DD ou CG RAM. Tout dépend
de la dernière commande 01AAAAAA ou 1AAAAAAA
en date. Après l'exécution, le pointeur
sur la DD ou CG RAM est incrémenté d'une
unité. Temps d'exécution : 40us pour
la DD RAM et 120us pour la CG RAM. DDDDDDDD : donnée
sur 8 bits.
|
Lecture
du busy flag
|
0
|
1
|
B
|
A
|
A
|
A
|
A
|
A
|
A
|
A
|
Lit
l'état du busy flag ainsi que la valeur du pointeur
sur la DD ou CG RAM. Temps d'exécution
: 0us. B=1
:
module occupé. B
= 0
: module près à recevoir une nouvelle
donnée / commande. AAAAAAA adresse lue sur
7 bits.
|
Lecture
d'une donnée
|
1
|
1
|
D
|
D
|
D
|
D
|
D
|
D
|
D
|
D
|
DDDDDDDD
lit la donnée dans la DD ou la CG RAM (même
remarque que précédemment pour l'écriture
d'une donnée).
|
*
état du bit indifférent
|
|