|
||||||||||||||||||||
COMMENT PILOTER UN LCD A CONTROLEUR HD44780
DATA : c’est le bus de données. Enfin dernier signal : Sur les chrono diagrammes suivants, le signal en haut indique un « 1 » logique et le bas indique un « 0 ». |
||||||||||||||||||||
![]() |
||||||||||||||||||||
respectez surtout cet ordre pour ne pas écrire n importe quoi au LCD ! « Tas » représente une tempo de temps d’établissement ( set up ) , laissant le temps aux données de se stabiliser. Une valeur de 500µS est correcte mais ne dois pas aller en dessous de 200nS. En pratique n’allez pas en dessous de 5µS car la longueur du câble perturbe cette impulsion. «Tah » est une tempo de maintient des données ( hold ) pour laisser au controleur le temps de lire les données convenablement. Pareil que Ts, 500µS est bon mais pas descendre en dessous de 60nS « Tp » tempo de pulse, très importante ! elle permet au controleur de « voir » votre demande de ce qu’il vienne lire les données que vous lui donnez. Cette durée de tempo ne doit pas descendre en dessous de 500nS. En dessous, il ne fais plus rien ! « Tcycle » est la tempo de période maximale du signal ENABLE a respecter. Si on descends en dessous de 1µS, le controleur perds les pédales ! donc soyez gentils avec lui ! de toute façon, cette valeur est basée sur Tas, Tah et Tp…. Autre chose très importante ! dans ce tableau se trouvent les durées des instructions du controleur HD44780 . Il est primordial d’en tenir compte dans le Tcycle !!! Il faut laisser le temps au controleur, après lui avoir demandé de faire quelque chose, d’attendre qu’il ait fini avant de lui donner autre chose a faire ! L’instruction la plus longue est le « RETURN HOME » avec 1.52mS ! Il faudra donc en tenir compte lors de l’utilisation de l’afficheur ! |
||||||||||||||||||||
![]() |
||||||||||||||||||||
![]() |
||||||||||||||||||||
Pour composer le code a envoyer, c'est simple ! Au dessus du tableau vous avez « 8 4 2 1 8 4 2 1 » correspondant de DB7 à DB0 qui sont en fait séparées par un trait vertical en deux « quartet » ( moitié d un octet ) Lorsque vous devez envoyer une instruction, additionnez les valeurs correpondants au bits a mette a « 1 » Par exemple on a pour l’instruction « set display on/off » : |
||||||||||||||||||||
![]() |
||||||||||||||||||||
ça c’est fixe ! | et ça c’est un choix ! | |||||||||||||||||||
on lit dans le tableau : « met le LCD en marche ou pas ( D ) met le curseur en marche ou pas ( C ) et fait clignotter le curseur ou pas ( B ). Ce qui veut dire que si je veux le LCD allumé alors je remplace le D par un « 1 » et si je le veux éteint alors je mets un « 0 » |
||||||||||||||||||||
![]() |
||||||||||||||||||||
maintenant on calcules sa valeur hexa décimale : 0 6 en hexa ! a vous de le convertir en décimal ! rappel : au delà de 9, en hexa on a A, B, C, D, E et F. voila en fait c’est hyper simple ! maintenant pour positionner le curseur : en fait chaque caractère affiché a l’écran a un numéro, une adresse selon ce tableau qui est valable que pour un LCD 2*16 caractères : |
||||||||||||||||||||
![]() |
||||||||||||||||||||
attention, ce sont des valeurs en hexa ! donc par exemple si je veux aller en deuxième ligne, deuxième position, il faut que je me mette a l’adresse 41 hex. Maintenant il faut dire au controleur que l’on veut s’y mettre ! Et rien de plus simple ! On utilise l’instruction « set Display Data Ram adress » ou ajuster l’adresse de la mémoire de donnée. |
||||||||||||||||||||
![]() |
||||||||||||||||||||
ou add est l’adresse code en binaire… or on veut se mettre sur l’adresse 41hex soit en 8 bits « X1000001 » on remplace donc ! le « X » indique que cette valeur doit suivre celle du tableau d’instructions et de toutes façon, on a pas un LCD de plus de 128 cases donc ce bit est inutile |
||||||||||||||||||||
![]() |
||||||||||||||||||||
on envoi un p’ti coup d’ENABLE et voila! Le controleur nous mets en 2e ligne 2e case ! simple ! Voila maintenant c est a vous de le faire ! Les pages suivantes contiennent la table ASCII de tous les caractères connus par le LCD ainsi que la méthode a suivre pour initialiser le controleur. Mais avant d’essayer, voici un exemple d’initialisation d’un LCD avec un microcontrôleur et en langage C : |
||||||||||||||||||||
Un petit conseil : Creez une fonction comme LCDcommand(char) et LCDdata(char) qui en fait ne demandent qu’un parametre pour acceder au LCD. Chaque fonction commandant le niveau de la broche RS. LCDcommand le mettant a 0 et LCDdata le mettant a 1. comme ça il est impossible de se planter et d’oublier de changer le niveau de la pin RS qui est l’erreur qui arrive le plus souvent alors faites y attention ! |
||||||||||||||||||||
#include <io8515.h> #include <macros.h> #include <stdio.h> // fonction generant une impulsion sur la ligne enable du lcd // fonction d initialisation du lcd { void lcdprint(char chaine[]) fonction qui imprime une chaine de caracteres { void send2lcd(char donnee,char command) } } /* PA0:d0lcd PB0:push1 PC0:brightness1 PD0:RS232 Rx */ { /* définition des entrées sorties */
DDRA = 0xFF; /* PORT A EN SORTIE */ PORTA = 0x00; /* ALL OFF */ lcdinit(); lcdprint("TEST DU LCD 2*20 car"); PORTD &= ~0x20;//register select PORTD |= 0x20;//register select }/*end of while*/ |
||||||||||||||||||||
INITIALISATION DU LCD
|
||||||||||||||||||||
![]() |
||||||||||||||||||||
TABLE ASCII DU CONTROLEUR
|
||||||||||||||||||||
![]() |
||||||||||||||||||||
Je mettrais sûrement a jour ce document pour expliquer comment créer ses propres caractères dans la table ASCII D’autres infos sont disponibles dans le datasheet du HD44780. Documentation disponible sur le site Internet Hitachi. |
||||||||||||||||||||
![]() |
|||
|
|||