Autor Tema: Termostato con pic16f876 (Duda en el teclado)  (Leído 1631 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado sancho25

  • PIC10
  • *
  • Mensajes: 12
Termostato con pic16f876 (Duda en el teclado)
« en: 08 de Febrero de 2012, 12:34:08 »
Hola buenas, he realizado el proyecto de un termostato donde la temperatura minima es de 20  y la maxima es de 25, estos parametros los cambio mediante el programa que es el siguiente:
#include <16f876A.h>
#device ADC=10

#fuses NOPROTECT,NOCPD,NOLVP,NOWDT,XT

#use fast_io (A)
#use fast_io (B)
//#use fast_io (C)
#use delay(clock=4000000)

#include <lcd2.c>
#include <ds1820.h>

float minimo=20;
float maximo=25;

void main()
{
   lcd_init();
   delay_ms(100);
   SETUP_ADC_PORTS(NO_ANALOGS);
   set_tris_a(0x3F);
   set_tris_b(0x00);
   
 
while (1)
{
   DS18S20_Convert_T();               //Obtiene la temperatura del DS18S20

   Temp=make16(DS18S20_Buffer[1],DS18S20_Buffer[0]);//Lee el valor de 16 bits de la temperatura
   if(bit_test(DS18S20_Buffer[1],7))      //Si es negativo...
      {
      Temp=~Temp+1;                  //Complementa a 2
      Temperatura=Temp*-0.5;            //Ajusta la parte fracionaria
      }   
   else
      Temperatura=Temp*0.5;            //Ajusta la parte fraccionaria
     
   lcd_enviar(LCD_COMANDO,LCD_CLEAR);
   lcd_gotoxy(1,1);
   printf(lcd_putc,"TEMP: %3.1f ", temperatura);
   lcd_putc(223);
   lcd_putc("C    ");
   lcd_gotoxy(1,2);
   
   if (temperatura<=minimo)
      {
         printf(lcd_putc,"Frio! Calentando");
         output_high(PIN_C5);
         output_low(PIN_C6);
         output_low(PIN_C7);
      }
   else if (temperatura>=maximo)
      {
         printf(lcd_putc,"Caliente!Enfriar");
         output_low(PIN_C5);
         output_high(PIN_C6);
         output_low(PIN_C7);
         
      }
   else
      {
         printf(lcd_putc,"Temperatura OK  ");
         output_low(PIN_C5);
         output_low(PIN_C6);
         output_high(PIN_C7);
      }
}
}
FIN

Me interesaria poder regular esos parametros desde un teclado, pero es que no tengo ni idea de como hacerlo... necesito ayuda, os lo agradezco mucho


 

anything