Page personnelle de Rémy LUCAS |
Accueil | Electronique | Visual Basic | Freewares | Tests/Mods | Travaux | Usinage | Menuiserie |
Sommaire | Montages à réaliser | Infos pratiques | Logiciels en ligne |
Sommaire | Câblage | Circuits imprimés | Les EPROMS | Afficheurs LCD | Où acheter ? |
Les afficheurs LCDBrochage Un petit montage à réaliser Utilisation IntroductionLorsqu’un montage doit communiquer avec un utilisateur humain, on utilise habituellement des interrupteurs et des boutons poussoirs avec des diodes électroluminescentes. Cette interface utilisateur est très rudimentaire mais suffit dans la plupart des cas. Même si les D.E.L. peuvent êtres regroupées pour former des afficheurs 7 segments, on ne peut guère faire mieux qu’afficher quelques chiffres, et ce avec une certaine complication du montage (et donc augmentation du coût !).Mais avec l’avènement des micro contrôleurs, il devient possible de réaliser des montages informatisés avec une véritable gestion de l’information et des protocoles pour la communication de données. Il devient alors possible d’utiliser pour l’interface utilisateur des périphériques "évolués" comme des claviers matriciels ou encore des afficheurs à cristaux liquides (LCD). C’est d’autant plus vrai que le prix de ces composants a considérablement baissé au cours de ces dernières années, en même temps que leur prise en main à été rendue plus aisée. Ainsi pour un coût total de 200 Francs on peut voir des montages comportant micro contrôleur, clavier et afficheur LCD. Dans cette page je vais donc vous montrer comment utiliser les afficheurs LCD 2 * 16 caractères. Ce modèle d’afficheur est le plus répandu et est vendu entre 50 et 90 Francs. Je vous expliquerais les protocoles en détails, puis je décrirais un petit montage qui permet de commander l’afficheur LCD avec le port parallèle d’un compatible PC et un banal compilateur C++ ou QBasic. Il en suivra plusieurs exemples qui vous permettront d’expérimenter toutes les possibilités d’un tel afficheur. Vous aurez donc toutes les clefs en main pour mettre des afficheurs dans vos montages, le reste n’étant plus qu’une question de programmation selon le micro contrôleur que vous utilisez. BrochageCi-dessous vous pouvez voir le brochage d’un afficheur LCD. Selon le fabricant, un afficheur ne peut comporter que 14 broches, ce qui n’est absolument pas un problème puisque les broches 15 et 16 sont inutiles (N.C.)Maintenant faisons une description rapide de la fonction de chaque broche :
En observant le brochage de l’afficheur, on constate qu’il faut un minimum de 6 sorties pour le commander. En effet, si on utilise l’adressage sur 4 bits et que l’on se prive de la lecture dans l’afficheur (ce n’est pas nécessaire, donc on relie R/W à la masse), il nous faut commander les six broches EN, RS, D4, D5, D6, et D7. Ce mode 4 bits est bien pratique quand on utilise un petit micro contrôleur où le nombre d’entrées/sorties est très limité. En contre partie, le mode 4 bit complique un petit peu le protocole de communication (logiciel) puisque qu’il faut passer la donnée 8 bits en deux fois (4 + 4 = 8 !). Ce passage s’effectue comme suit : D7 = Bit Donnée 7 D6 = Bit Donnée 6 D5 = Bit Donnée 5 D4 = Bit Donnée 4 puis : D7 = Bit Donnée 3 D6 = Bit Donnée 2 D5 = Bit Donnée 1 D4 = Bit Donnée 0 Notez qu’en mode 4 bits, les broches D0, D1, D2, D3 doivent rester « en l’air » (non connectées). A l’inverse, si on utilise toutes les broches de l’afficheur il faut 11 sorties pour le commander. Mais cela n’apporte rien de plus; en mode 4 bits toutes les fonctionnalités sont disponibles. Un petit montage à réaliserLes exemples étant toujours plus parlants que des pages d’explications, nous allons passer à la pratique. Aussi je vous propose de réaliser un petit montage qui va relier l’afficheur LCD au port parallèle d’un P.C. Si vous avez peur d’endommager votre P.C., utilisez un vieux P.C. (un 286 suffit) ou bien servez-vous du bornier de mon interface II ! C’est d’ailleurs ce que j’ai fait pour les tests, avant de réaliser un petit boîtier où l’afficheur est directement connecté au port. Voici donc le petit montage à réaliser : Pour relier ce montage au port parallèle, vous pouvez utilisez un câble muni d’un connecteur DB25 qui se branchera directement derrière le P.C. ou bien utiliser une embase Centronics; votre montage se connectera au P.C. avec un banal câble pour imprimante. Voici le brochage du connecteur DB25 : Et celui du connecteur Centronics : Les numéros des broches étant sérigraphiés sur ces connecteurs, aucune confusion n’est possible. Voici quelques photos du montage reliant un afficheur LCD 2*16 au port parallèle : On voit la fiche centronics, le commutateur 4/8 bits en blanc, le bouton marche/arrêt en rouge, et en noir un bouton reset qui coupe momentanément l'alimentation de l'afficheur. L'afficheur est fixé sur une plaquette qui recoit également le potentiométre pour le réglage du contraste. Cette plaquette s'enfiche dans un connecteur encartable soudé sur l'autre plaquette. Sur cette vue plongeante on remarque qu'une l'alimentation est intégrée au montage. Il suffit de raccorder sur les deux douilles bananes la sortie d'un bloc secteur ou le secondaire d'un transformateur. Ne faites pas la même bétise que moi ! L'afficheur est à l'envers, il faut retourner le boîtier pour pouvoir le lire ;-) Remarque concernant l’alimentation : Vous pouvez utiliser une pile plate de 4,5 V ou bien le montage classique avec un 7805. Vu la faible consommation de l’afficheur, le 7805 n’aura pas besoin de dissipateur. Attention, il ne faut surtout pas alimenter l’afficheur en inverse (inversion de GND et +5V), il serai instantanément détruit :-( UtilisationMaintenant je vais vous expliquer le protocole à respecter pour écrire dans l’afficheur. Avant toute chose, nous ne verrons que les opérations d'écriture dans l'afficheur. Il est en effet possible de lire des données stockées dans l'afficheur, mais cela n'a pas de grand intérêt, et ce n'est absolument pas indispensable. Donc la broche R/W sera reliée à la masse de l'alimentation (0V). On distingue deux types d'envoi de signaux vers l'afficheur : les instructions, et les données. Pour demander à l'afficheur d'exécuter une instruction, la broche RS est mise à la masse et les broches D7 ... D0 définissent l'instruction à exécuter. Pour envoyer des données, la broche RS est mise à 1 (+5V), et on écrit tout simplement la donnée (qui est un octet) sur les broches D7 ... D0. La broche EN sert à valider l'instruction ou la donnée. En fait voilà comment se déroule l'exécution d'une instruction : - EN étant à 0, on présente sur les broches D7 ... D0 les niveaux correspondant à l'instruction à exécuter, RS est mis à 0 - EN est alors mis à 1 -> l'instruction est alors exécutée - EN est remis à 0 L'écriture d'une donnée se déroule de manière similaire : - EN étant à 0, on présente sur les broches D7 ... D0 les niveaux correspondant à la donnée à écrire, RS est mis à 1 - EN est alors mis à 1 -> la donnée est écrite - EN est remis à 0 Dans le tableau qui suit vous pouvez voir les différentes instructions possibles et les niveaux correspondants requis sur les broches D7 ... D0. RS est bien sûr mis à 0. Dans le tableau, "1" signifie +5V, "0" signifie 0V, et "X" signifie indifférent; une autre lettre signifie que le bit concerné est un paramètre de l'instruction.
Quelques explications : La DD RAM est la mémoire qui stocke le texte affiché. Si une instruction d'adressage de la DD RAM est exécutée, la prochaine instruction d'écriture de données (RS=1, D7...D0 = donnée) écrira les données vers cette DD RAM. Le pointeur (c'est à dire l'adresse courante) de la DD RAM est alors incrémenté (+1). A chaque caractère de l'afficheur corresponds une zone de la DD RAM repérée par un numéro, appelé adresse. Voici donc les adresses des 32 caractères d'un afficheur de deux lignes de 16 caractères :
Les nombres en rouge sont les adresses en notation hexadécimale et ceux en bleu ces mêmes adresses en notation décimale. La CG RAM est une mémoire qui permet à l'utilisateur de définir ses propre caractères. Si une instruction d'adressage de la CG RAM est exécutée, la prochaine instruction d'écriture de données (RS=1, D7...D0 = donnée) écrira les données vers cette CG RAM. Le pointeur (c'est à dire l'adresse courante) de la CG RAM est incrémenté (+1). La CG RAM permet de définir huits caractères personnalisés. Un caractère mesure 8 pixels de haut et 5 de large. Chaque caractére est codé sur huits octets, mais seuls les bits D4, D3, D2, D1 et D0 de chaque octet sont utilisés, comme un caractère ne fait que 5 pixels de large. Pour définir un caractère, on execute l'instruction Set CG RAM Adress pour préciser l'adresse du premier octet du caractère, puis on écrits ensuite les huit octets définissant le caractère. Voici les adresses CG RAM des premiers octets de chacun des huit caractères personnalisés possibles :
Les nombres en rouge sont les adresses en notation hexadécimale et ceux en bleu ces mêmes adresses en notation décimale. C'est bien de créer des caractères personnalisés, mais encore faut-il les afficher ! C'est très simple, le caractère perso n°1 corresponds au code ascii 0, le 2ème au code ascii 1, le 3ème au code ascii 2, et ainsi de suite. En ce qui concerne l'initialisation de l'afficheur, il faut, après la mise sous tension, exécuter dans l'ordre les instructions : - Function Set, - Display Control, - Entry Mode Set. Je ne rentrerais pas plus dans les détails, nous allons tout de suite passer à la pratique; avec quelques lignes de codes vous verrez alors que la commande de l'afficheur est moins difficile qu'il n'y paraît. Je vous propose donc quelque deux exemples d'utilsation en QBasic tout simples pour comprendre comment ça marche : Télécharger la version 8 bits (2,06 ko) Télécharger la version 4 bits (2,24 ko) Ces deux codes sources contiennent de nombreux commentaires. Notez que chaque exemple affiche la même chose sur l'afficheur. Comme cela, vous pourrez comparer les différentes méthodes. Je vous conseille de commencer par regarder une version 8 bits pour bien comprendre le protocole, puis regardez alors la version 4 bits, qui sera celle retenue dans la plupart des cas car n'utilisant que 6 broches. Remarque : QBasic est fourni gratuitement avec MS-DOS et Windows. Pour éxecuter ce logiciel, tapez la commande MS-DOS "qbasic". Si vous ne l'avez pas, cherchez dans le répertoire F:/tools/OLDMSDOS du CD-ROM de Windows. Après ces petits exemples simples, je vous propose un programme beaucoup plus élaboré pour commander l'afficheur connecté sur le port parallèle. Ce programme est un code source c++, contenant tout un panel de procédures qui rendent l'écriture sur l'afficheur aussi facile que l'écriture de texte sur l'écran avec printf ! Des explications figurent à la fin du fichier source sous forme de commentaires. Ce source c++ est un véritable programme cadre qui vous permettra de commencer toutes vos applications utilisant l'afficheur LCD connecté sur le port parallèle. Cliquez ici pour télécharger ce programme cadre pour afficheur LCD. Le programme cadre à été écrit avec le compilateur BORLAND Turbo C++ 1.01 U.S. qui est téléchargeable gratuitement sur le site www.borland.fr/download/compilateurs/ (tout en bas de la page). Si un tel afficheur se destine à être utilisé dans un montage avec un micro contrôleur, vous pouvez très bien vous en servir comme périphérique supplémentaire pour votre P.C. Ce sera notamment utile si vous envisagez de fabriquer un lecteur MP3 embarqué pour voiture avec une carte mère de Pentium + carte son. Le moniteur ne pouvant pas être embarqué, l’afficheur L.C.D. le remplacera avantageusement. |
(c) Remy LUCAS - 1999-2010 |