利用74HC595在串行口扩充8位的并行输出接口

74HC595和74LS164一样,也是串入并出的移位寄存器。
它们经常出现在单片机系统中,用来扩充并行输出接口。
用 74HC595 驱动点阵显示屏可见:
http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/e4d7db39c77e9f35b9998f26.html

看过一些资料,送往74HC595的串行信号,基本上都是用单片机并行接口的某个位,模拟SPI的时序,输出出来的。
这种方法,灵活性是它的优点,速度低是它的缺点。
如果使用51单片机的串口方式0,就可以得到更高的速度和更简练的编程方法。

在一般的单片机教材上,讲到串口方式0的时候,都给出了用164扩充并口的方法。但是对595这个后起之秀,介绍甚少。
其实,595和164的功能是一样的,只是多了一个“更新输出”的控制引脚。

用 74LS164 扩充的方法可见:
http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/33c9fa2514f9c320d50742aa.html

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

利用74HC595在串行口扩充8位的并行输出接口 - 非著名博主 - 电子信息角落

图片链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/74f42706b8d36f9d7a89473f.html#
注意:电路图中省略了限流电阻。实际制作时,在每个段,串联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显示代码
;=============================================

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值