Auteur | Message |
leaderphone
Newbie
Messages : 7 Inscrit(e) le: 20/08/2011
|
Posté le 22/08/2011 00:17 | | SYSTEME DE SURVEILLANCE |
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 et je pense que c'est à cause du mal programmation en language C, 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 en fichier joints. #include "16F876A.h" #DEVICE ADC=8 #fuses XT,NOWDT,NOPROTECT,NOCPD,NOLVP,PUT,BROWNOUT,NODEBUG #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); }
}
|
|
|
Revenir en haut | Permalien | |
|
Technologuepro
Administrator
Messages : 447 Inscrit(e) le: 15/11/2007
|
Posté le 22/08/2011 00:59 | | RE : SYSTEME DE SURVEILLANCE |
Bonjour, C'est quoi ton compilateur, j'arrive pas à ouvrir les fichier avec PICC alors que l'extension indique bien que c'est PICC
|
Le savoir est une chose qu'on peut pas cacher, la connaissance existe pour être transmise aux autres... |
|
|
Revenir en haut | Permalien | |
leaderphone
Newbie
Messages : 7 Inscrit(e) le: 20/08/2011
|
Posté le 22/08/2011 01:26 | | RE : SYSTEME DE SURVEILLANCE |
c'est le PIC C COMPILER
|
|
|
Revenir en haut | Permalien | |
Technologuepro
Administrator
Messages : 447 Inscrit(e) le: 15/11/2007
|
Posté le 22/08/2011 01:43 | | RE : SYSTEME DE SURVEILLANCE |
Quelle version ? en plus le fichier .hex ne correspond pas à la source .c ? c à d le programme que tu as écris ne donne pas la simulation exactement comme dans le ficher ISIS !
|
Edité par Technologuepro le 22/08/2011 02:53 |
Le savoir est une chose qu'on peut pas cacher, la connaissance existe pour être transmise aux autres... |
|
|
Revenir en haut | Permalien | |
leaderphone
Newbie
Messages : 7 Inscrit(e) le: 20/08/2011
|
Posté le 22/08/2011 01:54 | | RE : SYSTEME DE SURVEILLANCE |
IDE VERSION 3.40
|
|
|
Revenir en haut | Permalien | |
leaderphone
Newbie
Messages : 7 Inscrit(e) le: 20/08/2011
|
Posté le 22/08/2011 02:00 | | RE : SYSTEME DE SURVEILLANCE |
oui je sais, j'ai juste ajouté linstruction: setup_adc_ports( RA1_ANALOG ); aprés la dérniere compilation correcte sans l'entrée RA1
|
|
|
Revenir en haut | Permalien | |
Technologuepro
Administrator
Messages : 447 Inscrit(e) le: 15/11/2007
|
Posté le 22/08/2011 02:08 | | RE : SYSTEME DE SURVEILLANCE |
Ahhh ok, voila ton programme pour les deux entrées
Code :
#include "16F876A.h" #DEVICE ADC=8 #fuses XT,NOWDT,NOPROTECT,NOCPD,NOLVP,PUT,BROWNOUT,NODEBUG #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,v1,bar1, 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; v1 = 0; bar1 = 0;
port_b_pullups(FALSE);
setup_adc_ports( RA0_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(); set_adc_channel(1); delay_us(10); v1=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; set_adc_channel(1); delay_us(10); v1=read_adc(); if (v1 <= 51){bar1 = 0;}
else if (v1>51 && v1 <= 64){bar1 = 1;}
else if (v1> 64 && v1 <= 77){bar1 = 2;}
else if (v1> 77 && v1 <= 90){bar1 = 3;}
else if (v1> 90 && v1 <= 103){bar1 = 4;}
else if (v1> 103 && v1 <= 116){bar1 = 5;}
else if (v1> 116 && v1 <= 129){bar1 = 6;}
else if (v1> 129 && v1 <= 142){bar1 = 7;}
else if (v1> 142 && v1 <= 155){bar1 = 8;}
else if (v1> 155 && v1 <= 168){bar1 = 9;}
else if (v1> 168 && v1 <= 181){bar1 = 0x10;}
else if (v1> 181 && v1 <= 194){bar1 = 0x11;}
else if (v1> 194 && v1 <= 207){bar1 = 0x12;}
else if (v1> 207 && v1 <= 220){bar1 = 0x13;}
else if (v1> 220 && v1 <= 233){bar1 = 0x14;}
else if (v1> 233 && v1 <= 246){bar1 = 0x15;}
else if (v1> 246){bar1 = 0x16;}
PORTC = bar1; delay_ms(500); }
}
|
|
Le savoir est une chose qu'on peut pas cacher, la connaissance existe pour être transmise aux autres... |
|
|
Revenir en haut | Permalien | |
leaderphone
Newbie
Messages : 7 Inscrit(e) le: 20/08/2011
|
Posté le 22/08/2011 02:22 | | RE : SYSTEME DE SURVEILLANCE |
Grand merci monsieur ça marche bien, je demande si je peux te contacter ici prochainement, car je vais changer le pic en 16F877 vu que je vais utulisé d'autre sortie pour les buzzer d'alarme et les leds de clignottement ??
Encore maintenant je me demande aussi pourquoi les afficheurs affiche les valeurs de façon 2,4,6..., alors que si j'utulise une source de courant 4-20ma les valeurs sont biens affichés 1,2,3,4....
Merci encore
|
|
|
Revenir en haut | Permalien | |
Technologuepro
Administrator
Messages : 447 Inscrit(e) le: 15/11/2007
|
Posté le 22/08/2011 02:28 | | RE : SYSTEME DE SURVEILLANCE |
Pour l'affichage 2,4,6 c'est juste la résolution du potentiomètre de simulation dans ISIS donc c'est rien. Bienvenu sur technologuepro.com à tout moment
Alors à très bientôt
|
Le savoir est une chose qu'on peut pas cacher, la connaissance existe pour être transmise aux autres... |
|
|
Revenir en haut | Permalien | |
|