AFFICHEURS A CRISTAUX LIQUIDES
I) Généralités
a)Description
Les afficheurs à cristaux liquides sont des modules compacts intelligents et nécessitent peu de composants externes pour un bon fonctionnement. Ils sont relativement bons marchés et s'utilisent avec beaucoup de facilité.
Un exceptionnel microprocesseur "pilote" de la famille C-MOS diminue considérablement leur consommation (inférieur à 0.1 mW). Ils sont pratiquement les seuls à être utilisés sur les appareils à alimentation par piles.
Plusieurs afficheurs sont disponibles sur le marché et ne diffèrent les uns des autres, non seulement par leurs dimensions, (de 1 à 4 lignes de 6 à 80 caractères), mais aussi par leurs caractéristiques techniques et leurs tension de service. Certains sont dotés d'un rétro éclairage de l'affichage. Cette fonction fait appel à des LED montées derrière l'écran du module, cependant, cet éclairage est gourmand en intensité (250 mA max.).
b)Principe de fonctionnement.
Schéma fonctionnel
Comme le montre le schéma fonctionnel, l'affichage comporte d'autres
composants que l'afficheur à cristaux liquides (LCD) seul. Un circuit
intégré de commande spécialisé, le LCD-controller,
est chargé de la gestion du module. Le "contrôleur" remplit
une double fonction: d'une part il commande l'affichage et de l'autre se
charge de la communication avec l'extérieur.
c)Connexions
Les connexions à réaliser sont simples puisque l'afficheur
LCD dispose de peu de broches. Il faut, évidement, l'alimenter,
le connecter à un bus de donnée (4 ou 8 bits) d'un microprocesseur,
et connecter les broches Enable (validation), Read/Write
(écriture/lecture) et Register Select (instruction/commande).
II) Principe des cristaux liquides
L'afficheur est constitué de deux lames de verre, distantes de 20 µm environ, sur lesquelles sont dessinées les mantisses formant les caractères. L'espace entre elles est rempli de cristal liquide normalement réfléchissant (pour les modèles réflexifs).
L'application entre les deux faces d'une tension alternative basse fréquence de quelques volts (3 à 5 V) le rend absorbant. Les caractères apparaissent sombres sur fond clair.
N'émettant pas de lumière, un afficheur à cristaux liquides réflexif ne peut être utilisé qu'avec un bon éclairage ambiant. Sa lisibilité augmente avec l'éclairage.
Les modèles transmissifs fonctionnent différemment: normalement opaque au repos, le cristal liquide devient transparent lorsqu'il est excité; pour rendre un tel afficheur lisible, il est nécessaire de l'éclaire par l'arrière.
a) Constitution d'une cellule à cristal
liquide
b) Constitution d'un afficheur à cristaux
liquides
III) Afficheur LCD LM-16251
a)Description
Le LM-16251 comporte 2 lignes de 16 caractères inscrits dans
une matrice de 5 colonnes de 8 points. La plupart des caractères
n'utilisent que les 7 rangées supérieures de la matrice;
la rangée inférieure est prévue pour la visualisation
d'un curseur. L'afficheur proprement dit est implanté sur un circuit
imprimé au dos duquel sont soudés deux circuits intégrés
VLSI et quelques composants discrets. L'électronique est compatible
C-MOS et TTL et sa consommation ne dépasse pas 7 mW. Ses entrées
sont protégées par des diodes. Outre les 32 caractères
visualisés sur l'affichage, il est possible de mettre en mémoire
48 caractères supplémentaires, caractères que l'on
visualisera sur l'affichage au moment voulu. Les dimensions de l'affichage
sont très compactes:
circuit imprimé: 84 * 44 mm
boîtier de l'afficheur à cristaux liquides: 70,5 * 43,2 mm
partie utile de l'afficheur: 56,7 * 11,5 mm
caractère avec curseur 5,55 * 2,95 mm
Possibilités de l'afficheur
L'afficheur est en mesure de visualiser 192 caractères:
- de $00 à $ 07 : 8 caractères définissables par l'utilisateur
- de $20 à $7F : 96 caractères ASCII (majuscules, minuscules, chiffres, signes)
- de $A0 à $DF: 64 caractères japonais ( alphabet kana)
- de $E0 à $FF : 32 caractères spéciaux: accent,
lettres grecques, ...
De plus, l'affichage est capable de traiter d'autres commandes telles que:
- l'extinction de l'affichage
- le positionnement du curseur
- le déplacement des caractères sur l'affichage
- Le choix du caractère à redéfinir
- le choix du sens du déplacement du curseur ou de l'affichage
- le clignotement des caractères ou du curseur
- ...
Brochage du composant
Niveau des différentes broches
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Description des différentes broches
1 à 8 : D7 à D0 : Bus de donnés bidirectionnel 3 états
(Haute impédance lorsque E=0)
9 : E : Entrée de validation (ENABLE) ;elle est active sur front
descendant. Il est important ici de tenir compte des 2 seuils durées
de commutation importantes en pratique: lorsque RS et R/
ont atteint un niveau stable, il doit se passer un intervalle de 140 ns
minimum avant que la ligne "E" ne passe au niveau haut. Cette ligne doit
ensuite, être maintenue à ce niveau pendant 450 ns au moins
et les données doivent rester tables sur le bus de données
jusqu'au début du flanc descendant de ce signal. Lorsque E=0 les
entrées du bus de l'afficheur sont à l'état haute
impédance.
10 : R/: Lecture ou écriture.(READ/WRITE)
Lorsque R/ est au niveau bas, l'afficheur est en mode "écriture", et lorsque R/ est au niveau haut, l'afficheur
est en mode "lecture".
11 : RS: Sélection du registre.(REGISTER SELECT)
Grâce à cette broche, l'afficheur est capable de faire
la différence entre une commande et une donnée. Un niveau
bas indique une commande et un niveau haut indique une donnée.
12 : VLC : Cette tension permet le réglage du contraste
de l'afficheur. C'est une tension négative et tournant autour de
-1,5 V.(selon l'angle de visualisation)
13 : VDD : + 5 V
14 : VSS : Masse.
b)fonctionnement
Tableau de codage des caractères
Les caractères et les signes spéciaux sont codés suivant le tableau ci-dessous.
Apparition des caractères sur l'afficheur
Apres avoir défini le sens de déplacement, les caractères
apparaissent au dessus du curseur (qu'il soit visualisé ou non).
|
gauche droite |
|
haut | $00 ............... $0F | $10 .......... ....$27 |
bas | $40 ................$4F | $50 .......... ....$67 |
L'adresse 00 correspond à la ligne du haut à gauche, 0F à droite.
L'adresse 40 correspond à la ligne du bas à gauche, 4F à droite.
La zone invisible correspond à la mémoire de l'afficheur.(48 caractères)
Lorsqu'un caractère est inscrit à l'adresse $27, le caractère
suivant apparaît à la ligne suivante.
Principe de fonctionnement
Le principe
de fonctionnement est simple, pour visualiser un caractère, il suffit
de le positionner sur le bus de donnée (codé en ASCII), de
mettre RS au niveau haut (caractère), R/
au niveau bas (écriture), et de provoquer un front descendant sur
l'entrée de validation de l'afficheur (E).
ATTENTION: Après chaque action sur l'afficheur, il
faut vérifier que celui-ci est en mesure de traiter l'information
suivante. Pour cela il faut aller lire l'adresse de la position du curseur
(RS=0, R/=1) et tester l'indicateur
flag "Busy" (BF) (voir tableau ci-dessous). Lorsque BF=1 l'affichage est
en cours et lorsque BF=0, l'affichage est terminé.
Si l'on tente d'écrire des données ou d'envoyer une
commande à l'afficheur pendant que ce dernier est en cours de traitement
des données ou d'une commande précédantes, le système
peut se planter, l'affichage s'affoler et les deux circuits intégrés
voir leur température augmenter brutalement!
Avant toute cette procédure d'écriture, il faut tout d'abord
initialiser l'afficheur de façon à définir son mode
de fonctionnement (dialogue en 4 ou 8 bits, sens de déplacement,
visualisation du curseur, ...).Cette initialisation s'effectue en lui adressant
des commandes (voir tableau ci-dessous), c'est à dire en positionnant
RS à 0.
Tableau des différentes commandes de l'afficheur
|
RS |
R/W |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
DESCRIPTIF |
|
EFFACER L'AFFICHAGE
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0
|
1 |
Efface l'ensemble de la mémoire de données sans toucher au générateur de caractère. Met le curseur en position Home, à l'adresse 00. | |
CURSEUR EN POSITION HOME
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
* |
Met le curseur en position Home. Si l'affichage à été décalé, il est remis à sa position d'origine: l'adresse 00 se trouve à nouveau en haut à gauche. | |
MANIERE DE VISUALISER LES CARACTERES |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
ID |
S |
Détermine le sens de déplacement du curseur après apparition d'un caractère (ID) et le déplacement collectif d'une position de l'ensemble de l'affichage (S). | |
MARCHE/ARRET DE L'AFFICHAGE DU CURSEUR |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
D |
C |
B |
Met l'affichage en ou hors fonction (D). Met le curseur en ou hors fonction (C). Fait clignoter le caractère situé au-dessus du curseur (B), clignotement se traduisant par une alternance du caractère et du caractère FF (rectangle noir) | |
DECALAGE
|
0 |
0 |
0 |
0 |
0 |
1 |
S/C |
R/L |
* |
* |
Déplace le curseur ou l'ensemble de l'affichage sans modifier le contenu de la mémoire. | |
FONCTION
|
0 |
0 |
0 |
0 |
1 |
DL |
N |
F |
* |
* |
Indique la largeur du bus de données. Indique s'il ne faut utiliser que la ligne du haut ou que celle du bas. (F) : matrice | |
ADRESSE DU GENERATEUR DE CARACTERES |
0 |
0 |
0 |
1 |
Caractère |
Rangée |
Définit l'adresse de la mémoire du générateur de caractères. Les données suivantes correspondent à la matrice du caractère concerné. | |||||
|
0 |
0 |
1 |
Adresse |
Définit l'adresse de la mémoire de données. Les données suivantes correspondent au caractère ASCII à visualiser. | |||||||
INDICATEUR BUSY LECTURE D'ADRESSE |
0 |
1 |
BF |
Adresse |
Lit l'indicateur Busy (BF) pour vérifier que l'afficheur et en mesure de traiter la commande suivante. Lit l'adresse de la position du curseur. | |||||||
ECRITURE DE DONNEES
|
1 |
0 |
Données |
Ecrit des données respectivement dans la mémoire de données ou le générateur de caractères. | ||||||||
DONNEES
|
1 |
1 |
Données |
Lit les données respectivement de la mémoire de données ou le générateur de caractères. |
Description des différentes commandes.
|
0
|
1 |
ID
|
Déplacement vers la gauche |
Déplacement vers la droite |
S
|
L'affichage ne bouge pas |
L'affichage est décalé |
C
|
Absence du curseur |
Visualisation du curseur |
B
|
Absence de clignotement du caractère |
Clignotement du caractère |
S/C
|
Déplacement du curseur |
Déplacement de l'affichage |
R/L
|
Décalage vers la gauche |
Décalage vers la droite |
DL
|
4 bits |
8 bits |
N
|
Ligne du haut |
2 lignes validées |
Le bit noté F permet de définir la matrice des caractères
suivant le tableau ci dessous.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Application pratique
Après la mise sous tension de l'afficheur, la ligne supérieur devrait être totalement sombre, celle du bas complètement claire. Si tel n'était pas le cas, il faudra augmenter (négativement) la valeur de la tension VLC. Il est temps maintenant d'envoyer les premières commandes d'initialisation.
La première commande à envoyer est la commande permettant de définir le mode de dialogue avec l'afficheur (DL), et le nombre de lignes sélectionnées (N). Pour cela, on met RS et R/ au niveau bas et on positionne sur le bus de données le code correspondant au choix de l'utilisateur (cette commande efface la ligne supérieure). Après un front descendant de l'entrée E, l'information sera prise en compte. A partir de maintenant, l'ordre des commandes n'a plus d'importance.
Envoyons par exemple la commande $01 (effacement de l'afficheur), puis la commande $0E, soit D=1, C=1, B=0, pour mettre le curseur en fonction.
Ensuite, il faut définir le sens de déplacement du curseur, pour cela, envoyons la commande $06, soit ID=1 et S=0.
Ceci étant fait, on peut maintenant commencer à envoyer
les premiers caractères à afficher. Il faut faire passer
la ligne RS au niveau haut et envoyer sur le bus de données les
codes des caractères à afficher. Après chaque front
descendant de l'entrée E, le caractère sera affiché
au dessus de la position du curseur.
ATTENTION: Avant toute procédure d'écriture, il est
impératif de tester l'indicateur Busy. Pour cela il faut aller lire
l'adresse de la position du curseur en mettant RS au niveau bas, R/
au niveau haut, et effectuer un ET logique avec la valeur $80 afin de
permettre le test du bit BF de l'indicateur Busy. Lorsque BF=0, il est
possible d'envoyer le caractère suivant à afficher. (Cette
lecture doit avoir lieu lorsque la ligne E se trouve au niveau haut)
De nombreuses animations peuvent être effectuées sur l'afficheur.
On peut déplacer le curseur en positionnant sur le bus de données
l'adresse souhaitée. Un défilement des caractères
est même possible, il suffit pour cela d'envoyer la commande $07
(ID=1, S=1) sans oublier de positionner RS à 0. Mais il faut faire
attention car un décalage de l'affichage décale également
les adresses de l'afficheur de sorte à ce que l'extrême gauche
de la ligne supérieur ne soit plus adressable à l'adresse
00. La commande retour Home permet de repositionner les adresses de l'affichage.
Exemple d'interface de connexion
Menu Général URL: http://matthieu.benoit.free.fr/affi-lcd.htm
ETUDE DE LA PARTIE LOGICIEL
1. Présentation
Le but de ma programmation à le même rôle qu'un distributeur ou d'une cabine téléphonique pour la partie afficheur.
Dans un premier temps, j'ai réalisé des essais sur le 68HC11 pour comprendre le fonctionnement de l'afficheur LCD.
De plus, j'ai réalisé une prise de ligne, qui permet lors de son fonctionnement, la tonalité nécessaire pour appeler un correspondant.
Ceci est réalisé par le lecteur de carte
à puce, auquel son intégré des informations nécessaire
pour le déclenchement de la prise de ligne.
PROGRAMMATION SUR 68HC11
Pour la réalisation du programme de l'afficheur le PORT B et le PORT C sont nécessaire.
Pour cela, j'ai divisé le programme en 2 parties car l'afficheur utilise des commandes et des données pour sa programmation.
Alors, pour les commandes de l'afficheur qui se compose du RS, E, R/W, j'utilise le PORT B ainsi que pour la mise à "1" du PORT B pour la prise de ligne nécessaire pour la commutation du relais.
Ainsi, pour les données de l'afficheur, qui correspondent aux
déplacement de l'affichage, positionnement du curseur, soit la ligne
du haut et du bas, déplacement de l'affichage, l'utilisation du
PORT C est nécessaire, car il est bidirectionnelle.
2) PROGRAMMATION DE L'AFFICHEUR
Pour la programmation de l'afficheur, dans un premier temps, il faut pour le démarrage de l'affichage, l'initialisation de celui-ci.
L'initialisation comprend plusieurs données nécessaire au bon fonctionnement de l'afficheur.
voici un résumé du tableau correspond au différente
fonction de commandes de l'afficheur .
2)1) TABLEAU
2.2. EXPLICATIONS
2.2.1 Principe d'utilisation des ports
Le port B : les commandes
Le port C : les données
Les données correspondent à l'initialisation comme :
- effacement de l'afficheur
- déplacement du curseur
- positionnement de celui-ci
exemple : pour la commandes
LDAA #%00000001
STAA PORTB
Permet la validation des instructions E=1
exemple : pour les données
LDAA #%00001110
DCB
STAA PORTC
D'ou voici une instruction qui permet à l'afficheur d'être allumée (D=1) avec la présence du curseur (C=1) et sans faire clignoter le caractère (B=0).
Mais pour valider toutes les instructions pour permettre l'initialisation de l'afficheur, il faut au départ valider les instructions en mettant le PB0 à " 1 " correspondant au E.
LDAA #%00000001
STAA PORTB
3) Le BUSY
Le BUSY est l'indicateur nécessaire pour permettre de savoir si l'afficheur à exécuté la commandes que l'on a donnée, d'une c'est une vérification, mais surtout si il est prêt à exécuter une autre commandes pour la poursuite du programme.
Car si l'on tente d'écrire d'envoyer des commandes à l'affichage
pendant que ce dernier est en cours de traitement de donnée ou d'une
commande précédente, le système peut se planter, l'affichage
s'affole et les 2 circuits intégrées voient leur température
augmenter.
4) La validation
La fonction VALID, permet la validation des données nécessaire
pour les différentes fonctions de l'afficheur, pour cela on met
à " 1 " pour la validation des commandes.
3. Programmation de l'afficheur
3.1. Présentation
Voici, des exemples réalisés sur le 68HC11 pour la compréhension du fonctionnement de l'afficheur.
Dans un premier temps, l'initialisation de celui-ci:
3.2. Organigramme de l'afficheur
3.3. Fonctionnement
Le début de l'initialisation se traduit par le positionnement.
LDAB #%00111000
STAB PORTC
Cette fonction permet de dire que l'on choisit un largeur de bus 8 bis avec la ligne du haut et du bas.
LDAB #%00000001
STAB PORTC
Permet de mettre l'afficheur en position home, d'ou le placement du curseur en haut à gauche.
LDAB #%00001100
STAB PORTC
Permet l'allumage de l'afficheur, sous la présence du curseur, ainsi que l'absence du clignotement de caractère.
LDAB #%00000110
STAB PORTC
Détermine le sens du déplacement l'afficheur, sans bouger l'affichage.
A chaque étape, on est obligé de faire une validation de chaque commandes nécessaire pur avoir un bon fonctionnement.
Celui-ci se traduit par le ENABLE qui se trouve sur le PORT B : PBO=E
LDAB #%00000001
STAB PORTB
*Le BUSY
LDAB #%00000011
STAB PORTB
Permet de lire la mémoire de données.
Le programme qui permet d'afficher le message.Il se divise en 3 parties.
LDAA #%00000101
STAA PORTB
Permet décrire les données respectivement dans la mémoire.
CMPB #$25
BEQ DETECT
Permet lors de la présence du % de passer à la ligne du bas.
CMPB #$25
BEQ STOP
Permet de dire la fin du message.
LDAB #$11000000
STAB PORTC
C'est la valeur 41 qui permet au curseur de passer à la ligne du
bas.
Menu Général URL: http://matthieu.benoit.free.fr/affi-lcd.htm
email: matthieu.benoit@free.frm-à-j: le 21 July -1999