デジスコ撮影実習日誌

デジスコとデジカメで野鳥や草花を撮影するのが楽しくて実習に励んでいます。 最近では電子工作にはまっています。

八十の手習い シフトレジスターの勉強、やり直し

2021年06月20日 17時17分28秒 | 工作実習

2021/06/19(土曜日) 雨

先日、マイコンとシフを組み合わせて16個のLEDを制御することができた。
そこで今度はシフトレジスタを3個接続して24個のLEDを点滅させてみようと
実験を始めた。
ところがLEDは思うようには点滅せず、あれこれプログラムを変更したり
回路をいじくりまわしたりして余計に何が何だかわからなくなってしまった。
うーん、シフトレジスターの動かし方はわかったつもりでいたけど、やっぱり
完全にはわかっていなかったんだなぁ・・・
よーし、もう一度一から勉強してみよう。

今度はマイコンボード、シフトレジスタボード、LEDボードを別々に作った。

マイコンボードは前と同じ。
シフトレジスタを制御する配線は4本で変わりなし。

シフトレジスタ間は4本の信号線を配線する。


シフトレジスタとLEDの接続は8x3の24本。
前回の実験では0ビットを飛び越して点灯していたのに気が付かなかったことから
0ビット目を赤いLEDにして見落とさないようにした。

さぁ、問題のプログラムだ。
前回の実験では同じような繰り返し処理は関数を作ったり、ループ処理を組んだりして
何か問題が出たときの対処がややこしかった。
そこで今回は単純に「手でスイッチを操作するとおり」をプログラムに実行させる
という方式にした。
同じようなコードを何か所も書き込むので面倒だったが、何とか実行した。

① まず最初に(最初の1回だけ)シフトレジスタをクリアする。
② 最下位シフトレジスタのSER信号を”1”(HIGH)にする。
③ SRCLK信号を”1”(HIGH)にしてまた”0”(LOW)にする。
  (SRCLKにパルスを加える。)
  (これで最下位シフトレジスタの0ビット(QA)が ”1”(HIGH)になる。
④ SER信号を”0”にする。
⑤ RCLK信号を”1”(HIGH)にして”0”(LOW)にする。
  (RCLKにパルスを加える。)
  (これで全シフトレジスタのQxがラッチされて端子に出力される。)
  (この場合は最下位レジスタのQAは”1”(HIGH)にラッチされるのでLEDは点灯する。)
  (その他のQxは”0”(LOW)なので点灯しない。) 
⑥ SRCLK信号をHIGHにしてLOWにする。
⑦ 最下位レジスタQAの出力がQBにシフトする。 QAはSER(現在はLOW)の信号で
  LOWになる。
⑧ RCLKをHIGHにしてLOWにする。
  (全Qxがラッチされて端子に出力される。)
  (最下位レジスタのQBはHIGHなのでLEDは点灯。 その他のQxはLOWなので
   点灯しない。)
  (結果、QAの点灯状態がQBにシフトしたことになる。)
⑨  上記⑥、⑦、⑧を繰り返すと点灯しているLEDは1つずつ上位でシフトしていく。
   SRCLKパルスを23回送出すると最上位シフトレジスタのQHが点灯し、24回目では
   ①の動作が開始される。

オシロスコープで波形をみてみた。

下位ビットで点灯されたLEDが上位へのLEDへと移動していく。
今回の実験では24個のLEDを点滅させてみたが、シフトレジスタを
増やせば元沢山のLEDを点滅させられる。
マイコンとシフトレジスタボートの配線は4本だけだ。
なるほど・・・シフトレジスタは面白い。

そんな実験の様子を動画でご覧ください。


(オイらはオシロスコープの波形を見るのが好きです。変な趣味だよねぇ(笑い))

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 八十の手習い  何が何だか... | トップ | 八十の手習い マイコンに保... »
最新の画像もっと見る

コメントを投稿

工作実習」カテゴリの最新記事