Gérer un afficheur LCD sur PIC18 avec MAESTRO

vendredi 1er janvier 2010
par  Christian













Interfacer un afficheur LCD avec PIC18 sur PICDEM2+ (ou autre)

Procédure de mise en œuvre d’un afficheur LCD alphanumérique sur PIC18 avec le générateur de bibliothèque Microchip MAESTRO,.

1) A l’aide du data sheet de l’afficheur (ex : PC1602ARS de POWERTIP), repérer les fonctions des broches D7-D0, E, RS, RW de l’afficheur LCD

2) Réaliser un schéma présentant les connexions entre le PIC et l’afficheur.

3) Lancer Maestro

Selectionner « XLCD for C language » et « tirer » vers la fenêtre « Selected module »
Compléter les paramètres 

Interface mode : indiquer le nombre de bits de communication (4 ou 8)

N° of display lines : indiquer le nombre de lignes de l’afficheur

Font selection : en observant un caractère de l’afficheur, compter la taille d’un caractère 5x8 ou 5x10 pixels

Nibble selection : si le mode de communication est sur 4 bits, indiquer si les bits utiliser par le PIC sont les quatre bits de poids fort ou les quatre bits de poids faible.

Dans les quatre lignes suivantes indiquer le câblage entre le PIC et l’afficheur.

BLOCKING : le logiciel doit il attendre que l’afficheur soit prêt avant de transmettre ? répondre « OUI » , certains afficheurs possèdent une mémoire interne tampon qui leur permet d’enchainer plus rapidement les commandes.

Mode : l’afficheur peut signaler qu’il est prêt à recevoir une donnée par la lecture d’un de ses registre, ce mode ne fonctionne pas sur tout les afficheurs , répondre « delay »

Display : ON, cursor ON, Blink ON, activer ces options rendra l’affichage visible avec un curseur clignotant.

Entry mode cursor : « OUI » entraine une incrémentation automatique des adresses lors de l’écriture.

Entry mode display : si « OUI » l’affichage est décalé lors des entrées de caractères, répondre « NON »

 

Une fois les paramètres renseignés, indiquer sur la ligne du haut la fréquence de l’oscillateur du PIC puis cliquer la baguette magique et choisir le dossier du projet, cinq fichiers sont créés

Xlcd.h contient les définitions et prototypes de la bibliothèque

Xlcd.C , source de la bibliothèque

Xlcd.def ce fichier décrit entre autre les connexions entre le PIC et l’afficheur

XLCD.P18.ex.txt , fichier de test, on peut renommer ce fichier en XLCD.P18.ex.C pour tester la bibliothèque dans un projet MPLAB

XLCDc.readme.pdf , mode d’emploi et description de la bibliothèque

 

4) Mise en œuvre et utilisation

Créer dans le projet MPLAB un fichier tst_aff.c

 

#include <p18f4620.h> // dans le cas d’un PIC18F4620

#include "xlcd.h" // bibliothèque bas niveau pour LCD

#include <stdio.h> // bibliotheque standard , pour fprintf par exemple

 

// Recopier les lignes de tempo ci-dessous depuis le fichier XLCD.P18.ex.txt

void XLCDDelay15ms (void)

 int i ;

 for(i=0 ;i<10000 ;i++)

  Nop() ;

 return ;

void XLCDDelay4ms (void)

 int i ;

 for(i=0 ;i<2500 ;i++)

  Nop() ; 

 return ;

 

void XLCD_Delay500ns(void)

 Nop() ; Nop() ; Nop() ;

 

void XLCDDelay(void)

 

 int i ;

 for(i=0 ;i<1000 ;i++)

  Nop() ; 

 return ;

 

 

// user_putc redirige le caractère à sortir vers la fonction d’emission de caractère //de la bibliotheque xlcd

int _user_putc (char c)

// rechercher dans xlcd.h la fonction qui envoie un caractère vers l’afficheur et l’exécuter ici

 

void main (void)

char a=45 ;

ADCON1=0x07 ; // positionne tout le port A en numerique 

XLCDInit() ; //initialise LCD

  // curseur en haut à gauche

// Rechercher dans xlcd.h le « define »  qui positionne le curseur en haut à gauche (commande 0x80) et l’exécuter ici

 

fprintf(_H_USER,"Test XLCD") ;

 // curseur en bas à gauche

// Rechercher dans xlcd.h le « define »  qui positionne le curseur en bas à gauche (commande 0xC0) et l’exécuter ici

 

// Commenter et expliquer EN DETAIL la ligne ci dessous

fprintf(_H_USER,"dec :%d hex :%X",a,a) ;

while(1) ;

  

5) Utilisation de l’horloge interne du PIC

Pour activer l’horloge interne du PIC il faut ajouter au projet le fichier init_horloge_interne.c et exécuter juste après le début de main, init_horloge_interne() ;

L’horloge interne du PIC sera alors à 8MHz

 

6) Affichage des nombres réels

A l’aide de la documentation sur les fonctions « fprintf » et « ftoa » ainsi que la bibliothèque math.h ( c :\mcc18\h\math.h )

 

Déclarer le réel  float a=45.0 ;

On peut ensuite par exemple calculer et afficher a 2, a, log(a), sin (a°).

 


Documents joints

TP aff LCD et MAESTRO
TP aff LCD et MAESTRO
Mini_présentation des afficheurs LCD alphanumérique
Mini_présentation des afficheurs LCD alphanumérique
A joindre au projet pour utiliser l'horloge (...)
A joindre au projet pour utiliser l'horloge (...)
Application MAESTRO
Application MAESTRO
Modules pour MAESTRO
Modules pour MAESTRO
Doc de la bibliotheque XLCD MAESTRO
Doc de la bibliotheque XLCD MAESTRO
MAESTRO, mode d'emploi (Anglais)
MAESTRO, mode d'emploi (Anglais)
La fonction fprintf en C18
La fonction fprintf en C18
Description et schema structurel de la carte (...)
Description et schema structurel de la carte (...)
Data sheet Aff LCD PICDEM2+
Data sheet Aff LCD PICDEM2+