Autor Tema: Problema con lcd  (Leído 1927 veces)

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

Desconectado Delphus

  • PIC12
  • **
  • Mensajes: 70
Problema con lcd
« en: 25 de Octubre de 2011, 21:52:14 »
Hola, tengo un LCD referencia tc1602a-01t que creo que es Hitachi 44780 ya que al parecer la conexión es igual.  Para probarlo hice primero el típico "hola \n Mundo"

Código: [Seleccionar]
#include <16F88.h>
#FUSES INTRC, NOWDT, NOLVP, NOCPD, NOWRT, NODEBUG, NOPROTECT, NOFCMEN, NOIESO, MCLR, NOBROWNOUT, CCPB3
#use delay(clock=1000000)
#include <flex_lcd.c>
//#use fast_io(B)
#use fast_io(a)

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void main()
{
  setup_oscillator(OSC_1MHZ|OSC_INTRC); //pendiente
  lcd_init();
  while (true)
  {
    printf(lcd_putc,"Hola \n Mundo ");
  }
}

y solo me salían cuadritos negros en la parte de arriba, investigué y al final encontré que lo que debía hacer era bajarle la velocidad del pic, se le bajé de 4 a 1 MHz, volví a probar y ahí si salió el mensaje  :D.

Pero cuando quise probarlo con un proyecto más grande, bajándole la velocidad a 1 MHz, me sigue ocurriendo lo mismo de los cuadritos negros  :shock:.

Acá dejo el comienzo del programa ,lo demás no creo que sea importante pues el lcd no me  muestra ni siquiera el mensaje "Presione menu"

Código: [Seleccionar]
#include <16F88.h>
#FUSES INTRC, NOWDT, NOLVP, NOCPD, NOWRT, NODEBUG, NOPROTECT, NOFCMEN, NOIESO, MCLR, NOBROWNOUT, CCPB3
#use delay(clock=1000000)
#include <flex_lcd.c>
//#use fast_io(B)
#use fast_io(a)


static signed int sum1,sum2,res1,res2;
int uie,um,dm,uh,dh,ui,di,posic,posic2,hor1,hor2,min1,min2,seg1,seg2;
static long int ute1,ute2;
short pausa, menu;

