电子常识
MAX7219是一种高集成化的串行输入/输出共阴极显示驱动器,可实现微处理器与7段码的接口,可以显示8位或64位单一LED。芯片上包括BCD码译码器、多位扫描电路、段驱动器、位驱动器、内含8&TImes;8位静态RAM,用于存放显示数据。只需外接一个电阻就可为所有的LED提供段电流。
MAX7219的三线串行接口适用于所有微处理器,单一位数据可被寻址和修正,无需重写整个显示器。MAX7219具有软件译码和硬件译码两种功能,软件译码是根据各段笔划与数据位的对应关系进行编码,硬件译码采用BCD码(简称B码)译码。MAX7219工作模式包括150μA低压电源关闭模式、模拟数字亮度控制、限扫寄存器(允许用户从第1位数字显示到第8位)及测试模式(点亮所有LED)。
MAX1279引脚排列如图1所示,
图1 MAX1279引脚排列图
DIN:串行数据输入端。当CLK为上升沿时,数据存入内部的16位寄存器
DOUT:串行数据输出端,用于级连扩展
LOAD:装载数据输入,在装载的上升沿,串行输入的最后一个16位数据被锁存。
CLK:串行时钟输入,其最大工作频率可达10MHz。时钟上升沿是数据输入,时钟下降时数据从串行数据输出口输出
DIG0~DIG7:8位LED位选线,从共阴极LED中吸入电流
SEGA~SEGGDP7段驱动和小数点驱动
ISET:通过一个10k电阻和Vcc相连,设置段电流
GND:地线
V+:电源
图2 MAX7219的功能框图
串行输入数据在时钟上升沿时移入内部的16位移位寄存器,在装载的上升沿时数据被锁存在每一位或寄存器中。装载信号必须在第16个时钟上升沿发生时或之后达到高电平,但要在下一个时钟的上升沿和数据丢失之前到达。串行输入数据通过移位寄存器传输,在以后数据输出的16.5个时钟循环出现,数据在时钟的下降沿记录下来。数据各位记录为D0~D15(如表2所列),D8~D11为移位寄存器地址,D0~D7为数据,D12~D15是无关位。第一位接收到的位是最高位D15。D7为数据最高有效位,D0为数据最低有效位。
MAX7219有14个可寻址的控制字寄存器(如表3),控制字寄存器由芯片的8&TImes;8双端口SRAM识别,SRAM直接寻址,这样单一的位能被更改或保留,条件是电源电压明显大于2V。控制字寄存器包括译码模式、显示强度、扫描限制(被扫描位的个数)、关闭模式、显示测试(点亮所有的LED)。另外还有一个空操作寄存器,该寄存器允许数据从DIN直送DOUT,在设备串接情况下,不会改变显示或影响任何控制寄存器。
图3 MAX7219内部的相关寄存器
(1)译码控制寄存器(X9H)
如图4所示,MAX7219有两种译码方式:B译码方式和不译码方式。当选择不译码时,8个数据为分别一一对应7个段和小数点位;B译码方式是BCD译码,直接送数据就可以显示。实际应用中可以按位设置选择B译码或是不译码方式。
图4 MAX7219的译码控制寄存器
当选择软件译码方式时,数据D7~D0对应的MAX7219码的各段笔划如表5所列。当工作于硬件(B码)译码模式时,译码器只选择数据寄存器中较低的几位(D3~D0),不考虑D4~D6位。D7位显示十进制小数点,独立于译码器,当D7=1时,十进制小数DP点亮。字符0~9对应的16进制码为&TImes;0~&TImes;9,字符-、E、H、L、P和消隐分别对应的16进制码为×A~×F。
(2)扫描界限寄存器(XBH)
如图5所示,此寄存器用于设置显示的LED的个数(1~8),比如当设置为0xX4时,LED0~5显示。
图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个芯片接到设想的数据。
MAX7129是SPI总线驱动方式。它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。
要想与MAX7129通信,首先要先了解MAX7129的控制字。MAX7129的控制字格式如图6。
图6 控制字(即地址及命令字节)
如图,工作时,MAX7219规定一次接收16位数据,在接收的16位数据中:D15~D12可以与操作无关,可以任意写入,D11~D8决定所选通的内部寄存器地址,D7~D0为待显示数据或是初始化控制字。在CLK脉冲作用下,DIN的数据以串行方式依次移入内部16位寄存器,然后在一个LOAD上升沿作用下,锁存到内部的寄存器中。注意在接收时,先接收最高位D16,最后是D0,因此,在程序发送时必须先送高位数据,在循环移位。工作时序图见图7。
由于51是8位单片机故需要分两次来送数据。具体操作见驱动程序详解。
图7 数据读写时序
下图是MAX7219的一种典型应用电路。
MAX7219的3线串行接口可方便地连接到各种通用的μP上,当其16位数据串行发送到DIN端后,该数据将在每个CLK的上升沿被移入内部16位移位寄存器中,然后在LOAD的上升沿锁存到数字或控制寄存器中。在强干扰环境下,如大功率电机的起停或高压发生过程中,干扰源可能通过供电电源或3根信号线串入显示电路而造成显示器的不稳定,从而出现笔段跳跃、显示不全、甚至全暗或全亮的现象。为此,可通过在3根信号线上对地接入一个1000pF的瓷片电容来有效地滤除因空间干扰而引起的尖脉冲。
MAX7219通过V+和ISET之间所接的外部电阻(RSET)来控制亮度。通常来自驱动器的峰值电流为ISET的100倍,当RSET取最小值9.53kΩ时,段电流为37mA。在笔者的产品应用中,最初RSET取10kΩ电阻,当采用RC复位电路时,显示正常;而采用MAX813L监控复位电路时,在LED各段均亮时复位有效,从而使单片机系统无法工作。其原因在于MAX7219的各个数字驱动器的消耗功率太大,即选定的RSET太小而使峰值段电流增大,从而引起单片机系统的供电电压低于MAX813L的监控电压而使系统长期复位。后来将RSET换为30kΩ电阻后,显示电路可正常工作。
为防止微机系统电源及其干扰源对显示电路造成影响和避免上面所描述的问题,同时为了给显示电路提供足够的电源功率,在实际设计中,应对显示电路单独供电,并在MAX7219的电源(V+)与地(GND)间并接一个0.1μF去耦电容和一个10μF/16V电解电容,以有效提高其工作可靠性。
全部0条评论
快来发表一下你的评论吧 !