Vous êtes sur la page 1sur 30

Projet I.U.

P 2007-2008

GESTION DUN AFFICHEUR LCD AVEC UN PIC 18F4550

Tuteur : M. ALIZON S.

MATHIEU Michael BRIOUDE Loc

Licence G.S.I

Universit BLAISE PASCAL

Projet I.U.P 2007-2008

Remerciements
Nous remercions en particulier Monsieur ALIZON pour sa disponibilit ainsi que ses conseils et sa pdagogie qui nous ont guids et permis de comprendre au mieux le fonctionnement du PIC et sa programmation. Merci galement Monsieur VANDAELE qui a ralis la carte lectronique et qui nous a permis de raliser dans les meilleures conditions les diffrentes manipulations. Nous exprimons notre reconnaissance lensemble des enseignants qui nous ont permis dune manire ou dune autre de raliser notre projet.

Gestion dun afficheur LCD avec un PIC

Remerciements

Projet I.U.P 2007-2008

Table des matires

1 2

INTRODUCTION................................................................................................ 4 PRESENTATION DU PROJET......................................................................... 5 2.1 OBJECTIF DU PROJET ........................................................................................... 5 2.2 MATERIEL UTILISE .............................................................................................. 6 2.3 EXEMPLE DUTILISATION .................................................................................... 7

CONVERSION ANALOGIQUE NUMERIQUE.............................................. 9 3.1 LES REGISTRES UTILISES POUR LA CONVERSION ................................................ 11 3.1.1 3.1.2 3.1.3 Initialisation des ports entres/sorties ..................................................... 11 Configuration de la conversion................................................................ 11 Rcupration du rsultat .......................................................................... 12

3.2 LES DIFFERENTES FONCTIONS ............................................................................ 13 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 La fonction ADC_INIT ............................................................................. 13 La fonction ADC_VOIE ........................................................................... 15 La fonction ADC_GO............................................................................... 15 La fonction WAIT_WHILE_BUSY ........................................................... 16 La fonction ADC_READ .......................................................................... 17

3.3 LE PROGRAMME PRINCIPAL MAIN................................................................. 18 4 PROGRAMMATION DE LAFFICHAGE SUR UN ECRAN LCD............ 19 4.1 LES FONCTIONS UTILISEES ................................................................................. 19 4.2 LE PROGRAMME DAFFICHAGE .......................................................................... 20 5 CONCLUSION................................................................................................... 21

Gestion dun afficheur LCD avec un PIC

Table des matires

Projet I.U.P 2007-2008

1 Introduction
Dans un avion de tourisme de nombreuses donnes sont essentielles au pilotage comme la temprature et la pression dhuile, le niveau et la pression de lessence. Celles-ci sont transmises via des afficheurs aiguilles traditionnels peu ergonomique et peu prcis. Afin de remdier ces problmes on souhaite faire parvenir ces renseignements au pilote par lintermdiaire dun cran LCD, qui permet dafficher une information de faon distincte. Cependant lensemble des capteurs prsents sur lavion transmettent leurs donnes sous la forme dun signal analogique. Or lcran LCD est un afficheur numrique, il faut donc convertir les signaux analogiques en valeurs numriques, pour cela nous utiliserons un microcontrleur de type 18F4550. Dans ce document nous aborderons tout dabord les objectifs du projet en exposant le travail raliser ainsi que les divers choix que nous avons fait durant ltude. Nous exposerons aussi lensemble du matriel utilis ainsi que quelques exemples dapplications simples raliss afin de se familiariser avec celui-ci. Ensuite nous nous intresserons la mise en uvre du module de conversion analogique numrique du PIC en programmant les registres utiles lapplication de ce module. Puis nous tudierons les diffrentes fonctions utilises afin de configurer au mieux ces registres et la fonction principale qui permet de raliser la conversion. Enfin nous verrons comment programmer la gestion de laffichage des donnes sur lcran en prsentant dans une premire partie les diffrentes fonctions et dans une seconde le programme principal.

Gestion dun afficheur LCD avec un PIC

Page 4/21

