TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: sebastian 100 en 21 de Agosto de 2009, 02:55:24

Título: Como inicializar LCD Winstar 1602??
Publicado por: sebastian 100 en 21 de Agosto de 2009, 02:55:24
hola,

hace dias estoy luchando con este LCD y no consigo sacar nada por pantalla, estoy programando en C con CCS, y el problema que tengo es que no se inicializa el lcd, quedan todos los puntos negros, tengo un pote para regular contraste, y no parece venir por ahi...

el programa corre bien, lo se porque hay pulsadores, leds y un LM35, conectados y realizan correctamente sus funciones, ademas con un led noté que en el puerto del LCD hay actividad!!!

este LCD tiene un controlador KS0066 (creo que samsumg), y segun el DS (y decenas de foros y paginas), son compatibles con los hitachi (44780),
pero note que la forma de iniciarlos son distintas,

probe librerias de todo tipo y color y nada de nada!! busque mucho y nadie habla de esta marca ni de este controlador.
ademas intente modificar las librerias y tampoco, recien estoy empezando y me cuesta bastante entender la sintaxis de programas hechos por otros.

el circuito lo simule en proteus y funciona OK.
la libreria que intento modificar es lcd_flex.c que la encontre en algun rincon de todopic.

adjunto una imagen con la secuencia de inicializacion.
es micro que estoy usando es un 16f877a

gracias por leer, saludos!!

 
Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: MGLSOFT en 21 de Agosto de 2009, 08:22:50
Podras poner una imagen de tu circuito ??
Usas o no el pin RW??
Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: sebastian 100 en 21 de Agosto de 2009, 08:51:22
hola, gracias por responder

adjunto foto, la simulacion en proteus funciona ok, con y sin RW, ademas para probar probe otras librerias modificando los pines y tambien sacandoRW,
  en la pc esta todo bien, pero cuando paso al protoboard,  :?

saludos
Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: MGLSOFT en 21 de Agosto de 2009, 09:16:50
Reemplaza todos los delay_cycles() de la libreria por delay_us().
Todas las librerias de CCS tienen ese defecto, estan creadas para usarlas con cristales de 4MHZ y si las usas con otro cristal cambian los tiempos.

Un ciclo con reloj de 4 MHZ es igual a 1 useg.
Si cambias de reloj, ese tiempo se achica.
En cambio si usas la instruccion delay_us() siempre seran microsegundos, independientemente del cristal utilizado. :mrgreen: :mrgreen: :mrgreen: :mrgreen:
Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: mtristan en 21 de Agosto de 2009, 10:38:24
.

Me siento muy identificaco con tu problema. Cuando empezé con los LCDs el primero que compré fue un Winstar WHB1602 y casi lo tiro a la basura por creer que no funcionaba.
En sí, creo que las rutinas para mandar caracteres e instrucciones a los LCDs son todas iguales, lo que sí puede diferir es su inicialización, que es lo que me pasaba a mí. Para el KS0066 la inicialización es así:

