三分钟完全掌握利用74HC595在串行口扩充8位的并行输出接口

控制/MCU

1814人已加入

描述

74HC595和74LS164一样,也是串入并出的移位寄存器。

它们经常出现在单片机系统中,用来扩充并行输出接口。

看过一些资料,送往74HC595的串行信号,基本上都是用单片机并行接口的某个位,模拟SPI的时序,输出出来的。

这种方法,灵活性是它的优点,速度低是它的缺点。

如果使用51单片机的串口方式0,就可以得到更高的速度和更简练的编程方法。

在一般的单片机教材上,讲到串口方式0的时候,都给出了用164扩充并口的方法。但是对595这个后起之秀,介绍甚少。

其实,595和164的功能是一样的,只是多了一个“更新输出”的控制引脚。

下面,做而论道介绍使用四片74HC595扩充四个8位接口、驱动数码显示器的方法。

电路如下所示:

串行

注意:电路图中省略了限流电阻。实际制作时,在每个段,串联1K左右的电阻即可。

这个显示电路,是属于静态显示的方法,不需要经常的调用显示子程序,使用起来非常方便。

这个显示电路,仅仅画出了四片595,实际上,可以仿照现在电路的结构,继续级连下去。当然,级连过多,会导致信号不稳定,那就要加上驱动电路了。

这个显示电路,实际上也就是LED点阵屏幕上,“显示一行”的驱动电路。如果配上16行的译码电路,就可以驱动16×32的点阵屏幕了。

用74HC595驱动数码管的程序如下。

;用595并行输出带动4个数码显示器。

;=============================================

ORG 0000H

SJMP START

;-----------------------------------------------------------------

START:

MOV SCON, #0 ;设置串口方式0

MOV 30H, #1 ;在显示缓冲区写入数字:8031

MOV 31H, #3

MOV 32H, #0

MOV 33H, #8

CALL TXD_595 ;显示

LJMP $ ;此处可以执行其它程序,不必经常调用显示程序

;-----------------------------------------------------------------

;串口发送到595的子程序。

;-----------------------------------------------------------------

TXD_595:

MOV R0, #30H ;显示缓冲区首址

TXD_B:

MOV A, @R0 ;取来待显示的数据

ADD A, #(TAB - $ - 3)

MOVC A, @A+PC ;查出七段码

MOV SBUF, A ;串口输出8位数

INC R0

JNB TI, $ ;等待输出完毕

CLR TI ;很快,8us(@12MHz)即可输出完8位数

CJNE R0, #34H, TXD_B ;共输出4字节

CLR P3.2 ;令595更新显示

SETB P3.2 ;用164,这两行就免了

RET

TAB:

DB 0C0H,0F9H,0A4H,0B0H, 99H, 92H, 82H,0F8H ;共阳极0-7显示代码

DB 80H, 90H, 88H, 83H,0C6H,0A1H, 86H, 8EH ;共阳极8-F显示代码

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分