Vous êtes sur la page 1sur 6

TP N8 : Interface LCD avec un PIC en C

A. Introduction :
Dans ce TP, nous allons voir comment interfacer un Module LCD 16 2 avec un microcontrleur
PIC 16F876A utilisant le Compilateur C CCS. Le Module LCD 16 2 est un module trs
couramment utilis dans des projets avec LCD. 16 2 signifie qu'il peut afficher deux lignes de 16
caractres. Cest un module trs simple et faible cot. Ses autres variantes telles que 16 1, 20 4
sont disponibles sur le march. Dans ces affichages, chaque caractre est affich l'aide de 5 x 5 x 8
ou 10 matrice de points. Ces crans LCD utilisent gnralement les contrleurs compatibles HD44780.

Diagramme de connections du LCD


Linterface entre un microcontrleur et l'cran LCD peut tre fait en mode 4 bits ou 8 bits. La
diffrence entre les deux modes est de savoir comment les donnes sont envoyes l'cran LCD. Pour
crire un caractre 8 bits vers le module LCD en mode 8-bit, les donnes ASCII sont envoyes par
l'intermdiaire des lignes de donnes DB0- DB7 avec validation par la ligne E.
Mais le mode 4 bits nutilise que 4 lignes de donnes. Dans ce mode, les donnes ASCII en 8 bits sont
divises en deux parties qui sont envoys de manire squentielle par l'intermdiaire des lignes de
donnes DB4 - DB7 (ou DB0 DB3) avec son propre chantillonnage de donnes avec la ligne d'E.
L'avantage de la communication 4 bits est de diminuer le nombre de broches qui sert d'interface avec
lcran LCD. La communication 4 bits est un peu plus longue que celle en 8 bits. La diffrence de
vitesse est minime, comme les crans LCD sont des dispositifs basse vitesse la diffrence de vitesse
JFA 2015

Page 1

TP8

entre ces deux modes nest pas significative. Noubliez pas que nos microcontrleurs travaillent dans
la gamme des MHz. Ainsi, la transmission de donnes en mode 4-bits est le plus couramment utilise.
Le language C CCS fournit dans le fichier de la bibliothque, "lcd.c" pour l'interface LCD HD44780
ayant des contrleurs conformes la communication en mode 4 bits. Il suffit d'inclure ce fichier dans
votre programme et de profiter de la librairie LCD CCS.

I.

LCD Connections

Pour le bon fonctionnement de la bibliothque LCD, vous devez dfinir les connexions utiliss pour
l'interface LCD dans le programme.

Enable E or EN
Register Select RS
Read / Write RW
Data 4 DB4 or D4
Data 5 DB5 or D5
Data 6 DB6 or D6
Data 7 DB7 or D7

Ceux-ci doivent tre dfinis avant d'inclure le fichier d'en-tte, il peut tre fait des deux faons
indiques ci-dessous :

1) PORT Access Method


Cette mthode ncessite toute l'interface 7 bits reli un mme port GPIO. Elle devrait tre dfinie
avant d'inclure le fichier d'en-tte, comme indiqu ci-dessous.
#define LCD_DATA_PORT getenv("SFR:PORTD")

Ceci dfinit que toute l'interface 7 bits est connecte au PORT D de microcontrleur PIC.

2) PIN Access Method


Dans cette mthode, vous pouvez raccorder ces 7 bits avec les broches GPIO et il devrait tre dfini
avant d'inclure le fichier d'en-tte, comme indiqu ci-dessous.
//LCD Module Connections
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2
#define LCD_ENABLE_PIN PIN_D3
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
//End LCD Module Connections

II.

Fonctions Importantes
3) lcd_init()

Cette fonction doit tre appele avant toute autre fonction LCD. Il initialise le module LCD avec les
connexions dfinies ci-dessus.

4) lcd_putc(c)
Cette fonction affiche c sur la prochaine position du curseur de l'cran LCD. Vous pouvez imprimer
des chanes de caractres et des caractres en utilisant cette fonction. Vous pouvez galement utiliser
le caractre antislash pour envoyer diffrentes commandes cran LCD.

