原创 用MCS-51单片机串行口对 MAX7219的控制

2009-8-13 11:27 2481 7 7 分类: MCU/ 嵌入式
摘要 介绍MAX7219的功能,与MCS-51的时序配合及一种新颖的利用MCS-51串行方式0对MAX7219及显示器控制的方法和程序。
;@%U1{ _#|eV0关键MAX7219   MCS-51  单片机  串行  中断  显示器电子园51单片机学习网wW-@ [*}R
  单片机系统通常需要有LED对系统的状态进行观测,而很多工业控制用单片机如MCS-51系列本身并无显示接口部分,需要外接显示的译码驱动电路。 LED数码管显示有动态显示和静态显示两种方式。通常不管采用哪种显示方式,单片机往往都工作于并行I/O或存储器方式。作者在采用MCS-51单片机的控制系统中,利用MAXIM公司的串行接口8位LED显示驱动器MAX7219构成显示接口电路,仅需使用单片机3个引脚,即可实现对8位LED数码管的显示控制和驱动,线路非常简单,控制简单方便。电子园51单片机学习网 @$K t9{Q1DF l
1 MAX7219
i2Su0Xn(Z0  MAX7219芯片为MAXIM公司推出的串行输入/输出共阴极显示驱动器,是用一个芯片实现以往用软件完成的动态显示电路扫描工作的器件。每片可控制显示8个七段LED数码管、条形图或64个发光二极管,控制字简单,可与各种微机接口。为24引脚芯片,除与显示器连接外,与微机串行口为3线连接,芯片外部电路仅为一限制峰值段电流的电阻,线路简单,极大地方便了对显示器件的控制。该芯片控制的显示位数多,控制字少,可对全部或个别显示位的数据进行更新。并可方便地进行多个芯片的级联,扩展显示容量。MAX7219有多种封装形式,如窄式DIP封装。
1@(\+MOVxwK0电子园51单片机学习网 jmZz4]
  MAX7219的串行数据格式如表1所示。其中:D12~D15位不用;D8~D11为显示位和各种工作方式的控制寄存器地址位,可选择要显示的位、解码方式、显示亮度、扫描位数、停止方式、显示测试等,其地址分布如表2所示;D0~D7为数据位,其形式与显示出的数字间的关系与解码方式有关。表2中 X可为16进制任意值,一般取为0。每组16位数据中,首先接收的为最高有效位,最后接收的为最低有效位。

6136_200904071941171UAnE.jpg电子园51单片机学习网`-L9YR`

电子园51单片机学习网{n FnZr t Z{


.?s ~8u:o9V0电子园51单片机学习网^$` tz}9`*X?H
  解码方式寄存器可设置各位数码管为解码显示方式,或非解码的数据位与显示段直接对应的显示方式。亮度寄存器用于与外部电阻配合控制数码管的显示亮度。扫描限制寄存器控制显示的位数。停机寄存器控制  显示器为停机或正常工作状态,停机状态下描振荡器停止工作,消隐所有显示位。显示测试寄存器设置器件为正常工作或测试状态。空操作寄存器用于多个MAX7219级连。器件上电后所有控制寄存器复位。解码方式寄存器的值为非解码方式,亮度寄存器的值设置为最小,扫描寄存器设置为仅显示1位,停机寄存器处于停机状态,显示消隐。因此MAX7219必须经过初始化后才可正常工作。
k-X-Z)p*zi!Z&{3u0    MAX7219的工作时序如图1所示。数据由DIN引脚输入,最先输入的为最高位,在CLK的上升沿将数据位移入器件内的移位寄存器,LOAD引脚信号的上升沿将最后移入的16位数据锁存入相应的寄存器中,LOAD信号的上升沿必须与CLK的上升沿同时,或在其后。从DIN输入的数据经过16.5个CLK 脉冲后移到DOUT引脚上。

'Dxhl[Y$N"{*t7~O0

6136_200904071941172TSG1.jpg电子园51单片机学习网q~f gjl

电子园51单片机学习网a$s7wz["[

2 MCS-51单片机的串行工作方式电子园51单片机学习网%S1YYy4D:oa
电子园51单片机学习网6a@.p$Ma$?:P&J1C
电子园51单片机学习网v'IW0M(P5O2e;J
  MCS-51单片机串行口有四种发送工作方式,其中方式0每帧共发送8位数,其
L%k/?4p.Z H1t6q0他工作方式下每帧发送均不为8位数或其倍数。因此只能考虑使用方式0。串行口工
B V@/X0@l0I _X&h0作于方式0时,通过RXD(P3.0)引脚发送/接收串行数据,通过TXD(P3.1)引脚发送移位时钟脉冲。发送顺序为低位在前高位在后,与 MAX7219的接收顺序相反。从单片机时序上看,只需在发送前将显示数据和地址码的高低位顺序颠倒,利用串行方式0进行发送,每发送两次,就可向 MAX7219输出一个要显示的数据或控制寄存器参数。而在单片机与MAX7219的时序配合中,时钟脉冲的配合是非常关键的。电子园51单片机学习网!A(\v$r9J Zj/n3J


电子园51单片机学习网%h7wCT'zHC3jF W!n;`
6136_2009040719411733ECo.jpg 电子园51单片机学习网'?+k&Wc9K3xkwy]


BU|.t*l ?$I0 

&l2\;s!A+E0H0电子园51单片机学习网UX1o#r}.T

 电子园51单片机学习网g P3l Bq4g y4u#o(u&^


X/VRS9Z`#g1e'LI0 电子园51单片机学习网 J-s1O/Dn7`%{

电子园51单片机学习网}uP&a@&Jzp


,o%?d5n G H_d_#dM03单片机与MAX7219的连接
^2u3F9t|+m;v0    控制系统单片机与MAX7219及显示器件的连接如图2所示。单片机的RXD、TXD电子园51单片机学习网P%cK*?`!j0_;x'~
引脚分别接MAX7219的DIN、CLK,以P3.2控制LOAD引脚。接在电源端和地之间的电
E/?3]x$t2yS2IM0容起抗干扰的作用,其值应大于10μF,据作者经验,在(10~100)μF间即可,太大作用并不明显。由于MAX7219是在脉冲信号控制下工作的,抗干扰非常关键,在线路上,MAX7219应尽量与显示器件相靠近,以减少外部的干扰。电子园51单片机学习网} Kmj_"lIc


 电子园51单片机学习网 d.cg5m} ~


6136_200904071941174ZTxP.jpg

W6v xZ;w+cY0
电子园51单片机学习网5yY.K6jg_4kB k

n[] J"V9rD04 控制程序设计

XA"giI?Kb D0

c2Q XMN#s0   本系统中单片机采用中断方式对MAX7219进行控制,传送16位数据的地址位和数据位。在主程序中,包括串行方式的设置、显示缓冲单元和各控制寄存器的地址码及数据单元的分配、对MAX7219的初始化等。以下程序中,显示缓冲区为RAM的电子园51单片机学习网]!h"KV{#d3xS%^ \ C
30H~37H单元,控制寄存器地址码及数据单元为40H~47H单元。要显示的数据是程电子园51单片机学习网QXc2S+dA
序执行的运算结果,以BCD码数形式存放在显示缓冲单元的数据字节中,用转换子程
V|?O A&Dg\0序BSHIFT倒序后存回原处。电子园51单片机学习网:~9q ?0F's
电子园51单片机学习网B;O)x`L
    单片机串行发送数据的启动在主程序中进行,每发送两个字节后,在中断子程序电子园51单片机学习网(X!e@Elv9y5z1\
中控制使MAX7219的LOAD引脚产生正跳变,把数据锁存入相应的寄存器中。该中断
i;w8Z([,FvQ#vzQ0子程序既可发送一个16位数据,也可连续发送多个,非常方便。由于MAX7219易受干
E5FkR+p Wuk:V3X7YC0扰影响,因此在程序执行过程中应经常对显示进行更新。主程序及发送中断子程序、数据格式转换子程序如下。
^b:zl a0;主程序  电子园51单片机学习网r%GI)Wf_z
……

z jo p-dum Kw0电子园51单片机学习网mr!W _*wp

;把数据格式转换为7219的方式电子园51单片机学习网B5bI'T1[(j n&@M


y;Z6A9n&H.T M&F5@,F0 MOV R1,#31H 

$@0n.s6NA0d0电子园51单片机学习网|Wtb;Yg/BK

MOV R5,#8电子园51单片机学习网 Bb8Co5@ _ AW
LCALL BSHIFT;把8位数均转换为7219  方式 

.der;MK'C V#{0电子园51单片机学习网W/O:FL|5n5P:l%r

;初始化7219
QOV I1x4l0MOV R2,#8

H/X]2?"`,o@+W6B0

J(`+S N t`7Re0MOV R0,#40H
)o(G2TDQ0SETB;奇偶字节发送判断标志CLR P3.2电子园51单片机学习网 y+vzj+yRCJ/b)b
MOV A,@R0
[5Fx*F$mR)L|0MOV SBUF,A;发送40H起内容,初始化7219 电子园51单片机学习网,e W!k|5j J


:w1|}Z I*A c0……电子园51单片机学习网N4_)s a A2y
;发送8个要显示的数据
fm H%Q&Y,Q+LS3d+aU0MOV R2,#8+8;8个数据共16字节电子园51单片机学习网*n4h4u$P-GZ


u~\[ `0v4U%tx!G0MOV R0,#30H;30H为数据缓冲区首址

Oe-o ^$I`0

fW DTu)R2~(kx0SETB P3.2;准备7219的LOAD  电平  MOV A,@R0电子园51单片机学习网9nH"q}Fh
MOV SBUF,A;开始发送数据  

[%V~9z]3s5Xy)^ n0电子园51单片机学习网|)^,r0m q0S7CjT

……
;Uy*E+x]#PAp0;对7219的串行发送中断子程序 电子园51单片机学习网DuG9q;BTMZ?


M]:JT7a8Eh0STINT1:电子园51单片机学习网D3Ewx?b Ci

电子园51单片机学习网i"A y6A%~N

CLR TICPL F0 电子园51单片机学习网YL5{;@)M~,{


^;F!d,v$R v7F0JNB F0,ST13
X$LLss0SETB P3.2;发完16位后产生  LOAD脉冲  电子园51单片机学习网4Yv hiNX1kpr


)I0`,J gH/V }-Kl0CLR P3.2
+~lsv1p]0ST13:CJNE R2,#0,STI1;判断是否发送完  

},gUJ.H0电子园51单片机学习网9f J pJ3m X

SJMP STI2电子园51单片机学习网Z8Y0t~;}9e~
STI1:DEC R2;没送完

'U/S A9Y(_)s-b,n*a0电子园51单片机学习网Z R'Ak5DOk

INC R0;地址偏移电子园51单片机学习网{VmU\D

电子园51单片机学习网Ro2HPe J0Q6l3})gX

MOV A,@R0
'['{:Y/SdCbC9f$^0MOV SBUF,A;发下一字节 电子园51单片机学习网v Ob b7Q(s

电子园51单片机学习网"N o!y }/[A C3As

STI2:RETI
T2t2a gk"u0;BCD码转换为7219数据形式子程序,转换数据及结果由R1间址

,s;D{pO/dr0

'Xt a:GYK#?0BSHIFT:MOV A,@R1 

FWo;f3~0电子园51单片机学习网D ] U!N-u7P)[JGS,x o

ADD A,#6电子园51单片机学习网EY b:oG(H#a;T

电子园51单片机学习网 Zy[`:j)`D

MOVC A,@A+PC 电子园51单片机学习网(au.z2_8MA


3X3V.w FO0MOV@R1,A 

k2]mg-FP0

0P7Ro Z X C0INC R1

5J6c&hR1j:j7P;{0电子园51单片机学习网|-L9n6R(s)?J.T1o

INC R1电子园51单片机学习网/Kc h4L&Iq+aUi Oy
DJNZ R5,BSHIFT

OVZ(u3O"sP0

/i*TS i3M#E7k0RET 电子园51单片机学习网K2[3u%{l6A"uqf

电子园51单片机学习网 Av(I:Ci9?

DB 0,80H,40H,0C0H,20H,0A0H,60H,0E0H,10H,90H电子园51单片机学习网 Q/cG%\6k3S"`$~
电子园51单片机学习网+Am;Wv$k"U
  参考文献

M4sn%r$L*}:H5h'b0电子园51单片机学习网S;\ XxjV

1 MAXIM公司,MAXIM1998产品资料全集
$GC)gQQV7fw0电子园51单片机学习网`N"iW6X6TWf


'WTq;K_:nc k02[美]Intel公司,硕良士等译,常用单片微计算机手册,上海科学普及出版社,1989电子园51单片机学习网)^?s0A|Mn2ox

PARTNER CONTENT

文章评论0条评论)

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