unsigned A;
unsigned L;
unsigned R;
unsigned R1;
unsigned R2;
unsigned D; //variable dizaine
unsigned C; //variable centaine
unsigned C1;
unsigned D1;
unsigned U1;
unsigned U; //variable unite
unsigned V; //resultat tension*100
int r;
#include "delay.c"
void
init_lcd (void)
{
while (1)
{
PORTB = 0; // Portb B �0
TRISB = 0 b00000000; // tous les ports b sont des sorties
PORTA = 0; // le port A est 0
TRISA = 0 b00000000; // tous les ports a sont des sorties
PORTA .1 = 0; //RS=0 , on transmet une commande
PORTA .2 = 0; // En ecriture R/W=0
PORTB = 0 b00111000; // Initialisation Fonction Set. 8bits, 2lignes, caract�re 5*7
PORTA .3 = 1; //E=1
delay_10ms (10); //Attente de 1s
PORTA .3 = 0; //E=0
PORTB = 0 b00000110; // D�calage vers la droite du curseur;pas ded�calage de l'afficheur apr�s �criture
PORTA .3 = 1; //E=1
delay_10ms (10); //Attente de 1s
PORTA .3 = 0; //E=0
PORTB = 0 b00001110; //Affichage on/off ;Afficage ON,Curseur, Caract�re ne clignote pas.
PORTA .3 = 1; //E=1
delay_10ms (10);
PORTA .3 = 0; //E=0
PORTB = 0 b00000001; //on efface l'afficheur
PORTA .3 = 1;
delay_10ms (10);
PORTA .3 = 0;
PORTA .1 = 1; //RS=1 on transmet une donn�e
PORTA .2 = 0; //ecriture
delay_10ms (100); // 5 delay pour une attende de 5s
}
}
void
init_can (void) // initialisation CAN
{
TRISA = 0 b00000001; // pin AN0 en entr�e uniquement
ADCON0 = 0 b00000001; // pin AN0 choisit, ADON=1 => conversion autoris�
ADCON1 = 0 b10000000; //resultat a droite
}
void
main (void)
{
init_can ();
while (1)
{
ADCON0 .2 = 1; // depart conversion
while (ADCON0 .2 != 0); // remise a 0 du bit
L = ADRESH; // resultat conversion
L = L * 500; // on recupere la valeure de la tension et
R = L / 256; //on la multipli par 100 a cause des virgules
if (R > 100)
{
C = R / 100; //C= resulatt centaine
}
R1 = R % (100); //reste de de la division
if (R1 > 10)
{
D = R / 10; // D resultat dizaine
}
U = R1 % (10); // U = resultat des unit�es
init_lcd ();
C1 = C + 30;
D1 = D + 30;
U1 = U + 30;
PORTB = 0 b01001100; //Affichage centaine
PORTA .3 = 1; // E=1
delay_10ms (10); //Attente de 0,1s
PORTA .3 = 0; // E=0
delay_10ms (100);
delay_10ms (100); // 5 delay pour une attende de 5s
PORTB = D1; //Affichage dizaine
PORTA .3 = 1; // E=1
delay_10ms (10); //Attente de 0,1s
PORTA .3 = 0; // E=0
delay_10ms (100);
delay_10ms (100); // 5 delay pour une attende de 5s
PORTB = U1; //Affichage unite
PORTA .3 = 1; // E=1
delay_10ms (10); //Attente de 0,1s
PORTA .3 = 0; // E=0
delay_10ms (100);
}
}