Tengo que hacer un proyecto para clase,e elegido hacer un termostato digital,porque pense que no era tan dificil,weno el primer problema lo tengo en la visualizacion de la temperatura que solo me aparecen numeros enteros y me gustaria visualizarlos con decimales.El programa de simulacion que uso es el proteus y el compilador que uso es el PICC,si alguien esta interesado en alguno de estos programas que me los diga que se los paso. weno el programa sería el siguiente:
#include <pic.h>
#include "LCD1.h"
#include <stdio.h>
#include "binario.h"
#include "retardo_20ms.h"
#include "pulsada.h"
// Para el PIC16F87x
__CONFIG(WDTDIS & XT & UNPROTECT & PWRTDIS & LVPDIS );
char k;
char z;
char vp1=0;
char vp2=0;
int vp=0;
unsigned int t1;
unsigned int t;
void PintaMensaje(unsigned int temp)
{
unsigned char i=0;
char M[16];
unsigned long t = (temp*500L)>>16;
LCD_Comando(LCDCasa);
sprintf(M,"T.A.= %7d C",(unsigned int)t);
while( M!=0 ) LCD_Caracter( M[i++] ); // Pinta
}
void PintaMensaje2()
{
unsigned char u=0;
char N[16];
if (k!=20)
LCD_Comando(LCDLinea2);
sprintf(N,"T.P.= %7d C",vp);
while ( N!=0) LCD_Caracter( N[u++]); // Pinta
}
void Retardo()
{
vp2=pulsada();
for (t=0; t<40; t++) //Temporizador 1seg
{
TMR0=61; //256-195
OPTION=0x07; //Configuramos el TMR0, con el prescaler 1:256 -> 111
T0IF = 0;
while (!T0IF);
}
}
void main()
{
z=k=0;
ADCON1 = B00000000; // PORTA anal´ogico, justif. a la izquierda
LCD_Port(); // Inicia los puertos
LCD_Reset(); // Inicia el LCD
while (1)
{
k=pulsada();
ADCON0 = B11000001;
ADIF = 0; // Borro indicador de fin de conversion
ADGO = 1; // Inicia la conversion AD
while(!ADIF);
t1=ADRESH<<8|ADRESL;
PintaMensaje(t1);
if (z!=k & k!=20)
{
vp1=pulsada();
//Retardo();
vp2=pulsada();
while (vp2 == vp1 | vp2 == 20)
{
vp2=pulsada();
}
vp1=vp1*10;
vp=vp1+vp2;
PintaMensaje2();
}
if (vp>t)
{
TRISC=TRISC & 0xEF;
RC3=0x01;
}
}
}
Les agraderia muxisimo que me ayudaran ya que llevo atascado aqui bastante tiempo.Gracias por adelantado!!!!!
Si alguien no entiende algo de mi programa se lo explicare encantado!