2021/06/13(日曜日) 晴れ
シフトレジスタ(74HC955)1個の8ビット回路は何とかうまくいった。
次はシフトレジスタを2個にして16ビット回路の実験をしてみた。
そして16個のLEDを指定したパターンで点滅させるための実験も行った。
LEDを点滅させるデータはマイコンのメモリに書き込んである。
そのデーターの8ビット(1バイト)を読み込んで下位ビットから1ビットずつ
シフトレジスタに送り込み、1バイトが完了したら次の1バイトを読み込んで
同じように1ビットずつ送り込んでいく。
結果16ビット(2バイト)のデータを送り込んだらラッチレジスタにクロック
パルスを送り込んで蓄積された16ビットのデータ(0(LOW)または1(HIGH)で
16個のLEDを点灯、滅灯させる。
74HC595を2個直列接続してマイコンに接続した。
回路図はこんなもの。
![](https://blogimg.goo.ne.jp/user_image/34/af/7c7952ca1208e0fd92471aa78ead565e.png)
シフトレジスタの基板。
![](https://blogimg.goo.ne.jp/user_image/18/af/7b5fe882110941f9411d334951b69979.jpg)
マイコンボードの基板。
シフトレジスタは4本の信号線で制御する。
![](https://blogimg.goo.ne.jp/user_image/00/a4/069dacb0a35511d050bb8eb82448db74.jpg)
パソコン(Arduino IDE)に接続してプログラムをロードしRUNさせた。
![](https://blogimg.goo.ne.jp/user_image/39/b2/9b0b1330e007e50d33f061b8069ea869.jpg)
今回のテストはシフトレジスタへのデータ転送中はLEDを点滅させないので(ラッチレジスタは前の
データを保持・表示している)LEDが流れるように点滅することはない。
16ビットのデーターが送り終えた時点でラッチレジスタをONにして新しいデータでLEDを点灯させる。
![](https://blogimg.goo.ne.jp/user_image/0c/dd/b71a80150f168d62fa1c2566afd597a4.jpg)
テストはうまくいった。
今回のテストはこれから工作しようと思っているバーサライタ時計3の動作には
必須の動作をさせるもので一歩前進かな?と思っている。
そんなテストの様子を動画でご覧ください。
バーサライタ時計3ではRBG三色の発光素子が入ったLED19個を制御してみようと思っている。
制御する発光素子は19x3=57個になる。
そうすると74HC595は7.2個必要になる。
まっ、0.2個は無視すると7個の74HC595で56個のLEDを相手にするわけだから配線も大変になるだろう。
それに回転アームに74HC595を7個乗せるスペースが確保できるかそれも不明だ。
まぁ、できるかどうかわからないけどやるだけやってみよう。
シフトレジスタ(74HC955)1個の8ビット回路は何とかうまくいった。
次はシフトレジスタを2個にして16ビット回路の実験をしてみた。
そして16個のLEDを指定したパターンで点滅させるための実験も行った。
LEDを点滅させるデータはマイコンのメモリに書き込んである。
そのデーターの8ビット(1バイト)を読み込んで下位ビットから1ビットずつ
シフトレジスタに送り込み、1バイトが完了したら次の1バイトを読み込んで
同じように1ビットずつ送り込んでいく。
結果16ビット(2バイト)のデータを送り込んだらラッチレジスタにクロック
パルスを送り込んで蓄積された16ビットのデータ(0(LOW)または1(HIGH)で
16個のLEDを点灯、滅灯させる。
74HC595を2個直列接続してマイコンに接続した。
回路図はこんなもの。
![](https://blogimg.goo.ne.jp/user_image/34/af/7c7952ca1208e0fd92471aa78ead565e.png)
シフトレジスタの基板。
![](https://blogimg.goo.ne.jp/user_image/18/af/7b5fe882110941f9411d334951b69979.jpg)
マイコンボードの基板。
シフトレジスタは4本の信号線で制御する。
![](https://blogimg.goo.ne.jp/user_image/00/a4/069dacb0a35511d050bb8eb82448db74.jpg)
パソコン(Arduino IDE)に接続してプログラムをロードしRUNさせた。
![](https://blogimg.goo.ne.jp/user_image/39/b2/9b0b1330e007e50d33f061b8069ea869.jpg)
今回のテストはシフトレジスタへのデータ転送中はLEDを点滅させないので(ラッチレジスタは前の
データを保持・表示している)LEDが流れるように点滅することはない。
16ビットのデーターが送り終えた時点でラッチレジスタをONにして新しいデータでLEDを点灯させる。
![](https://blogimg.goo.ne.jp/user_image/0c/dd/b71a80150f168d62fa1c2566afd597a4.jpg)
テストはうまくいった。
今回のテストはこれから工作しようと思っているバーサライタ時計3の動作には
必須の動作をさせるもので一歩前進かな?と思っている。
そんなテストの様子を動画でご覧ください。
バーサライタ時計3ではRBG三色の発光素子が入ったLED19個を制御してみようと思っている。
制御する発光素子は19x3=57個になる。
そうすると74HC595は7.2個必要になる。
まっ、0.2個は無視すると7個の74HC595で56個のLEDを相手にするわけだから配線も大変になるだろう。
それに回転アームに74HC595を7個乗せるスペースが確保できるかそれも不明だ。
まぁ、できるかどうかわからないけどやるだけやってみよう。
昔のネオンサインのようです・・・・。
いやいやこれは実験のためのボードで、回すのは回転アーム(プロペラ)です。
これは今までのプロペラを改造する予定です。
ただ、シフトレジスタを6個、取り付けなくてはならず、スペースがちょっと
足りないかもしれませんので悩んでます。
全ビットをシフトさせてからラッチレジスタに転送して表示させる実験をしました。
シフト中の流れる点滅がないのでこの方がいいですね。
動くもの、音が出るもの、光もの・・・こういう工作は面白いですね。
テンキーで例えば8,4,7を打ち込んで、Arduino内で84.7MHz(小数点が厄介なので、847とする)を入れて、中間周波数の10.7MHzを意味する 107を加算すれば、PLLのMC145163(モトローラのPLLのICのN分周)をパラレル入力させるために、シフトレジスタを使えばよくね?
もっともPLL回路で難問はVCOですので、FMトランスミッタやFMラジオの局発ならなんとかしてVCOを組めたとして。
素材としては千石電商に八ヶ岳クラブ PLL FMトランスミッタが売られていましたわ(2024/1/4に目にしてます)。あのキットを単に組み立てたら周波数こそ安定はしますが、基準周波数が取説では間違っていて可聴周波数の2.5kHzになるのでわずかな音が発せられます。
そうですね、シフトレジスタを使えば並列(パラレル)出力の桁数はいくらでも増やせる・・・
とても便利なツールですね。 いろいろ応用できますね。
PLLやVCOも実験してみたいです。 その時は応援をよろしくお願いいたします。