Projet I.U.P 2007-2008

2 Prsentation du projet
2.1 Objectif du projet
Le but principal de ce projet est dafficher sur lcran LCD des valeurs donnes par diffrents capteurs. Le travail effectuer peut se dcomposer en deux grandes parties. En effet il faut tout dabord raliser la conversion de la mesure analogique du capteur en valeur numrique. Puis ensuite il faut afficher cette valeur numrique sur lcran LCD.

Afficheur LCD

CONVERSION A/N

Figure 1 : Comparaison entre un afficheur aiguilles et un afficheur numrique

Les avantages de lafficheur numrique sont le gain de poids et de place ainsi quune meilleure lisibilit. Un micro contrleur de la firme Microchip, lePIC 18F4550, sera utilis afin de faire la mise en forme et le formatage des signaux des capteurs. Ainsi partir dune valeur de tension comprise entre 0 et 5 volts on obtiendra une grandeur physique dont lunit sera approprie. Ce PIC dispose de nombreux modules permettant de raliser diverses applications telles que la conversion analogique numrique et la gestion de laffichage dun cran LCD. Afin que le micro contrleur puisse les raliser il faut configurer les registres c'est--dire mettre les bits de ceux-ci 1 ou 0 en les programmant en langage C. Ce programme est crit et compil avec le logiciel PCW. Ce logiciel est spcialis dans la programmation des PICs et il dispose dun rpertoire de fonctions prdfinies qui configurent automatiquement les diffrents registres ncessaires lopration dsire. Lutilisation de ces fonctions prdfinies facilite la programmation cependant de cette faon elle ne permet pas de connaitre quels sont les registres configurs ni mme comment ils sont configurs.

Gestion dun afficheur LCD avec un PIC

Page 5/21

Projet I.U.P 2007-2008

Cest pourquoi lors de notre tude nous avons choisi de ne pas utiliser les fonctions prdfinies du logiciel PCW (exemples : setup_adc(), adc_mode). Nous avons configur les registres utiliss bits bits laide de nos fonctions programmes en C qui seront ensuite rappeles dans une fonction principale afin de raliser le travail souhait. Le fait que nous ayons choisi dcrire nous mme dans les registres a ncessit une tude plus approfondie de la data sheet du PIC. De plus ce mode de programmation nous a permis dapprendre manipuler ltat des bits en utilisant des masques OU et des masques ET et de mieux comprendre les oprations ralises par le microprocesseur.

2.2 Matriel utilis


Le PIC est plac sur une carte lectronique qui permet de faciliter la programmation. La carte est quipe de plusieurs diodes lectroluminescentes (LED) qui permettent dobserver lvolution du travail du PIC et de la programmation, plusieurs entres/sorties sont disposes afin dtablir la communication entre le PIC, les capteurs et lcran LCD. Cette carte est alimente en 5 Volts. Afin de simuler les signaux dlivrs par un capteur, une tension est envoye sur une entre analogique. De plus un potentiomtre a t plac entre le gnrateur qui alimente la pic et une entre analogique (ici A0) afin de ne pas dpasser 5 volts, le PIC ne pouvant pas tre soumis une tension suprieure.

POTENTIOMETRE

PIC + 5V LEDS
ALIMENTATION

Masse 0V

A0

A1

A2

A3

Figure 2 : Carte lectronique

Gestion dun afficheur LCD avec un PIC

Page 6/21

Projet I.U.P 2007-2008

Laffichage est ralis grce un cran cristaux liquide aussi appel cran LCD. Celui qui nous a t fourni pour notre tude dispose de quatre lignes et vingt colonnes pour afficher les donnes. Lcran est aliment en 5 Volts par le PIC et connect celui-ci via la carte lectronique.

ECRAN LCD

Figure 3 : Ecran LCD

2.3 Exemple dutilisation


Pour se familiariser avec lutilisation du matriel ainsi quavec la programmation plusieurs petits programmes ont t raliss.

ALIMENTATION ECRAN LCD

CARTE ELECTRONIQUE

PROGRAMMATEUR ICD

