Vous êtes sur la page 1sur 11

Tables de matières

I- LES COMPOSANTS........................................................................................1
I-1-PIC18F452......................................................................................................................................................1
I-2-L'AFFICHEUR LCD.........................................................................................................................................1
I-3-PCF8591.........................................................................................................................................................2
I-4-POTENTIOMÈTRE...............................................................................................................................................................................3

II- LES PORTS UTILISÉS.......................................................................................................4


III- CODE...................................................................................................................................4
IV- SIMULATIONS..................................................................................................................9

Liste des figures

FIGURE 1 : PIC18F452............................................................................................................1
FIGURE 2 : LCD.......................................................................................................................2
FIGURE 3 : PCF8591................................................................................................................2
FIGURE 4 : Potentiomètre........................................................................................................3
FIGURE 5 : potentiometre pinout.............................................................................................3
FIGURE 6 : Simulation sur ISIS...............................................................................................9
I- Les composants

I-1 PIC18F452
Ce puissant microcontrôleur 8 bits basé sur CMOS FLASH de 10 MIPS (exécution
des instructions en 100 nanosecondes) et facile à programmer (seulement 77
instructions d'un seul mot) intègre la puissante architecture PIC® de Microchip dans
un boîtier de 40 ou 44 broches. Il est compatible avec les dispositifs PIC16C5X,
PIC12CXXX, PIC16CXX et PIC17CXX et offre ainsi une voie de migration
transparente du code logiciel vers des niveaux plus élevés d'intégration matérielle. Le
PIC18F452 dispose d'un environnement de développement convivial avec le
compilateur 'C', d'une EEPROM de 256 octets, de l'autoprogrammation, d'un ICD, de
2 fonctions de capture/compare/PWM, de 8 canaux de convertisseur analogique-
numérique (A/D) de 10 bits, du port série synchrone qui peut être configuré comme
interface périphérique série (SPI) à 3 fils ou comme bus I²C à 2 fils et d'un émetteur-
récepteur asynchrone universel adressable (AUSART). Toutes ces caractéristiques en
font un produit idéal pour les équipements de fabrication, l'instrumentation et la
surveillance, l'acquisition de données, le conditionnement d'énergie, la surveillance de
l'environnement, les télécommunications et les applications audio/vidéo grand public.

Figure 1: PIC18F452

I-2 L'afficheur LCD :


LCD est l'abréviation du terme anglais "Liquid Crystal Display" qui signifie en

—1

français "Écran à cristaux liquides". D’où afficheur LCD. L'afficheur LCD est en
particulier une interface visuelle entre un système (projet) et l'homme (utilisateur).
Son rôle est de transmettre les informations utiles d'un système à un utilisateur. Il
affichera donc des données susceptibles d'être exploiter par l'utilisateur d'un système.

Figure 2: LCD

I-3 PCF8591

PCF8591 est un monolithique alimenation unique, faible puissance 8 bits CMOS


péripheriques d’acquisition de données.le PCF8591 dispose 4 entrées analogqiues,
d’une sortie analogique et d’une interface de bus série I2C.

PCF8591 de 3 broches d’adresse A0,A1 et A2 peut etre utilisé pour programmer


l’adresse matérielle, permettant l’accès a 8 périphèriques PCF8591 sur le meme I2C-
bus sans avoir besion de materiel supplimentaire.

Figure 3: PCF8591

—2

I-4 Potentiomètre
Un potentiomètre (appelé familièrement potard) est un type de résistance variable à
trois bornes, dont une est reliée à un curseur se déplaçant sur une piste résistante
terminée par les deux autres bornes. Ce système permet de recueillir, entre la borne
reliée au curseur et une des deux autres bornes, une tension qui dépend de la position
du curseur et de la tension à laquelle est soumise la résistance.

Figure 4: Potentiomètre.

Le brochage du potentiomètre varie en fonction du type de potentiomètre : coulissant,


rotatif ou trim.

1 et 3 sont des bornes fixes. L'une ou l'autre peut être VCC ou GND. 2 est la borne de
l'essuie-glace /movale.

Figure 5: potentiometre pinout

Le convertisseur analogique-numérique (ADC) est un appareil qui peut lire une valeur
de tension d’entrée analogique et la convertir en valeur numérique. Les ADC sont

—3

utilisés pour lire les valeurs des thermistors, des potentiomètres et d’autres appareils
qui modifient la résistance en fonction de certaines conditions.

II- Les ports utilisés :

RA0 : Broche d'E/S bidirectionnelle du port A bit 0 ou entrée analogique 0


RA1 : Broche d'E/S bidirectionnelle du port A bit 1 ou entrée analogique 1

RA2 : pin d'E/S bidirectionnelle du port A bit 2 ou entrée analogique 2 ou référence


A/D (Low) Voltage.

RA3 : pin d'E/S bidirectionnelle du port A bit 3 ou entrée analogique 3 ou référence


A/D (high) Voltage.

III- Code:

#include "includes.h"
#include <adc.h>
#include "ftoa.c"
/* */
#pragma config OSC = HS
#pragma config WDT = OFF
#pragma config LVP = OFF
#pragma config STVR = ON
/* */
OS_STK piletache1[128];
OS_STK piletache2[128];
OS_STK piletache3[128];
OS_STK piletache4[128];
/* */
void tache1 (void *pdata);
void tache2 (void *pdata);
void tache3 (void *pdata);
void tache4 (void *pdata);
/* */

—4

OS_EVENT *SemLCD;
OS_EVENT *SemADC;
/* */
void main (void){
BSP_Init ();
OSInit();
OSTaskCreate(tache1,(void *)0, &piletache1[0],0);
OSTaskCreate(tache2,(void *)0, &piletache2[0],1);
OSTaskCreate(tache3,(void *)0, &piletache3[0],2);
OSTaskCreate(tache4,(void *)0, &piletache4[0],3);
SemLCD = OSSemCreate(1);
SemADC = OSSemCreate(1);
OSStart();
}
/* tache1 */
void tache1(void *pdata){
int result;
char buf [20];
float r;
char chaine[20];
INT8U err;

while(1){
OSSemPend(SemADC,0,&err);
SetChanADC(ADC_CH0);
ConvertADC();
while( BusyADC() );
result = ReadADC();

—5

OSSemPost(SemADC);
r = result * 0.0048875855327468;//r = result * (5/1023)
ftoa( r,(unsigned char*)chaine,2,'f');
sprintf(buf,"Pot 1 = %s V \n\r ",chaine);
OSSemPend(SemLCD,0,&err);
SetDDRamAddr(0x00);
putsXLCD(buf);
OSSemPost(SemLCD);
OSTimeDlyHMSM(0,0,1,0);
}
}
/* tache2 */
void tache2(void *pdata){
int result;
char buf [20];
float r;
char chaine[20];
INT8U err;

while(1){
OSSemPend(SemADC,0,&err);
SetChanADC(ADC_CH1);
ConvertADC();
while( BusyADC() );
result = ReadADC();
OSSemPost(SemADC);
r = result * 0.0048875855327468;//r = result * (5/1023)
ftoa( r,(unsigned char*)chaine,2,'f');
sprintf(buf,"Pot 2 = %s V \n\r ",chaine);

—6

OSSemPend(SemLCD,0,&err);
SetDDRamAddr(0x40);
putsXLCD(buf);
OSSemPost(SemLCD);
OSTimeDlyHMSM(0,0,1,0);
}
}
/* tache3 */
void tache3(void *pdata){
int result;
char buf [20];
float r;
char chaine[20];
INT8U err;

while(1){
OSSemPend(SemADC,0,&err);
SetChanADC(ADC_CH2);
ConvertADC();
while( BusyADC() );
result = ReadADC();
OSSemPost(SemADC);
r = result * 0.0048875855327468;//r = result * (5/1023)
ftoa( r,(unsigned char*)chaine,2,'f');
sprintf(buf,"Pot 3 = %s V \n\r ",chaine);
OSSemPend(SemLCD,0,&err);
SetDDRamAddr(0x14);
putsXLCD(buf);
OSSemPost(SemLCD);

—7

OSTimeDlyHMSM(0,0,1,0);
}
}
/* tache4 */
void tache4(void *pdata){
int result;
char buf [20];
float r;
char chaine[20];
INT8U err;

while(1){
OSSemPend(SemADC,0,&err);
SetChanADC(ADC_CH3);
ConvertADC();
while( BusyADC() );
result = ReadADC();
OSSemPost(SemADC);
r = result * 0.0048875855327468;//r = result * (5/1023)
ftoa( r,(unsigned char*)chaine,2,'f');
sprintf(buf,"Pot 4 = %s V \n\r ",chaine);
OSSemPend(SemLCD,0,&err);
SetDDRamAddr(0x54);
putsXLCD(buf);
OSSemPost(SemLCD);
OSTimeDlyHMSM(0,0,1,0);
}
}

—8

V- Simulations

Figure 6: simulation sur ISIS

—9

Vous aimerez peut-être aussi