手元にはすでに LCD ディスプレイも調達してあるが、今回は 7 セグメント LED を使った 4 桁カウンタを作ってみる。
7 セグメント LED にはアノードコモンタイプとカソードコモンタイプがあるが、。手持ちに TOSHIBA TLR312 カソードコモン LED があるのでこちらを使うことにした。
7 セグメント 4 桁をダイナミック点灯するためには 7+4 で 11 の出力ポートと、カウント用とリセット用で 2 ポートの入力が必要になるので、電源等を含めると PIC16F84A の 18 ピンすべてを使うことになる。
COUNTER ソースファイル | counter.asm for PIC16F84A |
COUNTER HEX ファイル | counter.hex for PIC16F84A |
今回は電源回路を基板上から省略して DC ジャックを設けることにした。 5V 出力の AC アダプターから電源を供給する。
アノードコモンタイプの 7 セグメント LED を使うときは、トランジスタを 2SA945 などに変更し、プログラムのポート出力を反転する必要がある。 アクチュエータコイルを巻くための特別な仕様はないが、カウント入力に使うスイッチのチャタリングを回避する必要がある。スイッチにはガラス封じのリードスイッチを使い、外部からマグネットにより ON/OFF を行う。このタイプは接点に水銀がコーティングしてあるのでチャタリングがおきにくいことから一昔前の電卓に多用されていた。現在では携帯電話、歩数計、インターホンの一部で使われてはいるものの見かける機会が少なくなってきた。秋葉原ではパーツとして今も販売されている。何よりも手軽に近接スイッチとして使えるのがいい。
表示用の LED は全桁が同時に点灯しているように見えるが、実際には 1 桁ずつ順次点灯している。常に 1 桁分しか点灯していない。不要なゼロを非表示にするプログラムも苦労して実装することができた。 1 桁目はゼロでも表示する。これで電池駆動の時にも省電力ドライブが可能となる。ゼロサプレス表示は次のページで。