Usuario:Jand.cc/Controlador LCD Hitachi HD44780

De Wikipedia, la enciclopedia libre
Controlador de LCD HD44780 y drivers HD44100 en el lado posterior de un módulo LCD 40266

El controlador LCD Hitachi HD44780 es un controlador alfanumérico de pantalla de cristal líquido (LCD) de matriz de puntos desarrollado por Hitachi en la década de los @1980s. El juego de caracteres del controlador incluye caracteres ASCII, japoneses Kana y algunos símbolos en dos líneas de 28 caracteres. Utilizando una extensión del driver, el dispositivo puede mostrar hasta 80 caracteres.[1]​ El HD44780 es uno los controladores de caracteres para LCD más popular nunca construido, con numerosas pantallas de terceros fabricantes utilizando su interfaz de 16 pines y su juego de instrucciones por compatibilidad.

Diagrama de bloques de un módulo LCD basado en el HD44780U
Módulo de caracteres LCD en una placa de pruebas controlada por un Arduino Uno

El controlador LCD Hitachi HD44780 está limitado a pantallas de texto monocromo y es a menudo utilizado en fotocopiadoras, faxes, impresoras láser, equipamiento industrial de pruebas y equipamiento de redes como routers y dispositivos de almacenamiento.

Las pantallas LCD compatibles están fabricadas en varias configuraciones estándar. Las configuraciones más comunes son una fila de ocho caracteres (8x1) y formatos de 16×2, 20×2 y 20×4. Las configuraciones a medidas más grandes están compuestas por 32, 40 u 80 caracteres con 1, 2, 4 o 8 líneas. La configuración más grande habitualmente fabricada es de 40x4 caracteres, la cual requiere dos controladores HD44780 direccionables individualmente con chips de expansión, puesto que un único chip HD44780 puede direccionar únicamente hasta 80 caracteres.

Los caracteres LCD pueden ser retroiluminados mediante led, fluorescencia o por electroluminiscencia.

Los displays LCD utilizan una interfaz de 16 contactos, generalmente utilizando pines o conexiones de tarjeta de 0,1 pulgadas (2.54 mm). Aquellos sin retroiluminación pueden tener sólo 14 pines, omitiendo los dos pines de alimentación de la luz. Esta interfaz se diseñó para ser fácilmente ensamblada con el interfaz XRAM Intel MCS-51, utilizando sólo dos pines de dirección, lo que permitía mostrar textos en el LCD utilizando órdenes sencillas de tipo MOVX, ofreciendo una opción eficaz de coste ajustado para añadir el mostrar textos en dispositivos.[cita requerida] La configuración de pines es la siguiente:

  1. Tierra
  2. VCC +3.3 a +5V (típico)
  3. Ajuste de contraste (VO) Esta es una entrada analógica , típicamente conectado a un potenciómetro. El usuario tiene que ser capaz de controlar este voltaje independiente de todos otros ajustes, para optimizar la visibilidad del display que varía con la temperatura y, en algunos casos, con la altura sobre el nivel de mar. Con un ajuste incorrecto el display parecerá para funcionar mal.
  4. Registro Seleccionado (RS). RS=0: Comando, RS=1: Dato
  5. Lectura/Escritura (R/W). R/W=0: Escribe, R/W=1: Lee (En la mayor parte de las aplicaciones que leer del HD44780 no tiene sentido. En ese caso este pin puede ser permanentemente conectado a tierra y no hay necesidad de asignar pines de entrada/salida para gestionarlo.)
  6. Reloj (Enable). Disparado por el borde descendente
  7. Bit 0 (No utilizado en operación de 4 bits)
  8. Bit 1 (No utilizado en operación de 4 bits)
  9. Bit 2 (No utilizado en operación de 4 bits)
  10. Bit 3 (No utilizado en operación de 4 bits)
  11. Bit 4
  12. Bit 5
  13. Bit 6
  14. Bit 7
  15. Backlight Ánodo (+) (Si aplica)
  16. Backlight Cátodo (-) (Si aplica)

El voltaje operativo nominal para retroiluminacion led es de 5V a brillo máximo, con atenuación en los voltajes más bajos dependientes de los detalles como en el caso de leds en color. La retroiluminación no led suele requerir voltajes más altos (I.e. electroluminiscencia).

Selección de modo[editar]

En modo de 8 bits todas las transferencias ocurren en un ciclo del pin de reloj (Enable) con los 8 bits en el bus de datos y los pines RS y RW estables. En modo de 4 bits, el dato se transfiere como pares de 4 bits o "nibbles" en los pines de datos superiores (7-4) con dos ciclos de reloj (Enable) y los pines RS y RW estables. Los cuatro bits más significativos (7-4) tienen que ser escritos primero, seguido por los cuatro bits menos significativos (3-0). La secuencia de reloj alta/baja tiene que ser completada cada vez o el controlador no recibirá correctamente órdenes posteriores.

