Arduino maneja la matriz de puntos MAX7219

Introducción al MAX7219

El MAX7219 es un controlador de pantalla de cátodo común integrado de entrada/salida en serie que conecta un microprocesador con una pantalla LED digital de 8 dígitos y 7 segmentos, así como una pantalla de gráfico de barras o 64 LED individuales. Incluye un codificador BCD de tipo B en chip, múltiples bucles de escaneo, controladores de palabra de segmento y una RAM estática de 8*8 para almacenar cada dato. Solo se utiliza un registro externo para establecer la corriente del segmento para cada LED. Todos los microprocesadores de propósito general se pueden conectar a través de una interfaz serial de cuatro hilos, y cada dato se puede direccionar sin sobrescribir todas las pantallas cuando se actualice.
A continuación, usamos Arduino para controlar el módulo de matriz de puntos MAX7219 para mostrar algunas cosas interesantes.

inserte la descripción de la imagen aquí

Haga clic en la imagen para comprar

Descripción del módulo

El módulo de celosía MAX7219 utilizado esta vez es un módulo de celosía compuesto por 8 celosías de 8x8 dispuestas según 2x4.
El método en cascada es el siguiente:
inserte la descripción de la imagen aquí
el primero en la esquina superior izquierda del módulo es el terminal de entrada, y el último en la esquina inferior derecha se puede usar como interfaz para continuar en cascada, es decir, cuando se conectan en cascada varios módulos , el terminal de entrada del primer módulo está conectado a la microcomputadora de un solo chip, y el terminal de salida está conectado a la entrada del segundo módulo, la salida del segundo módulo está conectada a la entrada del tercer módulo y así sucesivamente .
Cualquier matriz de puntos en la cascada se puede editar de acuerdo con diferentes direcciones.
A continuación se ampliará la biblioteca "LedControl" en Arduino.

Descripción de clavijas y cableado

VCC: interfaz de fuente de alimentación del módulo, que puede ser alimentada por el puerto de alimentación de 5v del microcontrolador
GND: tierra de alimentación
DIN: entrada de datos
CS: terminal de selección de chip, los datos en serie se cargan en el registro de desplazamiento cuando la interfaz es baja
CLK: interfaz de reloj

Módulo de matriz de puntos MAX7219 Arduino UNO
CCV 5V
TIERRA TIERRA
DESDE D12
CLK D11
CS D10

inserte la descripción de la imagen aquí

prueba de módulo

Antes de comenzar la prueba, primero verifique si todos los módulos pueden encenderse normalmente
. Abra el ejemplo de "LCDemoCascadedDevices" en la biblioteca "LedControl". Después de conectar los cables de acuerdo con el método de cableado anterior, grábelos en Arduino UNO y ejecútelos. para probar si la pantalla es Cada píxel es normal.
inserte la descripción de la imagen aquí
La relación de tiempo ha cambiado el retraso del programa a 50 ms, de modo que el tiempo para que toda la matriz de puntos se ejecute una vez será más rápido.

Código fuente de retraso del programa

unsigned long delaytime=500;

Cambie el 500 posterior a 50 para detectar rápidamente la matriz de puntos.

patrón de visualización

Abra el archivo "LedControl.h" en la biblioteca "LedControl", podemos ver todas las funciones de biblioteca de esta biblioteca desde él, usaremos estas funciones de biblioteca para mostrar patrones en el módulo de matriz de puntos MAX7219.

primera función de biblioteca

void shutdown(int addr, bool status);

Esta función se utiliza para encender o apagar un módulo de matriz de puntos MAX7219 (modo de ahorro de energía) . El primer parámetro
es la dirección de la matriz de puntos que se controlará en la cascada.

segunda función de biblioteca

void clearDisplay(int addr);

Se utiliza para borrar la pantalla cuando se cambia la pantalla.El
parámetro es la dirección de matriz de puntos que necesita para borrar la pantalla.

La tercera función de biblioteca.

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

Se utiliza para la visualización de líneas
El primer parámetro es la dirección de matriz de puntos que se mostrará;
el segundo parámetro es la línea que se mostrará (0-7);
el tercer parámetro es el valor mostrado de la línea (1 activado y 0 desactivado)

Cuando usamos la biblioteca "LedControl" para mostrar filas o columnas, necesitamos usar el software de módulo para convertir el patrón deseado en números hexadecimales. inserte la descripción de la imagen aquí
Ahora, usando las funciones anteriores y el software de módulo, comenzamos a mostrar el patrón que desea

#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
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí
La pantalla originalmente era coherente, pero debido al tamaño del archivo gif, solo era posible tomar capturas de pantalla en secciones.
La biblioteca "LedControl" es relativamente simple y podemos usar fácilmente MAX7219 para mostrar el patrón que queremos. El
experimento anterior es un experimento en el que 8 matrices de puntos muestran un patrón sincrónicamente.

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

También puede cambiar el contenido de la matriz de visualización para mostrar diferentes patrones con diferentes retículas o combinar múltiples retículas en un patrón.
Este experimento ha terminado, bienvenido a dejar un mensaje e intercambiar, todos aprenden y progresan unos de otros.

Supongo que te gusta

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