Projet I. U. P 2007-2008 GESTION D’UN AFFICHEUR LCD AVEC UN PIC 18F4550 Tuteur : M. AUZON S. MATHIEU Michael BRIOUDE LOÏC Licence C. S. I université BLAISE P projet I. u. p 2007-20 Remerciements or 12 Sni* to View Nous remercions en particulier Monsieur ALIZON pour sa disponibilité ainsi que ses conseils et sa pédagogie qui nous ont guidés et permis de comprendre au mieux le fonctionnement du PIC et sa programmation. Merci également à Monsieur VANDAELE qui a réalisé la carte électronique et qui nous a permis de réaliser dans les meilleures conditions les différentes manipulations.
Nous exprimons notre reconnaissance à l’ensemble des enseignants qui nous ont permis d’une manière ou d’une autre de réaliser notre projet 11 3. 1. 1 3. 1. 2 3. 1. 3 Initialisation des ports entrées/ sorties Configuration de la conversion…… Récupération du résultat . 3. 2 LES DIFFERENTES FONCTIONS 3. 2. 1 3. 2. 2 3. 2. 3 3. 2. 4 3. 2. 5 La fonction ADC_INIT . La fonction AOC VOIE 15 ADC GO… La fonction WAT WHILE BUSY . 16 La fonction AOC READ 17 3. 3 LE PROGRAMME PRINCIPAL « MAIN ». 4 PROGRAMMATION DE CA PAGF 19 12 . 13 18 UN ECRAN LCD… ?? un avion de tourisme de nombreuses données sont essentielles u pilotage comme la température et la pression d’huile, le niveau et la pression de l’essence. Celles-ci sont transmises via des afficheurs à aiguilles traditionnels peu ergonomique et peu précis. Afin de remédier à ces problèmes on souhaite faire parvenir ces renseignements au pilote par l’intermédiaire d’un écran LCD, qui permet d’afficher une information de façon distincte. Cependant l’ensemble des capteurs présents sur Pavion transmettent leurs données sous la forme d’un signal analogique.
Or l’écran LCD est un afficheur numérique, il faut donc onvertir les signaux analogiques en valeurs numériques, pour cela nous utiliserons un microcontrôleur de type 18F4550. Dans ce document nous aborderons tout d’abord les objectifs du projet en exposant le travail à réaliser ainsi que les divers choix que nous avons fait durant Vétude. Nous exposerons aussi l’ensemble du matériel utilisé ainsi que quelques exemples d’applications simples réalisés afin de se familiariser avec celui-ci.
Ensuite nous nous intéresserons à la mise en œuvre du module de conversion analogique numérique du PIC en programmant les registres utiles ? l’application de ce module. Puis nous étudierons les différentes fonctions utilisées afin de configurer au mieux ces registres et la fonction principale qui permet de réallser la conversion. Enfin nous verrons comment programmer la gestion de l’affichage des données sur l’écran en présentant dans une remière partie les différentes fonctions et dans une sec PAGF Gestion d’un afficheur LCD avec un PIC Page 4/21 projet I. U. P 2007-2008 2 Présentation du projet 2. Objectif du projet Le but principal de ce projet est d’afficher sur l’écran LCD des valeurs données par ifférents capteurs. Le travail à effectuer peut se décomposer en deux grandes parties. En effet il faut tout d’abord réaliser la conversion de la mesure analoglque du capteur en valeur numérique. puis ensuite il faut afficher cette valeur numérique sur Vécran LCD. Afficheur LCD CONVERSION AIN Figure 1 : Comparaison entre un afficheur à aiguilles et un afficheur numérique Les avantages de l’afficheur numérique sont le gain de poids et de place ainsi qu’une meilleure lisibilité.
Un micro contrôleur de la firme Microchip, lePIC 18F4550, sera utilisé afin de faire la ise en forme et le formatage des signaux des capteurs. Ainsi ? partir d’une valeur de tension comprise entre O et 5 volts on obtiendra une grandeur physique dont l’unité sera appropriée. Ce PIC dispose de nombreux modules permettant de réaliser diverses applications telle 9 L’utilisation de ces fonctions prédéfinies facilite la programmation cependant de cette façon elle ne permet pas de connaitre quels sont les registres configurés ni même comment ils sont configurés. age 5/21 C’est pourquoi lors de notre étude nous avons choisi de ne pas utiliser les fonctions rédéfinies du logiciel PCW (exemples : adc_mode). Nous avons configuré les registres utilisés bits à bits à l’aide de nos fonctions programmées en C qui seront ensuite rappelées dans une fonction principale afin de réaliser le travail souhaité. Le fait que nous ayons choisi d’écrire nous même dans les registres a nécessité une étude plus approfondie de la data sheet du PIC.
De plus ce mode de programmation nous a permis d’apprendre à manipuler l’état des bits en utilisant des masques OU et des masques ET et de mieux comprendre les opérations réalisées par le microprocesseur. . 2 Matériel utilisé Le PIC est placé sur une carte électronique qui permet de faciliter la programmation. La carte est équipée de plusieurs diodes électroluminescentes (LED) qui permettent d’observer l’évolution du travail du PIC et de la programmation, plusieurs entrées/sorties PAGF s 2 pas dépasser 5 volts, le PIC ne pouvant pas être soums à une tension supérieure.
POTENTIOMETRE PIC LEDS ALIMENTATION Masse OV Al Figure 2 : Carte électronique Gestion d’un afficheur LCD avec un page 6/21 L’affichage est réalisé grâce à 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 données. L’écran est alimenté en S Volts par le PIC et connecté à celui-ci via la carte électronique. utput_high(pin_A2); output_low(pin A2); // Allume la diode reliée à a pin A2 // Attendre 100 ms // Eteint la diode reliée à la pin A2 output_high(pin A3); delay_ms(100); output_low(pin_A3); // Allume la d10de reliée à la pin A3 // Eteint la diode reliée à la pin A3 delay_mstl 00); // Allume la diode reliée à la pin A4 // Eteint la diode reliée à la pin A4 Figure 5 : Programme réalisant une guirlande Dans un système embarqué il ne faut pas sortir du programme main sinon le compteur programme continu d’incrémenter et des instructions erronées peuvent être exécutées.
C’est pour cela que le main se compose d’une boucle while(l) infinie qui dans cet exemple allume tour à tour les leds. Lorsque la fonction output_high(X) est utilisée, le PIC délivre une 7 2 le résultat 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 e dichotomie, la tension dentrée est comparée avec la sortie du convertisseur par pesées successives.
La technique consiste à diviser successivement par deux l’intervalle de tension dans lequel est mesurée l’entrée. Tout d’abord le bit de poids fort du résultat est mis à 1, ensuite le convertisseur tra duit ce resultat en tension, celle-ci est alors comparée à la valeur d’entrée. Si la tension d’entrée est supérieure à la tension du résultat alors le bit de poids fort est laissé à 1, dans le cas contraire il est placé à l’état bas. La conversion se poursuit de la ême façon avec le bit de rang inférieur jusqu’au bit de poids faible.
Le temps nécessaire afin d’effectuer la conversion est 1 Tad par bit, de plus il faut rajouter deux Tad avant de pouvoir effectuer une nouvelle conversion. Afin d’avoir une petite marge de sécurité, nous avons configuré le temps de conversion à 16 Tad dans le registre ADCONI . Figure 6 : Temps de conversion page 9/21 Le convertisseur possède 19 entrée permettant de : Schéma du bloc diagramme du convertisseur Le module de conversion comprend cinq registres : ADRESH ADRESL ADCONO ADCONI ADCON2 Page 10/21 . 1 Les registres utilisés pour la conversion 3. 1. Initialisation des entrées/sorties La direction des entrées/sorties est paramétrée par les registres TRISX où X défini le port à régler. Pour notre étude seul le port A sera configuré donc le registre concerné est TRISA Il s’agit d’un registre comportant huit bits, dont chacun configure la direction des pins AO à A7 du port A. Si le bit est à l’état haut alors la pin est une entrée et si l’est à l’état bas c’est une sortie. Dans le cadre de notre étude les pins AO, Al, A2 et A3 seront positionnées en entrée fin de récupérer les signaux émis par les capteurs de l’avion.
Les quatre premiers bits du registre TRISA seront donc mis à 1. x bas. Figure 9 : Le registre ADCONO page 11/21 Dans le registre ADCONI les bits 6 et 7 ne sont pas utilisés, les bits 4 et 5 permettent d’initialiser les tensions de référence s’ils sont à l’état bas alors O et 5 Volts seront les valeurs des tensions utilisées lors de la conversion, dans le cas contraire les tensions de référence sont aux bornes des pins A2 et A3. Enfin les 4 autres bits servent ? configurer les pins en entrée nalogique ou en entrée/sortie numérique.
Figure IO : Le registre ADCONI Le registre ADCON2 règle la justification du résultat délivré par la converslon en effet si le bit 7 est à 1 alors le résultat est justifié à droite dans le cas contraire la justification est à gauche. Le bit 6 n’est pas utilisé. Les bits 3 à 5 servent ? ajuster le temps d’acquisition du signal analogique et les bits de 2 à O permettent de choisir la fréquence de l’horloge de Figure 11 : Le registre ADCON2 3. 1. 3 Récupération du résultat Une fois que le PIC à term on (temps de conversion)