La selección de modo entre 4 u 8 bits requiere una utilización adecuada de comandos. Hay dos consideraciones primarias. Primero, con D3-D0 sin conexión, estas líneas siempre aparecerán en estado bajo (0b0000) para el HD44780. Segundo, los LCD pueden estar inicialmente en uno de los siguientes tres estados:

  • (Estado1) modo 8 bits
  • (Estado2) modo 4 bits, esperando al primer conjunto de datos de 4 bits
  • (Estado3) modo 4 bits, esperando al segundo conjunto de datos de 4 bits

El estado3 puede ocurrir, por ejemplo, si un comando de control previo se abortó después de enviar sólo los primeros 4 bits de una orden mientras el LCD estaba en modo de 4 bits.

El siguiente algoritmo asegura que el LCD está configurado en el modo deseado:

La misma orden Function Set se envía tres veces con 8 bits por el interfaz D7-D4 = 0b0011, no importando el valor de los cuatro bits bajos, utilizando pulsos de reloj Enable individuales. Si el controlador está en modo 4 bits los cuatro bits inferiores se ignoran y no pueden ser enviados hasta que el interface está en una configuración de tamaño conocida.el más bajo cuatro bits están ignorados tan no pueden ser enviados hasta la interfaz es en una configuración de medida sabida.

Inicializando en estado 1 - configuración de 8 bits

 Envía el comando Function Set.  La orden será ejecutada, configura modo 8 bits. 
 Envía el comando Function Set.  La orden será ejecutada, configura modo 8 bits. 
 Envía el comando Function Set.  La orden será ejecutada, configura modo 8 bits. 

Inicializando en estado 2 - configuración de 4 bits, esperando la primera transferencia de 4 bits

 Envía el comando Function Set.   Primeros cuatro bits recibidos. 
 Envía el comando Function Set.  Últimos cuatro bits, orden aceptada, configura modo 8 bits. 
 Envía el comando Function Set.  La orden será ejecutada, configura modo 8 bits. 

Inicializando en estado 3 - configuración de 4 bits, esperando la última transferencia de 4 bits

 Envía el comando Function Set.  Últimos cuatro bits, se ejecuta una orden desconocida. 
 Envía el comando Function Set.  En modo 8 bits la orden será ejecutada, en caso contrario primeros 4 bits recibidos. 
 Envía el comando Function Set.  En modo 8 bits la orden será ejecutada, en caso contrario últimos 4 bits de la orden anterior, se configura el modo 8 bits. 

En los tres casos para cualquier estado inicial el bus del intgerface está ahora en modo 8 bits, 1 línea, caracteres de 5x8 . Si se desea una configuración diferente al modo 8 bits se debe enviar por el bus un comnado de 8 bits de tipo Function Set para configurar los parámetros completos. Si se desea configurar el modo 4 bits se debe enviar 0b0010 por las líneas de datos D7-D4 con un único pulso de reloj Enable. Ahora el controlador estará en modo 4 bits y una secuencia completa en el bus del comando Function Set en 4 bits (dos ciclos de reloj Enable con los bits de la orden 7-4 y 3-0 en ciclos consecutivos) completará la configuración del registro con Function Set.

Conjunto de instrucciones[editar]

El conjunto de instrucciones del HD44780 se muestra a continuación:[2]

HD44780U conjunto de instrucción basada
Instrucción Código Descripción Tiempo de ejecución (max) (cuándo fcp = 270 kHz)







RS R/ B7 B6 B5 B4 B3 B2 B1 B0
Borrar display 0 0 0 0 0 0 0 0 0 1 Aclara exhibición y cursor de regresos a la posición de casa (dirección 0). 1.52 ms
Cursor al inicio 0 0 0 0 0 0 0 0 1 * Cursor de regresos a posición de casa. También regresa exhibición siendo cambiado a la posición original. DDRAM El contenido queda sin cambios. 1.52 ms
Configurar modo de entrada 0 0 0 0 0 0 0 1 I/D S Dirección de movimiento de cursor de conjuntos (I/D); especifica para cambiar la exhibición (S). Estas operaciones están actuadas durante los datos leen/escribir. 37 μs
Exhibición encima/fuera control 0 0 0 0 0 0 1 D C B Conjuntos encima/fuera de toda exhibición (D), cursor encima/fuera (C), y parpadear de carácter de posición del cursor (B). 37 μs
Cambio/de exhibición del cursor 0 0 0 0 0 1 S/C R/L * * Cursor de conjuntos-movimiento o exhibición-cambio (S/C), dirección de cambio (R/L). DDRAM El contenido queda sin cambios. 37 μs
Function Set 0 0 0 0 1 DL N F * * Longitud de dato de interfaz de conjuntos (DL), número de línea de exhibición (N), y fuente de carácter (F). 37 μs
Set CGRAM address 0 0 0 1 CGRAM Dirección Conjuntos el CGRAM dirección. CGRAM El dato está enviado y recibido después de este encuadre. 37 μs
Set DDRAM dirección 0 0 1 DDRAM Dirección Conjuntos el DDRAM dirección. DDRAM El dato está enviado y recibido después de este encuadre. 37 μs
Dirección de bandera ocupada & leída contador



