MAX7219命令控制字(电路图与例程)

数码管

8人已加入

描述

1、MAX7219介绍

MAX7219是一种高集成化的串行输入/输出共阴极显示驱动器,可实现微处理器与7段码的接口,可以显示8位或64位单一LED。芯片上包括BCD码译码器、多位扫描电路、段驱动器、位驱动器、内含8×8位静态RAM,用于存放显示数据。只需外接一个电阻就可为所有的LED提供段电流。

MAX7219的三线串行接口适用于所有微处理器,单一位数据可被寻址和修正,无需重写整个显示器。MAX7219具有软件译码和硬件译码两种功能,软件译码是根据各段笔划与数据位的对应关系进行编码,硬件译码采用BCD码(简称B码)译码。MAX7219工作模式包括150μA低压电源关闭模式、模拟数字亮度控制、限扫寄存器(允许用户从第1位数字显示到第8位)及测试模式(点亮所有LED)。

2、MAX7219引脚功能

MAX1279引脚排列如图1所示,

MAX7219

图1  MAX1279引脚排列图

引脚功能:

DIN:串行数据输入端。当CLK为上升沿时,数据存入内部的16位寄存器

DOUT:串行数据输出端,用于级连扩展

LOAD:装载数据输入,在装载的上升沿,串行输入的最后一个16位数据被锁存。

CLK:串行时钟输入,其最大工作频率可达10MHz。时钟上升沿是数据输入,时钟下降时数据从串行数据输出口输出

DIG0~DIG7:8位LED位选线,从共阴极LED中吸入电流

SEGA~SEGGDP7段驱动和小数点驱动

ISET:通过一个10k电阻和Vcc相连,设置段电流

GND:地线

V+:电源

3、MAX7219的功能框图

MAX7219

图2  MAX7219的功能框图

串行输入数据在时钟上升沿时移入内部的16位移位寄存器,在装载的上升沿时数据被锁存在每一位或寄存器中。装载信号必须在第16个时钟上升沿发生时或之后达到高电平,但要在下一个时钟的上升沿和数据丢失之前到达。串行输入数据通过移位寄存器传输,在以后数据输出的16.5个时钟循环出现,数据在时钟的下降沿记录下来。数据各位记录为D0~D15(如表2所列),D8~D11为移位寄存器地址,D0~D7为数据,D12~D15是无关位。第一位接收到的位是最高位D15。D7为数据最高有效位,D0为数据最低有效位。

MAX7219

4、MAX7219控制字

MAX7219有14个可寻址的控制字寄存器(如表3),控制字寄存器由芯片的8×8双端口SRAM识别,SRAM直接寻址,这样单一的位能被更改或保留,条件是电源电压明显大于2V。控制字寄存器包括译码模式、显示强度、扫描限制(被扫描位的个数)、关闭模式、显示测试(点亮所有的LED)。另外还有一个空操作寄存器,该寄存器允许数据从DIN直送DOUT,在设备串接情况下,不会改变显示或影响任何控制寄存器。

MAX7219

图3   MAX7219内部的相关寄存器

分别介绍如下:

(1)译码控制寄存器(X9H)

如图4所示,MAX7219有两种译码方式:B译码方式和不译码方式。当选择不译码时,8个数据为分别一一对应7个段和小数点位;B译码方式是BCD译码,直接送数据就可以显示。实际应用中可以按位设置选择B译码或是不译码方式。

MAX7219

图4  MAX7219的译码控制寄存器

当选择软件译码方式时,数据D7~D0对应的MAX7219码的各段笔划如表5所列。当工作于硬件(B码)译码模式时,译码器只选择数据寄存器中较低的几位(D3~D0),不考虑D4~D6位。D7位显示十进制小数点,独立于译码器,当D7=1时,十进制小数DP点亮。字符0~9对应的16进制码为×0~×9,字符-、E、H、L、P和消隐分别对应的16进制码为×A~×F。

MAX7219

(2)扫描界限寄存器(XBH)

如图5所示,此寄存器用于设置显示的LED的个数(1~8),比如当设置为0xX4时,LED0~5显示。

MAX7219

图5  MAX7219的扫描界限控制寄存器

(3)亮度控制寄存器(XAH)

共有16级可选择,用于设置LED的显示亮度,从0xX0~0xXF

(4)关断模式寄存器(XCH)

