Groupe PIC/Librairie/LCD

De Wiki_du_Réseau_des_Electroniciens_du_CNRS
Version datée du 11 novembre 2018 à 22:48 par William.benharbone (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigationAller à la recherche


Description

Les routines de la bibliothèque de fonctions LCD permettent:

  • l'initialisation de l’écran LCD en mode 4 bits de données
  • l'envoie de commandes au contrôleur de l’écran
  • l'affichage de chaines de caractères
  • le contrôle du rétro-éclairage (ne pas oublier la résistance de limitation du courant dans la LED du Backlight)


Utilisation de la libraire LCD

Le dossier _Librairie contient les fichiers sources des drivers de composants, afin d'être utilisés dans les différents projets. Il est important de ne pas déplacer ou dupliquer ces sources afin de n'avoir toujours qu'un seul endroit où modifier le code.

Dépendances

Pour utiliser la libraire dans un projet vous devez ajouter les dépendances suivantes :

Fonctions de la bibliothèque LCD a inclure dans le projet :
. LCD/LCD.h
. LCD/LCD.c
+
Fonctions de la bibliothèque Delays_API a inclure dans le projet :
. Delays_API/Delays_v01r00.h
. Delays_API/Delays_v01r00.c

En effet la libraire LCD a également des dépendances pour pouvoir générer des tempos logiciels, voir Delays_v01r00.h pour adapter les tempos en fonction de la vitesse de fonctionnement du MCU :

Delay(Value_for_50us);
Delay(Value_for_100us);
Delay(Value_for_1640us);
Delay(Value_for_5ms);
Delay(Value_for_25ms); ou a defaut 5x Delay(Value_for_5ms);


Application specific definitions

Sans spécifications particulières de l'utilisateur, la configuration par défaut de la librairie LCD, force l'utilisation des définitions :

#define USE_LCD_2x16
#define USE_LCD_ON_PORTE

L'utilisateur peut rajouter dans le fichier "HardwareProfile.h" de son projet les définitions de son choix ci-dessous afin de modifier la configuration de la librairie LCD lors de la compilation du projet.

Type d’écran LCD

#define USE_LCD_2x20
#define USE_LCD_4x16
#define USE_LCD_4x20

Contrôle du rétro-éclairage de l’écran LCD

#define USE_LCD_PIN_BKL     // déclare l'utilisation d'une broche du MCU pour le contrôle du rétro-éclairage (attention au courant, passez par un transistor pour activer ou désactiver la commande du Backlight

Utilisation de la broche RW

#define USE_LCD_PIN_RW      // déclare l'utilisation d'une broche du MCU pour le contrôle du mode Lecture/Ecriture de l'écran

Déclaration du PORT du MCU pour la communication avec l’écran LCD

#define USE_LCD_ON_PORTD
#define USE_LCD_EXPLORER_16        // utilisation de l’écran LCD de la carte Explorer 16
#define USE_LCD_PINS_USER_DEFINED  // définition par l'utilisateur dans le fichier "HardwareProfile.h" des pins de contrôle de l'écran

Si vous utilisez votre propre définition "USE_LCD_PINS_USER_DEFINED", vous devez ajoutez les définitions de l'ensemble des broches pour communiquer avec l’écran LCD. Voici un exemple minimaliste :

#define LCD_PIN_DB7         LATDbits.LATD3      // pin for DB7
#define LCD_PIN_DB6         LATDbits.LATD2      // pin for DB6
#define LCD_PIN_DB5         LATDbits.LATD1      // pin for DB5
#define LCD_PIN_DB4         LATDbits.LATD0      // pin for DB4
#define LCD_PIN_E           LATDbits.LATD4      // pin for E
#define LCD_PIN_RS          LATDbits.LATD5      // pin for RS
et
#define TRIS_LCD_PIN_DB7    TRISDbits.TRISD3    // config MCU pin direction for DB7
#define TRIS_LCD_PIN_DB6    TRISDbits.TRISD2    // config MCU pin direction for DB6
#define TRIS_LCD_PIN_DB5    TRISDbits.TRISD1    // config MCU pin direction for DB5
#define TRIS_LCD_PIN_DB4    TRISDbits.TRISD0    // config MCU pin direction for DB4
#define TRIS_LCD_PIN_E      TRISDbits.TRISD4    // config MCU pin direction for E
#define TRIS_LCD_PIN_RS     TRISDbits.TRISD5    // config MCU pin direction for RS


Affectation des broches pour la commande d'un écran LCD en mode 4 bits

Schématique d'une carte d'adaptation d'un écran vers un MCU. Le potentiomètre permettant d'ajuster le contraste sur Ao, peux être simplement remplacer par 2 résistances formant un pont diviseur, les valeurs standards sont une résistance de 560 Ohms reliée à la masse et 10 kOhms reliée au 5 V.

Carte LCD de la formation "Initiation PIC", voir la page Web de Arnauld Biganzoli

Connexion de l'afficheur LCD sur le PORTE (valeur par défaut de la lib LCD) du MCU via un connecteur HE-10 avec la convention de câblage MikroElektronika

Ecran LCD compatible HD44780 en mode de communication 4 bits:
               _____
RE0= BKL_PIN...     \        ________________
RE1= RW_PIN ...      \______/   CTRL_PORT    \
RE2= RS_PIN ...      /      \________________/
RE3= E_PIN  ..._____/
               _____
RE4= DB4    ...     \        ________________
RE5= DB5    ...      \______/   DATA_PORT    \
RE6= DB6    ...      /      \________________/
RE7= DB7    ..._____/


Exemple de code

Démo ..\Groupe_PIC\_Demo\Afficheur_LCD_Alphanumerique\Firmware_v04

Dans le fichier HardwareProfile.h

/*******************************************************************************
* [en] Hardware Config for LCD library
* [fr] Choisissez ici la configuration matérielle de la librairie LCD
*******************************************************************************/
    #define USE_LCD_4x20        // définition du type d'écran
    #define USE_LCD_PIN_BKL     // utilisation d'une broche du MCU pour le contrôle du rétro-éclairage
    #define USE_LCD_PIN_RW      // utilisation d'une broche du MCU pour le contrôle du mode Write de l'écran (si pin RW non raccordé à GND)


Dans le fichier _main_32-bits_LCD_v04r00.c

/** I N C L U D E S ***********************************************************/
#include <plib.h>                   // Peripheral Library
#include "LCD/LCD.h"
#include "Delays_API/Delays_v01r00.h"

// Initialisation des fusibles de configuration et définition des entrées/sorties de la carte électronique utilisée :
#include "HardwareProfile.h"

// Numéro de version et de révision du firmware :
#define VERSION_STRING      "v04r00"

...

/** Initialiser l'ecran LCD 4x20 */
    LCD_Init();             // initialisation de l'afficheur LCD

/** Affichage de l'écran principale, écrire une chaîne de caractère sur les différentes lignes */
    LCD_Write_Line(1, "  Formation  PIC32  ");
    LCD_Write_Line(2, "  Demo LCD " VERSION_STRING "   ");
    LCD_Write_Line(3, "  UART Config :     ");
    LCD_Write_Line(4, "  (BAUD) 9600 N 8 1 ");
    
    LCD_Curseur_Add(L1C1);
    LCD_Putc('>');          // affichage du caractère de sélection en L1C1

...


Formation aux microcontrôleurs PIC 32 bits
=== Le groupe PIC ===
Présentation du Groupe de Travail   >Premiers pas  >Document   >Tutoriel   >Librairie   >Demo   >Projet   >TODO