El controlador LCD Hitachi HD44780 es un controlador de pantalla de cristal líquido (LCD) de matriz de puntos alfanumérico desarrollado por Hitachi en la década de 1980. El conjunto de caracteres del controlador incluye caracteres ASCII , caracteres Kana japoneses y algunos símbolos en dos líneas de 40 caracteres. Mediante un controlador de extensión, el dispositivo puede mostrar hasta 80 caracteres. [1] Numerosas pantallas de terceros son compatibles con su interfaz de 16 pines y su conjunto de instrucciones, lo que lo convierte en un controlador de LCD popular y económico. [2]
El controlador LCD Hitachi HD44780 está limitado a pantallas de texto monocromáticas y se utiliza a menudo en fotocopiadoras , máquinas de fax , impresoras láser , equipos de prueba industriales y equipos de red, como enrutadores y dispositivos de almacenamiento .
Las pantallas LCD compatibles se fabrican en varias configuraciones estándar. Los tamaños habituales son una fila de ocho caracteres (8×1) y formatos de 16×2, 20×2 y 20×4. Se fabrican tamaños personalizados más grandes con 32, 40 y 80 caracteres y con 1, 2, 4 u 8 líneas. La configuración más grande que se fabrica con más frecuencia es la de 40×4 caracteres, que requiere dos controladores HD44780 direccionables individualmente con chips de expansión, ya que un solo chip HD44780 solo puede direccionar hasta 80 caracteres.
Las pantallas LCD de caracteres pueden tener retroiluminación , que puede ser LED , fluorescente o electroluminiscente . El voltaje de funcionamiento nominal para la retroiluminación LED es de 5 V con brillo máximo, con atenuación a voltajes más bajos según los detalles, como el color del LED. Las retroiluminaciones que no son LED suelen requerir voltajes más altos.
Las pantallas LCD de caracteres utilizan una interfaz de 16 contactos, que normalmente utilizan pines o conexiones en el borde de la tarjeta con centros de 0,1 pulgadas (2,54 mm). Las que no tienen retroiluminación pueden tener solo 14 pines, omitiendo los dos pines que alimentan la luz. Esta interfaz fue diseñada para conectarse fácilmente a la interfaz Intel MCS-51 XRAM, utilizando solo dos pines de dirección, lo que permitió mostrar texto en la pantalla LCD utilizando comandos MOVX simples, lo que ofrece una opción rentable para agregar una pantalla de texto a los dispositivos. [ cita requerida ]
El pinout predominante es el siguiente (existen excepciones):
Alfiler# | Nombre | Dirección | Descripción |
---|---|---|---|
1 | Vss | Fuerza | Tierra de la fuente de alimentación |
2 | Vcc | Fuerza | Fuente de alimentación (+3,3 o +5 V según módulo) |
3 | Vee | Aporte | Ajuste de contraste (entrada analógica) |
4 | R.R. | Aporte | Seleccionar registro (0 = comando, 1 = datos) |
5 | R/ E | Aporte | Lectura/ Escritura (0 = escribir en el módulo de visualización, 1 = leer desde el módulo de visualización) |
6 | mi | Aporte | Habilitar reloj (activado por flanco descendente) |
7 | DB0 | E/S | Bit de datos 0 (no se utiliza en operaciones de 4 bits) |
8 | DB1 | E/S | Bit de datos 1 (no se utiliza en operaciones de 4 bits) |
9 | DB2 | E/S | Bit de datos 2 (no se utiliza en operaciones de 4 bits) |
10 | DB3 | E/S | Bit de datos 3 (no se utiliza en operaciones de 4 bits) |
11 | DB4 | E/S | Bit de datos 4 |
12 | DB5 | E/S | Bit de datos 5 |
13 | DB6 | E/S | Bit de datos 6 |
14 | DB7 | E/S | Bit de datos 7 |
15 | LED+ | Fuerza | Ánodo de retroiluminación (+) (si corresponde) |
16 | LED− | Fuerza | Cátodo de retroiluminación (−) (si corresponde) |
Notas:
En el modo de 8 bits, todas las transferencias se realizan en un ciclo del pin de habilitación (E) con los 8 bits en el bus de datos y los pines RS y R/ W estables. En el modo de 4 bits , los datos se transfieren como pares de " nibbles " de 4 bits en los pines de datos superiores, D7–D4, con dos pulsos de habilitación y los pines RS y R/ W estables. Los cuatro bits más significativos (7–4) deben escribirse primero, seguidos de los cuatro bits menos significativos (3–0). La secuencia alta/baja debe completarse cada vez o el controlador no recibirá correctamente más comandos.
Para seleccionar el modo de 4 u 8 bits es necesario seleccionar cuidadosamente los comandos. Hay dos consideraciones principales. En primer lugar, con D3–D0 desconectados, estas líneas siempre aparecerán altas (binario 1111) para el HD44780, ya que hay MOSFET pull-up internos . [3] En segundo lugar, la pantalla LCD puede estar inicialmente en uno de tres estados:
El estado 3 puede ocurrir, por ejemplo, si se canceló un control anterior después de enviar solo los primeros 4 bits de un comando mientras el HD44780 estaba en modo de 4 bits.
El siguiente algoritmo garantiza que la pantalla LCD esté en el modo deseado:
El mismo comando se envía tres veces, conjunto de funciones con interfaz de 8 bits D7–D4 = binario 0011, los cuatro bits inferiores son "no importa", utilizando pulsos de habilitación únicos. Si el controlador está en modo de 4 bits, los cuatro bits inferiores se ignoran, por lo que no se pueden enviar hasta que la interfaz esté en una configuración de tamaño conocido.
Comenzando en el estado 1 (configuración de 8 bits):
Comenzando en el estado 2 (configuración de 4 bits, esperando la primera transferencia de 4 bits):
Comenzando en el estado 3 (configuración de 4 bits, esperando la última transferencia de 4 bits):
En los tres casos iniciales, la interfaz de bus está ahora en modo de 8 bits, 1 línea, 5×8 caracteres. Si se desea una configuración diferente en modo de 8 bits, se debe enviar un comando de configuración de función de bus de 8 bits para configurar todos los parámetros. Si se desea el modo de 4 bits, se debe enviar el binario 0010 en D7–D4 con un solo pulso de habilitación. Ahora el controlador estará en modo de 4 bits y una secuencia completa de comandos de configuración de función de bus de 4 bits (dos habilitaciones con los bits de comando 7–4 y 3–0 en ciclos subsiguientes) completará la configuración del registro de configuración de función.
El conjunto de instrucciones HD44780 se muestra a continuación: [4]
Instrucción | Código | Descripción | Tiempo de ejecución (máximo) (cuando f cp = 270 kHz) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
R.R. | R/W | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | |||
Pantalla clara | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | Borra la pantalla y devuelve el cursor a la posición inicial (dirección 0). | 1,52 ms |
Cursor a la página de inicio | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | * | Devuelve el cursor a la posición inicial. También devuelve la pantalla desplazada a la posición original. El contenido de DDRAM permanece sin cambios. | 1,52 ms |
Modo de entrada establecido | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | IDENTIFICACIÓN | S | Establece la dirección de movimiento del cursor (I/D); especifica que se debe desplazar la pantalla (S). Estas operaciones se realizan durante la lectura/escritura de datos. | 37 microsegundos |
Control de encendido y apagado de la pantalla | 0 | 0 | 0 | 0 | 0 | 0 | 1 | D | do | B | Establece el encendido/apagado de toda la pantalla (D), el encendido/apagado del cursor (C) y el parpadeo del carácter de posición del cursor (B). | 37 microsegundos |
Cambio de cursor/pantalla | 0 | 0 | 0 | 0 | 0 | 1 | CAROLINA DEL SUR | Derecha/Izquierda | * | * | Establece el movimiento del cursor o el desplazamiento de la pantalla (S/C) y la dirección de desplazamiento (R/L). El contenido de DDRAM permanece sin cambios. | 37 microsegundos |
Conjunto de funciones | 0 | 0 | 0 | 0 | 1 | DESCARGAR | norte | F | * | * | Establece la longitud de los datos de la interfaz (DL), el número de líneas de visualización (N) y la fuente de los caracteres (F). | 37 microsegundos |
Establecer la dirección CGRAM | 0 | 0 | 0 | 1 | Dirección CGRAM | Establece la dirección CGRAM. Los datos CGRAM se envían y reciben después de esta configuración. | 37 microsegundos | |||||
Establecer la dirección DDRAM | 0 | 0 | 1 | Dirección DDRAM | Establece la dirección DDRAM. Los datos DDRAM se envían y reciben después de esta configuración. | 37 microsegundos | ||||||
Leer la bandera de ocupado y el contador de direcciones | 0 | 1 | BF | Dirección CGRAM/DDRAM | Lee el indicador de ocupado (BF) que indica que se está realizando una operación interna y lee el contenido del contador de direcciones CGRAM o DDRAM (dependiendo de la instrucción anterior). | 0 microsegundos | ||||||
Escribir CGRAM o DDRAM | 1 | 0 | Escribir datos | Escribir datos en CGRAM o DDRAM. | 37 microsegundos | |||||||
Leer desde CG/DDRAM | 1 | 1 | Leer datos | Leer datos de CGRAM o DDRAM. | 37 microsegundos | |||||||
Nombres de bits de instrucción — I/D – 0 = decrementar posición del cursor, 1 = incrementar posición del cursor; S – 0 = sin cambio de pantalla, 1 = cambio de pantalla; D – 0 = pantalla apagada, 1 = pantalla encendida; C – 0 = cursor apagado, 1 = cursor encendido; B – 0 = parpadeo del cursor apagado, 1 = parpadeo del cursor encendido; S/C – 0 = mover cursor, 1 = cambiar pantalla; R/L – 0 = cambiar a la izquierda, 1 = cambiar a la derecha; DL – 0 = interfaz de 4 bits, 1 = interfaz de 8 bits; N – 0 = 1/8 o 1/11 de trabajo (1 línea), 1 = 1/16 de trabajo (2 líneas); F – 0 = 5×8 puntos, 1 = 5×10 puntos; BF – 0 = puede aceptar instrucción, 1 = operación interna en progreso. |
DDRAM es la RAM de datos de visualización y CGRAM es la RAM de generación de caracteres. [5] La DDRAM tiene 80 bytes (40 por fila) direccionados con un espacio entre las dos filas. La primera fila contiene las direcciones de 0 a 39 decimales o de 0 a 27 hexadecimales. La segunda fila contiene las direcciones de 64 a 103 decimales o de 40 a 67 hexadecimales.
La CGRAM es una memoria de lectura/escritura que se utiliza para codificar hasta 8 caracteres en el generador de caracteres. Consta de 64 campos en las direcciones 0 a 3F hexadecimal. Cada campo consta de 5 bits que se asignan a una fila de píxeles de cada carácter. Cada 8 campos de la CGRAM se utilizan para cada carácter. Los 3 bits inferiores de los códigos de caracteres de 0 a 7 y de 8 a 15 seleccionan los grupos de 8 campos en la memoria CGRAM.
La lectura y escritura en la memoria DDRAM se realiza configurando la entrada RS en alto durante las transferencias de bus. La memoria DDRAM también se debe seleccionar mediante el comando Set DDRAM address (Establecer dirección DDRAM), que selecciona la memoria DDRAM a la que se accederá y también configura la dirección de inicio para el acceso a la memoria DDRAM.
De la misma manera, la lectura y escritura en la CGRAM se realiza configurando la entrada RS en alto durante las transferencias de bus. La CGRAM también debe seleccionarse mediante el comando Establecer dirección de CGRAM, que selecciona la CGRAM para el acceso y también configura la dirección de inicio para el acceso a la CGRAM.
Los tiempos de ejecución que se indican en esta tabla se basan en una frecuencia de oscilador de 270 kHz. La hoja de datos indica que para una resistencia de 91 kΩ a V CC = 5 V, el oscilador puede variar entre 190 kHz y 350 kHz, lo que da como resultado tiempos de espera de 52,6 μs y 28,6 μs en lugar de 37 μs. Si una pantalla con la resistencia recomendada de 91 kΩ se alimenta con 3,3 voltios, el oscilador funcionará mucho más lento. Si no se utiliza el bit de actividad y las instrucciones se sincronizan mediante el circuito externo, esto debe tenerse en cuenta.
La ROM del generador de caracteres HD44780 original contiene 208 caracteres en una matriz de puntos de 5×8 y 32 caracteres en una matriz de puntos de 5×10. Hay chips compatibles más recientes disponibles con mayor resolución, compatibles con pantallas con más píxeles. [ cita requerida ]
Se han desarrollado dos versiones de la ROM: [5]
El subconjunto ASCII de 7 bits para la versión japonesa no es estándar: proporciona un símbolo de yen donde normalmente se encuentra el carácter de barra invertida , y símbolos de flecha izquierda y derecha en lugar de tilde y el carácter de borrado .
Se puede programar en el dispositivo un número limitado de caracteres personalizados en forma de mapa de bits mediante comandos especiales. Estos caracteres deben escribirse en el dispositivo cada vez que se enciende, ya que se almacenan en la memoria volátil .