A Winstar oferece uma ampla linha de módulos LCD de caracteres padrão para aplicações industriais e embarcadas. Os tipos de display disponíveis incluem as séries WH0802, WH1202, WH1601, WH1602, WH1604, WH2002, WH2004, WH2402 e WH4002. Com a possibilidade de utilizar o menor número possível de pinos de controle, esses módulos facilitam a integração do display e a seleção do MCU mais adequado.
Os módulos LCD de caracteres convencionais disponíveis no mercado geralmente utilizam uma placa de conversão adicional para suportar a interface I2C, conforme mostrado na Figura 1. Essa solução pode aumentar a espessura do LCM, adicionar etapas ao processo de fabricação e reduzir o rendimento da produção.
Figura 1: Módulo LCD de caracteres convencional do mercado com uma placa de conversão adicional para suporte à interface I2C.
Figura 2: O módulo LCD de caracteres WH1602 da Winstar suporta interfaces I2C e SPI sem a necessidade de uma placa de conversão adicional.
Sem a necessidade de adicionar uma placa de conversão, basta conectar a placa de desenvolvimento Arduino Uno para controlar diretamente os seguintes módulos LCD de caracteres da Winstar por meio de diferentes interfaces de comunicação.
- WINSTAR WH1602 LCM: 16 caracteres × 2 linhas
- WINSTAR WH2002 LCM: 20 caracteres × 2 linhas
- WINSTAR WH2004 LCM: 20 caracteres × 4 linhas
Essas três séries de LCM integram o controlador LCD RW1063 e suportam interfaces seriais (I2C e SPI), além da interface paralela (6800).
Observação: para obter mais informações sobre interfaces de display, consulte "Conhecendo as interfaces de display".
Definição dos pinos do LCM
| Nº do pino |
Símbolo |
Descrição |
| No.1 |
Vss |
Terra (GND) |
| No.2 |
Vdd |
Alimentação da lógica |
| No.3 |
V0 |
Ajuste de contraste |
| No.4 |
RS |
Seleção entre comando e dados |
| No.5 |
RW |
Sinal de seleção leitura/escrita somente para interface 6800 de 8/4 bits |
| No.6 |
E |
Sinal de habilitação somente para interface 6800 de 8/4 bits |
| No.7 |
DB0/SA0 |
Linha de dados 0 somente para interface 6800 de 8 bits
Linha de configuração de endereço SA0 para interface I2C |
| No.8 |
DB1/SA1 |
Linha de dados 1 somente para interface 6800 de 8 bits
Linha de configuração de endereço SA1 para interface I2C |
| No.9 |
DB2 |
Linha de dados 2 somente para interface 6800 de 8 bits |
| No.10 |
DB3 |
Linha de dados 3 somente para interface 6800 de 8 bits |
| No.11 |
DB4 |
Linha de dados 4 somente para interface 6800 de 8/4 bits |
| No.12 |
DB5/CSB/CSB |
Linha de dados 5 somente para interface 6800 de 8/4 bits
Linhas de seleção CSB Enable para interfaces I2C e SPI |
| No.13 |
DB6/SDA/SCLK |
Linha de dados 6 somente para interface 6800 de 8/4 bits
Linha de dados SDA para interface I2C
>Sinal de clock SCLK para interface SPI |
| No.14 |
DB7/SCL/SID |
Linha de dados 7 somente para interface 6800 de 8/4 bits
Linha de clock SCL para interface I2C
Linha de dados SID para interface SPI |
| No.15 |
A+ |
Alimentação do backlight (B/L) + |
| No.16 |
K- |
Alimentação do backlight (B/L) - |
Tabela 1: Definição dos pinos do LCM
Conforme indicado na tabela acima, o pino V0 utiliza um resistor variável de 20 kΩ para ajustar o contraste dos caracteres. Durante o teste, caso os caracteres não sejam exibidos ou a imagem de fundo continue aparecendo, ajuste esse resistor variável para obter o contraste adequado.
O método de conexão do resistor variável V0 é mostrado na Figura 3:
Figura 3: Método de conexão do resistor variável V0
Conexão do LCM com a placa de desenvolvimento Arduino Uno
A Figura 4 apresenta os métodos de conexão das quatro interfaces de comunicação do LCM (I2C, SPI, 6800 de 8 bits/4 bits) com o Arduino Uno. É possível observar que as interfaces I2C e SPI utilizam apenas uma quantidade reduzida de pinos GPIO para controlar os módulos LCD de caracteres.
Na interface I2C, como o Arduino Uno possui resistores de pull-up internos nos pinos I2C, não são necessários resistores de pull-up adicionais conectados aos pinos SDA e SCL. Caso o resistor de pull-up interno seja desabilitado no programa, um resistor de pull-up externo deverá ser conectado.
(a) Conexão da interface I2C

