カウンタですから、数を数えるのが働きです。ふつー、数を数えるときは 10進数で数えます。
ってことで、10進カウンタをつくってみることにしましょう。
で、こいつはいわゆる BCD (2進化 10進) といいます。BCD は、10進数の 0〜9 を 2進数の 0b0000〜0b1001 で表したもの。10進数を扱うのに、とっても便利な方法です。
JKフリップフロップを使った 10進同期カウンタ
10進同期カウンタは、4ビットなので、JKフリップフロップを 4個使います。入力ゲート回路が異なるだけで、考え方はこれまでと同様です。
図1 が真理値表。
10進ですので、0b1001 の次が 0b0000 に戻ります。0b1010 以上は、すべて don’t care とします。
図2、図3 がカルノー図。
これもこれまでと同様につくっていけばよいです。
論理式は、
となりました。
論理式をもとに、図4 の回路を作りました。
ビット 1 にも入力ゲートが追加されましたが、16進同期カウンタと似た感じの回路です。
7セグメントLED で表示させる
さて、せっかく 10進同期カウンタをつくったので、7セグメントLED で表示させてみましょう。
使った IC は、BCD – 7セグメントドライバ TC4511 です。74HC4511 とほぼ同等なのですが、TC4511 は、電源電圧が最大 18V (動作範囲) です。
この IC、20mA の電流出力がとれます。なので、直接 7セグメントLED を駆動できる。でも、ダイナミック点灯だと要注意、かな。
/BI は、全セグメントを消灯します。5V につないでおけばいいんですけど、リセットボタン押下時に消灯するようにしておきました。
/LT は、全セグメント点灯なので、使いません。5V につないでおきます。
LE は、Low にしたときの表示状態を保持する働きをします。ダイナミック点灯時のブロッキングなどに使うようですが、今回は GND に落としておきます。
図 6 はブレッドボードのようすです。
左上から、クロック発振部 74HC04、リセットボタン、JKフリップフロップ CD4027B x2、AND ゲート 74HC08。右上のヒートシンクは 5V 電源の 7805。
下側のブレッドボードに 7セグメントLED ドライバ TC4511 と 7セグメントLED です。
中央下に、2 進数を表示する LED があります。
後記
カウントアップが数字で表示されると、ああこれ、たしかにカウンタなんだ、って、あらためて感じてたりする、おいらです (^_^;)
で、1秒毎に点滅する LED と数字をみていたら、時計とか …、って思った。ので、ちょっとそれらしいものを考えてみましょうか。