Winstar ofrece una amplia gama de módulos LCD de caracteres estándar para aplicaciones industriales y sistemas embebidos. Los tipos de display estándar disponibles incluyen las series WH0802, WH1202, WH1601, WH1602, WH1604, WH2002, WH2004, WH2402 y WH4002. Al requerir un número mínimo de pines de control, estos módulos facilitan la integración del display y la selección del MCU adecuado para cada aplicación.
Los módulos LCD de caracteres convencionales del mercado suelen incorporar una placa de conversión adicional para habilitar la interfaz I2C, tal como se muestra en la Figura 1. Esta solución puede incrementar el grosor del LCM, añadir etapas adicionales al proceso de fabricación y reducir el rendimiento de producción.
Figura 1: Módulo LCD de caracteres convencional del mercado con una placa de conversión adicional para habilitar la interfaz I2C.
Figura 2: El módulo LCD de caracteres WH1602 de Winstar incorpora interfaces I2C y SPI sin necesidad de una placa de conversión adicional.
Sin añadir una placa de conversión, basta con conectar la placa de desarrollo Arduino Uno para controlar directamente los siguientes módulos LCD de caracteres de Winstar mediante diferentes interfaces de comunicación.
- WINSTAR WH1602 LCM: 16 caracteres × 2 líneas
- WINSTAR WH2002 LCM: 20 caracteres × 2 líneas
- WINSTAR WH2004 LCM: 20 caracteres × 4 líneas
Estas tres series LCM integran el controlador LCD RW1063 y admiten interfaces serie (I2C y SPI), así como la interfaz paralela (6800).
Nota: Para obtener más información sobre las interfaces de display, consulte "Comprender las interfaces de display".
Definición de los pines del LCM
| N.º de pin |
Símbolo |
Descripción |
| No.1 |
Vss |
Tierra (GND) |
| No.2 |
Vdd |
Alimentación de la lógica |
| No.3 |
V0 |
Ajuste de contraste |
| No.4 |
RS |
Selección de comando/datos |
| No.5 |
RW |
Señal de selección lectura/escritura únicamente para interfaz 6800 de 8/4 bits |
| No.6 |
E |
Señal de habilitación únicamente para interfaz 6800 de 8/4 bits |
| No.7 |
DB0/SA0 |
Línea de bus de datos 0 únicamente para interfaz 6800 de 8 bits
Línea de configuración de dirección SA0 para interfaz I2C |
| No.8 |
DB1/SA1 |
Línea de bus de datos 1 únicamente para interfaz 6800 de 8 bits
Línea de configuración de dirección SA1 para interfaz I2C |
| No.9 |
DB2 |
Línea de bus de datos 2 únicamente para interfaz 6800 de 8 bits |
| No.10 |
DB3 |
Línea de bus de datos 3 únicamente para interfaz 6800 de 8 bits |
| No.11 |
DB4 |
Línea de bus de datos 4 únicamente para interfaz 6800 de 8/4 bits |
| No.12 |
DB5/CSB/CSB |
Línea de bus de datos 5 únicamente para interfaz 6800 de 8/4 bits
Líneas de selección CSB Enable para interfaces I2C y SPI |
| No.13 |
DB6/SDA/SCLK |
Línea de bus de datos 6 únicamente para interfaz 6800 de 8/4 bits
Línea de datos SDA para interfaz I2C
Señal de reloj SCLK para interfaz SPI |
| No.14 |
DB7/SCL/SID |
Línea de bus de datos 7 únicamente para interfaz 6800 de 8/4 bits
Línea de reloj SCL para interfaz I2C
Línea de datos SID para interfaz SPI |
| No.15 |
A+ |
Alimentación del backlight (B/L) + |
| No.16 |
K- |
Alimentación del backlight (B/L) - |
Tabla 1: Definición de los pines del LCM
En relación con el pin V0 indicado en la tabla anterior, se utiliza un resistor variable de 20 kΩ para ajustar el contraste de los caracteres. Durante la prueba, si el texto no es visible o la imagen de fondo continúa mostrándose, ajuste este resistor variable para configurar el contraste adecuado.
El método de conexión del resistor variable V0 se muestra en la Figura 3:
Figura 3: Método de conexión del resistor variable V0
Cómo conectar el LCM con la placa de desarrollo Arduino Uno
La Figura 4 muestra los métodos de conexión de las cuatro interfaces de comunicación del LCM (I2C, SPI, 6800 de 8 bits/4 bits) con Arduino Uno. Se puede observar que las interfaces I2C y SPI requieren únicamente un número reducido de pines GPIO para controlar los módulos LCD de caracteres.
Para la interfaz I2C, dado que Arduino Uno incorpora resistencias pull-up internas en los pines I2C, no es necesario conectar resistencias pull-up adicionales a los pines SDA y SCL. Si las resistencias pull-up internas se deshabilitan mediante el programa, será necesario conectar resistencias pull-up externas.
(a) Conexión de interfaz I2C

(b) Conexión de interfaz SPI

(c) Conexión de interfaz 6800 de 4 bits

(d) Conexión de interfaz 6800 de 8 bits

Figura 4: Métodos de conexión de las cuatro interfaces de comunicación del LCM con Arduino Uno.
Comandos del LCM
No todas las interfaces de comunicación permiten utilizar el conjunto completo de comandos del LCM. En la interfaz SPI no existe una línea de control RW ni pines MISO, por lo que no se admite la función de lectura de comandos. Para la escritura, la línea de control RS determina si se envían datos de comando o datos de display.
En la interfaz I2C tampoco existe una línea de control RW, por lo que no se admiten comandos de lectura. Antes de escribir datos de comando o datos de display, es necesario enviar el código de control de comando (A0=0) o el código de control de datos (A0=1) para determinar si el siguiente byte corresponde a un comando o a datos de display.
Temporización de las interfaces SPI e I2C
Las Figuras 5 y 6 muestran los diagramas de temporización para controlar el LCM mediante la interfaz SPI. Se puede observar que el SPI utilizado por el LCM no corresponde a la interfaz SPI estándar normalmente proporcionada por un MCU. Es necesario añadir una línea de señal RS para determinar si el byte enviado corresponde a un comando o a un dato. Los datos de bits (BIT7~BIT0) de la línea de datos (SID) cambian cuando la línea de reloj (SCLK) se encuentra en nivel bajo. Los datos de bits (BIT7~BIT0) se capturan cuando la línea de reloj (SCLK) se encuentra en nivel alto.

Figura 5: Temporización de escritura de comando SPI

Figura 6: Temporización de escritura de datos SPI
Las Figuras 7 y 8 muestran los diagramas de temporización para controlar el LCM mediante la interfaz I2C. Excepto por la señal Chip Select Bar (CSB), se puede observar que el control mediante la interfaz I2C consiste en enviar tres bytes en cada operación de escritura de datos de comando o datos de display. Entre ellos, el bit A0 del segundo byte determina si el tercer byte corresponde a un comando o a datos de display.

Figura 7: Temporización I2C de escritura de comandos

Figura 8: Temporización I2C de escritura de datos
Código
El LCM puede compilarse y utilizarse directamente mediante la modificación de la configuración del programa.
Step1: configurar el número máximo de caracteres por línea del LCM.
Por ejemplo, la siguiente configuración establece un máximo de 16 caracteres por línea.

Step2: configurar el número máximo de líneas del LCM.
Por ejemplo, la siguiente configuración establece el LCM con 2 líneas.

Step3: configurar la interfaz del LCM.
Por ejemplo, la siguiente configuración selecciona la interfaz I2C.

Step4: compilar el programa y cargarlo en la placa de desarrollo Arduino Uno.
La Figura 9 muestra una representación esquemática de las pantallas de tres LCMs.
Cuando el contraste del display sea demasiado claro u oscuro, el resistor variable conectado al pin V0 puede ajustarse para obtener un contraste adecuado, tal como se muestra en la Figura 10.
(a) Contraste bajo
Solo se pueden ver caracteres con poca intensidad. |
(b) Contraste adecuado |
(c) Contraste alto
Cada carácter presenta una sombra visible. |
 |
 |
 |
 |
 |
 |
 |
 |
 |
| Figura 9: Representación esquemática de las pantallas de tres LCMs |

Figura 10: Pin V0 ajustable
Si necesita el código de demostración completo, póngase en contacto con nosotros.