Estoy usando un módulo LCD clon HD44780 un KS0066U. Todo funciona bien en el módulo, excepto cuando enciendo y 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 visualización 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 evitarlo en el software?
EDITAR: estoy usando el controlador de pantalla en modo de 4 bits, no en modo de 8 bits.
Cambié mi código de inicialización para que enviara el nibble superior de 4 bits del comando de conjunto de funciones dos veces. A continuación, me molesta el nibble superior de 4 bits seguido del nibble inferior de 4 bits. Esto no coincide con la hoja de datos que parece indicar que puede enviar el nibble superior de 4 bits y luego enviar el comando de conjunto de funciones de 4 bits superior seguido de 4 bits inferior.
// Funciona a veces puerto de pseudocódigo
= 0x20;
e=1; e=0;
puerto=0x20;
e=1; e=0;
puerto=0xC0;
e=1; e=0;
// Funciona todo el tiempo pseudocódigo
port=0x20;
e=1; e=0;
e=1; e=0;
puerto=0x20;
e=1; e=0;
puerto=0xC0;
e=1; e=0;
Supongo que le falta un retraso necesario en su secuencia de inicialización. Si la pantalla está ocupada cuando intenta enviar un comando, ese comando se ignorará. Si cuando inicia su procedimiento, la pantalla está en modo de cuatro bits y acaba de registrar "0000" como la primera mitad de un comando, entonces cuando registre "0011", la pantalla verá el comando completo como "00000011" , lo que hará que la pantalla esté ocupada durante un máximo de 1,6 ms.
Por cierto, si es posible, es bueno cablear los cables de datos de bajo orden desde la pantalla de tal manera que cuando se envíe un comando "0011" a la pantalla, los 8 bits completos vistos por la pantalla formarán un comando de configuración de modo. que es correcto para el tipo de pantalla que está utilizando. Eso ayudará a evitar fallas en la pantalla al restablecer una pantalla que ya está en uso (reiniciar periódicamente la pantalla es una buena idea, si se puede hacer sin fallas, ya que garantizará que si la pantalla de alguna manera entra en un modo incorrecto, se arreglará). sí mismo).
Encontré una solución para el problema:
Agregué un retraso de 1000 milisegundos al inicio, antes de inicializar/configurar el controlador LCD. Funcionó bastante bien para mí.
Un retraso más bajo (100, 200 ms) no funcionó tan bien. Solo una nota: sucedió solo en bus de datos de 4 bits.
¡Buena suerte!
Insertar un retraso en su código para que cuando se encienda le dé a la pantalla LCD el tiempo suficiente para inicializarse cuando se inicie. Un máximo de unos 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.
No estoy seguro si esto ayuda EN TODO, pero me metí con el KS0066U en un proyecto Arduino. Aquí está el enlace .
Kortuk
mjh2007
dave