sexta-feira, janeiro 05, 2024

Display LCD Gráfico Monocromático 128x64 (LCD 12864-06D) - Parte 1

Talvez já esteja passando do razoável o meu gosto por displays... mas aqui está mais um. Eu o encontrei em um anúncio da AliExpress (você vai achar várias opções de compra procurando por "LCD 12864-06D"). Como (infelizmente) é o padrão, o anúncio não tem muitas informações sobre ele, somente que usa o controlador ST7565R e (nas perguntas e resposta) que ele é suportado pela biblioteca U8G2

Uma busca na internet achou um vídeo de um brasileiro com uma explicação sucinta de como usar este display com um Arduino e um artigo um pouco mais detalhado. Neste post, e nos seguintes, vou tentar dar uma explicação mais completa e alguns exemplos.


Características Técnicas

O display possui 58 por 28 milímetros de área visível, o que é significativamente maior que os displays monocromáticos OLED de 0,96" que costumo usar. Está disponível em três variações, com fundo azul, cinza e preto. Eu comprei a versão com fundo azul (pontos acesos brancos).

Como dito no título, o display é gráfico com resolução de 128 por 64 pontos. Usando um fonte de 8x8 pontos, podemos apresentar 8 linhas com 16 caracteres.

A tensão de alimentação é 3,3V, mas no vídeo que mencionei acima o display é ligado diretamente a um Arduino (provavelmente operando a 5V). A maioria dos meus exemplos vai ser com microcontroladores de 3,3V, mas ao ligar num Arduino vou usar divisores resistivos nos sinais de saída do Arduino.

O display possui um conector de 13 pinos. Os primeiros 5 são os sinais tradicionais dos controladores de display com interface SPI unidirecional (CS, RES, RS, SCK, SI). Os dois seguintes são a alimentação (VDD e GND). Em seguida temos a alimentação dos LEDs do backlight (LEDA e LEDK). Os últimos quatro pinos são uma outra interface SPI (SCK, CS, SDO e SDI) para acessar uma memória com um fonte de chinês simplificado (16S1Y / ER3805-1).

O Controlador ST7565R

O controlador ST7565R é semelhante a outros controladores de display gráfico. Possui internamente uma memória para armazenar a imagem (com capacidade de 132x64 pontos). A interface com o microcontrolador pode ser paralela ou SPI (unidirecional), mas neste display está disponível somente a interface SPI.

O controlador suporta 23 comandos. A iniciação envolve o envio de vários destes comandos, com alguns valores específicos ao display utilizado e algumas temporizações a serem obedecidos.

(clique para ampliar)

O mapeamento da memória interna ao display 128 x 64 (com o display com o conector para cima) é o seguinte:


Note que o mapeamento vertical é invertido em relação aos displays OLED com controlador SSD1306.

A Memória 16S1Y

Esta é uma característica curiosa do display. Esta memória possui 248K bytes e contém fontes de letras para chinês simplificado e ASCII (várias resoluções, incluindo Arial e Times New Roman).

A interface é SPI e a memória aceita dois comandos: "Read Data Bytes" (operação até 20MHz) e "Read Data Bytes at Higher Speed" (operação até 30MHz). Após o comando devem ser enviados três bytes com o endereço inicial (e um byte adicional no caso do "Higher Speed").

É uma opção útil para sistemas onde o microcontrolador tem capacidade limitada de memória não volátil e você não quer gastá-la com um fonte para o texto.


No próximo post vamos começar a colocar isto em prática, ligando o display a uma Raspberry Pi Pico.


Nenhum comentário: