|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
摘要:介绍利用80C31单片机串行口、廉价的74HC164和74HC244集成块实现多个LED显示的一种简单方法,利用该方法设计的多路LED显示系统具有硬件结构简单、软件编程容易和价格低廉的特点。3 J0 _/ E+ i. e- w5 h
关键词:单片机 串行口 LED 显示 80C31
2 F. @% x8 E2 a: t: R: u在单片机系统中,常常用数码管(LED)做显示器。一般的显示器为4位或8位,即需要4个或8个LED。实现这种显示的方法比较多,也比较简单。但是,对于多个LED显示,就必须采取必要的措施才能实现。本文介绍一种设计方法,利用该方法设计的多路LED显示系统具有硬件结构简单,软件编程方便,价格低廉的特点,经在储蓄所大屏幕利率显示屏中应用,效果很好。
/ e0 t9 E2 G! Y5 \0 _ c) z0 v1 ^1 硬件电路! M8 i% B% a: y5 x
80C31单片机是MCS-51系列单片机的一种,它广泛应用于各种小型控制系统中。我们知道,80C31单片机有一个串行口可用于串行通讯,笔者发现它在方式0状态下,还可以扩展并行I/O口,从而实现多个LED显示,其硬件原理如图1所示。其中,74HC164为串行输入、并行输出移位寄存器,74HC164为单向总线驱动器,LED采用5EF1183KR型共阴极数码管。
6 ?! ^$ Y9 I7 s6 l4 O/ h. D当80C31单片机复位时,串行口为方式0状态,即工作在移位寄存器方式,波特率为振荡频率的十二分之一。参看图2,器件执行任何一条将SBUF作为目的寄存器的命令时,数据便开始从RXD端发送。在写信号有效时,相隔一个机器周期后发送控制端SEND有效,即允许RXD发送数据,同时,允许从TXD端输出移位脉冲。第一帧(8位)数据发送完毕时,各控制信号均恢复原状态,只有TI保持高电平,呈中断申请状态。第一个74HC164把第一帧数据并行输出,LED1显示该数据(发送时序如图2所示)。然后,用软件将TI清零,发送第二帧数据。第二帧数据发送完毕,LED1显示第二帧数据,第一帧数据串行输入给第二个74HC164,LED2显示第一帧数据。依此类推,直到把数据区内所有数据发送出去。应该注意,数据全部发送完后,第一帧数据在最后一个LED显示。由于TXD端最多可以驱动8个TTL门,当LED显示器超过8个时,我们采用74HC244芯片驱动。每个74HC244有8路驱动,每一路可驱动8个LED,即每增加一个74HC244,可增加64个LED驱动。- s( Y7 |) e0 ?4 r
2 软件编程
! S( v+ \0 `, C; t+ ~# Z该软件程序采用MCS-51系列单片机汇编语言编制,并把显示程序作为一个子程序,以便在主程序中调用。设LED为共限极显示器,共有64个,显示区首地十在内部RAM 20H单元,需显示的数据以BCD码依次存放在显示区,软件清单如下:" V* S; ~6 g. a: L( @' z0 s
主程序( l) r1 p- H) E5 k- O5 P
ORG 0000H* {% A# C2 I1 C# F" a/ \ E
SJMP START7 U# S6 r5 @& { O5 n* R
ORG 0020H
6 p: J! _$ [$ O- W: XMOV R6,#40H
1 _$ v1 O" ?% aMOV R0,#20H
8 u' a+ V$ s" ~' J5 P, H9 |( l+ t) u/ CLCALL TRXD( a% t/ W; n: O' b* j9 q4 j1 q, H N6 e
SJMP $
' o$ K3 W3 M# L: `/ {* R' W显示子程序
4 y# ^6 m3 j( e: sTRXD:MOV DPTR,#DTAB
, n8 {* V2 D7 M/ V5 t4 o: l0 `DL0:MOV A,@R0: |0 `/ w( X( C- z
MOVC A,@A+DPTR
5 ]9 R9 A) b# @MOV SBUF,A J/ A. M6 ?/ w/ v; p
DL1:JNB TI,DL11 A \" h5 W3 L3 A
CLR TI8 X" p, c) Z' G: o( Q. V
INC RO
0 {5 r* z4 M% j# h8 ~DJNZ R6,DL0( y! r9 ~, O4 E4 D* p& Z3 v
RET4 b5 M; {: j1 Y, t5 i6 c+ p2 m5 ]
DTAB:3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH |
|