STM32使用MAX7219控制点阵屏和点阵屏级联
本文仅仅针对如何使用STM32通过使用MAX7219对点阵屏的控制和级联,提供相应的程序说明和简单的芯片说明,具体的芯片说明请查找数据手册(找淘宝商家要最简单)
目录
一、芯片简单介绍
1.芯片管脚配置
1.1管脚描述
2.时序图
2.1数据格式
二、 如何使用
1.单字节写入函数
2.芯片初始化
3.显示函数
三、级联说明
一、芯片简单介绍
1.芯片管脚配置
1.1管脚描述
管脚 | 名称 | 功能 |
1 | DIN | 串行数据输入端口。在时钟上升沿时数据被载入内部 的16 位寄存器。 |
2,3,5-8,10,11 | DIG 0–DIG 7 | 八个数据驱动线路置显示器共阴极为低电平。关闭时 7219 此管脚输出高电平,7221 呈现高阻抗。 |
4,9 | GND | 地线(4 脚和9 脚必须同时接地) |
12 | LOAD (MAX7219) | 载入数据。连续数据的后16 位在LOAD 端的上升沿时 被锁定。 |
CS (MAX7221) | 片选端。该端为低电平时串行数据被载入移位寄存 器。连续数据的后16 位在cs 端的上升沿时被锁定。 | |
13 | CLK | 时钟序列输入端。最大速率为10MHz.在时钟的上升 沿,数据移入内部移位寄存器。下降沿时,数据从DOUT 端输出。对MAX7221 来说,只有当cs 端为低电平时时 钟输入才有效。 |
14-17,20-23 | SEG A–SEG G, DP | 7 段和小数点驱动,为显示器提供电流。当一个段驱 动关闭时,7219 的此端呈低电平,7221 呈现高阻抗。 |
18 | SET | 通过一个电阻连接到VDD 来提高段电流。 |
19 | V+ | 正极电压输入,+5V |
24 | DOUT | 串行数据输出端口,从DIN 输入的数据在16.5 个时 钟周期后在此端有效。当使用多个MAX7219/MAX7221 时用此端方便扩展。 |
2.时序图
通过三线控制,当CS拉低时开始传输数据,CLK由低变高时的DIN引脚的高低代表1和0。当CS由0变1时,数据将存入芯片内部。
2.1数据格式
数据格式上图所示,一帧数据由2部分组成,高8位是地址,低8位是数据。地址由0到15,分别对应数据寄存器和控制寄存器如下图所示:
具体内容参考官方数据手册,关于芯片内部这里只做简单的描述,主要会用就行。
二、 如何使用
我使用的是共阴极点阵屏,配合寄存器图可知,其实Digit0~7控制的就是点阵屏的第1~8行,当给Digit命令后,相当于拉低电平了,那么这一行都是低电平,只要列是高,那么灯就会亮,所以根据这个特性编写程序。
1.单字节写入函数
编程的第一步便是通过时序图编写一个写入函数程序如下。
/*3个引脚的控制宏定低 位带操作*/ #define MAX7219_DIN PBout(5) #define MAX7219_CS PBout(6) #define MAX7219_CLK PBout(7)
void MAX7219_Write_byte(uint8_t data)//单字节写入 { uint8_t i=0; MAX7219_CS=0;//为了防止CS没有拉低,所以每次写都拉低 for(i=8;i>0;i--) { MAX7219_CLK=0; if(data&0x80)//高位先行 { MAX7219_DIN=1; } else { MAX7219_DIN=0; } data=data