1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
|
float niv_bac1;
float niv_bac2;
unsigned char i,j;
float niveaux[8] = {127, 255, 383, 511, 639, 777, 895, 1023};
sbit LCD_RS at RD1_bit ;
sbit LCD_EN at RD0_bit ;
sbit LCD_D4 at RD4_bit ;
sbit LCD_D5 at RD5_bit ;
sbit LCD_D6 at RD6_bit ;
sbit LCD_D7 at RD7_bit ;
sbit LCD_RS_Direction at TRISD1_bit ;
sbit LCD_EN_Direction at TRISD0_bit ;
sbit LCD_D4_Direction at TRISD4_bit ;
sbit LCD_D5_Direction at TRISD5_bit ;
sbit LCD_D6_Direction at TRISD6_bit ;
sbit LCD_D7_Direction at TRISD7_bit ;
char niveau1[4];
char niveau2[4];
unsigned char VnDuNiveau(float val) {
unsigned char i = 0;
while (i <= sizeof(niveaux)) {
if (val <= niveaux[i])
return i;
else i++;
}
}
void initialisation(){
TRISA = 0xFF; // programmtion du PORTA en entrée
TRISB = 0; // programmtion du PORTB en sortie
TRISC = 0; // programmtion du PORTC en sortie
TRISD = 0; // programmtion du PORTD en sortie
OPTION_REG.NOT_RBPU = 0;
lcd_init() ;
lcd_cmd(_lcd_clear) ;
lcd_cmd(_lcd_cursor_off) ;
lcd_out(1,1,"Bac1: ") ;
lcd_out(2,1,"Bac2: ") ;
adc_init() ;
portd=0X00 ;
}
void main() {
initialisation() ;
OPTION_REG.NOT_RBPU = 0;
do {
adcon0=0x80;
niv_bac1= Adc_Read(0); // lecture du niveau de fluide du bac1
j= VnDuNiveau(niv_bac1);
switch ( j ) {
case 0:
// Code
portB = 0x00;
break;
case 1:
// Code
portB = 0x01;
break;
case 2:
// Code
portB = 0x03;
break;
case 3:
// Code
portB = 0x07;
break;
case 4:
// Code
portB = 0x0F;
break;
case 5:
// Code
portB = 0x1F;
break;
case 6:
// Code
portB = 0x3F;
break;
case 7:
// Code
portB = 0x7F;
break;
case 8:
// Code
portB = 0xFF;
break;
}
floattostr(niv_bac1,niveau1) ;
lcd_out(1,6,niveau1) ;
adcon0=0x88;
niv_bac2= Adc_Read(1); // lecture du niveau de fluide du bac2
j= VnDuNiveau(niv_bac2);
switch ( j ) {
case 0:
// Code
portC = 0x00;
break;
case 1:
// Code
portC = 0x01;
break;
case 2:
// Code
portC = 0x03;
break;
case 3:
// Code
portC = 0x07;
break;
case 4:
// Code
portC = 0x0F;
break;
case 5:
// Code
portC = 0x1F;
break;
case 6:
// Code
portC = 0x3F;
break;
case 7:
// Code
portC = 0x7F;
break;
case 8:
// Code
portC = 0xFF;
break;
}
floattostr(niv_Bac2,niveau2) ;
lcd_out(2,6,niveau2) ;
} while(1);
} |