http://micropic.free.fr
Contrôler un afficheur LCD par le port série d'un PC
Après toutes ces pages de cours , commençons par une application concrète :
Le contrôle d'un afficheur LCD par le port série d'un PC.

Matériel utilisé :
1 Afficheur LCD 2*16 à base de HDD44780
1 Pic 16F873 cadencé à 3,2768 MHz.

Ce montage permet de piloter l'afficheur LCD avec les commandes suivantes :
- envoi d'un caractère ASCII
- effaçage de l'écran
- positionnement du curseur sur le début de la première ligne
- positionnement du curseur sur le début de la deuxième ligne
- positionnement du curseur à une position précise

L'exemple fourni est en Delphi 2.0 , mais il est tout à fait possible de le piloter à partir de n'importe quel langage dans la mesure où on respecte les timing d'envoi sur le port série.
En effet , la réception des octets sur le Pic n'est pas bufférisée , donc il convient d'attendre quelques millisecondes entre chaque envoi afin de laisser le temps au Pic de traiter les informations reçues. ( typiquement 8ms entre chaque envoi d'octet , et 16 ms après l'envoi d'une commande d'effaçage d'écran ou de positionnement du curseur )

Le port série devra être réglé à 4800 bauds , 8 bits , pas de parité , 1 bit de stop.

Les octets de commandes sont :
- 00 : effaçage de l'écran.
- 01 : positionnement du curseur sur le début de la première ligne.
- 02 : positionnement du curseur sur le début de la deuxième ligne.

Pour positionner le curseur à un endroit précis de l'afficheur , il faut envoyer un octet compris entre $80 et $CF.

Colonne 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16
Ligne 1 $80 $81 $82 $83 $84 $85 $86 $87 $88 $89 $8A $8B $8C $8D $8E $8F
Ligne 2 $C0 $C1 $C2 $C3 $C4 $C5 $C6 $C7 $C8 $C9 $CA $CB $CC $CD $CE $CF

Nota : ne pas envoyer d'octets compris entre $90 et $BF ( le programme inclus dans le Pic ne les gère pas ).

Tous les autres octets seront donc affichés sur l'écran à la position du curseur.

exemples :
  • Effacer l'écran : envoyer $00 sur le port série.
  • Afficher un 'A' sur la troisème colonne de la deuxième ligne : envoyer $C2 , attendre 16 ms , envoyer $41

Regarder dans le fichier source en Delphi pour des exemples d'utilisation.
Ce petit logiciel permet d'afficher quelques animation de texte sur l'afficheur LCD:
  • Anim 1 : affichage normal d'un texte
  • Anim 2 : affichage caractère par caractère d'un texte
  • Anim 3 : affichage par défilement , 1 ligne après l'autre
  • Anim 4 : affichage par défilement , les 2 lignes ensembles
  • Anim 5 : affichage par défilement , les 2 lignes en sens inverse
  • Anim 6 : affichage d'une étoile qui zigzague sur l'afficheur
Voici les fichiers nécessaires à cette application :

Projet Delphi avec source :
affser.zip
Composant RS232 pour Delphi 2.0 :
comdrv32-2.zip
L'executable pour ceux qui voudraient tester sans Delphi :
AffSerprog.zip
Fichier asm à inclure dans le Pic :
Affser.asm

Le schéma de branchement :



Vous pouvez également regarder dans le source du programme ASM pour voir comment est géré l'USART ( port RS232 ) des Pics 16F87x.

Ce programme n'est pas parfait , il reste des améliorations à apporter :
- pas de buffer de réception des données
- affichage lent ( surtout dans l'Anim 4 )
- il reste des ports libres pour d'autres fonctions ( Leds , Buzzer , ... )
© 1999-2004 Philippe Brégea