TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Carabobo1 en 26 de Julio de 2012, 17:32:48

Título: Termómetro
Publicado por: Carabobo1 en 26 de Julio de 2012, 17:32:48
#include <16F877A.h>
#device adc=10 //Usa resolución de 10 bits
#use delay(clock=4000000)
#fuses xt,nowdt,noput,nobrownout,nolvp,noprotect

#include "lcd.c"
#use standard_io (D)


void main (void)
{
float temper,medicion;

lcd_init();                //Inicia LCD
lcd_putc(" Termometro\n"); //Saca texto
lcd_putc(" con LM35");     //Saca texto
delay_ms(2000);
lcd_putc("\f");            //Limpia pantalla
lcd_putc("Temperatura\n"); //Saca texto
lcd_putc("actual");        //Saca texto
delay_ms(1000);
lcd_gotoxy(14,2);          //Acomoda cursor LCD
lcd_putc("oC");

while (1)
{

lcd_gotoxy(8,2); //Acomoda cursor LCD
lcd_putc(" ");   //Limpia ese sector de pantalla
lcd_gotoxy(8,2); //Acomoda cursor LCD


setup_adc (adc_clock_internal);

setup_adc_ports (all_analog);

set_adc_channel (0);   //Elige canal a medir RA0
delay_us (20);
medicion=read_adc ();  //Hace conversión AD
setup_adc (adc_off);   //Apaga ADC

temper=medicion*(0.48875); //Pasa binario a °C

//////////////////////////////////////////////////////////////////////////////////
// el "0.48875" sale de dividir 5/1023 y el resultado de eso multiplicarlo por 100
// el 5 sale de los 5 voltios aplicado a el voltage de referencia, los 1023 salen
// de los 10 bit de resolucion del conversor analogico digital que seleccionamos.
// Si utlizaramos la resolucion de 8 bist del conversor analogico digital, la
// formula fuera (5/255)*100 ya que con 8 bits el numero maximo posible es de 0-255
//////////////////////////////////////////////////////////////////////////////////

printf(lcd_putc,"%02.1f",temper); //xxx.x °C
delay_ms (1000);
}
}
Título: Re: Solicito Ayuda con este Programa
Publicado por: Diego E. en 26 de Julio de 2012, 18:13:48
Hola amigo, debes poner algo como esto luego de leer la temperatura.

if(temper > 30) {output_high(pin_b0)}
else {output_low(pin_b0)}

Saludos.
Título: Re: Solicito Ayuda con este Programa
Publicado por: PCCM en 26 de Julio de 2012, 18:19:34
solo aumentale un if despues de calculada la variable temper...

if(temper>=30)
       output_high (PIN_B0);
else
        output_low (PIN_B0);
Título: Termómetro
Publicado por: Carabobo1 en 26 de Julio de 2012, 22:49:17
if(temper > 30) {output_high(pin_b0)}
else {output_low(pin_b0)}

Saludos.
[/quote]

Hola Diego E. ¡ Gracias por haber respondido tan rápidamente !...
Título: Re: Solicito Ayuda con este Programa
Publicado por: Carabobo1 en 26 de Julio de 2012, 22:51:04
Gracias Amigo PCCM por tu Respuesta oportuna, ¡¡¡ ha sido de Gran Ayuda !!!!
Título: Termómetro
Publicado por: Carabobo1 en 14 de Agosto de 2012, 14:41:13
.