Display SSD1306 16x4

 Esses displays OLED SSD1306 são muito bacanas para mostrar pequenos textos e informações a partir de um microcontrolador AVR:

 


 


 

Assim, foi escrito um programa ASM que converte esses displays gráficos 128x64 em um display simples de caracteres de 16x4:

 




 Esse programa contém o mapa de bits de 82 caracteres que são gravados no final da ROM do microcontrolador, ocupando pouco mais de 1kB e possui uma rotina que coloca um caractere no display quando é informado o número do caractere e as coordenadas xy.

Os caracteres foram desenhados e espremidos para permitir a matriz 16x4, com uma dimensão de 8x16 pixels, oferecendo uma boa visualização. 

Esse programa foi convertido em um arquivo .INC para ser incluído num programa principal como se fosse uma biblioteca.

Uma aplicação interessante seria depurar um programa em desenvolvimento onde as informações seriam escritas no display, bastando para isso, somente incluir essa biblioteca e ligar os dois fios da interface I2C ou então, simplesmente mostrar informações em algum projeto, podendo ser modificado se necessário.

Foram escritos 3 programas para 3 diferentes microcontroladores AVR. O ATTiny85 não possui interface I2C e a comunicação é feita por software. Já para o Atmega8 e o Atmega328, essa interface I2C é utilizada.


Abaixo, os circuitos testados para estes microcontroladores:






E, abaixo, os programas disponibilizados:

 

 https://drive.google.com/file/d/1ycGWyovyKFjgFAzQmjK16_2qUhcOlTjo/view?usp=sharing

 

 

A figura abaixo mostra o funcionamento do display: após receber os comandos de inicialização, tem-se as colunas endereçadas de 0 a 127 resultando em 128 pixels e as páginas de 0 a 7, com cada página tendo uma altura de 8 pixels, resultando em 64 pixels.

Uma escrita sequencial de bytes vai inserindo 8 pixels verticais para cada byte, formando assim uma figura. Essa figura pode ser iniciada em qualquer posição do display através de comandos de endereçamento inicial da coluna e da página:


  

É interessante que se o display inicialmente receber somente o comando para ligar, a memória RAM aleatória acaba mostrando um monte de pixels desordenados como mostra a foto abaixo. Assim, o display precisa ser apagado com uma rotina inicial, que também está incluída no programa:

 


 

 

Comentários

Postagens mais visitadas deste blog

Gerador Aleatório

MP3

HD com relês