0 1 BF CGRAM/DDRAM Dirección Lee bandera ocupada (BF) indicando la operación interna que es actuado y lee CGRAM o DDRAM contenidos de contador de la dirección (dependiendo de instrucción anterior). 0 μs
Escribe CGRAM o DDRAM



1 0 Dato a escribir Escribe dato a CGRAM o DDRAM. 37 μs
Leído de CG/DDRAM 1 1 Dato leído Lee dato de CGRAM o DDRAM. 37 μs
La instrucción mordió nombres —



I/D - 0 = decrement posición de cursor, 1 = increment posición de cursor; S - 0 = ningún cambio de exhibición, 1 = cambio de exhibición; D - 0 = exhibición fuera, 1 = exhibición encima; C - 0 = cursor fuera, 1 = cursor encima; B - 0 = cursor parpadea fuera, 1 = cursor parpadea encima ; S/C - 0 = cursor de movimiento, 1 = exhibición de cambio; R/L - 0 = cambio dejó, 1 = derecho de cambio; DL - 0 = 4-mordió interfaz, 1 = 8-mordió interfaz; N - 0 = 1/8 o 1/11 deber (1 línea), 1 = 1/16 deber (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 visualización de datos y CGRAM es RAM del generador de caracteres.[3]​ La DDRAM consiste en 80 bytes (40 por fila) direccionables con un espacio entre las dos filas. La primera fila se corresponde con las direcciones 0 a 39 decimal o 0 a 27 hex. La segunda fila se corresponde con las direcciones 64 decimal a 103 decimal o 40 a 67 hex.

La CGRAM es memoria de lectura/escritura utilizada para codificar hasta 8 caracteres en el generador de caracteres. Consta de 64 campos con direcciones de 0 a 3F hex. Cada campo se corresponde con el mapa de 5 bits correspondiente a una fila de píxeles de cada carácter. Cada 8 campos en el CGRAM se corresponden con un carácter. Los 3 bits inferiores de los códigos de carácter de 0-7 y 8-15 seleccionan los grupos de 8 campos en la memoria CGRAM .

La lectura y escritura sobre el DDRAM se realiza poniendo la entrada RS a nivel alto durante las transferencias del bus. El DDRAM mosto también ser seleccionado por utilizar el Pone DDRAM la dirección manda cuál selecciona el DDRAM para acceso y también pone la dirección de empezar para DDRAM acceso.

Así mismo las operaciones de lectura y escritura sobre la CGRAM se efectúan poniendo la entrada RS a valor alto durante las transferencias del bus. La CGRAM debe ser seleccionada por el comando Set CGRAM que selecciona el acceso a la CGRAM y la dirección a partir de la cual se empieza a acceder.

Los tiempos de ejecución mostrados en esta tabla están basado en una frecuencia de oscilador de 270 kHz. La hoja de datos indica que para una resistencia de 91 kΩ a 5V Vcc el oscilador puede variar entre 190 kHz y 350 kHz resultando en tiempos de espera de 52.6 microsegundos y 28.6 microsegundos en vez de 37 microsegundos Si una pantalla con la resistencia recomendada de 91 kΩ se alimenta con 3.3 voltios la velocidad del oscilador será mucho más lenta. Si el bit busy no se utiliza y las instrucciones son cronometradas por la circuitería externa, esto debería ser tenido en cuenta.

Fuente[editar]

Retroiluminación ambar en una pantalla HD44780

La ROM original de generación de caracteres del HD44780 contiene 208 caracteres en una matriz de 5×8 puntos, y 32 caracteres en una matriz de 5×10 puntos. Chips compatibles más modernos están disponibles con una resolución más alta, emparejados con pantallas con más píxeles. [cita requerida]

Dos versiones de la ROM han sido desarrolladas:[4]

El subconjunto ASCII de 7 bits para la versión japonesa no es estándar: incluye un símbolo de Yen donde se encuentra normalmente el caracter barra inversa y los símbolos de flecha izquierda y derecha en el lugar los caracteres de tilde y borrado.

Un número limitado de caracteres hechos a medida puede ser programado en el dispositivo en forma de imagen de mapa de bits utilizando órdenes especiales. Estos caracteres tienen que ser escritos al dispositivo cada vez se enciende, puesto que se almacenan en la memoria volátil de la CGRAM.

Ver también[editar]

  • LCD Smartie - Open source display driver for Microsoft Windows
  • JIS X 0201 - Japanese standard 7-bit and 8-bit character encoding

Referencias[editar]

 

Documentación adicional[editar]

 

  • Huang, Han-Way (2009). The HCS12 / 9S12: An Introduction to Software and Hardware Interfacing (2nd edición). Delmar Cengage Learning. ISBN 978-1-4354-2742-6. 
  • Sanchez, Julio; Canton, Maria P. (2007). Microcontroller Programming: the Microchip PIC. CRC Press. ISBN 978-0-8493-7189-9. 

[[Categoría:Category:Hitachi]] [[Categoría:Category:Dispositivos de computación de salida]]