📄 74hc244和74hc164与串行口实现多个led显示的一种简单方法_热门器件典型应用及资料下载_强联单片机科技有限公司.htm
字号:
lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">
显示</SPAN><SPAN lang=EN-US
style="FONT-SIZE: 11pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: 宋体"> </SPAN><SPAN
lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">
80C31<o:p></o:p></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22.5pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><SPAN
style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">在单片机系统中,常常用数码管(<SPAN
lang=EN-US>LED)做显示器。一般的显示器为4位或8位,即需要4个或8个LED。实现这种显示的方法比较多,也比较简单。但是,对于多个LED显示,就必须采取必要的措施才能实现。本文介绍一种设计方法,利用该方法设计的多路LED显示系统具有硬件结构简单,软件编程方便,价格低廉的特点,经在储蓄所大屏幕利率显示屏中应用,效果很好。<o:p></o:p></SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><B><SPAN
lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">1
硬件电路</SPAN></B><SPAN lang=EN-US
style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22.5pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><v:shapetype
id=_x0000_t75 coordsize="21600,21600"
o:preferrelative="t" filled="f" stroked="f"
path="m@4@5l@4@11@9@11@9@5xe" o:spt="75"><v:stroke
joinstyle="miter"></v:stroke><v:formulas><v:f
eqn="if lineDrawn pixelLineWidth 0 "></v:f><v:f
eqn="sum @0 1 0 "></v:f><v:f
eqn="sum 0 0 @1 "></v:f><v:f
eqn="prod @2 1 2 "></v:f><v:f
eqn="prod @3 21600 pixelWidth "></v:f><v:f
eqn="prod @3 21600 pixelHeight "></v:f><v:f
eqn="sum @0 0 1 "></v:f><v:f
eqn="prod @6 1 2 "></v:f><v:f
eqn="prod @7 21600 pixelWidth "></v:f><v:f
eqn="sum @8 21600 0 "></v:f><v:f
eqn="prod @7 21600 pixelHeight "></v:f><v:f
eqn="sum @10 21600 0 "></v:f></v:formulas><v:path
o:extrusionok="f" gradientshapeok="t"
o:connecttype="rect"></v:path><o:lock v:ext="edit"
aspectratio="t"></o:lock></v:shapetype><v:shape
id=_x0000_s1026
style="MARGIN-TOP: 3.2pt; Z-INDEX: 1; MARGIN-LEFT: 0px; WIDTH: 171.75pt; POSITION: absolute; HEIGHT: 172.5pt; mso-wrap-distance-left: .75pt; mso-wrap-distance-top: .75pt; mso-wrap-distance-right: .75pt; mso-wrap-distance-bottom: .75pt; mso-position-horizontal: left; mso-position-vertical-relative: line"
coordsize="21600,21600" type="#_x0000_t75" alt=""
o:allowoverlap="f"><v:imagedata o:title="1-15a"
src="./串行口实现多个LED.files/image001.gif"></v:imagedata><w:wrap
type="square"></w:wrap></v:shape><SPAN lang=EN-US
style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">80C31单片机是MCS-51系列单片机的一种,它广泛应用于各种小型控制系统中。我们知道,80C31单片机有一个串行口可用于串行通讯,笔者发现它在方式0状态下,还可以扩展并行I/O口,从而实现多个LED显示,其硬件原理如图1所示。其中,74HC164为串行输入、并行输出移位寄存器,74HC164为单向总线驱动器,LED采用5EF1183KR型共阴极数码管。<o:p></o:p></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22.5pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><SPAN
style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">当<SPAN
lang=EN-US>80C31单片机复位时,串行口为方式0状态,即工作在移位寄存器方式,波特率为振荡频率的十二分之一。参看图2,器件执行任何一条将SBUF作为目的寄存器的命令时,数据便开始从RXD端发送。在写信号有效时,相隔</SPAN></SPAN><v:shape
id=_x0000_s1027
style="MARGIN-TOP: 3pt; Z-INDEX: 2; MARGIN-LEFT: 0px; WIDTH: 169.5pt; POSITION: absolute; HEIGHT: 104.25pt; mso-wrap-distance-left: 5.65pt; mso-wrap-distance-top: 5.65pt; mso-wrap-distance-right: 5.65pt; mso-wrap-distance-bottom: 5.65pt; mso-position-horizontal: left; mso-position-vertical-relative: line; mso-position-horizontal-relative: text"
coordsize="21600,21600" type="#_x0000_t75" alt=""
o:allowoverlap="f"> <v:imagedata o:title="1-15b"
src="./串行口实现多个LED.files/image002.gif"></v:imagedata><w:wrap
type="square"></w:wrap></v:shape><SPAN
style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">一个机器周期后发送控制端<SPAN
lang=EN-US>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驱动。<o:p></o:p></SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><B><SPAN
lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">2
软件编程</SPAN></B><SPAN lang=EN-US
style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22.5pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><SPAN
style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">该软件程序采用<SPAN
lang=EN-US>MCS-51系列单片机汇编语言编制,并把显示程序作为一个子程序,以便在主程序中调用。设LED为共限极显示器,共有64个,显示区首地十在内部RAM
20H单元,需显示的数据以BCD码依次存放在显示区,软件清单如下:<o:p></o:p></SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22.5pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><SPAN
style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">主程序<SPAN
lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22.5pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><SPAN
lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">ORG
0000H<o:p></o:p></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22.5pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><SPAN
lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">SJMP
START<o:p></o:p></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22.5pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><SPAN
lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">ORG
0020H<o:p></o:p></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22.5pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><SPAN
lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">MOV
R6,#40H<o:p></o:p></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22.5pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><SPAN
lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">MOV
R0,#20H<o:p></o:p></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22.5pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><SPAN
lang=EN-US
style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">LCALL
TRXD<o:p></o:p></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22.5pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><SPAN
lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">SJMP
$<o:p></o:p></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22.5pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><SPAN
style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">显示子程序<SPAN
lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22.5pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><SPAN
lang=EN-US
style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">TRXD:MOV
DPTR,#DTAB<o:p></o:p></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22.5pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><SPAN
lang=EN-US
style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">DL0:MOV
A,@R0<o:p></o:p></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22.5pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><SPAN
lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">MOVC
A,@A+DPTR<o:p></o:p></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22.5pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><SPAN
lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">MOV
SBUF,A<o:p></o:p></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22.5pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><SPAN
lang=EN-US
style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">DL1:JNB
TI,DL1<o:p></o:p></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22.5pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><SPAN
lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">CLR
TI<o:p></o:p></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22.5pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><SPAN
lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">INC
RO<o:p></o:p></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22.5pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><SPAN
lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">DJNZ
R6,DL0<o:p></o:p></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22.5pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><SPAN
lang=EN-US
style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">RET<o:p></o:p></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22.5pt; LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><SPAN
lang=EN-US
style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">DTAB:3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
</SPAN><SPAN lang=EN-US
style="FONT-FAMILY: 宋体"><o:p></o:p></SPAN></P>
<P class=MsoNormal
style="LINE-HEIGHT: 22pt; mso-line-height-rule: exactly"><SPAN
lang=EN-US
style="FONT-FAMILY: 宋体"> <o:p></o:p></SPAN></P><BR>
<DIV
align=right></DIV></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></CENTER></DIV><FONT
color=#000000></FONT>
<DIV align=center>
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<HR noShade>
<TBODY></TBODY></TABLE>
<TABLE width="100%" border=0>
<TBODY>
<TR>
<TD vAlign=top width="100%" colSpan=2>【专题】</TD></TR>
<TR>
<TD vAlign=top width="50%">
<P style="LINE-HEIGHT: 200%" align=left>□ <A
href="http://www.qlmcu.com/shop_kfgj.asp"
target=_blank>51/AVR单片机开发学习工具</A><BR>□ <A
href="http://www.qlmcu.com/wz_tw/ReadNews.asp?NewsID=1777"
target=_blank>识别主人的电话遥控器及控制芯片</A><BR>□ <A
href="http://www.qlmcu.com/wz_tw/ReadNews.asp?NewsID=453"
target=_blank>识别主人的电话报警器及控制芯片<BR></A>□ <A
href="http://www.qlmcu.com/wz_tw/ReadNews.asp?NewsID=2210"
target=_blank>多功能12按键电脑密码锁控制器芯片QL801</A> <BR>□ <A
href="http://www.qlmcu.com/wz_tw/ReadNews.asp?NewsID=2271"
target=_blank>多功能2按键电脑密码锁控制器芯片QL802</A></P></TD>
<TD vAlign=top width="50%">
<P style="LINE-HEIGHT: 200%" align=left>□ <FONT
color=#0000ff><A
href="http://www.qlmcu.com/wz_tw/ReadNews.asp?NewsID=2318">通用</A></FONT><A
href="http://www.qlmcu.com/wz_tw/ReadNews.asp?NewsID=2318">视频字符叠加器QL505</A>
<BR>□ <A
href="http://www.qlmcu.com/wz_tw/ReadNews.asp?NewsID=2317"
target=_blank><FONT color=#0000ff>通用</FONT>视频字符叠加模块QL503</A>
<BR>□ <A class=middle title=视频滚动字幕机QL601产品说明
href="http://www.qlmcu.com/wz_tw/ReadNews.asp?NewsID=2319"
target=_blank><FONT color=#0000ff>视频滚动字幕机QL601产品说明</FONT><FONT
color=#0> </FONT></L></A> <FONT color=black><A
href="http://www.qlmcu.com/wz_tw/ReadNews.asp?NewsID=2306"
target=_blank><BR></A></FONT>□ <A
href="http://www.qlmcu.com/wz_tw/ReadNews.asp?NewsID=2320"
target=_blank><FONT color=#0000ff>点钞机字符叠加器QL701简介</FONT></A>
<A href="http://www.qlmcu.com/wz_tw/ReadNews.asp?NewsID=2271"
target=_blank><BR></A>□ <A class=middle
title=温湿度实时视频字符叠加器QL505-W1说明
href="http://www.qlmcu.com/wz_tw/ReadNews.asp?NewsID=2321"
target=_blank><FONT color=#0000ff>温湿度实时视频字符叠加器说明</FONT></A>
</P></TD></TR></TBODY></TABLE></CENTER></DIV>
<TR>
<TD align=right width="100%"><BR><BR>加入时间:2005年2月19日
共有<STRONG>16497</STRONG>位读者阅读过此文 访问总量
<SCRIPT
src="74HC244和74HC164与串行口实现多个LED显示的一种简单方法_热门器件典型应用及资料下载_强联单片机科技有限公司.files/counter.htm"></SCRIPT>
<SCRIPT language=JavaScript
src="74HC244和74HC164与串行口实现多个LED显示的一种简单方法_热门器件典型应用及资料下载_强联单片机科技有限公司.files/site.htm"
type=text/javascript></SCRIPT>
【<A class=12tp href="javascript:window.close()"><FONT
color=#0000ff>关闭窗口</FONT></A>】 【<A
href="javascript:location.reload()">刷新</A>】 </TD></TR></TBODY></TABLE>
<CENTER></CENTER>
<DIV></DIV></TD></TR></TBODY></TABLE></TD></TR></TABLE>
<TABLE cellSpacing=0 cellPadding=0>
<DIV align=center>
<CENTER></CENTER></DIV><BR>
<TBODY></TBODY></TABLE>
<HR width=750 noShade>
</BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -