HD44780U

De Proyectos
Ir a la navegación Ir a la búsqueda

Introducción


Conexiones LCD
Conexiones LCD

Los LCDs que integran este controlador suelen tener 16 pines:

  • Vcc y GND
  • Vo: Regula el contraste de la pantalla
  • Led+ (A) y Led- (K): Retroiluminación
  • RS y R/W: Controlan el tipo de operación que se va a enviar
  • E: Es el "clock". En el flanco de bajada se envian los datos
  • DB0...DB7: Son los pines donde se colocan los datos para enviar al LCD


Ahora veremos como es el funcionamiento general del controlador cuando queremos enviar un dato o instrucción. En las siguientes secciones profundizaré en cada apartado:

Representación de módulos del HD44780U
Representación de módulos del HD44780U

En el dibujo se puede ver como los pines RS y R/W controlan si ejecutamos instrucciones de IR o operamos en las memorias DDRAM, CGROM y CGRAM.
En la sección de Pines de instrucciones veremos que tenemos cuatro operaciones a poder ejecutar codificadas con los pines RS y R/W. En nuestro caso (y en la mayoria de los casos) solo se usan dos operaciones:

  • Modo de instrucciones IR - RS es 0 y R/W es 0
  • DR escribe en DDRAM o CGRAM - RS es 1 y R/W es 0

Por lo que podemos ver el pin R/W siempre está a cero (esto quiere decir que escribimos) y como las operaciones que implican poner el pin R/W a 1 no las utilizaremos podemos suponer que R/W siempre valdrá 0.
Igualmente explicaré las operaciones en que R/W vale 1, pero ya se verá que no se suelen usar.

Los pines de datos (DB0...DB7) se usan de una forma muy sencilla. Hagamos un ejemplo:
Queremos hacer un Display Clear (limpiar la pantalla) y en la tabla Instrucciones vemos que es:

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
 0  0   0   0   0   0   0   0   0   1

Como se ve RS es igual a 0 y R/W es igual a 0, estamos dentro de las instrucciones de IR (ya explicaré que es esto de IR y que instrucciones tiene). Dentro de IR la instrucción 00000001 significa Display Clear. Para pasar esa instrucción a la pantalla colocamos cada bit en su correspondiente pin y la enviamos.
Así es como se envian/reciben instrucciones tanto de IR como de DR.

Pines

Pines de instrucciones

Los pines RS y R/W nos sirven para seleccionar diferentes operaciones. El pin Enable es similar a un "clock". Con el flanco de bajada se envia la instrucción a la pantalla.

Áqui se ven las posibles operaciones cuando se combinan los pines RS y R/W

RS RW Operación
0  0  Modo de instrucciones IR (display clear, ...)
0  1  Se lee el Busy Flag (DB 7 ) y el Address Counter(DB0 to DB6)
1  0  DR escribe en DDRAM o CGRAM
1  1  DR lee de DDRAM o CGRAM

Pin RS

El pin RS selecciona los registros (IR y DR):

  • Cuando RS = 0 se ejecutan las instrucciones de IR
  • Cuando RS = 1 se ejecutan las instrucciones de DR

Pin R/W

Este pin indica si la instrucción a ejecutar será de escritura o de lectura:

  • Cuando R/W = 0 estamos en modo escritura
  • Cuando R/W = 1 estamos en modo lectura

Pin Enable

Es el pin encargado de enviar las instrucciones del microcontrolador al lcd.
Para cada instrucción que queramos hacer tenemos que seguir este procedimiento:

Con los pines RS/RW dispuestos para el tipo de instrucción que queremos enviar → Colocamos la instrucción (o datos) a transmitir en los pines de datos → Ponemos en HIGH el pin Enable → Ponemos en LOW el pin Enable (en el flanco de bajada es cuando los datos se transmiten)

digitalWrite(E, LOW);
delayMicroseconds(1);
digitalWrite(E, HIGH);
delayMicroseconds(1);
digitalWrite(E, LOW);
delayMicroseconds(100);

Pines de datos

Los pines de datos son los que van del DB7 al DB0 (teniendo en cuenta que estamos utilizando una conexión de 8bit).
En estos pines colocamos los datos a transmitir. Por ejemplo, si queremos transmitir la instrucción Display Clear (que es 0000001), en cada pin pondremos el valor correspondiente a la instrucción.
Si la transmision es de 4bits los unicos pines activos son los que van de DB4 a DB7. Se verá más adelante que en este modo de transmisión se tienen que hacer dos envios de datos por operación, uno con los 4 primeros bits y el segundo con los siguientes 4 bits.

Registros

Los registros son direcciones de memoria (de 8 bits) donde hay guardados datos. Pueden ser instrucciones (tipo display clear) o pueden almacenar datos.

Instruction Register(IR)

Data Register (DR)

The DR temporarily stores data to be written into DDRAM or CGRAM and temporarily stores data to be read from DDRAM or CGRAM. Data written into the DR from the MPU is automatically written into DDRAM or CGRAM by an internal operation. The DR is also used for data storage when reading data from DDRAM or CGRAM. When address information is written into the IR, data is read and then stored into the DR from DDRAM or CGRAM by an internal operation. Data transfer between the MPU is then completed when the MPU reads the DR. After the read, data in DDRAM or CGRAM at the next address is sent to the DR for the next read from the MPU. By the register selector (RS) signal, these two registers can be selected (Table 1).

Busy Flag (BF)

Adress Counter (AC)

RAM



Instrucciones



Instrucciones referentes a IR



Instrucciones referentes a DR



Comunicación I2C



Hardware necesario



Código



Documentación

  • Simulador LCD.- Es una página muy interesante porque te permite simular el funcionamiento del LCD sin tener que implementarlo. Va muy bien para ver como funciona el lcd
  • Reading from HD44780-based LCDs.- Discusión de como se leen los datos
  • Datasheet.- Datasheet del HD4478
  • LiquidCrystal Library.- Libreria del lcd que trae implementada Arduino. A mi me ha servido de mucho mirar el código fuente para aprender el funcionamiento del lcd
  • cursomicros.com.-Página muy interesante que explica el funcionamiento del lcd
  • PC1602F.-Datasheet LCD PC1602F