Está en la página 1de 3

#include <18f4550.

h>
#device adc=10
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#INCLUDE <LCD.c>
#byte porta=0xF80
#byte portb=0xF81
#define US1_TRIGGER PIN_B1
#define US1_ECHO PIN_B0
int
Mod16[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x
79,0x71};
int i;
int LecturaADC=0;
float temperatura=0;

void iniciar(){
set_tris_a(0x20);
set_tris_b(0x80);
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(PIN_A5);
set_adc_channel(4);
output_b(0);
output_low(PIN_C0);
output_high(pin_d3);
lcd_init();
}

void primeralinea(){
lcd_gotoxy(1,1);
printf(lcd_putc, "Temperatura:");
}

void leds(){
output_low(PIN_E1);
output_low(PIN_E2);
output_low(PIN_C2);
output_high(PIN_E0);
}

void display(){
output_low(PIN_E0);
portb=0x00;
output_low(PIN_E1);
output_low(PIN_C2);
output_low(PIN_E2);

output_high(PIN_E2);
output_high(PIN_B2);
output_low(PIN_E2);
delay_ms(5);
}

void mide_temperatura(){
primeralinea();
LecturaADC=read_adc();
temperatura=LecturaADC*0.004887585;
temperatura=temperatura*100;
delay_us(50);

lcd_gotoxy(1,2);
printf(lcd_putc, "%2.2f oC", temperatura);
delay_ms(50);

if((temperatura>=38 && temperatura<=39)||(temperatura>=41 && temperatura<=42)){


display();
output_high(PIN_E1);
output_low(PIN_E0);
for(i=0;i<=15;i++){
portb=Mod16[i];
delay_ms(300);
}
portb=0;
}
else{
portb=0;
output_low(PIN_E1);
output_low(PIN_E2);
output_low(PIN_C2);
output_low(PIN_E0);
}
}

int16 mide_distancia(void){
int16 centimetros=0;
output_high(US1_TRIGGER);
delay_us(50);
output_low(US1_TRIGGER);
while(~input(US1_ECHO)){}
while(input(US1_ECHO)){
centimetros++;
delay_us(51);
}
delay_ms(50);
return (centimetros);
}

void main( void ){


int16 distancia;
iniciar();

while (TRUE){
if(portb==0x80){
mide_temperatura();
}
else{
leds();
distancia=mide_distancia();
if(distancia>=15 && distancia<=20){
leds();
output_low(PIN_B2);
output_low(PIN_B3);
output_low(PIN_B4);
output_low(PIN_B5);
output_high(PIN_B6);
}
else if(distancia>=25 && distancia<=30){
leds();
output_low(PIN_B2);
output_low(PIN_B3);
output_low(PIN_B4);
output_high(PIN_B5);
output_low(PIN_B6);
}
else{
leds();
portb=0;
}
}
}
}

También podría gustarte