Arduino中国 | Flamingo EDA

Dec/07

3

74HC595串入并出8位移位寄存器

Arduino采用的ATmega168芯片带12个数字I/O管脚,其中每个都可以对一个数字量进行控制,从而实现类似于点亮一个发光二极管这样的功能。在实际的工程应用里,有时我们可能会遇到需要对更多的数字量进行控制的场合,比如同时控制16个发光二极管,这时Arduino自带的数字I/O管脚就不够用了,必须进行相应的扩展。其中一种可行的办法就是借助74HC595这样一个8位串入并出移位寄存器,这个芯片能够多个级连起来一起使用,因此理论上能够通过Arduino上有限的几个管脚(最少三个)产生任意多个的数字输出。

74HC595同数据相关的引脚可以分为三类:

  • DS:串行数据输入,接Arduino的某个数字I/O引脚。
  • Q0~Q7:8位并行数据输出,可以直接控制8个LED,或者是七段数码管的8个引脚。
  • Q7′:级联输出端,与下一个74HC595的DS相连,实现多个芯片之间的级联。

74HC595同控制相关的引脚一共有四个:

  • SH_CP:移位寄存器的时钟输入。上升沿时移位寄存器中的数据依次移动一位,即Q0中的数据移到Q1中,Q1中的数据移到Q2中,依次类推;下降沿时移位寄存器中的数据保持不变。
  • ST_CP:存储寄存器的时钟输入。上升沿时移位寄存器中的数据进入存储寄存器,下降沿时存储寄存器中的数据保持不变。应用时通常将ST_CP置为低点平,移位结束后再在ST_CP端产生一个正脉冲更新显示数据。
  • MR:重置(RESET),低电平时将移位寄存器中的数据清零,应用时通常将它直接连高电平(VCC)。
  • OE:输出允许,高电平时禁止输出(高阻态)。引脚不紧张的情况下可以用Arduino的一个引脚来控制它,这样可以很方便地产生闪烁和熄灭的效果。实际应用时可以将它直接连低电平(GND)。

对于一个最简单的74HC595应用来讲,可以用Arduino的三个数字I/O端口分别控制DS、SH_CP和ST_CP,然后将MR和OE分别接VCC和地。下面是利用74HC595来控制8个LED的原理图:

No tags

1 comment

  • i3dx · 2007/12/26 at 9:09 PM

    订正:Arduino 带有 0-7 8-13 14-19 共三组,20个数字IO口。
    只是14-19常用于模拟输入端0-5口使用,但是基本数字io功
    能仍然保留。
    Arduino mini 另有20 21两个数字io可使用。

Leave a Reply

使用新浪微博登录

<<

>>

Theme Design by devolux.nh2.me