Les afficheurs LCD sont devenues incontournables dans toutes applications qui demandent la visualisation de paramètres, il s' agit donc d' une interface Homme/Machine. Au paravant onéreux et difficiles à mettre en oeuvre, ils sont maintenant bon marchés et l' interface parallèle au standard Hitachi permet un pilotage facile.
On rencontre aussi de plus en plus d' afficheur pilotable avec un port série ou I2C, les instructions sont restées les mêmes.
Avant toutes choses, il est important de bien étudier la datasheet de l'afficheur, celle-ci vous donnera le temps minimale à laisser au controlleur LCD avant de lui faire parvenir les premieres informations, les temps de monté des signaux, de prise en compte de tel ou tel ordre...
Caractéristiques :
DISPOSITION DE CONNEXION : On rencontre principalement 2 dispositions de connecteur sur la platine du LCD : soit en ligne sur le dessous/dessus de l' afficheur, ou en format HE10 sur le coté. ils disposent au minimum de 14 broches , 16 pour les modèles rétro-éclairés ; il arrive aussi que le module de rétro éclairage soit séparé de la grappe de connexion, dans ce cas les bornes d' alimentation du back-light sont largement visibles.
Descriptions des signaux :
N° Broche
NOM
Description
1
VSS
Masse
2
VDD
Alimentation positive (V+)
3
VO
Contraste réglable par potentiomètre *
4
RS
Sélection de registre (0= instruction; 1 = données)
5
R/W ou RD
Lecture ou écriture (1= lecture; 1=écriture)
6
E
Enable (validation, actif au niveau haut)
7
D0
Bit 0 du bus de données
8
D1
Bit 1 du bus de données
9
D2
Bit 2 du bus de données
10
D3
Bit 3 du bus de données
11
D4
Bi t4 du bus de données
12
D5
Bit 5 du bus de données
13
D6
Bit 6 du bus de données
14
D7
Bit 7 du bus de données
* Branchement du potentiomètre pour faire varier le contraste de l' afficheur. Se reporter au datasheet du constructeur pour avoir la valeur (généralement 10 k)
Liste des instructions :
Comme tout périphérique, l' afficheur LCD se voit doté d' un jeu d' instructions qui permet de le contrôler. dans un premier temps, voici cette liste:
Commande
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
Description
Effacement
0
0
0
0
0
0
0
0
0
1
Efface l'ecran et positionne le curseur à 0 (haut,gauche)
Retour Curseur
0
0
0
0
0
0
0
0
1
X
Positionne le curseur à 0 (haut,gauche)
Mode de décalage
0
0
0
0
0
0
0
1
ID
S
Définit la direction de déplacement du curseur et si le texte doit suivre le curseur
ID : 1 = incremente adresse DD-RAM ; 0 = décremente
S : 1 = Décale l' affichage; 0 = ne décale pas
Afficheur On/Off, curseur et clignotement
0
0
0
0
0
0
1
D
C
B
D : 1 = Affichage On ; 0 = Affichage Off
C : 1 = Curseur en service ; 0 = Curseur Hors service
B : 1 = Curseur clignotant ; 0 = Curseur Fixe
Décalage Affichage et curseur
0
0
0
0
0
1
SC
RL
X
X
SC : 1 = Décale l' afficheur ; 0 = Décale le curseur
RL : 1 = Décalage à droite; 0 = Décalage à gauche
Définit l' adresse de la CG-RAM dans le compteur d' adresse.
Adresse DD-RAM
0
0
1
ADD
Définit l' adresse de la DD-RAM dans le compteur d' adresse.
Busy-flag et adresse
0
1
BF
AC
BF : Lit le drapeau d' occupation
AC : Lit le contenu du compteur d' adresse.
Écrire dans DD-RAM ou CG-RAM
1
0
Données
Lire dans DD-RAM ou CG-RAM
1
1
Données
Chronologie des signaux :
Âpres avoir pris connaissance des instructions ci-dessus, voyons comment les signaux circulent sur le bus.
On remarque immédiatement que RS définit au contrôleur LCD si l' ordre sur le bus est de type configuration ou écriture de caractères.
Le signal ENABLE permet de validé tout les ordres, notez que les signaux doivent être le plus stable possible durant cette validation. Du point de vue la validation, il y à deux écoles : une préfère vérifier que le contrôleur soit bien dispo en vérifiant l' état du signal BUSY, l' autre incorpore une tempo logiciel avant chaque ordre et s' affranchie de la lecture de BUSY, dans ce cas veuillez prendre connaissance de ce temps minimal propre à chaque constructeur.
Les 2 méthodes fonctionnent très bien.
L'initialistation minimale :
- Choix du mode d' adressage : il faut tout d' abord savoir de quelle manière on souhaite adresser le bus : 8 bits ou 4 bits. Le mode 4 bits est préférable car il permet d' économiser des lignes d' entrées/sorties sur le microcontrôleur, mais d' un autre coté, il faut prendre en compte qu 'il faudra décomposer l' adresse en 2 paquets(bits de poids fort, suivie des bits de poids faibles). Dans la même instruction vient aussi la configuration du nombre de lignes de l' afficheur; si il s' agit d' un modèle multiligne, toujours mettre la valeur N =1 (2 lignes).
- Décalage : il faut définir le comportement du décalage curseur/écran avec les bits ID et S.
ID détermine si après une opération de lecture ou d'ecriture l' adresse de la DDRAM doit être automatiquement incrémenté, on écrira ici "1" afin d'incrementer l' adresse de la DDRAM, puis "0" pour S pour ne pas décaler l' affichage
- Afficheur on/off... : le bit D met l' afficheur en marche. Ensuite et suivant votre application, mettre le curseur sur visible ou non, clignotant ou fixe si visible.
Voila, les 3 instructions minimales nécessaire afin d' initialiser correctement l' afficheur sont entrées, maintenant si vous le souhaitez vous avez a votre disposition quelques instructions supplémentaires permettant de produire divers effets..
La DDRAM :
DEFINITION : La DDRAM est la traduction de Display Data RAM. C' est une mémoire dont l' adresse contient le caractère affiché a l'ecran à une certaine position. Chaque ligne de l' afficheur se voit décomposé en cellules qui permettent le stockage des caractères. Ainsi le premier caractère affiché à l'ecran se voit attribué l' adresse $00, le deuxième $01...
Logique me direz vous, et bien pas tant que cela : les adresses ne sont pas linéairement suivies, ainsi le 17 eme caractère ne se voit pas attribué l' adresse $11, mais $40 !
Il est donc indispensable de connaître la cartographie des adresses et rien ne vaut un petit tour du coté su datasheet, même si, à ma connaissance, 99 % des afficheurs respectent ce standard. (Voir Annexe)
UTILISATION : Pourquoi adresser la DDRAM ? Imaginons une application qui donne une température avec l' affichage suivant :
Le texte "TEMPERATURE INTERIEUR" est invariable, seul la température change. Dans ce cas pourquoi ne pas faire pointer l' adresse de la DDRAM sur la valeur $4B qui correspond au premier caractère affiché de la température, et ensuite écrire tout simplement la nouvelle valeur de la température ! Voila à quoi peut servir la DDRAM, elle permet de naviguer à toutes les adresses de l' afficheur.
On peut donc en déduire la programmation de chronologie suivante pour écrire 23 en place de la température actuelle :
RS
RW
D7
D6
D5
D4
D3
D2
D1
D0
Passage du LCD en Mode INSTRUCTION et pointage à
l' adresse $4B de la DDRAM
0
0
1
1
0
0
1
0
1
1
Cycle de Validation
Passage du LCD en Mode DONNEES et écriture du caractère "2" en décimale soit 32 en hexadécimal.
1
0
0
0
1
1
0
0
1
0
Cycle de Validation
Passage du LCD en Mode DONNEES et écriture du caractère "3" en décimale soit 33 en hexadecimal.
1
0
0
0
1
1
0
0
1
1
La CGRAM :
DEFINITION : La CGRAM est la traduction de Charactere Generator RAM. Comme sont nom l' indique, il s' agit d' un générateur de caractère, ainsi il sera possible de créer ses propres symboles, contrairement à la CGROM qui contiens les caractères pré-définis.
Généralement la place faite à la CGRAM permet la création de 8 caractères.
L' utilisation de la CGRAM ne sera pas abordée ici, cependant si les demandes se font nombreuses...