Este es el archivo fuente, por favor, por favor...
Gracias sabios:
#include <16F877A.h>
#device ADC=10
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,NOBROWNOUT
#id 0x0604
#use delay (clock=4000000)
#define RS pin_b0
#define ENABLE pin_b1
/*-----------DECLARACION DE VARIABLES----------*/
int dato;
int16 i;
int16 value;
const char temp[] = "TEMP: ";
/*----------INICIALIZACION DE VARIABLES Y REGISTROS----------*/
void STARTUP()
{
SET_TRIS_A(0b00111111);
SET_TRIS_B(0b11111100);
SET_TRIS_C(0b00000000);
Setup_adc_ports(AN0_AN1_VSS_VREF);
}
void LCD_control()
{
output_low(RS);
output_high(ENABLE);
output_c(dato);
delay_ms(3);
output_low(ENABLE);
output_c(0);
}
void LCD_Inicializa()
{
dato=0x02; /*CURSOR A CASA SIN BORRAR LA RAM*/
LCD_control();
dato=0x38; /*DISPLAY A 8 BITS Y 2 LINEAS*/
LCD_control();
dato=0x0C; /*ACTIVA DISPLAY*/
LCD_control();
dato=0x06; /*ACTIVA DISPLAY*/
LCD_control();
dato=0x01; /*CURSOR A CASA*/
LCD_control();
}
void LCD_dato()
{
output_high(RS);
output_high(ENABLE);
output_c(dato);
delay_ms(3);
output_low(ENABLE);
output_c(0);
}
void LCD_barrido()
{
dato=0x02;
LCD_control();
for(i=0;i<=20;i++)
{
dato=0XFF;
LCD_dato();
delay_ms(50);
}
dato=0x02;
LCD_control();
for(i=0;i<=20;i++)
{
dato=0xFE;
LCD_dato();
delay_ms(50);
}
}
void main()
{
STARTUP();
LCD_Inicializa();
LCD_barrido();
delay_ms(1000);
dato=0x01;
LCD_control();
for(i=0;i<=5;i++)
{
dato=temp;
LCD_dato();
}
while(1)
{
setup_adc(ADC_CLOCK_INTERNAL );
set_adc_channel(0);
value = read_adc();
setup_adc(ADC_OFF);
dato=value;
/*En este punto surge la inquietud.
Resulta que deseo realizar un escalado de unidades, es decir convertirlas a grados Centigrados y para ello
e debe realizar el escalado con la siguiente formula:
Valor con escala = (valor resultado ADC x régimen) + offset
donde:
Regimen=0,2443
Offset=0.15
SUPONGAMOS QUE EL VALOR DEL ADC ES: 120 (decimal), aplicando la formula tendremos
Valor con escala=29,166
La formula muchas veces arrojará un valor decimal como el anmterior, la inquietud nuevamente se presenta:
COMO HAGO PARA VISUALIZAR EL NUMERO 29.166 EN EL LCD.
Gracias POCHER y a todos los expertos en el tema que me puedan ayudar.
*/
}
}