Inicialización de encendido del módulo LCD HD44780

10

Estoy usando un módulo LCD clon HD44780 un KS0066U. Todo funciona bien en el módulo, excepto cuando enciendo rápidamente el dispositivo (encendido > apagado-> encendido). Por alguna razón, una interrupción muy breve en la alimentación hace que el módulo de pantalla se inicialice incorrectamente como una pantalla LCD de 1 línea en lugar de una pantalla LCD de 2 líneas. ¿Qué causaría este comportamiento? ¿Hay alguna forma de prevenirlo en el software?

EDITAR: Estoy usando el controlador de pantalla en modo de 4 bits, no en modo de 8 bits.

    
pregunta mjh2007

5 respuestas

4

Cambié mi código de inicialización para que enviara el mordisco superior de 4 bits del comando del conjunto de funciones dos veces. Después de lo cual volví a enviar el mordisco superior de 4 bits seguido del mordisco inferior de 4 bits. Esto no coincide con la hoja de datos, lo que parece indicar que puede enviar el mordisco superior de 4 bits y luego enviar el comando de conjunto de funciones superior de 4 bits seguido de 4 bits inferior.

// Funciona a veces pseudo-código
puerto = 0x20;
e = 1; e = 0;
puerto = 0x20;
e = 1; e = 0;
puerto = 0xC0;
e = 1; e = 0;

// Funciona todo el tiempo pseudo-código
puerto = 0x20;
e = 1; e = 0;
e = 1; e = 0;
puerto = 0x20;
e = 1; e = 0;
puerto = 0xC0;
e = 1; e = 0;

    
respondido por el mjh2007
2

Mi conjetura sería que está perdiendo un retraso necesario en su secuencia de inicialización. Si la pantalla está ocupada cuando intenta enviar un comando, ese comando se ignorará. Si al iniciar el procedimiento, la pantalla está en modo de cuatro bits y acaba de marcar "0000" como la primera mitad de un comando, luego, cuando registra en "0011", la pantalla verá el comando completo como "00000011". , lo que hará que la pantalla esté ocupada hasta 1,6 ms.

Por cierto, es bueno, si es posible, cablear los cables de datos de orden inferior desde la pantalla de tal manera que cuando se envía un comando "0011" a la pantalla, los 8 bits completos vistos por la pantalla formarán un modo -set comando que es correcto para el tipo de pantalla que está utilizando. Eso ayudará a evitar fallos en la pantalla cuando se reinicie una pantalla que ya está en uso (es una buena idea restablecerla periódicamente, si se puede hacer sin problemas, ya que garantizará que si la pantalla se pone en un modo incorrecto se solucionará sí).

    
respondido por el supercat
1

Encontré una solución para el problema:

Agregué un retraso de 1000milisegundos al inicio, antes de inicializar / configurar el controlador LCD. Funcionó bastante bien para mí.

Un retraso más bajo (100, 200ms) no funcionó tan bien. Solo una nota: sucedió solo en la base de datos de 4 bits.

¡Buena suerte!

    
respondido por el Eduardo Brandt
0

Insertar un retraso en su código para que cuando se encienda le dé a la pantalla LCD el tiempo suficiente para que se inicie cuando se inicie. Un máximo de unos pocos cientos de milisegundos.

También puede intentar conectar la alimentación de la pantalla LCD al microcontrolador y apagar la pantalla LCD durante un segundo después del inicio.

    
respondido por el Thomas O
0

No estoy seguro de si esto ayuda EN TODO, pero me metí con el KS0066U en un proyecto Arduino. Aquí está el enlace .

    
respondido por el ThaKidd KG5ORD

Lea otras preguntas en las etiquetas