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); } }