Figure 4 : Dispositif exprimental

Gestion dun afficheur LCD avec un PIC

Page 7/21

Projet I.U.P 2007-2008

Le programme suivant permet de faire une lectroluminescentes sallument les unes la suite des autres.

guirlande

les

diodes

#include <18F4550.h> #fuses HSPLL, NOWDT, NOPROTECT, NOLVP, NODEBUG, USBDIV, PLL5, CPUDIV1, VREGEN, NOBROWNOUT #use delay(clock=48000000) main () { While(1) { output_high(pin_A0); delay_ms(100); output_low(pin_A0); output_high(pin_A1); delay_ms(100); output_low(pin_A1); output_high(pin_A2); delay_ms(100); output_low(pin_A2); output_high(pin_A3); delay_ms(100); output_low(pin_A3); output_high(pin_A4); delay_ms(100); output_low(pin_A4); } }
Figure 5 : Programme ralisant une guirlande

// Allume la diode relie la pin A0 // Attendre 100 ms // Eteint la diode relie la pin A0 // Allume la diode relie la pin A1 // Attendre 100 ms // Eteint la diode relie la pin A1 // Allume la diode relie la pin A2 // Attendre 100 ms // Eteint la diode relie la pin A2 // Allume la diode relie la pin A3 // Attendre 100 ms // Eteint la diode relie la pin A3 // Allume la diode relie la pin A4 // Attendre 100 ms // Eteint la diode relie la pin A4

Dans un systme embarqu il ne faut pas sortir du programme main sinon le compteur programme continu dincrmenter et des instructions errones peuvent tre excutes. Cest pour cela que le main se compose dune boucle while(1) infinie qui dans cet exemple allume tour tour les leds. Lorsque la fonction output_high(X) est utilise, le PIC dlivre une tension de 5V sur la pin X, ainsi la diode de la pin X sallume. De la mme faon le terme output_low (Y) renvoi une tension nulle sur la pin Y, dans ce cas la led relie la pin Y steint. Enfin le delay_ms(T) permet dattendre pendant un temps T afin de pouvoir observer lclat des diodes lil nu.

Gestion dun afficheur LCD avec un PIC

Page 8/21

Projet I.U.P 2007-2008

3 Conversion analogique numrique


Un convertisseur analogique-numrique est un dispositif dont la fonction est de convertir partir dune valeur analogique en entre, une valeur numrique exploitable par un ordinateur et proportionnelle la valeur analogique dentre. Dans notre cas la valeur analogique est une tension et le rsultat de la conversion est cod sur dix bits. Il existe plusieurs solutions pour effectuer cette conversion. Notre PIC utilise un convertisseur approximation successive qui utilise un processus de dichotomie, la tension dentre est compare avec la sortie du convertisseur par peses successives. La technique consiste diviser successivement par deux lintervalle de tension dans lequel est mesure lentre. Tout dabord le bit de poids fort du rsultat est mis 1, ensuite le convertisseur traduit ce rsultat en tension, celle-ci est alors compare la valeur dentre. Si la tension dentre est suprieure la tension du rsultat alors le bit de poids fort est laiss 1, dans le cas contraire il est plac ltat bas. La conversion se poursuit de la mme faon avec le bit de rang infrieur jusquau bit de poids faible. Le temps ncessaire afin deffectuer la conversion est 1 Tad par bit, de plus il faut rajouter deux Tad avant de pouvoir effectuer une nouvelle conversion. Afin davoir une petite marge de scurit, nous avons configur le temps de conversion 16 Tad dans le registre ADCON1.

Figure 6 : Temps de conversion

Gestion dun afficheur LCD avec un PIC

Page 9/21

Projet I.U.P 2007-2008

Le convertisseur possde treize pins en entre permettant de slectionner la voie sur laquelle est effectue la conversion (CHS0:CHS3) et retourne le rsultat sur 10 bits. Il est aussi possible de choisir les tensions de rfrences, dans le cadre de notre tude on utilise la tension dalimentation comme tension de rfrence (0 et 5 volts).

Figure 7 : Schma du bloc diagramme du convertisseur

