摘 要 阐述了新型显示驱动芯片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:|
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 EETOP专业博客---电子工程师自己的家园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;返回 |
文章评论(0条评论)
登录后参与讨论