
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-23 15:03

O controlador MAX7219 é fabricado pela Maxim Integrated é compacto, driver de exibição de cátodo comum de entrada / saída serial que pode conectar microcontroladores a 64 LEDs individuais, displays de LED numéricos de 7 segmentos de até 8 dígitos, displays de gráfico de barras, etc. -chip são um decodificador BCD code-B, circuitos de varredura multiplex, drivers de segmento e dígito e uma RAM estática 8 × 8 que armazena cada dígito.
Os módulos MAX7219 são muito convenientes para uso com microcontroladores como o ATtiny85 ou, em nosso caso, a placa Tinusaur.
Etapa 1: O Hardware


Os módulos MAX7219 geralmente são assim. Eles têm um barramento de entrada de um lado e um barramento de saída do outro. Isso permite que você encadeie 2 ou mais módulos, ou seja, um após o outro, a fim de criar configurações mais complicadas.
Os módulos que estamos usando são capazes de se conectar em uma cadeia usando 5 pequenos jumpers. Veja a foto abaixo.
Etapa 2: Pinagem e sinais
O módulo MAX7219 tem 5 pinos:
- VCC - potência (+)
- GND - terra (-)
- DIN - entrada de dados
- CS - Seleção de Chip
- CLK - Relógio
Isso significa que precisamos de 3 pinos no lado do microcontrolador ATtiny85 para controlar o módulo. Esses serão:
- PB0 - conectado ao CLK
- PB1 - conectado ao CS
- PB2 - conectado ao DIN
Isso é suficiente para se conectar ao módulo MAX7219 e programá-lo.
Etapa 3: o protocolo

A comunicação com o MAX7219 é relativamente fácil - ele usa um protocolo síncrono, o que significa que para cada bit de dados que enviamos, há um ciclo de clock que significa a presença desse bit de dados.
Em outras palavras, enviamos 2 sequências paralelas para bits - uma para o relógio e outra para os dados. Isso é o que o software faz.
Etapa 4: o software