- Esperar unos 50 ms (no lo indica en el datashet del controlador, pero lo leí por ahí y siempre funcionó),
- Mandar la instrucción '0011NF00' (N: número de líneas, F: formato del caracter),
- Esperar unos 45 us,
- Mandar la instrucción '00001DCB' (D: display on/off, C: cursor on/off, B: cursor blink on/off),
- Esperar 45 us,
- Mandar la instrucción '00000001' (Clear display)
- Esperar 2 ms,
- Mandar la instrucción '000001(I/D)(SH)' (I/D: incremento/decremento del cursor, SH: shift on/off,
- Esperar 45 us.

Listo, el LCD debería funcionar normalmente después de haber seguido estos pasos. Te adjunto la biblioteca (también llamada librería) que uso, pero en asm... No se muy bien como es el C, pero espero que te sirva.
Antes de tirarlo a la basura, avisame, que tal vez sirva.
Saludos.

Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: mtristan en 21 de Agosto de 2009, 14:06:17
.

Me olvidaba de decirte que quizá no puedas leer la bandera del LCD (busy flag) entre las instrucciones de la inicialización. Por eso probá primero generando los retardos que ahí te menciono por software entre tales instrucciones.

Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: sebastian 100 en 21 de Agosto de 2009, 22:16:34
hola, aca de vuelta

sabes que anteriormente hice un programa de prueba en asembler con un mensaje y funciona ok, me resultó facil adaptar los tiempos y comandos para este LCD,
el tema que tengo ahora es que estoy programndo en C, y nesecito que la comunicacion sea a 4 bits, por eso insisto con esta libreria

no entiendo porque en esta libreria en la funcion lcd_init() se usa lcd_send_nibble() y despues lcd_send_byte(), ambas para enviar instrucciones al lcd,

probe varias formas de modificar esta funcion para respetar las intrucciones y tiempo que nesecita este micro, pero he fallado en todas.

la verdad que ya estoy pensando en tirarlo a la basura.

ahora algunas preguntas!
estoy en buen camino tratando de modificar esta libreria??
lo tiro a la basura o sigo invirtiendo neuronas?

saludos gente, sepanlo SON GROSOS!!
Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: MGLSOFT en 22 de Agosto de 2009, 07:52:23
Probaste cambiar los delay_cycles() po delay_us() ??? :shock: :shock:
Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: sebastian 100 en 22 de Agosto de 2009, 12:56:32
si ya cambie los delay_cicles y no pasa nada, ademas probe con otras librerias y en proteus funcionan ok, yo estoy casi seguro que es como dice mtristan que es un tema de inicializacion,

cuando le cargaba el programa que habia hecho en asm y no funcionaba me aparecia toda la primer linea negra, despues que le modifique los tiempos en la parte de inicializacion, aunque no escribiera nada
ya no aparecia todo negro, y cuando le mandaba un texto lo mostraba perfectamente.

cabe aclarar que en asm manejaba el bus con 8 bits, ahora el tema es en C con 4 bits

me rompi el coco tratando de pasar el codigo que me paso mtristan (la parte que dice inicia a 4 bits) al CCS y tampoco funciona.

tampoco entiendo bien la mecanica del traspaso de datos a 4 bit, ahora estoy investigando esto a ver si puedo hacer la inicializacion yo mismo,

muchas gracias gente
Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: Suky en 22 de Agosto de 2009, 13:43:15
Adjunta el código en asm que tienes y que sabes que funciona, haber si con ese se puede modificar el flex_lcd.

Luego en flex_lcd, primero se envía send_nible porque este no hace el testeo de estado del LCD, cosa que hace send_byte.

Saludos!
Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: mtristan en 23 de Agosto de 2009, 22:43:44
.

Jeje, tengo que ser sincero, ese pedazo de inicialización para 4 bits no funciona en realidad. Y como todavía no he intentado usar el LCD en modo 4 bits, dejé eso escrito para modificarlo en otro momento. Mil disculpas por las molestias que te pudieras haber generado.

Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: sebastian 100 en 23 de Agosto de 2009, 23:45:26
buenas...
este es el codigo en asm que me funciona a 8 bit, vean en la linea 190 mas o menos que esta  LCD_INI y ahi es donde cambie las cosas segun el DS de mi LCD, y listo salio con fritas.


ahora sigo intentando en ccs y no doy pie con bola!!!! :5]

mtristan, no hay problema, esto para mi (por ahora) es un hobby y quiero aprender todo lo que pueda y cuando hay que hilar fino, comprendes cosas que de otra forma pasas por alto,

de todas formas, ya le vamo´ a dar a esta maldita pantalla!!!
Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: Suky en 24 de Agosto de 2009, 01:40:25
Prueba utilizando esta rutina para la inicialización:

Código: C
  1. void lcd_init(void)
  2. {
  3.   int8 i;
  4.  
  5.   output_low(LCD_RS);
  6.   #ifdef USE_LCD_RW
  7.      output_low(LCD_RW);
  8.   #endif
  9.   output_low(LCD_E);
  10.   delay_ms(30);
  11.   lcd_send_nibble(0x02);
  12.   lcd_send_nibble(0x02);
  13.   lcd_send_nibble(0x0C);
  14.   delay_us(60);
  15.   lcd_send_nibble(0x00);
  16.   lcd_send_nibble(0x0C);
  17.   delay_us(60);
  18.   lcd_send_nibble(0x00);
  19.   lcd_send_nibble(0x01);
  20.   delay_ms(2);
  21.   lcd_send_nibble(0x00);
  22.   lcd_send_nibble(0x06);
  23. }

