Autor Tema: Problema con lcd en pic16f628a  (Leído 1652 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado rabinator

  • PIC10
  • *
  • Mensajes: 1
Problema con lcd en pic16f628a
« en: 31 de Enero de 2014, 05:48:00 »
Código: [Seleccionar]
[code]Hola que tal, recurro a ustedes por un problema que que me surgio.
El código se compila sin problemas en el mplab, pero a la hora de simular el circuito en Proteus el lcd no muestra nada.
Intente ponerle un delay para que el lcd se inicie pero sigue igual.
Arme el circuito en protoboard y el lcd me muestra (en sus dos líneas) cuadrados negros.
Aquí el código :


#include   <pic.h>
#include   <string.h>
#include    <stdlib.h>
#include    "delay.c"
#include    "DS1wire.c"
#include    "lcd.c"

__CONFIG(0x3F70);

#define INPUT   1
#define OUTPUT   0
#define TRUE   1
#define FALSE    0


void startup();
void largedelay();



char p[7];
volatile unsigned char TM,TL;
unsigned char numROMs;
unsigned char FoundROM[MAX_SENSORS][8]; // table of found ROM codes


//main function
void main(void)
{   
   unsigned char x,y;
   unsigned int temp_i;
   GIE = 0;
    PEIE = 0;
   TRISB = 0b00000001;    // first 4 outputs rest inputs
   CMCON = 0b00000111;      // disable comparators
   TRISA = 0b00000011;      // 2,3 outputs rest inputs
   PORTA = 0x00;
   lcd_init();
   startup();

   while(1)
   {   
      D_Reset();
      FindDevices();
      for(x=0;x<numROMs;x++)
      {
         read_one(x);
         lcd_clear();
         lcd_goto(4);
         lcd_puts("Zone ");      
         long_to_string((x+1), p, 2);
         lcd_puts(p);

         // sheer height of laziness, format changed to DS1631 as I had used that before
         TM = TM << 4;
         y = (TL >> 4)& 0b00001111;
         TM = (TM & 0b11110000) | y;
         TL = TL & 0b00001111;

         lcd_goto(0x40);
         if(TM & 0b10000000)
         {
            lcd_puts("Temp:-");
            TM=(TM^0xFF);   
            TL=((TL^0xFF)+1)&0b00001111;
         }
         else
         {
            lcd_puts("Temp:+");
         }
         long_to_string (TM, p, 3);
         lcd_puts(p);
         lcd_puts(".");
         temp_i=(int)TL;
         temp_i=temp_i* 625;
         long_to_string_lz(temp_i, p, 4);
         lcd_puts(p);
         lcd_putch(0b11011111);   // Centigrade character
         lcd_puts("c");   
         largedelay();
         largedelay();
      }
   }
}




void startup()
{
   lcd_clear();
   lcd_puts(" DS18B20 Sensor ");
   lcd_goto(0x40);
   lcd_puts(" Chain   Project");
   largedelay();
}   

void largedelay()
{
   DelayMs(250);
   DelayMs(250);
   DelayMs(250);
   DelayMs(250);
}   



[/code]

y el circuito:



No se que mas probar, en proteus el pic se comunica con los sensores pero no parece haber interaccion con el lcd.
Desde ya gracias.

Desconectado Juan-Pablo

  • PIC10
  • *
  • Mensajes: 15
Re: Problema con lcd en pic16f628a
« Respuesta #1 en: 08 de Febrero de 2014, 15:06:48 »
Te podría ayudar si pusieses el código de la librería lcd.c, es posible que use el pin R/W.

Desconectado thegame

  • PIC18
  • ****
  • Mensajes: 439
    • Mcu Tronics
Re: Problema con lcd en pic16f628a
« Respuesta #2 en: 21 de Febrero de 2014, 20:39:29 »
No esta inicializando, checa que fisicamente este todo bien conectado, y la rutina de inicializacion.

saludos.
Nunca se deja de aprender