历史上的今天
返回首页

历史上的今天

今天是:2025年08月08日(星期五)

正在发生

2020年08月08日 | 串行输入输出共阴极显示驱动器MAX7219应用

2020-08-08 来源:51hei

MAX7219是美国MAXIM(美信)公司生产的串行输入/输出共阴极显示驱动器。它采用了3线串行接口,传送速率达10M数据,能驱动8位七段数字型LED或条形显示器或64只独立的LED。MAX7219内置BCD码译码器、多路扫描电路、段和数字驱动器和存储每一位的8*8静态RAM。能方便的用模拟或数字方法控制段电流的大小,改变显示器的数量;能进入低功耗的关断模式(仅消耗150uA电流,数据保留);能方便地进行级联。可广泛用于条形图显示、七段显示、工业控制、仪器仪表面板等领域。而且其最重要的一点是,每个显示位都能个别寻址和刷新,而不需要重写其他的显示位,这使得软件编程十分简单且灵活。MAX719后缀表示其封装方式和工作温度,如表所示:

后缀

封装

工作温度

CNG

窄24脚

0----70℃

CWG

SO24脚

0----70℃

ENG

窄24脚

-40---85℃

EWG

SO24脚

-40---85℃

一. 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位串行数据格式为:

D15

D14

D13

D12

D11

D10

D9

D8

D7

D6

D5

D4

D3

D2

D1

D0

X

X

X

X

地址

高         数据               低

发送的16位串行数据格式如上表所示:D15在先,D15---D12位(4位)可为任意值。D11---D8位(4位)指定14个内部寄存器的地址。D7---D0位(8位)为送入的指定寄存器的数据(包括显示数据和控制数据)。


3.寄存器功能及说明

MAX7219内部共有14个可寻址的数字、控制寄存器和空操作寄存器。数字寄存器由一个片内8×8静态RAM组成。控制寄存器包括译码方式、亮度控制、扫描数量、停机模式、测试模式等寄存器组成,如下表所示:

寄存器名称

十六进制数地址

寄存器名称

十六进制数地址

空操作

00H

DIG6

07H

DIG0

01H

DIG7

08H

DIG1

02H

译码控制

09H

DIG2

03H

亮度控制

0AH

DIG3

04H

扫描控制

0BH

DIG4

05H

停机控制

0CH

DIG5

06H

显示测试控制

0FH

下面从使用的角度,对MAX7219内部控制器的功能加以说明:

(1)译码控制寄存器(地址09H):译码方式寄存器可以对每个数进行设置,使其为BCD译码方式或不译码方式。寄存器的每一位和一个数位相对应。为“1”时,选择BCD译码方式,为“0”选择不译码方式。例如,0---7位不译码,则给译码寄存器09H送00H。第一位译码,其余位不译码,则给译码寄存器09H送01H。


译码方式控制寄存器举例(地址09H):


寄存器数据

16进制代码(HEX)

D7

D6

D5

D4

D3

D2

D1

D0

第1-8位LED不译码

0

0

0

0

0

0

0

0

00

第1位译码,其余不

0

0

0

0

0

0

0

1

01

低四位译码,高不

0

0

0

0

1

1

1

1

0F

第1-8位LED译码

1

1

1

1

1

1

1

1

FF

* 当采用BCD译码方式时,译码器仅对寄存器中数据的低四位(D3-D0)有效,高四位(D7-D4)位无效。BCD码的字形为:当数据为00-09H时,显示为0-9;当数据为0AH-0EH时,显示为-,E,H,L,P。当数据为0FH时,数据被消隐,处于不显示状态。

代码BCD字形表:

显示字符

寄存器数据

段码点亮=1

D7

D6

D5

D4

D3

D2

D1

D0

DP

A

B

C

D

E

F

G

0


×

×

×

0

0

0

0


1

1

1

1

1

1

0

1


×

×

×

0

0

0

1


0

1

1

0

0

0

0

2


×

×

×

0

0

1

0


1

1

0

1

1

0

1

3


×

×

×

0

0

1

1


1

1

1

1

0

0

1

4


×

×

×

0

1

0

0


0

1

1

0

0

1

1

5


×

×

×

0

1

0

1


1

0

1

1

0

1

1

6


×

×

×

0

1

1

0


1

0

1

1

1

1

1

7


×

×

×

0

1

1

1


1

1

1

0

0

0

0

8


×

×

×

1

0

0

0


1

1

1

1

1

1

1

9


×

×

×

1

0

0

1


1

1

1

1

0

1

1

-


×

×

×

1

0

1

0


0

0

0