Saludos!
Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: mtristan en 24 de Agosto de 2009, 16:13:06
.

Este tema del foro me ha inspirado para seguir con la bibioteca/librería para LCD a 4 bits.
Así que adjunto a este mensaje el archivo asm con las rutinas básicas (más adelante las completaré) para usar un módulo LCD con controlador KS0066 (creo que toda la línea Winstar WHxx02 usa el mismo) en modo 4 bits, probado con un WH1602.
Espero que sirva esta vez.
Saludos.

Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: flacoclau en 24 de Agosto de 2009, 20:59:02
este es el que uso yo: saludos!!
Código: ASM
  1. inicializa_lcd        MOVLW    .5                           ;carga el tiempo de retardo en w
  2.                       CALL    tiempo_w_x_1_ms              ;llama a la subrutina de retardo
  3.                       MOVLW    b'00101000'                  ;inicializa el LCD
  4.                       CALL    lcd_comando                  ;datos a 4 bits(b4=0) 2 renglones(b3=1)
  5.                       MOVLW    b'00101000'                  ;5x7 pixels(b2=0) b1 y b0 no usados
  6.                       CALL    lcd_comando                  ;envía el comando dos veces
  7.                       MOVLW    b'00001100'                  ;activa el display(b2=1) cursor apagado(b1=0)
  8.                       CALL    lcd_comando                  ;parpadeo desactivado (b0=0)
  9.                       MOVLW    b'00000001'                  ;coloca el cursor en la 1º posición 1º renglón h00
  10.                       CALL    lcd_comando                  ;y limpia la pantalla
  11.  
  12. lcd_caracter          BSF      RS                           ;Si es un caracter pone en alto el pin RS del display
  13. lcd_comando           MOVWF    Dato_LCD,0                   ;Salva el dato a enviar al LCD
  14.                       MOVLW    0x0F
  15.                       ANDWF    LCD_Port,F,0                 ;Limpia el Nible alto del puerto
  16.                       MOVLW    0xF0
  17.                       ANDWF    Dato_LCD,W,0                 ;Limpia el Nible Bajo del dato y lo guarda en W
  18.                       IORWF    LCD_Port,F,0                 ;Saca ese Nible por el puerto
  19.                       BSF      E                            ;Habilita el Enable
  20.                       BCF      E                            ;Deshabilita el Enable
  21.  
  22.                       MOVLW    0x0F
  23.                       ANDWF    LCD_Port,F,0                 ;Limpia el Nible alto del puerto
  24.                       SWAPF    Dato_LCD,W,0                 ;Limpia el Nible Alto del dato y lo guarda en W
  25.                       ANDLW    0xF0
  26.                       IORWF    LCD_Port,F,0                 ;Saca ese Nible por el puerto
  27.                       BSF      E                            ;Habilita el Enable
  28.                       BCF      E                            ;Deshabilita el Enable
  29.  
  30.                       BCF      RS                           ;Pone en bajo el pin RS
  31.                       MOVLW    .2                           ;Espera 2mS
  32.                       CALL    tiempo_w_x_1_ms
  33.                       MOVF     Dato_LCD,W,0                 ;Recupera el dato en W
  34.                       RETURN
Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: sebastian 100 en 24 de Agosto de 2009, 23:12:52
gracias por colaborar en mi causa,
Suky: ya habia probado con algo asi pero los tiempos un poco mas grandes, las instrucciones las mismas, y no funcionó, por las dudas pegué el mismo codigo que me sugeris y tampoco.

ante tanta duda, el ejemplo que puse antes en asm, lo habia probado hace unos meses, y pense que se habia roto el
LCD, pero lo probé ayer de vuelta y anda de primera.

diganme si estoy en lo correcto.. al igual que la sugerencia de suki, estoy tratando de cambiar solo la parte de LCD_INIT(), esta bien o tengo que adaptar otra parte de la libreria??

