Hola buenas, yo 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; pero me gustaria añadirle un teclado matricial, pero no se la programacion, si alguien me puede ayudar...
#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