74HC595

../_images/74HC595.png

ArduinoのピンやLEDをたくさんコントロールしたい時、またはボタン、センサー、サーボを同時にコントロールするためのI/Oピンが足りない時、どうしますか?Arduinoにはセンサーを数つ接続できますが、すぐにピンが不足することがあります。

その解決策は「シフトレジスタ」を使用することです。シフトレジスタを使用すると、Arduino(または任意のマイクロコントローラ)から使用できるI/Oピンの数を増やすことができます。74HC595シフトレジスタは、その中でも特に有名です。

74HC595は基本的に独立した8つの出力ピンをコントロールし、入力ピンは3つしか使用しません。8つ以上のI/Oラインが必要な場合、任意の数のシフトレジスタを簡単にカスケード接続して、多くのI/Oラインを作成できます。これは所謂のシフト動作によって行われます。

特徴

  • 8ビット シリアルイン、パラレルアウト シフト

  • 動作電圧範囲:2 V から 6 V

  • 高電流3状態出力は、最大15LSTTL負荷まで駆動可能

  • 低消費電力、最大ICC = 80-µA

  • 典型的なtPD = 14 ns

  • 5 Vでの出力駆動±6-mA

  • 最大入力電流1 µA

  • シフトレジスタは直接クリアが可能

74HC595のピンとその機能:

../_images/74hc595_pin.png
  • Q0-Q7: 8ビットの並列データ出力ピン。8つのLEDや7セグメントディスプレイの8ピンを直接制御可能。

  • Q7': シリーズ出力ピン。複数の74HC595をシリーズ接続する際に、別の74HC595のDSに接続。

  • MR: リセットピン。低レベルでアクティブ。

  • SHcp: シフトレジスタの時系列入力。上昇エッジで、シフトレジスタ内のデータが1ビットずつ移動。例:Q1のデータがQ2に移動。下降エッジでは、シフトレジスタのデータは変更されません。

  • STcp: ストレージレジスタの時系列入力。上昇エッジで、シフトレジスタのデータがメモリレジスタに移動。

  • CE: 出力有効ピン。低レベルでアクティブ。

  • DS: シリアルデータ入力ピン

  • VCC: 正の供給電圧。

  • GND: グラウンド。

機能図

../_images/74hc595_functional_diagram.png

動作原理

MR(ピン10)が高レベルで、OE(ピン13)が低レベルのとき、 データはSHcpの上昇エッジで入力され、STcpの上昇エッジを通ってメモリレジスタに移動します。

  • シフトレジスタ

    • 例として、74hc595のシフトレジスタにバイナリデータ1110 1110を入力する場合。

    • データはシフトレジスタのビット0から入力されます。

    • シフトレジスタクロックが上昇エッジの場合、シフトレジスタ内のビットが1ステップシフトされます。例:ビット7はビット6の前の値を受け入れ、ビット6はビット5の値を取得します。

../_images/74hc595_shift.png
  • ストレージレジスタ

    • ストレージレジスタが上昇エッジ状態にあるとき、シフトレジスタのデータがストレージレジスタに転送されます。

    • ストレージレジスタは8つの出力ピンに直接接続されているため、Q0〜Q7は1バイトのデータを受け取ることができます。

    • いわゆるストレージレジスタとは、このレジスタにデータが存在して、1回の出力で消失しないことを意味します。

    • 74HC595が連続して電源が入っている限り、データは有効で変更されずに残ります。

    • 新しいデータが入ると、ストレージレジスタ内のデータが上書きされて更新されます。

../_images/74hc595_storage.png