JFA 2015

\\a Pour positionner le curseur en haut gauche


\\f Pour effacer laffichage et remettre le curseur en haut gauche
\\n Pour aller au dbut de la ligne suivante
Page 2

TP8

\\b pour un retour arrire dune position

5) lcd_gotoxy(x, y)
Cette fonction peut tre utilise pour dfinir la position du curseur de l'cran LCD, la position
suprieure gauche est (1,1).

6) lcd_getc(x, y)
Cette fonction renvoie le caractre la position (x, y) sur l'cran LCD.

7) lcd_cursor_on(int1 on)
Cette fonction peut tre utilise pour activer le curseur ou le dsactiver.
Exemple:
lcd_cursor_on(TRUE); //Turns ON the cursor
lcd_cursor_on(FALSE); //Turns OFF the cursor

Note : Pour plus de dtails vous pouvez lire le fichier de bibliothque "lcd.c" l'emplacement C: / Program
Files / PICC / Drivers /.

B. Usage de printf()
printf () peut mettre une chane de caractres vers lUART standard ou une fonction spcifique. Il
peut tre utilis avec la bibliothque LCD CCS C pour formater les chanes de sortie. Par consquent
nous pouvons imprimer des nombres entiers, nombres virgule flottante, etc en utilisant cette
fonction.

8) Syntax :
printf(fname, cstring, values...);

O,

fname est le nom de la fonction, ici vous pouvez utiliser lcd_putc.


string est une chaine de caractres constante ou un tableau de caractres termin par un \0. Le formatage
est fait en consquence avec la chane de format.
values est la liste des variables spares par une virgule.

III.

Format

La forme gnrique du format est %nt. o n est facultatif et qui peut tre 1-9 pour prciser le nombre de
caractres tre dlivrs ou 01-09 pour indiquer les zros den tte ou 1.1 9.9 pour le point et flottante %w
formats. t est du type suivant :

JFA 2015

Type

Caractre

Chane de caractres ou caractre

Entier non sign

Entier sign

Page 3

TP8

Lu

Entier long non sign

Ld

Entier long sign

Entier en Hexadcimal en minuscule

Entier en Hexadcimal en majuscule

Lx

Entier Long en Hexadcimal en minuscule

LX

Entier Long en Hexadcimal en majuscule

Flottant avec partie dcimale tronque

Flottant avec partie dcimale arrondie

Flottant avec exposant

Entier non sign avec dcimale insr. Spcifiez deux


chiffres pour n. Le premier est la largeur totale du
champ. Le second est le nombre de dcimales voulu.

9) Exemple :
Pour imprimer un entier :
printf(lcd_putc,"Count = %d", i);

Si i = 0, la sortie sera : Count = 0

JFA 2015

Page 4

TP8

C. Schma dutilisation

Schma dinterfaage dun LCD avec un Microcontrleur PIC

D. Code CSS C
//LCD Module Connections
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2
#define LCD_ENABLE_PIN PIN_D3
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
//End LCD Module Connections
#include <lcd.c>
#use delay (clock=8000000)
void main()
{
int i=0;
lcd_init();
Delay_ms(100);
while(TRUE)
{
lcd_putc('\\f');

JFA 2015

//Clear Display

Page 5

TP8

lcd_putc("Hello World");
Delay_ms(2000);
lcd_putc('\\f');
//Clear Display
lcd_putc("Welcome To");
lcd_gotoxy(1,2);
lcd_putc("LCD Library");
Delay_ms(2000);
lcd_putc('\\f');
//Clear Display
printf(lcd_putc,"Count = %d", i); //Display Count
Delay_ms(2000);
i++;
}
}

E. Afficheur 4 lignes
La bibliothque lcd.c a t modifie pour supporter les afficheurs avec 4 lignes. Elle a t renomme
Flex_420.c.

F. Bibliographie
https://electrosome.com/lcd-pic-microcontroller-ccs-c/

JFA 2015

Page 6

TP8