Display ST7920 Atmega328

O display ST7920 é um display gráfico 128x64 que possui internamente uma memória já com vários caracteres para serem usados mas aqui foi testado um conjunto de caracteres próprios e menores para caberem em maior quantidade, gerando assim um arquivo INC que converte esse display numa tela de caracteres 16x8 para uso geral.

Acabei também por criar outro arquivo INC com várias rotinas que desenham figuras gráficas no diplay, como linhas, triângulos, retângulos, círculos, e suas variantes.

E por fim foram criadas rotinas trigonométricas para girar essas figuras, que utiliza aquelas séries de polinômio iterativas.

O programa é em ASM sem mistérios, exceto o algoritmo dessas rotinas de seno, cosseno, arcoseno...  

A base dos testes é o Atmega328P, sendo uma versão em SMD com comunicação serial no display, somente com escrita. Como cada byte escrito aciona 8 pixels de uma vez, não é possivel acionar um único pixel e preservando os demais do byte e, isso implica que é necessário criar uma memória gráfica na RAM do microcontrolador para ser modificada e, então, escreve-se o quadro inteiro no display de uma vez:




Os resultados foram bons então também renderizei um cubo na tela com movimentos mas aconteceu que ficou bastante lento com essa configuração.

O cubo tem 8 pontos 3D centrados em 0 formando assim 8 vetores,  para girar o cubo no eixo Z, converte-se os pontos xy num vetor plano com um ângulo que será somado a um passo para depois desconverter o vetor nos novos xy rotacionados, enquanto que o z é mantido. Com todos os vetores girados soma-se a um ponto 3D centrado na tela e em profundidade Z, obtendo-se os novos 8 pontos 3D do cubo: 


 

Então é só projetar esses pontos na tela: centraliza-se o ponto 3D em 0 para achar o ponto 2D xt yt na tela em função de z:   

Com dois pontos 2D na tela pode-se desenhar uma linha, com 8 desenha-se o cubo inteiro.
 


Vídeo:


 

 

Programa ASM 

Comentários

Postagens mais visitadas deste blog

Gerador Aleatório

MP3

HD com relês