串行输入输出共阴极显示驱动器MAX7219应用

2020-08-08来源: 51hei关键字:串行输入输出  共阴极显示驱动器  MAX7219

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;

                            }

[1] [2]
关键字:串行输入输出  共阴极显示驱动器  MAX7219 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic505656.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于SC95F8616单片机的中文菜单MP3点歌器 (2)
下一篇:单片机通过ESP8266将温度数据上传到OneNET平台

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

通用输入输出口(GPIO)
1概述 端口I/O端口主要功能是用于内部单片机和外设进行通信的媒介。一个端口最多有8个引脚。引脚 每个引脚都是独立的,也就是说当我们对其中一个引脚进行操作的时候不会影响到其他引脚。我们可以对引脚单独设置为数字输入或者数字输出。其中有些引脚还可以用着模拟输入和和外设中断。同一时刻只有一个功能映射到同一个引脚。GPIO主要功能(我只列举我比较陌生的)输入兼容5v电压I/O口工作电压范围为1.6V到VddiomaxI/O口的配置和使用IO口常用的寄存器有5个ODR  IDR  DDR  CR1  CR2数据输出寄存器ODR    输入寄存器IDR  
发表于 2020-09-24
通用<font color='red'>输入输出</font>口(GPIO)
STM32学习系列---STM32之GPIO
1.GPIO解释GPIO英文全称是General-purpose input/ouput,即通用型输入输出,GPIO根据配置可以作为通用输入(GPI),通用输出(GPO)或是通用输入输出(GPIO)2.GPIO工作模式GPIO共有八种工作模式,其中包括4种输入模式和4种输出模式。其中输出模式有3种输出速率输入模式上拉输入下拉输入浮空输入模拟输入1.上拉输入:配置为上拉输入模式时,内部上拉电阻连接;若无高低电平输入时,检测该管脚电平为高电平。2.下拉输入:配置为下拉输入模式时,内部下拉电阻连接;若无高低电平输入时,检测该管脚电平为低电平。3.浮空输入:配置为浮空输入模式时,内部上拉电阻与下拉电阻均不连接;若无高低电平输入时,检测该管
发表于 2020-09-03
STM32学习系列---STM32之GPIO
STM32 (3) GPIO口功能讲解 GPIO 口输入输出 寄存器配置
寄存器还是写入到ODR中,但是还是要看一下  设置和位清除寄存器 (BSRR)  ,这是一个32位寄存器,低16位 用于置1   写1有效写0无效   高16位 用于清0  写1有效写0无效    还有一个端口位清除寄存器  BRR寄存器的低16位相当于  BSRR寄存器的高16位    还有复用功能 输出,它就不经过 ODR BSRR 这些寄存器了而是来自   片上外设 讲完了  输出 接下来我们讲一讲 输入 输入有一个   输入数据
发表于 2020-08-28
STM32 (3) GPIO口功能讲解 GPIO 口<font color='red'>输入输出</font> 寄存器配置
【STM32F0系列学习】之—通用输入输出端口(GPIO)
;                       RCC_AHBPeriph_GPIOC | RCC_AHBPeriph_GPIOF, ENABLE);}2、配置GPIO工作模式/************************************************函数名称 : GPIO_Configuration功    能 : 基本输入输出引脚配置参    数 : 无返 回 值 : 无作    者 : JayYang
发表于 2020-08-20
【STM32F0系列学习】之—通用<font color='red'>输入输出</font>端口(GPIO)
MSP432学习-04-GPIO输入输出省电模式及中断的应用
selectedPort, uint_fast16_t selectedPins); //设置输出为高电平GPIO_toggleOutputOnPin(uint_fast8_t selectedPort, uint_fast16_t selectedPins); //翻转输出电平输入uint_fast8_t selectedPort:选择端口uint_fast16_t selectedPins:选择引脚GPIO_setAsInputPin(uint_fast8_t selectedPort, uint_fast16_t selectedPins); //设置为输入GPIO_setAsInputPinWithPullDownResistor
发表于 2020-05-18
MAX7219驱动8X8点阵级联,翻页
买了几块MAX7219点阵模块,弄了个点阵级联,时间上翻显示,有秒点上下闪动,里面有两段,一段是点阵屏水平放置时数字上翻,另一段是点阵屏垂直放置时数字上翻,程序纯属业余爱好,高手勿喷,下面直接代码,3个IO口不能有其他器件,下面是压缩过的图像,有点变化,其实是没有拖影的,  单片机源程序如下:#include <reg52.h>#include <intrins.h>#include <max7219.h>#include <zimo.h>#define uchar unsigned char#define uint  unsigned intuchar
发表于 2020-09-18
<font color='red'>MAX7219</font>驱动8X8点阵级联,翻页
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved