como interpretar los datos de un ADC0804 con un pic16f84 en picc

Hola que tal estoy haciendo un termometro digital con un lm35 hay muchos circuitos en internet los eh compilado y no me funcionan (ademas no me agrada hacer eso porque no aprendes nada) entonces estoy haciendolo desde 0, ademas intentare realizar proyectillos e irlos compartiendo con toda la comunidad explicados a fondo.

el problema que tengo es como puedo interpretar los datos del adc para convertirlos en decimales para mostrarlos en un lcd de 4 lineas de 20 caracteres WH2004A.

les agradesco su ayuda.
 
Hola, yo hice ese proyecto del termometro, pero sin pic, sino con pura lógica, pero en fin, mira sabes que tu ADC te botara el valor convertido, en 8 bits, para que lo trabajes al pic, debes hacer entrar esos 8bit por el puerto B, y en tu programa procesar esos valores e irlos mostrando en tu modulo LCD.

Saludos.
Cerebro
 
hola que tal ya se me ocurrio como hacerlo, cada entrada del puerto B la leo con un if y si es verdadero le asocio un valor a esa variable miren el codigo para que se den una idea mas completa:

PHP:
#include <16F84A.h>
#use delay(clock=4000000)
#fuses XT,NOWDT,NOPROTECT,PUT
#include <lcd420.c>
#define use_portb_lcd
#use fast_io(a)
#use fast_io(b)
#byte port_a=5
#byte port_b=6
int b0,b1,b2,b3,b4,b5,b6,b7,temp;
void main()
{
while (1)
{  
   
   set_tris_a(0x00);
   set_tris_b(0xff);
   
   output_low(40);
   delay_ms(20);
   output_high(40);
   delay_ms(20);
   output_low(40);
   delay_ms(20);
  if (input(49))
  {b0=1;}
  else
  {b0=0;}
  if (input(50))
  {b1=2;}
  else
  {b1=0;}
  if (input(51))
  {b2=4;}
  else
  {b2=0;}
  if (input(52))
  {b3=8;}
  else
  {b3=0;}
  if(input(53))
  {b4=1;}
  else
  {b4=0;}
  if (input(54))
  {b5=16;}
  else
  {b5=0;}
  if(input(55))
  {b6=32;}
  else
  {b6=0;}
  if(input(56))
  {b7=64;}
  else
  {b7=0;}
  temp=b0+b1+b2+b3+b4+b5+b6+b7;
 output_high(40);
   delay_ms(200);;
   
   set_tris_b(0x00);
   lcd_init();
   lcd_gotoxy(8,1);
   lcd_putc("UPVT");
   lcd_gotoxy(1,2);
   lcd_putc("Sensor digital");
   lcd_gotoxy(1,3);
   printf(lcd_putc,"Temperatura: %d",temp);
   delay_ms(100);
}
}

ahora lo unico que me falta es el hacer que el pic me genere los el reloj para el adc se me ocurre hacerlo de la siguiente manera:

for(i=0,i<x,i++)
{
output_high(43);
delay_ms(z);
output_low(43);
delay_ms(z);
}
explico el 43 corresponde al pueto A2
x y z son los valores que hay que ajustar para que nos de nuestra frecuencia de muestreo deseada seguire haciendo mis pruebas ya falta poco para compartirl ell proyecto con toda la cuminidad :D
 
Última edición por un moderador:
Hola, yo hice ese proyecto del termometro, pero sin pic, sino con pura lógica, pero en fin, mira sabes que tu ADC te botara el valor convertido, en 8 bits, para que lo trabajes al pic, debes hacer entrar esos 8bit por el puerto B, y en tu programa procesar esos valores e irlos mostrando en tu modulo LCD.

Saludos.
Cerebro

cerebro me podrias enviar tu digrama xfabor :) ese mismo proyecto lo estoy haciendo :) y es urgente xq es para mañana.
 
Hola, yo hice ese proyecto del termometro, pero sin pic, sino con pura lógica, pero en fin, mira sabes que tu ADC te botara el valor convertido, en 8 bits, para que lo trabajes al pic, debes hacer entrar esos 8bit por el puerto B, y en tu programa procesar esos valores e irlos mostrando en tu modulo LCD.

Saludos.
Cerebro

men soy de la UNPRG. me dejaron un trabajo parecido a este y no puedo usar pics para como lo haz hecho. ? me das un par de consejos porfavor.


Como no cumplo las políticas del foro, me editaron el mensaje.
 
Última edición por un moderador:
Atrás
Arriba