Hay muchas y muy diversas pantallas que podemos hacer funcionar directamente con Arduino. En ésta entrada vamos a presentar esta singular pantalla LCD gráfica de 128 x 64 pixeles con el controlador ST7920, ya que hemos visto por Internet cantidad de gente que no es capaz de conectarla correctamente ni hacerla funcionar por la falta de documentación en el significado de sus pines.
Introducción
Como ya hemos adelantado, estamos ante un LCD gráfico, retroiluminado, con contraste variable, con 128 pixeles de largo y 64 pixeles de ancho. Las pantallas quedan muy elegantes en la mayoría de proyectos realizados con Arduino, ya sea para mostrar información, para ayudar al usuario con la navegación por la aplicación o con la configuración, etc.
Encapsulado
La unidad que presentamos en éste post es un módulo etiquetado como HJ12864ZW, con un LCD gráfico 128×64 controlada por un integrado ST7920.
Datos del módulo
Sus principales características son:
- Dimensiones: 93.0 x 70.0 x 13.5 mm.
- Área visual: 72.0 x 40.0 mm.
- Tamaño del píxel: 0.48 x 0.48 mm.
- Tensión de funcionamiento: 3.3v / 5.0v.
- Tensión del funcionamiento del controlador del LCD: 3.0v – 5.0v.
- Temperatura de funcionamiento: -20ºC – 70ºC.
Conexión
El módulo que os presentamos tiene una variedad de pines que nos puede parecer demasiado numerosa. Veamos el significado de cada uno:
Esquema de pines
Pin | Significado | Descripción |
VSS/GND | Ground | – |
VDD/VCC | Vin | – |
V0 | Voltaje del driver del LCD | Ajusta el contraste del LCD (<=7.0v). |
RS | Register Select | Tiene distintos propósitos si está trabajando en modo serie o paralelo. |
R/W | Read / Write Line | En modo paralelo indica el tipo de operación (lectura/escritura). En modo serie se utiliza como entrada de datos. |
E | Read / Write Enable | En modo paralelo es la señal de comienzo de actividad (lectura de datos/selección de operación…). En modo serie es la señal de reloj. |
DB0-DB3 | Data Bus 0 – Data Bus 3 | Bits menos significativos en modo paralelo 8 bits. |
DB4-DB7 | Data Bus 4 – Data Bus 7 | Bits más significativos en modo paralelo 8 bits. Bus de datos en modo paralelo 4 bits. |
PSB | Serial / Parallel control port | Selecciona el modo de funcionamiento (Serie / Paralelo). |
NC | Not Connected | – |
RST | Reset | – |
Vout | Salida del doblador de voltaje | – |
BLA | BackLight (+) | Terminal positivo de la retroiluminación (3.3v – 5.0v). |
BLK | BackLight (-) | Terminal negativo de la retroiluminación. |
Dependiendo del módulo, tendréis o no un tornillo por la parte de atrás, el cual nos sirve para variar el contraste de la pantalla. En caso de no disponer de éste tornillo (en realidad es un potenciómetro), podemos conectar un potenciómetro en el pin V0 y tensión positiva (+) para variarlo manualmente.
Del mismo modo, podemos variar la retroiluminación del LCD colocando otro potenciómetro para variar la tensión en el pin BLA.
Un ejemplo de esquema de conexiones para utilizarlo con la librería que os recomendamos más abajo sería el siguiente:
Pin LCD | Pin Arduino | Comentarios |
VSS/GND | Ground | – |
VDD/VCC | 5v | – |
V0 | Al aire o a 5v | Si tenemos variador de contraste en el reverso del LCD no hace falta conectarlo. |
RS | Pin X digital | Tiene distintos propósitos si está trabajando en modo serie o paralelo. |
R/W | Pin Y digital o GND | Si no vamos a programar ningún caracter del LCD conectamos GND, en caso contrario a un pin digital. |
E | Pin Z digital | En modo paralelo es la señal de comienzo de actividad (lectura de datos/selección de operación…). En modo serie es la señal de reloj. |
DB0-DB3 | Pines A – D digitales | – |
DB4-DB7 | Pines E – H digitales | – |
PSB | 5v | Seleccionando así el modo paralelo. |
NC | Al aire | – |
RST | Al aire | – |
Vout | Al aire | – |
BLA | 5v | – |
BLK | Ground | – |
Librería
Hay varias librerías circulando por la red, pero sin duda, la más completa, con más actualizaciones y mejor documentada es la librería u8glib. No sólo nos va a servir para este módulo, sino que es válida para un montón de pantallas. Podéis encontrar un montón de documentación en su página oficial de Google Code u8glib.
Datasheets
Podéis consultar más datos técnicos del módulo HJ12864ZW en su datasheet haciendo click aquí.
Podéis consultar más datos técnicos del controlador ST7920 en su datasheet haciendo click aquí.
Para los que programamos pic hay manera de conectar usar este controlador? para CCS
No sé si exactamente éste modelo se podrá hacer funcionar del todo bien, todo es cuestión de cogerse el datasheet e ir haciendo pruebas. Quizá te sea más sencillo comenzar con algún módulo de caracteres fijos, del tipo 20×2.
Hola, estoy usando esta pantalla con baterias y no encuentro la forma de poder quitarle la corriente de una forma comoda para ahorrar bateria.
Alguna sugerencia?
Gracias.
Hola Enric, puedes poner un potenciómetro en BLA/BLK para ajustar la retroiluminación y que consuma menos y un interruptor en VDD/VCC para apagarla por completo.
Otra opción es colocar un botón que haga que la pantalla se encienda sólo unos segundos y vuelva a apagarse, así ahorras batería y puedes encenderla para ver la info cuando quieras.
Un saludo.
Gracias por el tutorial. Me ayudo para poder conectar y hacer funcionar mi pantalla LCD.
Necesito su ayuda.
Necesito saber como programar mi LCD pixel por pixel, es para un Drone que se esta desarrollando en mi universidad.
Espero su comprensión, gracias.