Arduino impulsa el módulo de 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.
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:
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 |
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.
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.
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
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.