int conv (long ute, int i);

    int conv (long ute, int i)
     {
      if (i==2)
         return (ute%3600-ute%60)/60; //min
      if (i==3)
         return (ute-ute%60-(ute%3600-ute%60))/3600;  //horas
     }
     
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void main()
{
  setup_oscillator(OSC_1MHZ|OSC_TIMER1);
  ute1=0; ute2=0;UIE=0 ; um=0; dm=0;uh=0;dh=0;ui=0;di=0;menu=1;posic=0;posic2=0; seg1=0;seg2=0;pausa=1;
   set_tris_a(0x01);
   set_tris_b(0x00);
   lcd_init();  lcd_gotoxy(1,1); lcd_putc("Bienvenido \n Presione menú");
   delay_ms(2000);
 
//////////////////////////////////////////////////////////////////////// 1 ///////////////////////////////////////////////////////////////////////
 
   while(true)
   {
        if ((input(pin_A0)) & (menu==1))  //BOTON DE MENU
           menu=0;  //queda como ok
     
/////////////////////////////////////////////////////////////// 2 /////////////////////////////////////////////////////////////////////////////

         if (input(pin_A0)& (menu==0))  //BOTON DE MENU  *********************
         {
            posic++; posic2=0;
            ute1=(um*60)+(dm*600)+(uh*3600);  //unidad tiempo establecido por el usuario en el menu para el primer jugador
            uie=ui+di*10;
            ute2=(um*60)+(dm*600)+(uh*3600);       //unidad de tiempo de incremento por jugada
            min1=conv(ute1,2);   
            min2=conv(ute2,2);
            hor1=conv(ute1,3);
            hor2=conv(ute2,3);
            delay_ms(200);
          }
//////////////////////////////////////////////////////////////// 3 //////////////////////////////////////////////////////////////////////////////
         
         if (((posic==1) | (posic==2))& (menu==0))
         {
            if (posic2==0)
               lcd_putc("\f");
            lcd_gotoxy(2,1);
            printf(lcd_putc,"minutos: %i%i",dm,um);
            //lcd_gotoxy(5,2);
            //printf(lcd_putc,"minutos  %i",posic);
            posic2=1;
         }
/////////////////////////////////////////////////////////////// 4 ///////////////////////////////////////////////////////////////////////////////
         if (posic==3 & (menu==0))
         {
            if (posic2==0)
               lcd_putc("\f");
            lcd_gotoxy(4,1);
            printf(lcd_putc,"horas: %i",uh);
            //lcd_gotoxy(7,2);
           // printf(lcd_putc,"horas  %i",posic);
            posic2=posic2+1;
         }


Gracias por su atención

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Problema con lcd
« Respuesta #1 en: 26 de Octubre de 2011, 15:11:25 »
¿Cómo tenés el encabezado de la librería para LCD?
¿Cuándo simulás en ISIS no arroja ningún mensaje?

  Yo he tenido problemas en ocasiones al dejar el pin RW directo a GND, porque al estar así hay que darle tiempo al LCD antes de mandar otra info para que la imprima.

  ¿Se puede configurar la librería para que use RW? De ser así, proba con ello.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado Delphus

  • PIC12
  • **
  • Mensajes: 70
Re: Problema con lcd
« Respuesta #2 en: 26 de Octubre de 2011, 15:33:49 »
Hola AngelGris, gracias por responder, efectivamente el pin RW lo tengo a GND, la librería que uso es la lcd_flex y la configuré para no usar RW, aquí abajo la adjunto, como dices si es por como conecté RW, entonces voy a probar conectando RW a RB1.
ya te comento, Gracias por tu tiempo.

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: Problema con lcd
« Respuesta #3 en: 26 de Octubre de 2011, 16:39:28 »
¿has probado a subir un poco los "delays" en la función de inicialización?
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado Delphus

  • PIC12
  • **
  • Mensajes: 70
Re: Problema con lcd
« Respuesta #4 en: 26 de Octubre de 2011, 17:34:15 »
Hola AngelGris y manwenwe, probé cambiando RW a RB1 y en un principio no funcionó, a la entrada del vcc del pic tenía una resistencia de 10 k, medí y estaban entrándole al pic 2.8v , cambié la resistencia y puse directo la conexión y funcionó... luego presioné el botón menú del programa y algo falló, luego el lcd no quiso encender.
Por el momento estoy viendo si alguna conexión está floja o es algo físico, estoy usando un regulador LM340T-5 con una batería de 9v que ahora mismo me está dando 7.7v.
Más tarde describo cómo me ha ido.
Gracias por su interés

Desconectado Delphus

  • PIC12
  • **
  • Mensajes: 70
Re: Problema con lcd
« Respuesta #5 en: 26 de Octubre de 2011, 22:04:25 »
Parece que lo que me está dando problemas es la batería que estoy usando pues se supone que es de 9v pero solo le quedan 7.4 v y segun sé, el regulador LM340T-5 como la mayoría , necesitan 3 v o más sobre el valor que necesitamos (5v) para funcionar correctamente. Así que tendré que esperar a mandar a pedir el regulador LDO (estoy apartado de la ciudad) para poder usar el cargador que tengo de 6.5v.

Pero por lo menos pude ver que el programa sí funcionó incluso reaccionó a las pulsaciones de los botones  :)  así que gracias a AngelGris por aportar su experiencia y a manwenme por su interés.
Que las vaya bien.

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Problema con lcd
« Respuesta #6 en: 26 de Octubre de 2011, 22:25:02 »
  Para bajar la tensión de esos 6.5V podés probar con sólo poner diodos en serie. Poné 3 diodos y probá a cuanto te queda la tensión. Si suponemos una caida de 0.6V por diodo, al PIC le deberían llegar los 6.5V - 1.8V = 4.7V
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado Delphus

  • PIC12
  • **
  • Mensajes: 70
Re: Problema con lcd
« Respuesta #7 en: 26 de Octubre de 2011, 22:38:17 »
Hola AngelGris, me sirven diodos led (son los que tengo a mano) o deben ser Zener?, sino, entonces probaré luego.
Saludos.

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Problema con lcd
« Respuesta #8 en: 26 de Octubre de 2011, 22:42:06 »
  No, yo me refería a diodos comunes tipo 1N4001.

  Si tenés zener de 5.7V y un transistor NPN tipo BD139 o TIP112 se podría armar un regulador con zener y transistor.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado Delphus

  • PIC12
  • **
  • Mensajes: 70
Re: Problema con lcd
« Respuesta #9 en: 26 de Octubre de 2011, 22:58:09 »
Ok, cuando tenga los componentes empiezo a probar  :mrgreen:
Nuevamente gracias.


 

anything