单片机学习小组
直播中

胖子的逆袭

12年用户 1132经验值
私信 关注

用LedControl库来驱动点阵屏的设计该怎样去实现呢

用LedControl库来驱动点阵屏的设计该怎样去实现呢?其实验结果怎样?

回帖(1)

古贤睦

2022-1-21 14:04:03
上一篇文章介绍过LedControl库函数,下面就用LedControl库来驱动点阵屏
  案例模块

8x8点阵级联模块再某宝就能买到,以下是4块8x8的点阵模块级联,需要注意的是LedControl库最多只能驱动8块8x8点阵显示

案例编程

接线这么简单的事就不说了,DIN,CS,CLK接ESP8266的哪个引脚就定义哪个引脚,以下为基本的初始化代码,连接引脚可做参考

#include


// 32*8 LED Display DIN --> ESP-12F D7
// 32*8 LED Display CS  --> ESP-12F D6
// 32*8 LED Display CLK --> ESP-12F D5
int DIN = D7;
int CS =  D6;
int CLK = D5;


//创建库对象
LedControl LC = LedControl(DIN,CLK,CS,4);


void setup()
{
//初始化address 0-3的8*8点阵屏
    for(int i = 0;i<4;i++)
    {
       LC.shutdown(i,false);       //启动时,关闭省电模式
       LC.setIntensity(i,0);       //亮度设置
       LC.clearDisplay(i);         //清除显示
    }
}
初始化完成后可以直接调用库函数进行点阵的行,列,点的显示(简单显示)
单行显示:
LC.setRow(0,3,0x7C);
单列显示:
LC.setColumn(0,3,0x7C);
点显示:
LC.setLed(0,1,1,true);

对于要显示一个图案或英文这种占几行或者几列的内容的,就需要对库函数做个包装,下面是点阵显示4列内容的函数,参数为显示数组,要显示的点阵编号,数组显示下标,点阵显示偏移位,可以按个人需求改成5列8列的显示,或者改成行显示等

// display four col
void Display_4col(byte character[][4],int device_num,int col,int point)
{
  for(int i = 0;i<4;i++)
  {
    DC.setColumn(device_num,point+i,character[col]);
  }
}


数组可以按显示内容分开

//   0 0
//   - -
//   ● ●
byte eye_display[][4] = {
      {0x3C,0x42,0x42,0x3C},
      {0x3C,0x7E,0x7E,0x3C},
      {0x10,0x10,0x10,0x10},
};


在显示时直接调用函数传参就行,类似下面代码就是显示一个连续眨眼的效果

for(int i = 0;i<2;i++)
{
   Display_4col(eye_display,2,0,2);
   Display_4col(eye_display,1,0,2);
   delay(1350);
   Display_4col(eye_display,2,2,2);
   Display_4col(eye_display,1,2,2);
   delay(150);
}


效果演示
点阵屏眨眼效果如下,可以用字模软件编辑更多图案或字符做出来更有趣的效果
举报

更多回帖

×
20
完善资料,
赚取积分