MAX7219芯片
一.概述
MAX7219是MAXIM公司生产的串行输入/输出共阴极数码管显示驱动芯片,一片MAX7219可驱动8个7段(包括小数点共8段)数字LED、LED条线图形显示器、或64个分立的LED发光二级管。该芯片具有10MHz传输率的三线串行接口可与任何微处理器相连,只需一个外接电阻即可设置所有LED的段电流。。它的操作很简单,MCU只需通过模拟SPI三线接口就可以将相关的指令写入MAX7219的内部指令和数据寄存器,同时它还允许用户选择多种译码方式和译码位。此外它还支持多片7219串联方式,这样MCU就可以通过3根线(即串行数据线、串行时钟线和芯片选通线)控制更多的数码管显示。
二. 典型应用电路图
三. 管脚定义
管脚 | 名称 | 功能 |
---|---|---|
1 | DIN | 串行数据输入端口。在时 钟上升沿时数据被载入内部 的 16 位寄存器 |
2,3,5-8,10,11 | DIG 0–DIG 7 | 默认输出为低电平,关闭时输出高电平 |
4,9 | GND | 地线(4 脚和 9 脚必须同时接地) |
12 | LOAD (MAX7219) | 载入数据。连续的16位数据将 LOAD 端上升沿时锁存到内部寄存器中。 |
13 | CLK | 时钟序列输入端。最大速率为 10MHz.在时钟的上升 沿, 数据移入内部移位寄存器。 下降沿时, 数据从 DOUT 端输出。对 MAX7221 来说,只有当 cs 端为低电平时时 钟输入才有效。 |
14-17,20-23 | SEG A–SEG G, DP | 默认输出为高电平,关闭时输出为低电平。 |
18 | SET | 通过一个电阻连接到 VDD来提高段电流。最小电阻不小于9.5k |
19 | V+ | 正极电压输入,+5V |
24 | DOUT | 串行数据输出端口,从 DIN 输入的数据在 16.5 个时 钟周期后在此端有效。当使用多个 MAX7219时用此端方便扩展。 |
四. 功能图表
五. 时序图
六. 串行数据格式
如图,工作时MAX7219规定一次接收16位数据,在接收的16位数据中: D15~D12 可以与操作无关,可以任意写入,D11~D8 决定所选通的内部寄存器地址,D7~D0 为待显示数据或是初始化控制数据。在CLK脉冲作用下,DIN的数据以串行方式依次移入内部16位寄存器,然后在一个LOAD上升沿作用下,锁存到内部的寄存器中。注意在接收时,先接收最高位DI6,最后是DO,因此,在程序发送时必须先送高位数据,在循环移位。
七. 数据寄存器和控制寄存器
数据寄存器由一个在片上的 8×8 的双向 SRAM 来实现。它们可以直接寻址,所以只要在 V+大于 2V 的情况下每个数据都可以独立的修改或保存。控制寄存器包括编码模式、显示亮度、扫描限制、关闭模式以及显示检测五个寄存器。
控制寄存器说明
一. 掉电模式寄存器
二. 译码模式寄存器
用来设置对每个数据进行 B 型 BCD 译码或者不译码。寄存器中的每一位对应一个数 据。逻辑高电平用来选择译码低电平取消译码。译码控制寄存器的格式如下。
当选择译码模式时,译码器只对数据的低四位进行译码(D3-D0),D4-D6 为无效位。 D7 位用来设置小数点,不受译码器的控制且为高电平。B 型译码的格式如下。
三. 亮度控制寄存器
MAX7219通过加在V+和ISET之间的一个外部电阻来控制显示亮度。段驱动电流一般是流入ISET端电流的100倍。这个电阻可以是固定的,也可以是可变电阻,其最小值为9.53KΩ ,它设定段电流为40mA。显示亮度也可以通过亮度寄存器来控制。
数字控制显示亮度是通过亮度寄存器的低四位来控制的脉宽调制器来控制。调制器将段电流 平均分为16个阶次,最大值为由RSET设置的最大电流的31/32,最小值为电流峰值的1/32 ( MAX7221为15/16到1/16)。亮度寄存器的格式如下表。
四. 扫描控制寄存器
扫描控制寄存器用来设定扫描显示器的个数,从 1 个到 8 个.它们将以 800Hz 的扫描 速率进行多路扫描显示。如果数据少的话,扫描速率为 8*fosc/N,N是指需要扫描数字的个数。扫描数据的个数影响显示亮度,所以不能将扫描寄存器设置为空扫描。扫描寄存器的格式如下:
五. 显示检测寄存器
显示检测寄存器有正常和显示检测两种工作状态。显示检测状态在不改变所有其他控制和数据寄存器(包括关闭寄存器)的情况下将所有 LED 都点亮。在此状态下,8 个数据都会被扫描,工作周期为 31/32.表 10 列出了显示检测寄存器的格式。
六. 不工作寄存器
当有多个MAX7219或MAX7221被串接使用时要用到不工作寄存器。把所有的芯片的LOAD/CS 端联接在一起,把相邻的芯片的DOUT和DIN连接在一起。DOUT是一个CMOS逻辑电平的输出口,他可以很容易的驱动下一级的DIN口。例如,如果四个MAX7219被连接起来使用,然后向第四个芯片 发送必要的16位数据,后面跟三组NO-OP代码(如表2所示,十六进制的0xXX0X)。然后使LOAD/CS 端变为高电平,数据则被载入所有芯片。前三个芯片接收到 NO-OP 代码,第四个接收到有效数 据。