5.1 マイクロチップ - 74HC595

集積回路(Integrated Circuit、IC)は、電子回路で"IC"として表されるミニチュア電子デバイスまたはコンポーネントの一種です。

特定のプロセスを用いて、トランジスタ、抵抗器、コンデンサ、インダクタなど、回路に必要なコンポーネントと配線を小型またはいくつかの小型の半導体ウェハーや誘電体基板上に作成し、それをパッケージに収めることで、必要な回路機能を持つマイクロ構造になります。全てのコンポーネントは一体となって構造化され、電子部品は微小化、低消費電力、高信頼性、および知能化に大きく前進しています。

集積回路の発明者は、ジャック・キルビー(ゲルマニウム(Ge)を基にした集積回路)とロバート・ノートン・ノイス(シリコン(Si)を基にした集積回路)です。

このキットには、GPIOピンの使用を大幅に節約できるIC、74HC595が装備されています。具体的には、8ビットの2進数を書き込むことで、デジタル信号出力のための8ピンを置き換えることができます。

必要なコンポーネント

このプロジェクトでは、以下のコンポーネントが必要です。

全体のキットを購入するのが確実に便利です。リンクはこちら:

名前

このキットに含まれるアイテム

リンク

ケプラーキット

450以上

Kepler Kit

以下のリンクから個別にも購入できます。

品番

コンポーネント

数量

リンク

1

Raspberry Pi Pico W

1

BUY

2

マイクロUSBケーブル

1

3

ブレッドボード

1

BUY

4

ジャンパーワイヤー

数本

BUY

5

抵抗器

8(220Ω)

BUY

6

LED

8

BUY

7

74HC595

1

BUY

回路図

sch_74hc_led

  • MR(ピン10)がハイレベルで、OE(ピン13)がローレベルの場合、SHcpの立ち上がりエッジでデータが入力され、SHcpの立ち上がりエッジを通じてメモリレジスタに移動します。

  • 2つのクロックが一緒に接続されている場合、シフトレジスタは常にメモリレジスタよりも1パルス早いです。

  • メモリレジスタには、シリアルシフト入力ピン(Ds)、シリアル出力ピン(Q)、および非同期リセットボタン(ローレベル)があります。

  • メモリレジスタは、3つの状態で並列8ビットのバスを出力します。

  • OEが有効化(ローレベル)された場合、メモリレジスタ内のデータがバス(Q0〜Q7)に出力されます。

配線

wiring_74hc_led

コード

注釈

  • kepler-kit-main/micropython のパスの下にある 5.1_microchip_74hc595.py ファイルを開くか、このコードをThonnyにコピーしてから、「Run Current Script」をクリックするか、単純にF5を押して実行します。

  • 画面右下の角にある「MicroPython(Raspberry Pi Pico)」のインタープリターをクリックするのを忘れないでください。

  • 詳細なチュートリアルについては、 コードを直接開いて実行する を参照してください。

import machine
import time

sdi = machine.Pin(0,machine.Pin.OUT)
rclk = machine.Pin(1,machine.Pin.OUT)
srclk = machine.Pin(2,machine.Pin.OUT)

def hc595_shift(dat):
    rclk.low()
    time.sleep_ms(5)
    for bit in range(7, -1, -1):
        srclk.low()
        time.sleep_ms(5)
        value = 1 & (dat >> bit)
        sdi.value(value)
        time.sleep_ms(5)
        srclk.high()
        time.sleep_ms(5)
    time.sleep_ms(5)
    rclk.high()
    time.sleep_ms(5)

num = 0

for i in range(16):
    if i < 8:
        num = (num<<1) + 1
    elif i>=8:
        num = (num & 0b01111111)<<1
    hc595_shift(num)
    print("{:0>8b}".format(num))
    time.sleep_ms(200)

プログラムが動作しているとき、 num は8ビットの2進数として74HC595チップに書き込まれ、8つのLEDのオンオフを制御します。 シェルで num の現在の値を確認できます。

仕組み

hc595_shift() は、74HC595に8つのデジタル信号を出力させます。それは2進数の最後のビットをQ0に、最初のビットをQ7に出力します。言い換えれば、2進数「00000001」を書き込むと、Q0はハイレベルを出力し、Q1〜Q7はローレベルを出力します。