MAX7219是美国MAXIM(美信)公司出产的串行输入/输出共阴极显现驱动器。它选用了3线串行接口,传送速率达10M数据,能驱动8位七段数字型LED或条形显现器或64只独立的LED。MAX7219内置BCD码译码器、多路扫描电路、段和数字驱动器和存储每一位的8*8静态RAM。能便利的用模仿或数字办法操控段电流的巨细,改动显现器的数量;能进入低功耗的关断形式(仅耗费150uA电流,数据保存);能便利地进行级联。可广泛用于条形图显现、七段显现、工业操控、仪器仪表面板等范畴。并且其最重要的一点是,每个显现位都能单个寻址和改写,而不需求重写其他的显现位,这使得软件编程非常简略且灵敏。MAX719后缀表明其封装方法和作业温度,如表所示:
一. MAX7219的结构和功用
1.引脚阐明
MAX7219的引脚摆放如图所示,各引脚功用叙说如下:
(1)脚:DIN,串行数据输入。在CLK的上升沿到来时,数据被移入到内部的16位移位寄存器中。
(2)、(3)、(5)~(8)、(10)、(11)脚:DIG0—DIG7,输入。8位数字位位选线,从共阴极显现器吸收电流。
(4)、(9)脚:GND,地。两个引脚有必要衔接在一起。
(12)脚:LOAD,数据装载输入端。在LOAD上升沿,移位寄存器承受的数据被锁存。
(13)脚:CLK,时钟输入端,最高时钟频率10MHz。在CLK的上升沿,数据被移入到内部的16位移位寄存器中。在CLK的下降沿,数据从DOUT脚输出。
(14)~(15)、(20)~(23)脚:输出。七段驱动器和小数点驱动器。它供应显现器电流。
(18)脚:ISET,电流调理端。经过一个电阻和VCC相连,来调理最大段电流。
(19)脚:VCC。电源输入端。
(24)脚:DOUT。串行数据输出。输入到DIN的数据在16.5各时钟周期后,在DOUT端有用。该脚常用于几个MAX7219的级联。
2.串行数据传送的阐明
MAX7219选用串行寻址方法,在传送的串行数据中包含内部RAM的地址。加在DIN脚上的串行数据,有必要在LOAD信号为高电平的前提下,以每个字节为一个数据包,在CLK信号上升沿移入16位的移位寄存器。然后在LOAD信号的上升沿锁存进数字或操控寄存器中。LOAD信号有必要在第16个CLK信号上升沿的一起,或在下一个CLK信号上升沿之前升高,不然,数据会丢掉。DIN脚上的串行数据在16.5个CLK信号后出现在DOUT脚上,以便级联使用时传到下一个MAX7219上。
其数据串行传送时序图如下图所示:
发送的16位串行数据格局为:
发送的16位串行数据格局如上表所示:D15在先,D15—D12位(4位)可为恣意值。D11—D8位(4位)指定14个内部寄存器的地址。D7—D0位(8位)为送入的指定寄存器的数据(包含显现数据和操控数据)。
3.寄存器功用及阐明
MAX7219内部共有14个可寻址的数字、操控寄存器和空操作寄存器。数字寄存器由一个片内8×8静态RAM组成。操控寄存器包含译码方法、亮度操控、扫描数量、停机形式、测验形式等寄存器组成,如下表所示:
下面从运用的视点,对MAX7219内部操控器的功用加以阐明:
(1)译码操控寄存器(地址09H):译码方法寄存器能够对每个数进行设置,使其为BCD译码方法或不译码方法。寄存器的每一位和一个数位相对应。为“1”时,挑选BCD译码方法,为“0”挑选不译码方法。例如,0—7位不译码,则给译码寄存器09H送00H。第一位译码,其他位不译码,则给译码寄存器09H送01H。
译码方法操控寄存器举例(地址09H):
* 当选用BCD译码方法时,译码器仅对寄存器中数据的低四位(D3-D0)有用,高四位(D7-D4)位无效。BCD码的字形为:当数据为00-09H时,显现为0-9;当数据为0AH-0EH时,显现为-,E,H,L,P。当数据为0FH时,数据被消隐,处于不显现状况。
代码BCD字形表:
小数点由D7设置,D7=1亮,D7=0不亮。
* 当选用不译码方法时,数据位D7-D0和字段的对应联系如图3所示:
需求阐明的是:不论对MAX7219设置的是译码方法还对错译码方法,D7位一直和数码位的小数点DP相连,当D7=1时,小数点亮,当D7=0时,小数点灭。
(2)亮度操控寄存器(地址0AH):MAX7219的亮度操控有两种方法:即模仿法和数字法。
* 模仿法:在引脚ISET和VCC之间接电阻RSET,各段驱动峰电流约为RSET中电流(Iset)的100倍,RSET的最小阻值为9.53KΩ,这时数码显现处于最亮状况。RSET可用电位器替代,放到面板上用来调理数码显现的亮度。
* 数字法:将数据写入到亮度操控寄存器中,即可按16各等级操控亮度。数值为00H,对应电流1/32Iset(最暗);数值为0FH,对应电流31/32Iset(最亮)。此数值加1,电流增大1/16。
亮度寄存器格局(地址0AH)
(3)扫描位数(边界)寄存器(地址0BH):扫描(边界)寄存器用来设定多少个数位处于显现态,规模为1到8。MAX7219的各个数位按1300Hz的扫描频率分路驱动,轮番点亮8各显现器。若需求显现的数位少,可下降扫描数量,以进步扫速和亮度。该寄存器的低3位指定要扫描的数位,即00-07H别离对应1-8个数位。但此值最好不要小于4,不然需求改动RSET的值。
扫描位数寄存器(地址0BH)的格局:
(4)停机操控寄存器(地址0CH):关断寄存器的D0位操控MAX7219处于怎样的显现状况。当D0=0时,MAX7219处于关断状况,当D0=1时,MAX7219处于正常显现状况。当处于关断状况时,扫描振荡器暂停,显现器平息,各寄存器中的数据不变,这时总电流小于150uA,,但仍能够编程。进入此状况后,至少250uS才干退出。当将D0方位1后(即0CH写01H),即可回到正常显现状况。
(5)显现测验寄存器(地址0FH):显现测验寄存器有两种作业方法:当送01H时,MAX7219便进入测验作业状况,一切数码管显现8及小数点,电流占空比为31/32,内部的一切数据及操控寄存器的值都不改动。当送00H时,MAX7219进入正常作业方法。
(6)空操作寄存器(地址00H):即写入0000H,可答应数据经过而不对当时的MAX7219产生影响,可用于两个或多个MAX7219进行级连。这样只需三根信号线就能够驱动,在操控时只需把待编程的MAX7219之前的那些MAX7219设置为空操作即可。
4.典型使用电路
典型使用
级联使用连线
二 MAX7219的PROTUES仿真电路
听说PROTEUS里的MAX7219模型在级连时仿真有问题,时序和实践电路的不同。
三 MAX7219的PROTUES仿真源程序
#include
#include
#define uchar unsigned char
sbit DIN=P3^1;
sbit CLK=P3^3;
sbit LOAD=P3^2;
void send(uchar add,uchar dat)
{
uchar ADS,i,j;
CLK=0;
LOAD=0;
DIN=0;
i=4;
while(i<16)
{
if(i<8)
{
ADS=add;
}
else
{
ADS=dat;
}