#include <18f4550.h>
#device adc=10
#use delay(clock=4M)
#fuses XT,NOWDT
#define D0 enable
#define D1 rs
#define D2 rw
#define D4 D4
#define D5 D5
#define D6 D6
#define D7 D7
#include <lcd4202.c>
#include <KBD1.c>
void main()
{
int16 q;
float T;
int humedad;
char k;
int hmin;
int hmax;
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
lcd_init();
kbd_init();
port_b_pullups(TRUE);
menu:
printf(lcd_putc,"\f Tipo de planta:");
k=0;
while(K==0)
{
k=kbd_getc();
switch (k)
{
case '1':
hmin=60;
hmax=80;
break;
case '2':
hmin=45;
hmax=80;
break;
case '3':
hmin=20;
hmax=30;
break;
}
}
principal:
while(true)
{
k=kbd_getc();
set_adc_channel(0);
delay_us(20);
q=read_adc();
T=5.0*q/1024;
humedad=(100*T)/5;
lcd_gotoxy(1,1);
printf(lcd_putc, "Humedad = %3d%% ", humedad);
lcd_gotoxy(1,3);
printf(lcd_putc,"H.Min:%2d%%H.Max:%2d%%",hmin,hmax );
k=kbd_getc();
if (k=='A'){
goto menu;
}
if(humedad <= hmin)
{
lcd_gotoxy(1,2);
printf(lcd_putc,"bomba on ");
}
else if(humedad >= hmax )
{
lcd_gotoxy(1,2);
printf (lcd_putc,"bomba off ");
}
}
}