Visão Geral do Módulo LCD1602
O módulo de display LCD1602 é um componente de cristal líquido projetado para exibir caracteres como letras, números e símbolos em uma matriz de pontos. Ele suporta modos de transmissão de dados de 4 bits ou 8 bits e fornece uma configuração de 5x7 pontos com cursor. Internamente, inclui uma área de buffer de dados (DDRAM), um gerador de caracteres ROM (CGROM) e um gerador de caracteres RAM (CGRAM), permitindo armazenar até oito caracteres personalizados de 5x8 pontos. Oferece diversas instruções, como limpar a tela, posicionar o cursor, controlar a exibição e piscar caracteres. Possui circuito de reinicialização automática ao energizar.
Definição dos pinos:
- VSS: Terra da alimentação.
- VDD: Alimentação positiva de +5V.
- VO: Ajuste de contraste, conectado a um potenciômetro.
- RS: Seleção entre registrador de dados ou comando.
- RW: Seleção entre leitura ou escrita.
- E: Sinal de habilitação para transferência de dados.
- D0-D3: Linhas de dados, não utilizadas nesta configuração.
- D4-D7: Linhas de dados, conectadas a GPIOs.
- A: Anodo da luz de fundo, conectaod a +5V.
- S: Catodo da luz de fundo, conectado à terra.
Especificações Técnicas
- Capacidade de exibição: 16×2 caracteres.
- Tensão de operação do chip: 4.5 a 5.5V.
- Corrente de operação: 2.0mA (em 5.0V).
- Tensão ideal de operação: 5.0V.
- Tamanho do caractere: 2.95×4.35 (L×A) mm.
Interface de Software com MicroPython
Inicialização do Objeto LCD1602
A função LCD1602() cria uma instância do driver para o display. Ela recebe sete objetos GPIO correspondentes aos pinos RS, RW, E e D4 a D7. Retorna um objeto LCD1602 em caso de sucesso ou lança uma exceção se falhar.
Exemplo de código com pinagem alternativa e nomes de variáveis modificados:
from machine import Pin
import lcd1602
# Configuração dos pinos GPIO
pino_rs = Pin(2, Pin.OUT)
pino_rw = Pin(4, Pin.OUT)
pino_e = Pin(16, Pin.OUT)
pino_d4 = Pin(17, Pin.OUT)
pino_d5 = Pin(18, Pin.OUT)
pino_d6 = Pin(19, Pin.OUT)
pino_d7 = Pin(21, Pin.OUT)
display_lcd = lcd1602.LCD1602(pino_rs, pino_rw, pino_e, pino_d4, pino_d5, pino_d6, pino_d7)
print('Display inicializado.')
Exibição de Texto na Tela
O método exibir_texto(linha, coluna, texto) posiciona o cursor em uma linha (0 ou 1) e coluna (0 a 15) específicas, e então imprime a string fornecida. Retorna o número de caracteres exibidos com sucesso.
Exemplo de uso para mostrar uma mensagem na segunda linha:
from machine import Pin
import lcd1602
pino_rs = Pin(2, Pin.OUT)
pino_rw = Pin(4, Pin.OUT)
pino_e = Pin(16, Pin.OUT)
pino_d4 = Pin(17, Pin.OUT)
pino_d5 = Pin(18, Pin.OUT)
pino_d6 = Pin(19, Pin.OUT)
pino_d7 = Pin(21, Pin.OUT)
display_lcd = lcd1602.LCD1602(pino_rs, pino_rw, pino_e, pino_d4, pino_d5, pino_d6, pino_d7)
caracteres_escritos = display_lcd.exibir_texto(1, 0, 'Ola Mundo')
print(f'Caracteres escritos: {caracteres_escritos}')
Exemplo Prático de Integração
Este exemplo compelto demonstra a inicialização e exibição de texto, com estrutura de código reorganizada:
from machine import Pin
import lcd1602
def configurar_display():
rs = Pin(2, Pin.OUT)
rw = Pin(4, Pin.OUT)
e = Pin(16, Pin.OUT)
d4 = Pin(17, Pin.OUT)
d5 = Pin(18, Pin.OUT)
d6 = Pin(19, Pin.OUT)
d7 = Pin(21, Pin.OUT)
return lcd1602.LCD1602(rs, rw, e, d4, d5, d6, d7)
if __name__ == '__main__':
lcd = configurar_display()
lcd.exibir_texto(0, 0, 'MicroPython')
lcd.exibir_texto(1, 0, 'LCD1602 Pronto')
print('Operação concluída.')
Protocolo de Comunicação
A comunicação entre o microcontrolador e o controlador do LCD1602 ocorre via GPIO, dividida em fases de inicialização e comunicação de instruções.
- Fase de Inicialização: Envia-se três vezes o byte 0x03 para iniciar o LCD, com intervalos de tempo distintos. Em seguida, configura-se o modo de transferência de 4 bits, seguido por comandos para funcionalidade, modo de exibição e outras configurações.
- Fase de Comunicação: Para enstruções, o pino RS é definido como 0 e os dados são enviados via D4-D7. Para escrever caracteres, RS é definido como 1. Cada transferência de 8 bits é dividida em duas transmissões de 4 bits, com temporização específica no pino E para sincronização.
Princípio de Funcionamento
O display LCD1602 utiliza 16 pinos para controle. Os pinos VSS e VDD fornecem a alimentação. VO ajusta o contraste através de um potenciômetro. O pino RS seleciona entre registrador de dados (alto) ou comando (baixo). RW controla leitura (alto) ou escrita (baixo). O pino E dispara a ação quando há uma transição de nível alto para baixo, fazendo o módulo ler os dados nos pinos D0-D7. Os pinos A e K são para a luz de fundo.