シフトレジスタ74HC165を使おう

Arduinoでは入力がシフトレジスタ74HC165の使い方を勉強してみましょう。いつものようにTinkerCADでやりたかったのですが、残念ながらTinkerCADには74HC165がありません。そのため、別のArduinoシミュレータであるWokwiを使ってみます。使い方はTinkerCADとほぼ同じです。

下の図のようにArduino UNOと74HC165、ディップスイッチ、抵抗を用いて8個のデジタル入力をArduinoに取り込むようにしてみます。8個だとArduino UNOでそのまま取り込むこともできるわけですが、ここではシフトレジスタ74HC165を用いてArduinoとの結線は半分の4本でデータ入力できることを確認しましょう。

下記の回路のWokwiによるシミュレーションモデルはここに共有します。ここで使わせていただいたプログラムはここをベースに少し改変したプログラムです。

74HC165の説明は東芝のデータシートから抜粋させていただきます。ICのピン配置は次の図のようになります。1番ピンでシフト動作とデータロード動作の切り替え、2番ピンがクロック、3~6、11~14はデータの入力、7番ピン ̄QH(真上に棒が引けないのでずれていますが悪しからず)と9番ピンQHからシフトしたデータが1ビットずつ出てきます。8番ピンはグラウンド、10番ピンはシリアル入力信号、15番ピンはクロックを禁止する信号、16番ピンはこのICの電源入力となります。

参考URL5より引用

次にタイミング図を説明します。一番上がクロック信号です。このクロックのタイミング(立ち上がり)で動作していきます。2番目のCK INH信号はクロック禁止信号で、これがHIGHのときにはクロックは無効となります。3番目のSERIAL INPUT信号は74HC165 のシフトレジスタを2つ以上つなげるときに使います。今回は使いません。4番目のSHIFT/LOAD信号はLOWのときに、A~Hのデータをシフトレジスタに取り込み、その後のクロック信号で順に取り出せるようになります。ただし、第1ビット(下の図ではAのデータ)はSHIFT/LOAD信号がLOWになったときにQHにセットされ、その後CLK INH信号がLOWのときのクロック信号の立ち上がり毎にQHに出るデータはB→Hに順に押し出されていきます。

参考URLより引用