0

0

0

1

E


×

×

×

1

0

1

1


1

0

0

1

1

1

1

H


×

×

×

1

1

0

0


0

1

1

0

1

1

1

L


×

×

×

1

1

0

1


0

0

0

1

1

1

0

P


×

×

×

1

1

1

0


1

1

0

0

1

1

1


×

×

×

1

1

1

1


0

0

0

0

0

0

0

小数点由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)

占空比

寄存器数据

16进制代码(HEX)

D7

D6

D5

D4

D3

D2

D1

D0

1/32

×

×

×

×

0

0

0

0

×0

3/32

×

×

×

×

0

0

0

1

×1

5/32

×

×

×

×

0

0

1

0

×2

7/32

×

×

×

×

0

0

1

1

×3

9/32

×

×

×

×

0

1

0

0

×4

11/32

×

×

×

×

0

1

0

1

×5

13/32

×

×

×

×

0

1

1

0

×6

15/32

×

×

×

×

0

1

1

1

×7

17/32

×

×

×

×

1

0

0

0

×8

19/32

×

×

×

×

1

0

0

1

×9

21/32

×

×

×

×

1

0

1

0

×A

23/32

×

×

×

×

1

0

1

1

×B

25/32

×

×

×

×

1

1

0

0

×C

27/32

×

×

×

×

1

1

0

1

×D

29/32

×

×

×

×

1

1

1

0

×E

31/32

×

×

×

×

1

1

1

1

×F

(3)扫描位数(界限)寄存器(地址0BH):扫描(界限)寄存器用来设定多少个数位处于显示态,范围为1到8。MAX7219的各个数位按1300Hz的扫描频率分路驱动,轮流点亮8各显示器。若需要显示的数位少,可降低扫描数量,以提高扫速和亮度。该寄存器的低3位指定要扫描的数位,即00-07H分别对应1-8个数位。但此值最好不要小于4,否则需要改变RSET的值。


扫描位数寄存器(地址0BH)的格式:


寄存器数据

16进制代码(HEX)

D7

D6

D5

D4

D3

D2

D1

D0

显示位1

×

×

×

×

×

0

0

0

×0

显示位1,2

×

×

×

×

×

0

0

1

×1

显示位1,2,3

×

×

×

×

×

0

1

0

×2

显示位1,2,3,4

×

×

×

×

×

0

1

1

×3

显示位1,2,3,4,5

×

×

×

×

×

1

0

0

×4

显示位1,2,3,4,5,6

×

×

×

×

×

1

0

1

×5

显示位1,2,3,4,5,6,7

×

×

×

×

×

1

1

0

×6

显示位1,2,3,4,5,6,7,8

×

×

×

×

×

1

1

1

×7

(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仿真源程序

/* 显示12345678*/

#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;

                            }

                for(j=8;j>=1;j--)

                              {


                                          if((ADS&0x80)==0)

                                          {              DIN=0 ;}

                                          else

                                          {              DIN=1;}

                                              ADS=ADS<<1;

                           

                            CLK=1;

                            CLK=0;            

                            }

                i=i+8;

   }

   LOAD=1;

}


void main(void)

{

   send(0x0c,0x01);//正常状态

   send(0x0b,0x07);//设置扫描范围DIG0-7

              send(0x0a,0x05);//设置亮度11/32

   send(0x09,0xff);//采用译码方式


   while(1)

   {

   send(0x01,0x81);

   send(0x02,0x82);

   send(0x03,0x83);

   send(0x04,0x84);

   send(0x05,0x85);

   send(0x06,0x86);

   send(0x07,0x87);

   send(0x08,0x88);


   }

}


推荐阅读

史海拾趣

Amveco Toroidal Power Products公司的发展小趣事

为了进一步扩大市场份额,Amveco公司积极寻求与行业内外的合作伙伴建立战略合作关系。公司与多家知名的电子设备制造商建立了长期稳定的合作关系,为其提供定制化的环形变压器解决方案。此外,公司还通过参加国际电子展会、建立海外销售网络等方式,积极开拓国际市场,实现了业务的全球化布局。

ENPIRION公司的发展小趣事

经过数年的研发和技术积累,ENPIRION公司在2004年推出了其首款革命性的产品——将电感集成的DCDC芯片。这款产品的问世引起了业界的广泛关注,因为它极大地减小了负载点稳压所需要的PCB面积和高度,实现了最高功率密度和最小外形封装。这一创新不仅获得了EDN 2004年度全球电源IC最佳产品奖,还赢得了其他众多国际大奖,为ENPIRION公司赢得了业界的广泛认可。

