Si eso, perdón por no haberme expresado mejor.El micro tiene un rango de 0 a 5v. Copiaré el codigo que tengo actualmente:
#include <16f876.h>
#use delay(clock=4000000)
#fuses xt,nowdt,noput,nobrownout,nolvp,noprotect
#define use_portB_lcd TRUE //Para que las señales vallan al LCD por el puerto B
#include "lcd.c"
#use standard_io(B)
void main(void)
{
float entrada; // entrada es el valor analogico que entra al A/D
float salida; // salida es el valor que quiero se vea en el LCD
set_tris_A (0xFF); // Puerto A configurado como entrada
set_tris_B(0x00); //Puerto B configurado como salida
port_B_pullups(FALSE); // Desactivamos pull-ups del puerto B
lcd_init(); //Inicia LCD
lcd_putc("MEDIDOR DE CAMPO
"
; //Saca texto
lcd_putc(" MAGNETICO "
; //Saca texto
delay_ms(3000);
lcd_putc("f"
; //Limpia pantalla
lcd_putc(" CAMPO ACTUAL /n"
; //Saca texto
delay_ms(1000);
while (1)
{
setup_adc (adc_clock_div_32);
setup_adc_ports (RA0_ANALOG);
set_adc_channel (0); //Elige canal a medir RA0
delay_us (20);
entrada=read_adc(); //Capturamos señal analógica que entra por el canal previamente seleccionado (RA0)
setup_adc (adc_off); //Apaga ADC
salida=entrada*5/256; //Escalamiento
salida=salida*1000;
if ( salida < 176 )
{
lcd_gotoxy(9,2); //Acomoda cursor LCD
lcd_putc("OERSTED"
;
lcd_gotoxy(2,2); //Acomoda cursor LCD
lcd_putc(" "
; //Limpia ese sector de pantalla
lcd_gotoxy(2,2); //Acomoda cursor LCD
printf(lcd_putc,"%3.2f",salida); // Mostramos en el lcd el contenido de la variable "salida"
delay_ms(1000);
}
else
{
lcd_gotoxy(4,2); //Acomoda cursor LCD
lcd_putc("SATURACION"
;
}
}
}
Todo simulado con proteus, xq todavia no tengo el micro en mis manos, aunque espero que hasta dentro de poco.
El problema es que las medidas que muestra en el LCD no son exactas respecto a lo que meto en la entrada, por ejemplo para 50mv me muestra 39,06 en pantalla.
LA conexión de los pines es
// B0 enable
// B1 rs
// B2 rw
// B4 D4
// B5 D5
// B6 D6
// B7 D7
garcias por la colaboración