MAX7219是美国MAXIM(美信)公司推出的多位LED显示驱动器,采用3线串行接口传送数据,可直接与单片机接口,用户能方便修改其内部参数,以实现多位LED显示。它内含硬件动态扫描显示控制,每枚芯片可驱动8个LED数码管。显然,它可直接驱动64段LED条形图显示器。当多片MAX7219级联时,可控制更多的LED。显示的数据通过单片机数据处理后,送给MAX7219显示。当然,也完全可以将MAX7219的一部分用于条形图显示,一部分用于其他显示(如数字和字母等)。
1. 内部逻辑结构
它主要由8个数位寄存器和6个控制寄存器组成:
1)数位寄存器7~0:它决定该位LED显示内容。
2)译码方式寄存器:它决定数位寄存器的译码方式,它的每一位对应一个数位。其中,1代表B码方式;0表示不译方式。若用于驱动LED数码管,应将数位寄存器设置为B码方式;当用于驱动条形图显示器时,应设置为不译码方式。
3)扫描位数寄存器:设置显示数据位的个数。该寄存器的D2~D0(低三位)指定要扫描的位数,支持0~7位,各数位均以1.3kHz的扫描频率被分路驱动。
4)亮度控制寄存器:该寄存器通常用于数字控制方式,利用其D3~D0位控制内部脉冲宽度调制DAC的占空比来控制LED段电流的平均值,实现LED的亮度控制。D3~D0取值可从0000~1111,对应电流占空比则从1/32变化到31/32,共16级,D3~D0的值越大,LED显示越亮。而亮度控制寄存器中的其他各位未使用,可置任意值。
5)显示测试寄存器:它用来检测外挂LED数码管各段的好坏。当D0置为1时,LED处于显示测试状态,所有8位LED的段被扫描点亮,电流占空比为31/32;若D0为0,则处于正常工作状态。D7~D1位未使用,可任意取值。
6)关断寄存器:用于关断所有显示器。当D0为0时,关断所有显示器,但不会消除各寄存器中保持的数据;当D0设置为1时,正常工作。剩下各位未使用,可取任意值。
7)无操作寄存器:它主要用于多MAX7219级联,允许数据通过而不对当前MAX7219产生影响。
2. 引脚说明
MAX7219是共阴极LED显示驱动器,采用24脚DIP和SO两种封装,其引脚排列见图1。其功能说明如下。
1)DIN:串行数据输入端。在CLK的上升沿,数据被装入到内部的16位移位寄存器中。
2)DIG7~DIG0:8位数值驱动线。输出位选信号,从每位LED显示器公共阴极吸入电流。
3)GND:接地端。
4)LOAD:装载数据控制端。在LOAD的上升沿,最后送入的16位串行数据被锁存到数据或控制寄存器中。
5)DOUT:串行数据输出端。进入DIN的数据在16.5个时钟后送到DOUT端,以便在级联时传送到下一片MAX7219。
6)SEG A~SEG G:LED七段显示器段驱动端。
7)SEG H:小数点驱动端。
8)Vcc:+5V电源端。
9)Iset:LED段峰值电流提供端。它通过一只电阻与电源相连,以便给LED段提供峰值电流。
10)CLK:串行时钟输入端。最高输入频率为10MHz,在CLK的上升沿,数据被移入内部移位寄存器;在CLK的下降沿,数据被移至DOUT端。
3. 应用
图2为MAX7219的典型应用电路,它是由单片MAX7219驱动的8位LED显示器。
AT89C2051的P1.0、P1.1、P1.2分别与MAX7219的DIN、CLK、LOAD端相连。电阻R1可改变LED的亮度,每段的驱动峰值电流约为R1中电流的100倍。R1的取值不能小于10kΩ。实际使用时,可先用一只可调电阻调节亮度,达要求后用一只相同阻值的固定电阻代替即可。在这里应注意,MAX7219的段电流正常工作范围为10~40mA,当段电流超过40mA时,必须外加扩流电路。