关键词 显示驱动器 串行发送 MAX7219
1 概 述
MAX7219是美国MAXIM公司生产的串行输入/输出共阴极显示驱动器。该芯片可直接驱动最多8位7段数字LED显示器,或64个LED和条形图显示器。它与微处理器的接口非常简单,仅用3个引脚与微处理器相应端连接即可实现最高10MHz串行口。MAX7219的位选方式独具特色,它允许用户选择多种译码方式译码选位,而且,每个显示位都能个别寻址和刷新,而不需要重写其他的显示位,这使得软件编程十分简单且灵活。另外,它具有数字和模拟亮度控制以及与MOTOROLA SPI,QSPI及MATIONAL MICROWIRE串行口相兼容等特点。
2 引脚说明
该芯片采用24脚DIP和SO封装,工作电压4.0~5.5V,最大功耗1.1W。引脚说明见表1。
3 基本工作原理及使用方法
MAX7219与8031单片机连接采用三线串行接口,典型应用电路如图1。
对于MAX7219,串行数据是以16位数据包的形式从Din脚串行输入,在CLK的每一个上升沿一位一位地送入芯片内部16位移位寄存器,而不管Lout脚的状态如何。Load脚必须在第16个CLK上升沿出现的同时或之后,但在下一个CLK上升沿之前变为高电平,否则移入的数据将丢失。
操作者只需编程发送16位数据包,就能简单地操作LED的位选以及段选,设置和改变MAX7219的工作模式。
16位数据包的数据格式如下:
其中:D7~D0:8位数据位,D7最高位,
D0为最底位;
D11~D8:4位地址位;
D15~D12:无关位,通常全取1。
MAX7219通过D11~D84位地址位译码,可寻址14个内部寄存器,分别是8个LED显示位寄存器,5个控制寄存器和1个空操作寄存器。LED显示寄存器由内部8×8静态RAM构成,操作者可直接对位寄存器进行个别寻址,以刷新和保持数据,只要V+超过2V(一般为+5V)。
控制寄存器包括:译码模式,显示亮度调节,扫描限制(选择扫描位数),关断和显示测试寄存器。
MAX7219的驱动程序首先必须对5个控制寄存器初始设置即初始化,各控制寄存器设置含义如下:
译码模式选择寄存器(地址=F9H);
共有4种译码模式供选择,当数据位全0时选择“非译码方式”。在此方式下,8个数据位分别一一对应7个段和小数点。通常选择此方式。
扫描限制寄存器:地址=FBH;用于设置显示的LED个数(1~8),当D2D1D0=111、D7D6D5D4D3无关时,可接8个LED管。
亮度调节寄存器:地址=FAH;
共有16级选择,用于LED显示亮度的强弱设置。
关断模式寄存器:地址=FCH;
有两种模式选择:一种是关断状态模式(D0=0);一种是正常操作状态(D0=1),通常选择正常操作状态。
显示测试寄存器:地址=FFH;有两种选择用于设置LED是测试状态还是正常操作状态:当在测试状态时(D0=1)各位全应亮,一般选择正常操作状态(D0=0)。
4 应用举例
结合典型应用电路,编程实现8位从左到右显示HELLOYOU。
4.1 初始化
在此需特别说明一点,由于MAX7219内部16位寄存器的位号与从Din发送来的串行数据的位号刚好相反,所以数据在发送以前必须进行颠倒,即D0变成D15,D1变成D14......
4.2 软件设计
在单片机RAM中建立一个LED显示缓冲区,显示缓冲区首地址为30H,末地址为45H,分别对应各显示位的位地址和段码,用程序控制数据以16位数据包的形式串行送入。
在程序设计时,只要将30H~45H单元的内容通过串行口发送即可。由于MAX7219能对LED显示位进行位寻址,所以发送数据时既可以只对需要改变的某一位或几位发送,也可以一次发送8组数据,对芯片所驱动的LED全部刷新,但不需要改变的位只是把原来的内容重发一次,这完全由程序控制,以下给出每次发送8组数据的程序。当串行口把8位数码串行移位输出后,TI置1,可把TI作为状态查询标志。
显示子程序清单:
DISP:MOV SCON,#00H;串行口方式0工作
CLR ES;禁止串行中断
DISP1:CLR P1.0;LOAD变低
MOV R0,30H;显示缓冲区首址
MOV R1,#0FH;设置8位显示
DISP2:MOV SBUF,@R0;串行输出
JNB TI,$;状态查询
INC R0
DJNZ R1,DISP2
SETB P1.0;LOAD变高
NOP;延时
NOP
CLR TI;请发送中断标志
RET;返回
参考文献
1 MAXIM NEW RELEASESDATA BOOK[DB].1998