desktop

Desplegar la temperatura de un ds1624 en un LCD 16x2

Tengo que desplegar la temperatura de un ds1624 en un LCD 16x2
Pero como leeo la temperatura del sensor, ya conecte A0, A1 y A2 a tierra, SCA y SCD a los pines del pic y con una resistencia de 4.7k a5v

este es el codigo que tengo las dos partes:
esta parte es la parte donde configuro el pic
Código:
#include <18F4550.h>
#device ADC=16
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)

#use delay(crystal=20MHz)
#use i2c(Master,Fast,sda=PIN_B0,scl=PIN_B1)

Este es el programa que llevo:
Código:
#include <main.h>
#include <DS1624.C>
#include <LCD.C>
#define LCD_ENABLE_PIN PIN_D0
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7

void main()
{
   init();
   lcd_init();

   while(TRUE)
   {
   lcd_putc("/fTemperatura");
   delay_ms(100);
   init_temp();
   //Creo que aqui deberia ir printf y eso para desplegar la lectura
   }

}
...
 
Hola rienfega, Bienvenido al foro.

¿Podrías por favor subir el diagrama que estás utilizando?
 
Bien en principio veo 2 detalles:

Código:
#use i2c(Master,Fast,sda=PIN_B0,scl=PIN_B1)
El código dice que el PIN B0 será el de datos y el PIN B1 será el clock, en el diagrama veo que el pin de datos está en el PIN B2.

Y el otro detalle es que la conexión de dispositivos I²C usan resistencias Pull-Up, es decir, referenciadas al +5V y en el diagrama están a GND.

Omitiendo esto, CCS, tiene una librería dedicada a este sensor, aquí un ejemplo:

Código:
#include "16F877.h"
#fuses NOLVP,HS,NOWDT,NOPROTECT,PUT,NOBROWNOUT
#use delay (clock=20000000)
#use fast_io(B)

#include "LCD_4x20.C"
#include "DS1624.C"

void main(void){
   float temp;
   lcd_init();
   printf(lcd_putc,"\fTermometro DS1624\n");
   init_ds1624();
   while(1){
      init_temp();
      temp = read_temp();
      lcd_gotoxy(1,2);
      printf(lcd_putc,"%1.1fºC     ",temp);
      delay_ms(500);
   }
}

Espero te sea de ayuda. Saludos... :apreton:
 
en el 18F4550 RB0 es SDA y SCL es RB1, en el diagrama es el 16F88 en el me base para conectarlo, de igual forma conecte la LCD en el puerto D.

tenia dudas que variable era la que tenia que leer para poder escribir la temperatura usando la libreria ds1624.c

Mañana lo probare haber que pasa, gracias.
 
Atrás
Arriba