回答

收藏

[评测分享] 【ESP32-E Arduino开发板】点阵块的显示驱动

#板卡评测 #板卡评测 2849 人阅读 | 0 人回复 | 2021-08-02

前面介绍了串行数码管的显示驱动,其控制芯片是MAX7219,其实基于MAX7219的应用并不止这一种,利用它还可以控制串行点阵块。在单级使用的情况下,一片MAX7219可控制一块8*8点阵的显示块,若采用级联的方式,则可驱动多个点阵块,实现多个字符同时显示,以达到点阵信息屏的输出效果。
8*8点阵显示块的引脚排列方式如图1所示,是分为8条行线和8条列线,当行线和列线分别提供相应的高低电平时,处在行列交叉位置的LED即被点亮。
                              
图1  点阵显示块引脚排列
串行点阵显示块的原理图如图2所示,该模块分为输入端和级联输出端,在单独使用时,只需连接输入端的5个引脚,除2个电源引脚外,另3个引脚为:串行数据输入端DIN、串行时钟输入端CLK及片选引脚CS。
若多片级联,看将前一级的级联输出端与后一级的输入端对应引脚相连。
图2  串行点阵显示块原理图
在使用过程中,模块引脚与开发板的连接关系为:
#define CLK D2
#define DIN D3
#define CS  D7
辅助显示的相应字模被存放在数组中,其结构为:
unsigned char disp[38][8]={
{0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C},  //0
{0x10,0x30,0x50,0x10,0x10,0x10,0x10,0x10},  //1
{0x7E,0x2,0x2,0x7E,0x40,0x40,0x40,0x7E},    //2
...  
{0x41,0x22,0x14,0x8,0x8,0x8,0x8,0x8},       //Y
{0x0,0x7F,0x2,0x4,0x8,0x10,0x20,0x7F},      //Z
{0x8,0x7F,0x49,0x49,0x7F,0x8,0x8,0x8},      //中
{0xFE,0xBA,0x92,0xBA,0x92,0x9A,0xBA,0xFE},//国
};
MAX7219的初始化函数为:
  1. void Init_MAX7219(void)
  2. {
  3. Write_Max7219(0x0b, 0x07);
  4. Write_Max7219(0x0c, 0x01);
  5. Write_Max7219(0x0f, 0x00);
  6. }
复制代码

相应的配置函数和循环函数为:
  1. void setup() {
  2. pinMode(LED_PIN, OUTPUT);
  3. pinMode(CS,OUTPUT);
  4. pinMode(CLK,OUTPUT);
  5. pinMode(DIN,OUTPUT);
  6. delay(500);
  7. Init_MAX7219();
  8. }

  9. void loop() {
  10. unsigned char i,j;
  11. for(j=0;j<38;j++)
  12. {
  13. for(i=1;i<9;i++)
  14. Write_Max7219(i,disp[j][i-1]);
  15. delay(1000);
  16. }
  17. }
复制代码

其中的内层循环是为了完成单个字符的显示,而外层的循环则是负责将字符库中的内容遍寻显示一轮。
在显示过程中,每显示完一个字符,板上的LED就切换一次显示状态。
在完成编译和下载的情况下,其演示效果如图3所示。
  
  
图3  显示效果
若与前面介绍的串行数码管来比较的话,点阵块的显示还是比较有特色的,也具有较高的实际应用价值。


分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条