Le module de conversion comprend cinq registres : ADRESH ADRESL ADCON0 ADCON1 ADCON2

Gestion dun afficheur LCD avec un PIC

Page 10/21

Projet I.U.P 2007-2008

3.1 Les registres utiliss pour la conversion


3.1.1 Initialisation des entres/sorties
La direction des entres/sorties est paramtre par les registres TRISX o X dfini le port rgler. Pour notre tude seul le port A sera configur donc le registre concern est TRISA. Il sagit dun registre comportant huit bits, dont chacun configure la direction des pins A0 A7 du port A. Si le bit est ltat haut alors la pin est une entre et si lest ltat bas cest une sortie.

Dans le cadre de notre tude les pins A0, A1, A2 et A3 seront positionnes en entre afin de rcuprer les signaux mis par les capteurs de lavion. Les quatre premiers bits du registre TRISA seront donc mis 1.

TRISA X 1 A3

1 A2

1 A1

1 A0

Figure 8 : Le registre TRISA

3.1.2 Configuration de la conversion


Les registres de configuration sont : ADCON0, ADCON1 et ADCON2, ils permettent dinitialiser les paramtres de la conversion. Pour le registre ADCON0 les bits 7 et 6 ne sont pas utiliss, les bits de 5 2 permettent de slectionner la voie analogique dont le signal va tre converti. Ltat du bit 0 indique si le convertisseur est prt, si cest le cas il est 1 si non 0. Enfin le bit 1 montre si la conversion est en cours (bit 1) ou si elle est termine (bit 0), le statut de ce bit na pas dimportance si le bit 0 est ltat bas.

Figure 9 : Le registre ADCON0

Gestion dun afficheur LCD avec un PIC

Page 11/21

Projet I.U.P 2007-2008

Dans le registre ADCON1 les bits 6 et 7 ne sont pas utiliss, les bits 4 et 5 permettent dinitialiser les tensions de rfrence sils sont ltat bas alors 0 et 5 Volts seront les valeurs des tensions utilises lors de la conversion, dans le cas contraire les tensions de rfrence sont aux bornes des pins A2 et A3. Enfin les 4 autres bits servent configurer les pins en entre analogique ou en entre/sortie numrique.

Figure 10 : Le registre ADCON1

Le registre ADCON2 rgle la justification du rsultat dlivr par la conversion en effet si le bit 7 est 1 alors le rsultat est justifi droite dans le cas contraire la justification est gauche. Le bit 6 nest pas utilis. Les bits 3 5 servent ajuster le temps dacquisition du signal analogique et les bits de 2 0 permettent de choisir la frquence de lhorloge de conversion.

Figure 11 : Le registre ADCON2

3.1.3 Rcupration du rsultat


Une fois que le PIC termin la conversion (temps de conversion) il crit le rsultat numrique (10 bits) dans deux registres de huit bits : ADRESH et ADRESL. Le rsultat dune conversion est cod sur dix bits donc il est ncessaire de raliser une concatnation des deux registres, en sachant que ADRESH contient les bits de poids forts et ADRESL ceux de poids faibles.
ADRESH b9 b8 b7 b6 b5 ADRESL b4 b3

b2

b1

b0

Figure 12 : Les registres ADREH et ADRESL

De plus la justification du rsultat paramtre dans le registre ADCON2 est choisie droite.

Gestion dun afficheur LCD avec un PIC

Page 12/21

Projet I.U.P 2007-2008

3.2 Nos diffrentes fonctions


La conversion seffectue en diffrentes tapes : Initialisation des registres ADCONX et TRISA Choix de la voie sur laquelle la conversion est ralise Lancement de la conversion Attente de la fin de conversion Rcupration de la valeur numrique Afin daccomplir ces tapes des fonctions sont crites, elles seront ensuite appeles dans la fonction principale (main).

3.2.1 La fonction ADC_INIT


