原创 串行LED显示驱动器MAX7219及其应用

2007-11-8 20:22 3120 5 5 分类: 医疗电子
串行LED显示驱动器MAX7219及其应用
 




摘 要 阐述了新型显示驱动芯片MAX7219的基本工作原理和软件设计方法。该芯片功能强大、编程简单、控显可靠,可广泛用于工业控制器等方面的数码显示驱动。


关键词 显示驱动器 串行发送 MAX7219
AR4mI ?pCGuest 
J)?4peA|y;GGuest1   概 述


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。EETOP专业博客---电子工程师自己的家园8X`~i8x


点击看大图EETOP专业博客---电子工程师自己的家园.`Fa7v ` ~Y

;p {4t8J/])a _ v3t)?Guest3 基本工作原理及使用方法


MAX7219与8031单片机连接采用三线串行接口,典型应用电路如图1。
Y&FeN;y-jGuest对于MAX7219,串行数据是以16位数据包的形式从Din脚串行输入,在CLK的每一个上升沿一位一位地送入芯片内部16位移位寄存器,而不管Lout脚的状态如何。Load脚必须在第16个CLK上升沿出现的同时或之后,但在下一个CLK上升沿之前变为高电平,否则移入的数据将丢失。


操作者只需编程发送16位数据包,就能简单地操作LED的位选以及段选,设置和改变MAX7219的工作模式。EETOP专业博客---电子工程师自己的家园+cvBf*h|YF
16位数据包的数据格式如下:EETOP专业博客---电子工程师自己的家园4\(M*A(X_~0hv$h


点击看大图EETOP专业博客---电子工程师自己的家园"q\ nQ_A
点击看大图EETOP专业博客---电子工程师自己的家园 OSpj.o4~WfX Z
EETOP专业博客---电子工程师自己的家园D[8FY]a(V
其中:D7~D0:8位数据位,D7最高位,


D0为最底位; 
A3W'f1Db]5^?8^FGuestD11~D8:4位地址位; EETOP专业博客---电子工程师自己的家园e$KqO!t4P)oX
D15~D12:无关位,通常全取1。EETOP专业博客---电子工程师自己的家园$B.TF gJ
MAX7219通过D11~D84位地址位译码,可寻址14个内部寄存器,分别是8个LED显示位寄存器,5个控制寄存器和1个空操作寄存器。LED显示寄存器由内部8×8静态RAM构成,操作者可直接对位寄存器进行个别寻址,以刷新和保持数据,只要V+超过2V(一般为+5V)。
a y6i/e8G(rW0n~Guest控制寄存器包括:译码模式,显示亮度调节,扫描限制(选择扫描位数),关断和显示测试寄存器。 EETOP专业博客---电子工程师自己的家园1w}mS,B:|


2006510105517948.jpg
0@-?7B`-v&{Lt PGuest
e(|o'x*U `)vGuestMAX7219的驱动程序首先必须对5个控制寄存器初始设置即初始化,各控制寄存器设置含义如下:EETOP专业博客---电子工程师自己的家园h;i#S0?6i&By-i-A:|
译码模式选择寄存器(地址=F9H);
5G)sJ'wGm+C[GuestEETOP专业博客---电子工程师自己的家园\xG/U9Y3O|
共有4种译码模式供选择,当数据位全0时选择“非译码方式”。在此方式下,8个数据位分别一一对应7个段和小数点。通常选择此方式。
1Qe{b#k qGuest
k5{4q6Y+vGuest扫描限制寄存器:地址=FBH;用于设置显示的LED个数(1~8),当D2D1D0=111、D7D6D5D4D3无关时,可接8个LED管。EETOP专业博客---电子工程师自己的家园9rB3}Dw#Y0X
亮度调节寄存器:地址=FAH;
CB!iae rp-qGuest共有16级选择,用于LED显示亮度的强弱设置。EETOP专业博客---电子工程师自己的家园9^9lia(}8D$hw ^
关断模式寄存器:地址=FCH;EETOP专业博客---电子工程师自己的家园K_*{aV@SI
有两种模式选择:一种是关断状态模式(D0=0);一种是正常操作状态(D0=1),通常选择正常操作状态。EETOP专业博客---电子工程师自己的家园bj@A|}Q
显示测试寄存器:地址=FFH;有两种选择用于设置LED是测试状态还是正常操作状态:当在测试状态时(D0=1)各位全应亮,一般选择正常操作状态(D0=0)。


4 应用举例
am*I h8kO@__OGuest
;{ k"kHv1]&d"s B-rGuest
结合典型应用电路,编程实现8位从左到右显示HELLOYOU。


4.1 初始化


在此需特别说明一点,由于MAX7219内部16位寄存器的位号与从Din发送来的串行数据的位号刚好相反,所以数据在发送以前必须进行颠倒,即D0变成D15,D1变成D14......
#Y8BW w8C@!A$pMGuest
X!oA E^"IzGuest点击看大图
m/j*|'m,~ ~Guest  EETOP专业博客---电子工程师自己的家园P]#yJ!Rz u
4.2 软件设计


在单片机RAM中建立一个LED显示缓冲区,显示缓冲区首地址为30H,末地址为45H,分别对应各显示位的位地址和段码,用程序控制数据以16位数据包的形式串行送入。EETOP专业博客---电子工程师自己的家园/r5fz4]/r5Q
EETOP专业博客---电子工程师自己的家园Rq ^mQ]XL*j7r
2006510105621440.jpgEETOP专业博客---电子工程师自己的家园X*m&}K6xI{
           
b4BztU$R7fGuest在程序设计时,只要将30H~45H单元的内容通过串行口发送即可。由于MAX7219能对LED显示位进行位寻址,所以发送数据时既可以只对需要改变的某一位或几位发送,也可以一次发送8组数据,对芯片所驱动的LED全部刷新,但不需要改变的位只是把原来的内容重发一次,这完全由程序控制,以下给出每次发送8组数据的程序。当串行口把8位数码串行移位输出后,TI置1,可把TI作为状态查询标志。


显示子程序清单:


DISP:MOV SCON,#00H;串行口方式0工作   
5@ns3X[ jd LGuestCLR ES;禁止串行中断  
.g(u A)|1c6RGuestDISP1:CLR P1.0;LOAD变低     EETOP专业博客---电子工程师自己的家园D(G We.]
MOV R0,30H;显示缓冲区首址   EETOP专业博客---电子工程师自己的家园GvtDi#m lhk7v
MOV R1,#0FH;设置8位显示  
~7HT F7vzGuestDISP2:MOV SBUF,@R0;串行输出   EETOP专业博客---电子工程师自己的家园Y.gH%c8Z/n
JNB TI,$;状态查询   EETOP专业博客---电子工程师自己的家园],j,g0TyT
INC R0   
2s,^ V2_gmzGuestDJNZ R1,DISP2   EETOP专业博客---电子工程师自己的家园9X5AX6DR-x
SETB P1.0;LOAD变高   EETOP专业博客---电子工程师自己的家园Kar+q5Hz@
NOP;延时   
lp s^&zp2A5n[GuestNOP   
:S#z4[|3u~cGuestCLR TI;请发送中断标志   
^ sw3l`GuestRET;返回

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条