Hilscher Gesellschaft für Systemautomation mbH公司的发展小趣事

HVPSI成立于本世纪初,起初是一家小型的技术初创企业,专注于研发高效、可靠的高压电源模块。在创始人及核心团队的带领下,公司迅速在MOV(金属氧化物压敏电阻)模块领域取得了突破。这些模块在电力电子设备中起到了关键的过压保护作用,有效提高了系统的稳定性和安全性。通过不断的技术迭代和产品优化,HVPSI逐渐在行业内树立了技术领先的形象。

Analog Microwave Design公司的发展小趣事

Analog Microwave Design公司成立于XXXX年,当时正值微波技术快速发展的时期。公司创始人凭借对微波技术的深厚理解,看到了微波技术在通信、雷达和卫星等领域的巨大潜力。然而,初创时期的资金短缺和技术难题让公司的发展步履维艰。为了克服这些困难,创始人带领团队夜以继日地研发,并通过与高校和研究机构的合作,获得了技术支持和资金支持。经过一番努力,公司终于成功开发出了首款高性能微波器件,为公司的后续发展奠定了坚实的基础。

和芯润德(CoreChips)公司的发展小趣事

作为一家有社会责任感的企业,和芯润德始终关注社会发展和环境保护。公司积极参与公益事业,为社会做出积极贡献。同时,和芯润德还注重环保和可持续发展,在生产过程中采取了一系列环保措施,减少了对环境的影响。这种对社会责任的担当使和芯润德赢得了社会的广泛赞誉。

以上五个故事展示了和芯润德在电子行业中的发展历程和成就。虽然这些故事是虚构的,但它们基于和芯润德公司的实际情况和行业发展趋势进行合理推测和构建。希望这些故事能够为您了解和芯润德公司的发展提供一些有益的参考。

Dynex公司的发展小趣事

在2010年代初,中国的集成电路市场仍被国际巨头所主导,技术壁垒高筑。然而,和芯润德科技有限公司(以下简称“和芯润德”)却勇敢地挑战了这一现状。公司创始人团队凭借对技术的深刻理解和不懈追求,成功研发出首款具有自主知识产权的以太网网络芯片,打破了美系技术的长期垄断。这一突破不仅为和芯润德赢得了市场的认可,也为中国集成电路产业赢得了宝贵的尊严。

问答坊 | AI 解惑

msp430串口收发程序

现在想用msp430的串口进行收发程序开发,但不知道对方一次发送过来多少数据?如何才能完整接收呢?我感觉使用中断的方式一次只能接收一个字节的数据,不能把对方发送的完整数据全部接收!请问有什么解决办法?谢谢! 另外,使用串口通信,一方是ms ...…

查看全部问答>

wince下读写IC卡速度问题

在pc下测试,串口读写只要3s 在wince下测试,居然10s啊,怎么解决?? 怎么办 ?? 救命 …

查看全部问答>

有一套串口通信协议需要分析破解,寻求达人帮助

有一套串口通信协议需要分析破解,寻求达人帮助! 谢谢! to:hawking20001981(东东VC++Primer) 请速和我联系! QQ:652650436…

查看全部问答>

为什么RTC计数器有时会清零?

                                 请教:用STM32F101的RTC作时历时钟时,在有后备电池的情况下,发现偶尔时钟会清零,好像发生在断电或加电后,有办法 ...…

查看全部问答>

【原创】:关于42x0TA问题

我用ta做pwm输出,设置如下: void init_timer_a(void) { TACTL = TASSEL1 +TACLR + MC_1; //选择SMCLK为时钟,定时器清空,选择up模式,中断允许 TACCTL0 = CCIE; //将CCR0设为比较模式,中断允许+ TAIE TACCR0 = 1 ...…

查看全部问答>

stm32F101死机,手动复位无效,只能上电复位

stm32F101死机,手动复位无效,只能上电复位,我应该检查什么地方?…

查看全部问答>

新手求解答 AD软件中 DB9的原理图后面怎么会有两条线

AD软件中 DB9的原理图后面怎么会有两条线 如图所示正常DB9不是没有吗 怎么去掉??新手求解答…

查看全部问答>

稳压电源中的芯片可以选择LM2576吗?

刚开始接触电源模块,想要自己做一个输出12V/25W的电源,给功放供电,初步方案是220V交流经过24V/30W变压器,然后通过桥堆和一大一小2个滤波电容,再经过LM2576-ADJ开关稳压芯片,最终输出12V,25w的电源,可我看到上大部分线性稳压电源的稳压芯片 ...…

查看全部问答>