Cette fonction permet dinitialiser les registres ADCONX et TRISA. Comme nous lavons vu prcdemment on souhaite que les quatre premiers bits de b0 b3 du registre TRISA soit ltat haut, un masque OU avec 0x0F est alors ralis sur le registre TRISA.
TRISA OU TRISA X 0 X X 0 X X 0 X X 0 X X 1 1 X 1 1 X 1 1 X 1 1

Figure 13 : Configuration du registre TRISA

Pour que la conversion puisse dbuter il faut placer le bit 0 de ADCON0 1. Cette opration est ralise grce un masque OU avec 0x01, le principe de fonctionnement est le mme que pour le registre TRISA. Ensuite le registre ADCON1 est lui aussi rgl de telle sorte que les tensions de rfrence soit 0 et 5Volts, pour cela les bits 4 et 5 sont placs 0. De plus on crit 1011 respectivement dans les bits b3 b0 afin davoir les pins A0 A3 en entre analogiques.
ADCON1 X X 0 0 1 0 1 1

Figure 14 : configuration du registre ADCON1

Gestion dun afficheur LCD avec un PIC

Page 13/21

Projet I.U.P 2007-2008

Pour le registre ADCON2 le bit 7 est 1 car la justification se fait droite. Ensuite, les bits 5 3 sont placs 110 afin de rgler le temps de conversion 16 Tad. Le temps Tad est driv par division de lhorloge principale et il possible de paramtrer le diviseur. Plus le diviseur est petit et plus le temps Tad est court, cependant pour des raisons lectronique Tad ne peut descendre indfiniment. Pour notre tude le diviseur sera choisi gal soixante quatre, les bits 0 2 sont mis 110. Le bit 6 nest pas utilis.

ADCON2

Figure 15 : Configuration du registre ADCON2

Lensemble des configurations dcrites ci-dessus, est excut grce la fonction ADC_INIT.