ya no se que mas dar vuelta!
Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: sebastian 100 en 28 de Agosto de 2009, 01:04:38
perdonen que refloto este post que ya esta casi agotado, pero no puedo hacer funcionar el lcd con programas en CCS

nadie tiene una libreria que funcione con este controlador (KS0066), realmente probe mil formas de implementar el codigo en asm que me funciona, y en todas me falló. agregue delays, los saque, agregue funciones, y tambien saque, probe insertanto pedazos de codigo #asm #endasm y nada!! :cry: :cry: :cry: :cry:

puede ser que este lcd este roto o algo asi y que no admita la configuracion a cuatro bits??

ya agote todas mis posibilidades, espero que alguien me pueda dar una mano. obviamente no es un reclamo, en este foro siempre me ayudaron y realmente mucho.
desde ya muchas gracias!!,
Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: mtristan en 28 de Agosto de 2009, 12:37:34
.

Justo ahora tengo un Winstar 1602 conectado al protoboard. ¿Tenés algún 16F628 o un 16F84? Si querés te paso un programa de prueba para el LCD en 4 bits ya compilado, así sabés si el LCD anda o no. (Menciono las primeras opciones porque son los únicos pics que tengo por ahora, así puedo verificar si el programa funciona antes de pasártelo).

Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: sebastian 100 en 28 de Agosto de 2009, 13:20:43
hola

si pasamelo por favor, si funciona empiezo todo de vuelta desde cero, gracias
tengo un 16f628A y un 16f84A
Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: sebastian 100 en 29 de Agosto de 2009, 03:12:42
acá sigo...
por favor echenle un vistazo a este programa, esta en la zona de descargas de la pagina oficial de winstar, lamentablemente escrito en asm para un motorola(CREO), pero vean la inicializacion no tiene nada que ver con lo que dice la hoja de datos :shock: :shock: :shock:

inicializacion en 4 bit (http://www.winstar.com.tw/UserFiles/downloads/12010777450590307315.txt)

y bueno no solo no encuentro nada, ademas todo lo que pruebo tampoco funciona!!

Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: sebastian 100 en 21 de Diciembre de 2009, 16:20:10
Hola gente...

estoy de vuelta para contar buenas noticias, me compre otro lcd que segun el datasheet tenia un controlador hitachi.... pero no!!! era tambien un  :5] :5] :5] ks0066 :5] :5] :5]

entonces empece todo de vuelta, lo que me hizo prender la lamparita fue un pdf aportado por el amigo Cryn (http://www.4shared.com/file/45432416/6c16fcd/lcd1.html), lastima
que esta en ingles (yo cero ingles)  pero esta muy bueno para aprender a manejar estas pantallas.

bueno,, no se enojen conmigo, pero nunca funciono por un falso contacto en una de las patas de datos, la verdad crei que habia descartado correctamente estas cosas.....
perdi muchas neuronas con el tema pero ya esta en marcha. :-/ :-/ :-/

la rutina correcta, ahora que veo este post de vuelta, el la que me apunto Suky, funciona perfectamente. ;-)

bueno les mando un abrazo, y espero que le sirva a alguien mas.

seba
Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: Guido_BHM en 13 de Marzo de 2012, 18:32:51
Hola, tengo un problema con este LCD
Estoy programando un 16F873a en CCS y no logro hacer nada
soy nuevo en estos micros y en este lenguaje, siempre programe motorola en assembler

Me gustaria q me den una mano con esto, lei este post y otros q aparecieron, modifique las librerias, cambie los delay_cycle x los delay_us y demas
no logre nada, en el LCD no se ve nada
supongo q no capte como es q se tienen q hacer estos cambios correctamente

aca les dejo los codigos:

#include <16f873a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=4000000)

#include "flex_lcd_1.c"


void main()
{
lcd_init();
  printf(lcd_putc,"hola mundo");
}


-------------------------------------------------------------------------------------------------------------------------
y este es la libreria Flex_lcd modificada, le puse el init_lcd() q mostraron mas atras



// flex_lcd.c

#define LCD_DB4   PIN_B4
#define LCD_DB5   PIN_B5
#define LCD_DB6   PIN_B6
#define LCD_DB7   PIN_B7

#define LCD_RS    PIN_B1
#define LCD_RW    PIN_B2
#define LCD_E     PIN_B0

