如何使用 MAX 7219 将 LED 矩阵连接到 Arduino?

电器工程 Arduino LED矩阵
2022-01-21 08:04:48

我有:

问:我只是想知道如何将它连接到Arduino Duemilanove

我一直在谷歌搜索,但我不知道如何。

2个回答

Bryan Chung 在Internet 档案中仍有一个关于如何使用 MAX7219 将 LED 矩阵连接到 Arduino 的教程:

这是一个 8×8 LED 矩阵的实验,由 MAX7219 IC 驱动,通过 Arduino 微控制器板进行控制。DinoTech 的 Tan 制作了一块定制的 PCB,用于整理连接 LED 矩阵和 IC 的所有电线。它带有一个单独的 12V 电源,以免耗尽 Arduino 板上的所有东西。

控制 MAX7219 驱动 IC 只需 4 根线。他们是

数据时钟锁存器/负载地

数据和时钟引脚应与 Arduino 中 shiftOut() 命令的引脚匹配。在 shiftOut 命令之后,锁存器引脚将给出一个 LOW 到 HIGH 脉冲。我已经为 Javelin Stamp 编写了原始程序。由于 Arduino 只能移动 8 位数据,我必须使用 2 个单独的命令将高字节和低字节都移动到 MAX7219,每个命令需要 2 字节控制。

对于 8×8 LED 矩阵的数据结构,我使用了一个字节数组——长度为 8 的矩阵。矩阵中的每一行对应于 Y 维。一行中的每个位对应于 X 维度。数字 1 开启;0 关闭。X 方向反转,也有 1 位移位。updateLED() 函数满足了这一点。

第一个程序是单线运动的动画。

int CLOCK = 12;
int LATCH = 13;
int DATA  = 11;
byte matrix[8];
int idx = 0;

void setup() {
  pinMode(CLOCK, OUTPUT);
  pinMode(LATCH, OUTPUT);
  pinMode(DATA,  OUTPUT);
  digitalWrite(CLOCK, LOW);
  digitalWrite(LATCH, LOW);
  digitalWrite(DATA,  LOW);
  initLED();
  clearLED();
}

void loop() {
  for (int j=0;j<8;j++) {
    updateLED(idx, j, true);
  }
  refreshLED();
  delay(200);
  for (int j=0;j<8;j++) {
    updateLED(idx, j, false);
  }
  refreshLED();
  delay(100);
  idx++;
  idx %= 8;
}

void ledOut(int n) {
  digitalWrite(LATCH, LOW);
  shiftOut(DATA, CLOCK, MSBFIRST, (n>>8));
  shiftOut(DATA, CLOCK, MSBFIRST, (n));
  digitalWrite(LATCH, HIGH);
  delay(1);
  digitalWrite(LATCH, LOW);
}

void initLED() {
  ledOut(0x0B07);
  ledOut(0x0A0C);
  ledOut(0x0900);
  ledOut(0x0C01);
}

void clearLED() {
  for (int i=0;i<8;i++) {
    matrix[i] = 0x00;
  }
  refreshLED();
}

void refreshLED() {
  int n1, n2, n3;
  for (int i=0;i<8;i++) {
    n1 = i+1;
    n2 = matrix[i];
    n3 = (n1<<8)+n2;
    ledOut(n3);
  }
}

void updateLED(int i, int j, boolean b) {
  int t = 1;
  int n = 0;
  int m = 0;
  if (j==0) {
    m = 7;
  }
  else {
    m = j-1;
  }
  n = t<<m;
  if (b) {
    matrix[i] = n | matrix[i];
  }
  else {
    n = ~n;
    matrix[i] = n & matrix[i];
  }
}

对不起,如果你有点晚了,但我刚刚写了一篇关于将 MAX7219与 LED 矩阵和 7 段 LED 显示器一起使用的帖子。