共有两种模式选择,一是关断状态,(最低位D0=0)一是正常工作状态(D0=1)。

(5)显示测试寄存器(XFH)

显示检测寄存器有两种操作模式:一般测试和显示测试。显示测试模式时所有的LED点亮,方法是将所有控制字寄存器(包括关闭寄存器)置成无效。在显示测试模式下扫描8位的串行接口8位LED显示驱动器MAX7219工作周期是31/32。正常测试的16进制码为×0,显示测试的16进制码为×1。

(6)空操作寄存器

空操作寄存器在MAX7219串接时使用,把所有芯片的LOAD端连在一起,并将DOUT连接到下一个MAX7219的DIN上。DOUT是CMOS输出,可以驱动后边的串接MAX7219。例如,4个MAX7219串联,然后写第4个片子,再送入设想的16位字,紧跟3个空操作码(×0××),当LOAD升高时,所有装置的数据被锁存,前3个芯片接到空操作命令,第4个芯片接到设想的数据。

5、 应用实例

图3 为8051 与MAX7219 接口组成的8位L ED 硬件扫描动态显示器。假如使显示器显示出“HEL P7219”, 软件译码和硬件译码的具体实现方法如下。

MAX7219

(1) 软件译码编程:

先找出各字符的编码,根据a 、b 、c 、d 、e 、f 、g 各段与数据位的对应关系,可得: H 中a 、d 段为0 , 。其余为1 ,即00110111 或37H ,同样E、L 、P 、7、2、1、9 的编码分别为4FH、0EH、67H、70H、6DH、30H、73H。将HEL P7219 字符编码分别存入8051 地址为50H 单元(片内RAM存放显示数据的8 个字节单元首地址) 。显示器最左边一位为第一位,R0 为对应的显示位,R1 为显示数据单元地址,R2 为显示位数,共8 位。因8051 串行输出的时序顺序为将一字节的最低位最先送出, 而MAX7219 的时序顺序为将接收到的第一位当作该一字节数据的最高位, 所以需要改变送出位的顺序。

程序如下:

SHOW: CL R P1. 0 ;LOAD 置低

MOV A , # 09H ;译码模式控制字

LCALL CHAN GE

MOV A , # 00H ;软件译码

LCALL CHAN GE

SETB P1. 0 ; 置LOAD 为高, 锁存软件译码控制字

ACALL DISPLA Y8 ;显示8 位数据

DISPLA Y8 :MOV R0 , # 01H ;置显示位,从第0 位开始

MOV R1 , # 50H ;置显示数据首址

MOV R2 , # 08H ;共8 位显示

A GAIN : CL R P1. 0

MOV A ,R0 ;显示位

LCALL CHAN GE

MOV A , @R1 ;取出显示数据

LCALL CHAN GE ;输出数据

SETB P1. 0

INC R0 ;指向下一位

INC R1 ;指向下一位显示数据

DJNZ R2 ,A GAIN ;8 位未完,继续

RET

CHAN GE : MOV C ,ACC. 7 ; 改变位顺序,对应于接收位

MOV 0A0H ,C

MOV C ,ACC. 6

MOV 0A1H ,C

MOV C ,ACC. 5

MOV 0A2H ,C

MOV C ,ACC. 4

MOV 0A3H ,C

MOV C ,ACC. 3

MOV 0A4H ,C

MOV C ,ACC. 2

MOV 0A5H ,C

MOV C ,ACC. 1

MOV 0A6H ,C

MOV C ,ACC. 0

MOV 0A7H ,C

MOV A ,0A0H

MOV SBU F ,A (下转P45图3 8051 与MAX7219 组成的8 位L ED 显示器)

JNB TI , $ ;等待发送完毕

CL R TI ;清TI 标志,允许再发

RET

(2) 硬件译码编程:

若采用B 码译码显示“HEL P7219”字符串,对应的编码分别为:0CH、0BH、0DH、0EH、07H、02H、01H、09H。8 个数据字节存50H开始的单元中,程序如下:

SHOW: CL R P1. 0 ;LOAD 置低

MOV A , # 09H ;译码模式控制字

LCALL CHAN GE

MOV A , # FFH ;B 码硬件译码

SETB P1. 0 ; 置LOAD 为高, 锁存硬件译码控制字

ACALL DISPLA YS ;显示8 位数据

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分