// If you only want a 6-pin interface to your LCD, then
// connect the R/W pin on the LCD to ground, and comment
// out the following line.

#define USE_LCD_RW 1

//========================================

#define lcd_type 2 // 0=5x7, 1=5x10, 2=2 lines
#define lcd_line_two 0x40 // LCD RAM address for the 2nd line

int8 const LCD_INIT_STRING[4] =
{
  0x20 | (lcd_type << 2), // Func set: 4-bit, 2 lines, 5x8 dots
  0xc, // Display on
  1, // Clear display
  6 // Increment cursor
};


//-------------------------------------

void lcd_send_nibble(int8 nibble)
{
  // Note: !! converts an integer expression
  // to a boolean (1 or 0).
  output_bit(LCD_DB4, !!(nibble & 1));
  output_bit(LCD_DB5, !!(nibble & 2));
  output_bit(LCD_DB6, !!(nibble & 4));
  output_bit(LCD_DB7, !!(nibble & 8));

  delay_us(1);                //MOD
  output_high(LCD_E);
  delay_us(2);// 2us MOD
  output_low(LCD_E);
}

//-----------------------------------
// This sub-routine is only called by lcd_read_byte().
// It's not a stand-alone routine. For example, the
// R/W signal is set high by lcd_read_byte() before
// this routine is called.

#ifdef USE_LCD_RW
int8 lcd_read_nibble(void)
{
  int8 retval;
  // Create bit variables so that we can easily set
  // individual bits in the retval variable.
  #bit retval_0 = retval.0
  #bit retval_1 = retval.1
  #bit retval_2 = retval.2
  #bit retval_3 = retval.3

  retval = 0;

  output_high(LCD_E);
  delay_us(1);             //MOD

  retval_0 = input(LCD_DB4);
  retval_1 = input(LCD_DB5);
  retval_2 = input(LCD_DB6);
  retval_3 = input(LCD_DB7);

  output_low(LCD_E);

  return(retval);
}
#endif

//---------------------------------------
// Read a byte from the LCD and return it.

#ifdef USE_LCD_RW
int8 lcd_read_byte(void)
{
  int8 low;
  int8 high;

  output_high(LCD_RW);
  delay_us(1);             //MOD

  high = lcd_read_nibble();

  low = lcd_read_nibble();

  return( (high<<4) | low);
}
#endif

//----------------------------------------
// Send a byte to the LCD.

void lcd_send_byte(int8 address, int8 n)
{
  output_low(LCD_RS);

#ifdef USE_LCD_RW
while(bit_test(lcd_read_byte(),7)) ;
#else
delay_us(60);
#endif

  if(address)
  output_high(LCD_RS);
  else
  output_low(LCD_RS);

  delay_us(1);          //MOD

#ifdef USE_LCD_RW
output_low(LCD_RW);
delay_us(1);            //MOD
#endif

  output_low(LCD_E);

  lcd_send_nibble(n >> 4);
  lcd_send_nibble(n & 0xf);
}

//----------------------------

    void lcd_init(void)
    {
     int8 i;
     
     output_low(LCD_RS);
     #ifdef USE_LCD_RW
        output_low(LCD_RW);
     #endif
     output_low(LCD_E);
     delay_ms(30);
     lcd_send_nibble(0x02);
     lcd_send_nibble(0x02);
     lcd_send_nibble(0x0C);
     delay_us(60);
     lcd_send_nibble(0x00);
     lcd_send_nibble(0x0C);
     delay_us(60);
     lcd_send_nibble(0x00);
     lcd_send_nibble(0x01);
     delay_ms(2);
     lcd_send_nibble(0x00);
     lcd_send_nibble(0x06);
    }

//----------------------------

void lcd_gotoxy(int8 x, int8 y)
{
  int8 address;

  if(y != 1)
  address = lcd_line_two;
  else
  address=0;

  address += x-1;
  lcd_send_byte(0, 0x80 | address);
}

//-----------------------------

void lcd_putc(char c)
{
  switch(c)
  {
    case '\f':
      lcd_send_byte(0,1);
      delay_ms(2);//2ms
      break;

    case '\n':
      lcd_gotoxy(1,2);
      break;

    case '\b':
      lcd_send_byte(0,0x10);
      break;

    default:
      lcd_send_byte(1,c);
      break;
  }
}

//------------------------------
#ifdef USE_LCD_RW
char lcd_getc(int8 x, int8 y)
{
  char value;

  lcd_gotoxy(x,y);

  // Wait until busy flag is low.
  while(bit_test(lcd_read_byte(),7));

  output_high(LCD_RS);
  value = lcd_read_byte();
  output_low(lcd_RS);

  return(value);
}
#endif

void lcd_setcursor(short visible, short blink) {
  lcd_send_byte(0, 0xC|(visible<<1)|blink);
}



Espero q m puedan ayudar
Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: MGLSOFT en 13 de Marzo de 2012, 19:39:57
La librería aparenta estar bien, deberías chequear tu conexión al LCD.
Por lo que veo usas el pin R/W conectado en B0, no es así??

Si lo que digo esta mal, comenta la linea
Código: C
  1. #define USE_LCD_RW 1
, conecta el pin R/W del LCD a masa y prueba cambiando el valor de temporizacion en
Código: C
  1. #ifdef USE_LCD_RW
  2. while(bit_test(lcd_read_byte(),7)) ;
  3. #else
  4. delay_us(60);
  5. #endif
a un valor de 200 us a ver si arranca.
Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: Guido_BHM en 13 de Marzo de 2012, 20:37:16
mglsoft, gracias por contestar
R/W lo tengo a B2, igual probe poniendo lo GND, comentando la linea y aumentando a 200 pero sigue sin pasar nada  :?
Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: sebastian 100 en 13 de Marzo de 2012, 21:11:26
hola guido, te paso el flex_lcd modificado que uso yo para mis proyectos

fijate en cambiar las conexiones, yo lo uso siempre con RW conectado a masa y los datos los mando por fueza bruta :D :D


si te leiste todo el post, sabrás lo que me pasó...  verifica bien las conexiones :mrgreen:
y realmente son compatibles lo unico que cambia con los hitachi es la rutina de inicializacion

espero que lo puedas resolver, saludos
Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: Guido_BHM en 15 de Marzo de 2012, 12:54:48
gracias sebastian! ya me anda!!!
mi problema no era con la conexion, si no el contraste
por eso no veia nada, soy un gil!  :oops: me quiero matar! tantos dias desperdiciados jajajaja
muchas gracias a vos y mglsoft, y al foro por la mano
ahora soy feliz  :-)
saludos
Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: MGLSOFT en 15 de Marzo de 2012, 15:17:08
Upss !!  :oops: :oops: :oops: :oops:
Me olvide preguntar lo obvio, si te aparecían los típicos cuadrados de la linea 1, típico de una mala inicialización!!
Me alegro que lo hayas sacado en marcha, esto seguro no lo olvidas, así que nunca mas te ocurrirá !!   :D :D :D :D :mrgreen:
Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: Guido_BHM en 15 de Marzo de 2012, 15:37:05
jajaja no, seguro q no me olvido mas!!!
Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: ElViejoTom en 13 de Mayo de 2013, 17:37:51
Hola, buenas tardes,

Acabo de hacer funcionar un LCD PC1602 gracias a este post  ((:-)). Estaba usando la librería del CCS LCD.c y no me funcionaba, la cambié por la flex_lcd.c y pasé todo a delay_us() y funcionó perfecto.

Ahora bien, me está pasando algo raro, digamos que cada segundo o un poco menos alterna entre el mensaje que yo le envío y las dos líneas llenas de w. Algunas veces intercala algún otro caracter en cualquier posición. :shock:

¿Le pasó a alguien? ¿Qué podrá ser?

Saludos
Título: Re: Como inicializar LCD Winstar 1602??
Publicado por: sebastian 100 en 13 de Mayo de 2013, 22:03:23
hola viejo tom!

exactamente no se que puede ser, pero te tiro un centro

 a veces te conviene refrescar el lcd mas a menudo, ya que si le mandas los datos y te quedas esperando hasta cambiar algo en pantalla, durante ese tiempo puede meterse algun ruido o falso contacto y te tira fruta por pantalla.

saludos!