void adc_init( void) { #byte _adcon0 = 0xFC2 #byte _adcon1 = 0xFC1 #byte _adcon2 = 0xFC0 #byte trisA = 0xF92 trisA = trisA|0x0F; _adcon1=0x0B; _adcon2=0xBE; _adcon0 |= 1; }
Figure 16 : Fonction ADC_INIT

// INIT TRISA // INIT ADCON1 // INIT ADCON2 // permettre le conversion

Gestion dun afficheur LCD avec un PIC

Page 14/21

Projet I.U.P 2007-2008

3.2.2 La fonction ADC_VOIE


Cette fonction permet de choisir la voie sur laquelle on souhaite effectuer une conversion. Pour cela la variable voie est dcale de deux bits vers la gauche pour se positionner sur le champ voie de ADCON0. Puis un masque ET avec 0x3C est ralis afin de mettre les autres bits 0. Ensuite le rsultat obtenu est recopi dans le registre ADCON0 grce un masque OU qui permet de conserver la valeur des autres bits.
VOIE VOIE<<2 ET 0x3C = X X 0 0 0 0 0 X X 0 0 0 0 0 X X CHx CHx CHx CHx X CHx CHx CHx CHx X 1 1 1 1 0 0 CHx CHx CHx CHx 0 0 CHx CHx CHx CHx 0 0 0 0 CHx CHx CHx CHx 0 0 0 0 1 1

OU ADCON0 ADCON0

Figure 17 : Slection de la voie

Ces manipulations sont ralises en excutant la fonction suivante.


void adc_voie(int8 voie) { #byte _adcon0 = 0xFC2; _adcon0 = _adcon0 | ((voie<<2) & 0X3C); }
Figure 18 : Fonction ADC_VOIE

// ladresse de ADCON0 : 0xFC2 // Slection de la voie

3.2.3 La fonction ADC_GO


Aprs avoir slectionn la voie, il faut lancer la conversion. Pour cela il faut mettre le bit 1 de ADCON0 ltat haut grce un masque OU.
ADCON0 OU 0x02 ADCON0 0 0 0 0 0 0 0 1 1 1 0 1

CHx CHx CHx CHx 0 0 0 0 CHx CHx CHx CHx

Figure 19 : Lancement de la conversion

Gestion dun afficheur LCD avec un PIC

Page 15/21

Projet I.U.P 2007-2008

La fonction ADC_GO de la figure suivante accomplie cette tche.

void adc_go(void) { #byte _adcon0 = 0xFC2 _adcon0 = _adcon0 | 0x2; }

// ladresse de ADCON0 : 0xFC2 // Lancement de la conversion


Figure 20 : Fonction ADC_GO

3.2.4 La fonction WAIT_WHILE_BUSY


Cette fonction permet dattendre que la conversion soit termine. Un test sur le bit 1 de ADCON0 est ralis tant que celui-ci est ltat haut on attend dans la boucle while qui est vide. Lorsque ce bit change dtat on sort alors de la boucle et on peut passer linstruction suivante.

void adc_wait_while_busy(void) { #byte _adcon0 = 0xFC2 while( _adcon0 & 2) { } }

// ladresse de ADCON0 : 0xFC2

Figure 21 : Fonction WAIT_WHILE_BUSY

Gestion dun afficheur LCD avec un PIC

Page 16/21

Projet I.U.P 2007-2008

3.2.5 La fonction ADC_READ


Une fois la conversion termine, il faut rcuprer le rsultat qui est stock dans deux registres de 8 bits ADSRL et ADSRH. Il faut donc recopier les bits de ces registres dans un mot de 16 bits en ralisant un dcalage et un masque ET.

0 CONCAT CONCAT <<8 ET 0xFF00 CONCAT = CONCAT + ADSRL CONCAT =

ADSRH ADSRL 0 0 0 0 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 0 0 0 0 0 0 B9 B8 X X X X X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

X X X X X X X X 0 0 0 0 0 0 B9 B8 1 1 1 1 1 1 1 1 0 0 0 0 0 0 B9 B8 0 0 0 0 0 0 0 0 0 0

0 B9 B8 0 0 0 0 0 0 0 0 B7 B6 B5 B4 B3 B2 B1 B0 0 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0

Figure 22 : Rcupration du rsultat

La fonction ADC_READ est prsente ci-dessous.

int16 adc_read(void) { long concat; #byte _adresl = 0xFC3 #byte _adresh = 0xFC4 concat = _adresh; concat = ((concat<<8)& 0xFF00) + _adresl; return(concat); }

// ladresse de ADRESL : 0xFC3 // ladresse de ADRESH : 0Xfc4

// place le rsultat dans concat // retourne le rsultat

Figure 23 : fonction ADC_READ

Lopration permettant la concatnation direct des deux registres ADRESL et ADRESH dans une variable de seize bits pourrait galement tre effectue avec la fonction make16 du logiciel.

Gestion dun afficheur LCD avec un PIC

Page 17/21

Projet I.U.P 2007-2008

3.3 Le programme principal main


Le main est le programme principal ou sont utilises les fonctions dcrites dans le paragraphe prcdent. Tout dabord la fonction adc_init() est appele afin dinitialise les registres qui permettent de raliser la conversion analogique numrique. Ensuite, on insre dans une boucle while infinie les fonctions permettant de choisir la voie sur laquelle on fait la conversion, de la lancer et de rcuprer le rsultat.

void main (void) { int16 resultat; resultat=0; adc_init(); while(1) { adc_voie(0); adc_go(); adc_wait_while_busy(); resultat=adc_read(); } }
Figure 24 : Programme principal

// Initialisation des registres

// Choix de la voie // Lancement de la conversion // Attend la fin de la conversion // stock la valeur numrique dans rsultat

Gestion dun afficheur LCD avec un PIC

Page 18/21

Projet I.U.P 2007-2008

4 Programmation de laffichage sur un cran LCD


Etant donn le retard que nous avons pris lors du projet, les fonctions utilises afin de procder laffichage des rsultats ont t fournies par M. VANDAELE. Cest pourquoi les explications de la programmation de laffichage seront moins dtailles que dans la partie prcdente.

4.1 Les fonctions utilises


Les diffrentes fonctions utilises sont : Lcd_com Lcd_init Lcd_clear Gotoxy Lcd_putc et lcd_putchar La fonction lcd_com permet dcrire dans le registre de configuration de lafficheur et donc dassurer la communication entre le PIC et lcran LCD. La fonction dinitialisation de lcran lcd_init() a t ralis en suivant les instructions donnes dans la data sheet de lafficheur LCD. La fonction lcd_clear permet simplement deffacer lcran. Afin de pouvoir crire sur lcran lendroit souhait, la fonction goto_xy(int row,int col) a t cr pour positionner le curseur sur la ligne sur et la colonne voulues. Les variables row et col indiquent respectivement la ligne et la colonne sur lesquelles le curseur est positionn. Enfin les fonctions lcd_putchar(char c) et lcd_putc(int16 c) permettent dcrire respectivement sur lcran un chane de caractre (exemple : Tempratue ) ou alors le rsultat de la conversion effecte sur 10 bits (exemple : 1024).

Gestion dun afficheur LCD avec un PIC

Page 19/21

Projet I.U.P 2007-2008

4.2 Le programme daffichage


Le programme suivant ralise laffichage dun texte fixe indiquant des exemples de grandeurs physiques pouvant tre utiles dans un avion, ainsi que le rsultat en valeur numrique de la tension dlivre par le capteur. La frquence dchantillonnage est choisie 100Hz afin davoir un rafrachissement assez rapide sans pour autant avoir un phnomne de scintillement lcran.

void main() { int16 resultat; float conversion; adc_init(); lcd_init(); lcd_clear(); goto_xy(1,9); lcd_putchar("Temperature : "); goto_xy(2,1); lcd_putchar("Pression : "); goto_xy(3,1); lcd_putchar("Niveau : "); goto_xy(4,1); lcd_putchar("Vitesse : "); while(1) { resultat=0; adc_voie(0); adc_go(); adc_wait_while_busy(); resultat=adc_read(); conversion=(5*resultat)/1024.0; goto_xy(1,14); printf(lcd_putc," %f V" ,conversion); delay_ms(10); } }
Figure 25 : Programme ralisant l'affichage

// initialisation du convertisseur // initialisation du LCD // nettoyage cran // positionnement du curseur // criture du caractre

// initialisation rsultat /* CONVERSION A/N */ // exprime le rsultat en valeur dcimale

// criture du rsultat sur lcran // chantillonnage 100Hz

Gestion dun afficheur LCD avec un PIC

Page 20/21

Projet I.U.P 2007-2008

5 Conclusion
Ce projet avait pour but de rcuprer la rponse en tension des capteurs, et dafficher les grandeurs physiques mesures. De plus sur un cran LCD les donnes affiches sont exclusivement numriques cest pourquoi il est ncessaire de faire une conversion analogique numrique. Nous avons donc ralis la programmation du PIC afin que celui-ci convertisse les rponses analogiques des capteurs en valeurs numriques, puis les affiche sur lafficheur LCD. Cependant, il serait possible dapprofondir cette tude en prvoyant une programmation via une table de correspondance pour des capteurs nayant pas forcment une rponse linaire et aussi en ralisant la gestion de capteurs impulsionnels comme les comptes tours et les compteurs de vitesse. Aussi, nous avons rencontr des problmes lors de la prise en main de la carte lectronique et pour la comprhension de la documentation ncessaire la configuration des registres par lintermdiaire du langage C. Enfin, ce projet nous a permis dapprendre utiliser un microprocesseur dans un but pratique et de se confronter des datasheets en anglais. De plus le choix deffectuer cette programmation travers la configuration des diffrents registres nous a permis une meilleure comprhension du fonctionnement dun microcontrleur.

Gestion dun afficheur LCD avec un PIC

Page 21/21

Projet I.U.P 2007-2008

Bibliographie
Sites Web consults : www.wikipedia.org www.abcelectronique.com Ouvrages consults : Datasheet PIC 18F4550 par la Socit MICROCHIP Notice dutilisation de lcran LCD par DISPLAYTECH Programmation des PIC par BIGONOFF Manuel daide PIC C Compiler par CCS

Gestion dun afficheur LCD avec un PIC

Bibliographie

Projet I.U.P 2007-2008

Table des illustrations

Figure 1 : Comparaison entre un afficheur aiguilles et un afficheur numrique ......... 5 Figure 2 : Carte lectronique .......................................................................................... 6 Figure 3 : Ecran LCD ..................................................................................................... 7 Figure 4 : Dispositif exprimental.................................................................................. 7 Figure 5 : Programme ralisant une guirlande ............................................................... 8 Figure 6 : Temps de conversion ..................................................................................... 9 Figure 7 : Schma du bloc diagramme du convertisseur.............................................. 10 Figure 8 : Le registre TRISA........................................................................................ 11 Figure 9 : Le registre ADCON0 ................................................................................... 11 Figure 10 : Le registre ADCON1 ................................................................................. 12 Figure 11 : Le registre ADCON2 ................................................................................. 12 Figure 12 : Les registres ADREH et ADRESL ............................................................ 12 Figure 13 : Configuration du registre TRISA............................................................... 13 Figure 14 : configuration du registre ADCON1........................................................... 13 Figure 15 : Configuration du registre ADCON2.......................................................... 14 Figure 16 : Fonction ADC_INIT.................................................................................. 14 Figure 17 : Slection de la voie .................................................................................... 15 Figure 18 : Fonction ADC_VOIE ................................................................................ 15 Figure 19 : Lancement de la conversion....................................................................... 15 Figure 20 : Fonction ADC_GO .................................................................................... 16 Figure 21 : Fonction WAIT_WHILE_BUSY .............................................................. 16 Figure 22 : Rcupration du rsultat ............................................................................ 17 Figure 23 : fonction ADC_READ................................................................................ 17 Figure 24 : Programme principal.................................................................................. 18 Figure 25 : Programme ralisant l'affichage................................................................. 20

Gestion dun afficheur LCD avec un PIC

Table des illustrations

Projet I.U.P 2007-2008

Annexes

Gestion dun afficheur LCD avec un PIC

page 1/

Projet I.U.P 2007-2008

GANTT EFFECTUE PENDANT LE PROJET


Choix et dcouverte du sujet Documentation PIC et LCD Prise en main de la carte lectronique Ecriture programmes tests Ecriture programme de conversion A/N Comprhension du programme d'affichage Rdaction du rapport Prparation de l'oral
08 20 6/ /0 06 08 20 5/ /0 30 08 20 5/ /0 23 08 20 5/ /0 16 08 20 5/ /0 09 08 20 5/ /0 02 08 20 4/ /0 25 08 20 4/ /0 18 08 20 4/ /0 11 08 20 4/ /0 04 08 20 3/ /0 28 08 20 3/ /0 21 08 20 3/ /0 14 08 20 3/ /0 07

GANTT PREVISIONNEL DU PROJET


Choix et dcouverte du sujet Documentation PIC et LCD Prise en main de la carte lectronique Ecriture programmes tests Ecriture programme de conversion A/N Ecriture programme d'affichage LCD Rdaction du rapport Prparation de l'oral
/0 07 3/ 08 20 /0 14 3/ 08 20 /0 21 3/ 08 20 /0 04 4/ 08 20 /0 28 3/ /0 11 4/ 08 20 08 20 /0 18 4/ 08 20 /0 02 5/ 08 20 /0 25 4/ /0 16 5/ /0 09 5/ 08 20 08 20 /0 23 5/ 08 20 08 20 /0 30 5/ 08 20 /0 06 6/ 08 20

Gestion dun afficheur LCD avec un PIC

page 2/

Projet I.U.P 2007-2008

Gestion dun afficheur LCD avec un PIC

page 3/

Projet I.U.P 2007-2008

Gestion dun afficheur LCD avec un PIC

page 4/

Projet I.U.P 2007-2008

Gestion dun afficheur LCD avec un PIC

page 5/

Projet I.U.P 2007-2008

Gestion dun afficheur LCD avec un PIC

page 6/

Projet I.U.P 2007-2008

Gestion dun afficheur LCD avec un PIC

page 7/