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


9

我有:

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

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


@Bruno-您删除了链接,所以我认为它已经死了。没关系,您也没有解释为什么删除,所以我回滚了。如果您有充分的理由删除该链接,请将其保留在评论字段中。
stevenvh 2012年

@stevenvh对不起,我之前对其进行过测试,但无法正常工作。也许我遇到了一些Internet连接问题,但现在可以使用了。回滚我的编辑效果很好。
布鲁诺·费雷拉

Answers:


11

布莱恩·钟(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脉冲。我已经编写了标枪邮票的原始程序。由于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];
  }
}

2

抱歉,对您来说太晚了,但我刚刚写了一篇关于将MAX7219与LED矩阵和7段LED显示器配合使用的文章。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.