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

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

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

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

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

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

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

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

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

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

电路如下所示:

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

注意:电路图中省略了限流电阻。实际制作时,在每个段,串联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显示代码

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2642128.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-12
下一篇 2022-08-12

发表评论

登录后才能评论

评论列表(0条)

保存