A forma como este módulo MAX7219 funciona é esta:
- Escrevemos bytes em seu registro interno.
- MAX7219 interpreta os dados.
- MAX7219 controla os LEDs na matriz.
Isso também significa que não precisamos circular pela matriz de LEDs o tempo todo para acendê-los - o controlador MAX7219 cuida disso. Ele também pode gerenciar a intensidade dos LEDs.
Portanto, para usar os módulos MAX7219 de maneira conveniente, precisamos de uma biblioteca de funções para atender a esse propósito.
Primeiro, precisamos de algumas funções básicas para escrever nos registradores MAX7219.
- Gravando um byte no MAX7219.
- Escrevendo uma palavra (2 bytes) no MAX7219.
A função que grava um byte no controlador é assim:
void max7219_byte (dados uint8_t) {para (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK); // Define CLK para LOW if (data & 0x80) // Mascara o MSB dos dados PORTB | = (1 << MAX7219_DIN); // Defina DIN como HIGH else PORTB & = ~ (1 << MAX7219_DIN); // Defina DIN como LOW PORTB | = (1 << MAX7219_CLK); // Defina CLK para dados HIGH << = 1; // Mude para a esquerda}}
Agora que podemos enviar bytes para o MAX7219, podemos começar a enviar comandos. Isso é feito enviando 2 byes - o primeiro para o endereço do registro interno e o segundo para os dados que gostaríamos de enviar.
Há mais de uma dúzia de registros no controlador MAX7219.
Enviar um comando, ou uma palavra, é basicamente enviar 2 bytes consecutivos. A implementação da função é muito simples.
void max7219_word (endereço uint8_t, dados uint8_t) {PORTB & = ~ (1 << MAX7219_CS); // Defina CS para BAIXO max7219_byte (endereço); // Enviando o endereço max7219_byte (data); // Enviando os dados PORTB | = (1 << MAX7219_CS); // Definir CS para HIGH PORTB & = ~ (1 << MAX7219_CLK); // Defina CLK para BAIXO}
É importante observar aqui a linha onde trazemos o sinal CS de volta para HIGH - isso marca o final da sequência - neste caso, o final do comando. Uma técnica semelhante é usada ao controlar mais de uma matriz conectada em uma cadeia. A próxima etapa, antes de começarmos a ligar e desligar os LEDs, é inicializar o controlador MAX7219. Isso é feito gravando certos valores em certos registros. Por conveniência, ao codificá-lo, poderíamos colocar a sequência de inicialização em um array.
uint8_t initseq = {0x09, 0x00, // Registro de modo de decodificação, 00 = Sem decodificação 0x0a, 0x01, // Registro de intensidade, 0x00.. 0x0f 0x0b, 0x07, // Registro de limite de varredura, 0x07 para mostrar todas as linhas 0x0c, 0x01, // Registro de desligamento, 0x01 = Operação normal 0x0f, 0x00, // Registro de teste de exibição, 0x00 = Operação normal};
Precisamos apenas enviar os 5 comandos acima em uma sequência como pares de endereço / dados. Próxima etapa - acender uma fileira de LEDs.
Isso é muito simples - nós apenas escrevemos um comando onde o primeiro byte é o endereço (de 0 a 7) e o segundo byte são os 8 bits que representam os 8 LEDs na linha.
void max7219_row (endereço uint8_t, dados uint8_t) {if (endereço> = 1 && endereço <= 8) max7219_word (endereço, dados); }
É importante observar que isso funcionará apenas para 1 matriz. Se conectarmos mais matrizes em uma cadeia, todas mostrarão os mesmos dados. A razão para isso é que, após enviar o comando, trazemos o sinal CS de volta para HIGH, o que faz com que todos os controladores MAX7219 na cadeia travem e mostrem o que quer que tenha sido o último comando.
Recomendado:
Interface do microcontrolador Atmega16 com display LED de matriz de pontos: 5 etapas

Interface do microcontrolador Atmega16 com display LED de matriz de pontos: Neste projeto, faremos a interface de um display de LED de matriz de pontos com microcontrolador AVR (Atmega16). Aqui vamos mostrar simulação em proteus, você pode aplicar a mesma coisa em seu hardware. Então, vamos primeiro imprimir um caractere, digamos 'A' em t
Como usar a matriz de pontos Max7219 8x8 com "skiiiD": 9 etapas

Como usar a matriz de pontos 8x8 do Max7219 com "skiiiD": esta é uma instrução em vídeo da matriz de pontos 8x8 do Max7219 via " skiiiD " Antes de começar, abaixo está um tutorial básico de como usar o skiiiDhttps: //www.instructables.com/id / Getting-Started-W
Como construir a matriz 8x8 BIG LED (MAX7219 LED 10mm): 9 etapas (com imagens)

Como construir uma matriz LED 8x8 BIG (MAX7219 LED 10mm): Você trabalhou com uma matriz LED 8x8 pronta como monitores? Eles vêm em vários tamanhos e são bastante interessantes para trabalhar. Um grande tamanho prontamente disponível é cerca de 60 mm x 60 mm. No entanto, se você estiver procurando por uma matriz de LED pré-fabricada muito maior
Como fazer um robô controlado por celular. Baseado em DTMF - Sem microcontrolador e programação - Controle de qualquer lugar do mundo - RoboGeeks: 15 etapas

Como fazer um robô controlado por celular. Baseado em DTMF | Sem microcontrolador e programação | Controle de qualquer lugar do mundo | RoboGeeks: Quer fazer um robô que possa ser controlado de qualquer lugar do mundo, vamos fazer isso
Interface de exibição de LED de matriz de pontos com microcontrolador 8051: 5 etapas

Interface do display LED de matriz de pontos com o microcontrolador 8051: Neste projeto, faremos a interface de um display de LED de matriz de pontos com o microcontrolador 8051. Aqui vamos mostrar simulação em proteus, você pode aplicar a mesma coisa em seu hardware. Então, vamos primeiro imprimir um caractere, digamos 'A' neste disp