Bonsoir, mon projet consiste à réaliser un systéme de surveillance des gaz à 2 entrées (2 capteurs de pression 4-20ma), j'ai eu des problèmes au niveau d'affichage sur 7 segments, chaque afficheur affiche la valeur de pression compris entre 0 et 16bar, pour l'entrée RA0 c'est ok les valeurs sont biens affiché sur AFFICH 1, au contraire l'entrée RA1 n'a auccun effet et l'AFFICH 2 n'affiche rien, j'espere trouver une solution pour que les valeurs de pression seront affichés sur AFFICH 2 (0-16bar) de même maniére que sur l'AFFICH 1 et merci d'avance.
vous trouvez la simulation sur ISIS et le programme en language C dans les pièces jointes.
#include "16F876A.h"
#DEVICE ADC=8
#fuses XT,NOWDT,NOPROTECT,NOCPD,NOLVP ,PUT,BROWNOUT,NODEBU G
#use delay(clock=4000000)
#byte STATUS=0x03
#byte PORTA=0x05
#byte PORTB=0x06
#byte PORTC=0x07
#byte TRISA=0x85
#byte TRISB=0x86
#byte TRISC=0x87
#byte INTCON=0x0B
#byte EEDATA=0x10C
#byte EEADR=0x10D
#byte EECON1=0x18C
#byte EECON2=0x18D
#bit RA0=PORTA.0
#bit RA1=PORTA.1
#bit RA2=PORTA.2
#bit RA3=PORTA.3
#bit RA4=PORTA.4
#bit RA5=PORTA.5
#bit RB0=PORTB.0
#bit RB1=PORTB.1
#bit RB2=PORTB.2
#bit RB3=PORTB.3
#bit RB4=PORTB.4
#bit RB5=PORTB.5
#bit RB6=PORTB.6
#bit RB7=PORTB.7
#bit RC0=PORTC.0
#bit RC1=PORTC.1
#bit RC2=PORTC.2
#bit RC3=PORTC.3
#bit RC4=PORTC.4
#bit RC5=PORTC.5
#bit RC6=PORTC.6
#bit RC7=PORTC.7
int8 unite, dizaine, v, bar;
void main(void)
{
/***************** initialisation du programme *******************/
PORTA=0;
PORTB=0;
PORTC=0;
TRISA=0xFF;
TRISB=0x00;
TRISC=0x00;
unite = 0; dizaine = 0; v = 0; bar = 0;
port_b_pullups(FALSE);
setup_adc_ports( RA0_ANALOG );
setup_adc_ports( RA1_ANALOG );
setup_adc(ADC_CLOCK_DIV_32);
/*
ENABLE_INTERRUPTS(GLOBAL);
ENABLE_INTERRUPTS(INT_EXT);
ext_int_edge(H_TO_L); */
while(true){
set_adc_channel(0);
delay_us(10);
v=read_adc();
if (v <= 51){bar = 0;}
else if (v>51 && v <= 64){bar = 1;}
else if (v> 64 && v <= 77){bar = 2;}
else if (v> 77 && v <= 90){bar = 3;}
else if (v> 90 && v <= 103){bar = 4;}
else if (v> 103 && v <= 116){bar = 5;}
else if (v> 116 && v <= 129){bar = 6;}
else if (v> 129 && v <= 142){bar = 7;}
else if (v> 142 && v <= 155){bar = 8;}
else if (v> 155 && v <= 168){bar = 9;}
else if (v> 168 && v <= 181){bar = 0x10;}
else if (v> 181 && v <= 194){bar = 0x11;}
else if (v> 194 && v <= 207){bar = 0x12;}
else if (v> 207 && v <= 220){bar = 0x13;}
else if (v> 220 && v <= 233){bar = 0x14;}
else if (v> 233 && v <= 246){bar = 0x15;}
else if (v> 246){bar = 0x16;}
PORTB = bar;
PORTC = bar
delay_ms(500);
}
}
-----