パチパチマイコンを作ろう!(その5)
前回は,入出力ボードの部品配置まで行いました。
今回は,入出力ボードの配線を行っていきます。
CPU ボードと同じようにワイヤラッピングで配線しますが,7 セグ LED は,基板の裏側で配線します。
今回は,信号の流れが単純なので,回路図は描かずにデータシート見ながら直接配線していきました。(そのせいでいろいろとハマってしまいました…。
回路図は面倒くさがらずにちゃんと描いたほうが良いです)
このボードの機能
7 セグ LED で,16 進数を 4 桁まで表示できます。
また,タクトスイッチ 3 つで,3 ビットの入力ができます。(3 つはチョット半端ですが,レイアウト上,3 つまでしか付けられませんでした)
CPU ボードとは I/O ポートで接続されていて,Z80 の入出力命令でデータのやり取りを行います。
7 セグのデータは,CPU から設定します。
そのデータをこのボードでラッチし,時分割で 4 桁分ダイナミック表示します。
これは,CPU のクロック信号を分周して,適当なタイミングを作り,一定の間隔で,表示する LED を高速に切り替えています。
また,CPU からは特定のポート($00~$03)にバイトデータ($00~$0F)を書き込むだけで表示できます。
この時に使用したクロックを分周した信号は,ついでに一定間隔の割り込み信号として,CPU に送ります。
CPU 側は,この信号を利用して,時間計測を行うことができます。
LED は,ダイナミックドライブで光らせているので,ちょっと多めの電流を流します(と言うのは,実際は 4 桁を順番に点滅させていることになるので,通常より暗くなってしまうのです…)。
一つのセグメント当たり 20mA くらい流します。
これを 8 つ光らせると,1 つの 7 セグ合計で 160mA 流れることになります。
1 つの IC でドライブしようとすると,IC の定格オーバーになってしまうんですね…。
すぐには壊れないかもしれませんが,IC の寿命は縮まると思います…多分。
ですので,間にトランジスタを入れて電流を増幅させています。
こうすることで,実際に LED に流す電流よりはるかに少ない出力電流で駆動できるわけですね。
次はソフトウェア
一応,このボードで入出力はできるようになるのですが,どのように入出力させるかは,Z80 のプログラムで制御します。
このままでは,ラッチされているゴミデータがそのまま LED に出力されてしまいますよね。
次回は,このボードを制御する Z80 マシン語コードを,実際にスイッチでパチパチ入力してみたいと思います。