Controlando um Display LCD1602 com MicroPython em Projetos de IoT

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.

Tags: MicroPython LCD1602 IoT GPIO Display de Cristal Líquido

Publicado em 6-18 20:54