前面介绍了串行数码管的显示驱动,其控制芯片是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的初始化函数为: - void Init_MAX7219(void)
- {
- Write_Max7219(0x0b, 0x07);
- Write_Max7219(0x0c, 0x01);
- Write_Max7219(0x0f, 0x00);
- }
复制代码
相应的配置函数和循环函数为: - void setup() {
- pinMode(LED_PIN, OUTPUT);
- pinMode(CS,OUTPUT);
- pinMode(CLK,OUTPUT);
- pinMode(DIN,OUTPUT);
- delay(500);
- Init_MAX7219();
- }
- void loop() {
- unsigned char i,j;
- for(j=0;j<38;j++)
- {
- for(i=1;i<9;i++)
- Write_Max7219(i,disp[j][i-1]);
- delay(1000);
- }
- }
复制代码
其中的内层循环是为了完成单个字符的显示,而外层的循环则是负责将字符库中的内容遍寻显示一轮。 在显示过程中,每显示完一个字符,板上的LED就切换一次显示状态。 在完成编译和下载的情况下,其演示效果如图3所示。 图3 显示效果 若与前面介绍的串行数码管来比较的话,点阵块的显示还是比较有特色的,也具有较高的实际应用价值。
|