Arduino aciona o módulo matricial 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.
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:
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 |
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.
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.
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
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.