Arduino aciona a matriz de pontos MAX7219

Introdução ao MAX7219

O MAX7219 é um driver de display de cátodo comum de entrada/saída serial integrado que conecta um microprocessador com um display de LED digital de 7 segmentos de 8 dígitos, bem como um display de gráfico de barras ou 64 LEDs individuais. Inclui um codificador BCD tipo B no chip, vários loops de varredura, drivers de palavras de segmento e uma RAM estática de 8*8 para armazenar cada dado. Existe apenas um registro externo usado para definir a corrente do segmento para cada LED. Todos os microprocessadores de uso geral podem ser conectados por meio de uma interface serial de quatro fios, e cada dado pode ser endereçado sem sobrescrever todas as telas quando atualizado.
Em seguida, usamos o Arduino para acionar o módulo de matriz de pontos MAX7219 para exibir algumas coisas interessantes.

insira a descrição da imagem aqui

Clique na imagem para comprar

Descrição do módulo

O módulo de treliça MAX7219 usado desta vez é um módulo de treliça composto por 8 treliças de 8x8 dispostas de acordo com 2x4.
O método em cascata é o seguinte:
insira a descrição da imagem aqui
o primeiro no canto superior esquerdo do módulo é o terminal de entrada, e o último no canto inferior direito pode ser usado como interface para continuar em cascata, ou seja, quando vários módulos estão em cascata , o terminal de entrada do primeiro módulo é conectado ao microcomputador de chip único e o terminal de saída é conectado à entrada do segundo módulo, a saída do segundo módulo é conectada à entrada do terceiro módulo e assim por diante .
Qualquer matriz de pontos na cascata pode ser editada de acordo com diferentes endereços.
O seguinte irá expandir a biblioteca "LedControl" no Arduino.

Descrição do pino e fiação

VCC: interface de alimentação do módulo, que pode ser alimentado pela porta de alimentação de 5v do microcontrolador
GND: terra de alimentação
DIN: entrada de dados
CS: terminal de seleção de chip, dados seriais são carregados no registrador de deslocamento quando a interface está baixa
CLK: interface de relógio

Módulo matricial MAX7219 Arduino UNO
VCC 5V
GND GND
A PARTIR DE D12
CLK D11
CS D10

insira a descrição da imagem aqui

teste do módulo

Antes de iniciar o teste, primeiro verifique se todos os módulos podem acender normalmente
. Abra o exemplo de "LCDemoCascadedDevices" na biblioteca "LedControl". Depois de conectar os fios de acordo com o método de fiação acima, grave-os no Arduino UNO e execute para testar se a tela é cada pixel é normal.
insira a descrição da imagem aqui
A relação de tempo mudou o atraso do programa para 50ms, de modo que o tempo para que toda a matriz de pontos seja executada uma vez seja mais rápido.

Código fonte do atraso do programa

unsigned long delaytime=500;

Altere o 500 para trás para 50 para detectar rapidamente a matriz de pontos.

padrão de exibição

Abra o arquivo "LedControl.h" na biblioteca "LedControl", podemos ver todas as funções da biblioteca desta biblioteca a partir dele, usaremos essas funções da biblioteca para exibir padrões no módulo matricial MAX7219.

primeira função de biblioteca

void shutdown(int addr, bool status);

Esta função permite ligar ou desligar um módulo matricial MAX7219 (modo de economia de energia) O primeiro parâmetro
é o endereço da matriz a ser controlada na cascata.

segunda função de biblioteca

void clearDisplay(int addr);

É usado para limpar a tela quando a tela é alternada. O
parâmetro é o endereço da matriz de pontos que precisa limpar a tela.

A terceira função de biblioteca

void setRow(int addr, int row, byte value);

Usado para exibição de linha
O primeiro parâmetro é o endereço da matriz de pontos a ser exibido;
o segundo parâmetro é a linha a ser exibida (0-7);
o terceiro parâmetro é o valor exibido da linha (1 ativado e 0 desativado)

Ao usar a biblioteca "LedControl" para exibir linhas ou colunas, precisamos usar o software do módulo para converter o padrão desejado em números hexadecimais. insira a descrição da imagem aqui
Agora, usando as funções acima e o software do módulo, começamos a exibir o padrão desejado

#include <LedControl.h>
#include "Display.h"
#define DIN  12	//引脚定义
#define CLK  11
#define CS  10
LedControl led = LedControl(DIN, CLK, CS , 8);	//创建对象

void setup() {
    
    
  // put your setup code here, to run once:
  //点阵初始化设置
  for (int i = 0; i < 8; i++)
  {
    
    
    led.shutdown(i, false);
    led.setIntensity(i, 8);
    led.clearDisplay(i);
  }

}

void loop() {
    
    
  // put your main code here, to run repeatedly:
    for (int j = 0; j < 86; j++)
  {
    
    

    // printByte(aa[1][i]);
    for (int i = 0; i < 8; i++)
    {
    
    
      led.setRow(0, i, Display[j][i]);	//行显示
      led.setRow(1, i, Display[j][i]);
      led.setRow(2, i, Display[j][i]);
      led.setRow(3, i, Display[j][i]);
      led.setRow(4, i, Display[j][i]);
      led.setRow(5, i, Display[j][i]);
      led.setRow(6, i, Display[j][i]);
      led.setRow(7, i, Display[j][i]);
    }
    delay(100);
  }
}


Mostrar resultados
insira a descrição da imagem aqui
insira a descrição da imagem aqui
insira a descrição da imagem aqui

insira a descrição da imagem aqui
A tela era originalmente coerente, mas devido ao tamanho do arquivo gif, só foi possível tirar screenshots em seções.
A biblioteca "LedControl" é relativamente simples, e podemos facilmente usar MAX7219 para exibir o padrão que desejamos. O
experimento acima é um experimento em que matrizes de 8 pontos exibem um padrão de forma síncrona.

	  led.setRow(0, i, Display[j][i]);	//行显示
      led.setRow(1, i, Display[j][i]);
      led.setRow(2, i, Display[j][i]);

Você também pode alterar o conteúdo da matriz Display para exibir diferentes padrões com diferentes treliças ou combinar várias treliças em um padrão.
Este experimento acabou, bem-vindo para deixar uma mensagem e trocar, todos aprendem e progridem uns com os outros.

Acho que você gosta

Origin blog.csdn.net/qq_42250136/article/details/123846836
Recomendado
Clasificación