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'éclairer 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

N DE BROCHE

SIGNAL

NIVEAU

14

VSS

Masse

13

VDD

+ 5 V

12

VLC

2,5 V

11

RS

0 = Instruction 1 = caractère.

10

R/

0 = écriture 1 = lecture

9

E

Front descendant

8

D0

Logique positive

7

D1

Logique positive

6

D2

Logique positive

5

D3

Logique positive

4

D4

Logique positive

3

D5

Logique positive

2

D6

Logique positive

1

D7

Logique positive

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).

Adresse

gauche droite

invisible

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édante, 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

TYPE DE COMMANDE

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é.

ADRESSE DE LA MEMOIRE DE DONNEES

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.

LECTURE DE

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.

N

F

Nombre DE LIGNE

MATRICE

0

0

1

5 * 7

0

1

1

5 * 10

1

*

2

5 * 7

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

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

1) UTILISATION DES PORT POUR LA PROGRAMMATION DE LA AFFICHEUR ET DE LA PRISE DE LIGNE

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.

Programme de démonstration pour le test d'un afficheur LCD avec une carte à MC68HC811E2. Le programme s'appuie sur le hardware de la carte "Two-Line Mini-Terminal" de Roger Schaefer disponible à l'adresse : http://www.rasmicro.com/projects.htm

http://68hc11.free.fr/downloads/lcdinit.txt Gestion d'un afficheur LCD en mode 4 bits avec un 68HC11F1.

http://www.lc-design.de/English/english.htm LC Design is your partner for LCD applications ; LC Design is EPSON
Technology Partner.

http://prof.maquaire.free.fr/ressources/publications/np%20caracteres%20speciaux/creation%20de%20caracteres%20speciaux%20v1.3%20-%20version%20web.pdf Generation de caractères spéciaux


éditeurs pour LCD graphiques:

The program called fastLCD at http://www.fastavr.com/Downloads_act.htm may be useful. Also for ks0108 or hd61202 only http://www.geocities.com/dinceraydin/lcd/fin.htm will be useful. There you'll find applications to convert bitmap images into a format to match the layout of the LCD. Also you can use the fonts from the application called DjGfXLCDSIM in your application.

If you use MSP430 : in the "IAR Embedded Workbench for MSP430 Kickstart" , you will find a LCD Editor.

the software called Iconeditor can be used also.

Retour à la page Afficheurs LCD

Retour la page d'accueil

email: matthieu.benoit@free.fr

le 15 décembre, 2014