【DFRobot FireBeetle ESP32微控制器试用体验】Max7219点阵

  • bluebanboom
  • LV4工程师
  • |      2017-10-14 19:25:20
  • 浏览量 1444
  • 回复:0
本帖最后由 bluebanboom 于 2017-10-14 19:35 编辑 网上大多数资料里都是直接GPIO模拟SPI来驱动Max7219点阵的,这样代码比较容易移植,因为在各个不同平台上GPIO的使用相对来说最为简单。但是这次我偏不走模拟,直接用原生SPI来驱动。之所以有这样的底气,是这两天在AndroidThings上彻底掌握了Max7219点阵的驱动原理,再来写代码真是得心应手,没有什么难度而言了。 关于Max7219点阵的驱动详解请参考这篇帖子《【Raspberry Pi 3 开发板 试用体验】AndroidThings MAX7219点阵》 https://bbs.icxbk.com/community/thread-97808-1-1.html。 由于ESP32兼容Arduino,所以只要熟悉Arduino的SPI操作即可。首先来看看ESP32相关的引脚,如下图所示: 将Max7219的DIN连接IO23,CLK连接IO18,CS连接D8,GND接Ground,VCC接3.3V。 由于不用模拟SPI了,所以核心函数只有一个,而且Arduino的SPI提供了transfer16函数,可以直接传输16位数据,这样就不用分两次传输了。
void WriteMax7219(byte addr, byte data) {

  digitalWrite(pinCS, LOW);

  word w = word(addr, data);

  SPI.transfer16(w);

  digitalWrite(pinCS, HIGH);

}

接下来就是初始化函数了,有了核心函数之后,什么都简单了
void InitMax7219() {

  WriteMax7219(0x09, 0x00);  //译码方式:不译码

  WriteMax7219(0x0a, 0x03);  //亮度

  WriteMax7219(0x0b, 0x07);  //扫描界限;8个数码管显示

  WriteMax7219(0x0c, 0x01);  //掉电模式:0,普通模式:1

  WriteMax7219(0x0f, 0x00);  //显示测试:1;测试结束,正常显示:0

}

完整的代码如下所示,真的是非常的简单:
#include 



int pinCS  = D8;



byte disp = {

  {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

  {0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00},

  {0x00,0x00,0x3C,0x24,0x24,0x3C,0x00,0x00},

  {0x00,0x7E,0x42,0x42,0x42,0x42,0x7E,0x00},

  {0xFF,0x81,0x81,0x81,0x81,0x81,0x81,0xFF}

};





void WriteMax7219(byte addr, byte data) {

  digitalWrite(pinCS, LOW);

  word w = word(addr, data);

  SPI.transfer16(w);

  digitalWrite(pinCS, HIGH);

}



void InitMax7219() {

  WriteMax7219(0x09, 0x00);  //译码方式:不译码

  WriteMax7219(0x0a, 0x03);  //亮度

  WriteMax7219(0x0b, 0x07);  //扫描界限;8个数码管显示

  WriteMax7219(0x0c, 0x01);  //掉电模式:0,普通模式:1

  WriteMax7219(0x0f, 0x00);  //显示测试:1;测试结束,正常显示:0

}



void setup() {

  SPI.begin();

  pinMode(pinCS, OUTPUT);

  InitMax7219();

}



void loop() {

  for(int j=0;j<5;j++)

  {

    for(int i=1;i<9;i++)

    WriteMax7219(i,disp);

    delay(200);

  }  

}

最终的连接图如下:
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:0
x
收藏成功!点击 我的收藏 查看收藏的全部帖子