(b) Conexão da interface SPI

(c) Conexão da interface 6800 de 4 bits

(d) Conexão da interface 6800 de 8 bits

Figura 4: Métodos de conexão das quatro interfaces de comunicação do LCM com o Arduino Uno.
Comandos do LCM
Nem todas as interfaces de comunicação permitem utilizar o conjunto completo de comandos do LCM. Na interface SPI, não há linha de controle RW nem pinos MISO disponíveis; portanto, o comando de leitura não é suportado. Durante a escrita, a linha de controle RS determina se os dados enviados correspondem a dados de comando ou dados de display.
Na interface I2C, a linha de controle RW também não está disponível, portanto os comandos de leitura também não são suportados. Antes de enviar dados de comando ou dados de display, é necessário transmitir o código de controle de comando (A0=0) ou o código de controle de dados (A0=1) para determinar se o próximo byte enviado corresponde a um comando ou a dados de display.
Temporização das interfaces SPI e I2C
As Figuras 5 e 6 apresentam os diagramas de temporização para o controle do LCM por meio da interface SPI. É possível observar que a interface SPI utilizada pelo LCM não corresponde à interface SPI padrão normalmente disponibilizada por um MCU. É necessário um sinal RS adicional para determinar se o byte atualmente transmitido corresponde a um comando ou a um dado. Os dados dos bits (BIT7~BIT0) na linha de dados (SID) são alterados quando a linha de clock (SCLK) está em nível baixo. Os dados dos bits (BIT7~BIT0) são capturados quando a linha de clock (SCLK) está em nível alto.

Figura 5: Temporização da escrita de comando SPI

Figura 6: Temporização da escrita de dados SPI
As Figuras 7 e 8 apresentam os diagramas de temporização para o controle do LCM por meio da interface I2C. Exceto pelo sinal Chip Select Bar (CSB), o controle pela interface I2C consiste no envio de três bytes a cada operação de escrita de dados de comando ou dados de display. Entre esses bytes, o bit A0 do segundo byte determina se o terceiro byte corresponde a um comando ou a dados de display.

Figura 7: Temporização da escrita de comandos I2C

Figura 8: Temporização da escrita de dados I2C
Código
O LCM pode ser compilado e utilizado diretamente após a configuração dos parâmetros do programa.
Step1: definir o número máximo de caracteres por linha do LCM.
Por exemplo, a configuração a seguir define uma linha com no máximo 16 caracteres.

Step2: definir o número máximo de linhas do LCM.
Por exemplo, a configuração a seguir define o LCM com 2 linhas.

Step3: definir a interface do LCM.
Por exemplo, a configuração a seguir seleciona a interface I2C.

Step4: compilar o programa e fazer o upload para a placa de desenvolvimento Arduino Uno.
A Figura 9 apresenta uma representação esquemática das telas exibidas por três LCMs.
Quando o contraste do display estiver muito claro ou muito escuro, o resistor variável conectado ao pino V0 pode ser ajustado para obter o contraste adequado, conforme mostrado na Figura 10.
(a) Contraste baixo
Apenas caracteres pouco visíveis podem ser observados. |
(b) Contraste adequado |
(c) Contraste alto
Cada caractere apresenta uma sombra evidente. |
 |
 |
 |
 |
 |
 |
 |
 |
 |
| Figura 9: Representação esquemática das telas exibidas por três LCMs |

Figura 10: Pino V0 ajustável
Se precisar do código de demonstração completo, entre em contato conosco.