アフィリエイト広告
アフィリエイト広告

デジタル時計をつくる (6) / 時刻合わせ回路

前回までに、秒、分、時カウンタと、7 セグメント LED 表示器を、つくってきました。

できてきた時計のようなモノを、時計たらしめるために、今回は時刻合わせの回路を考えます。

時刻合わせ回路の仕様

当初、決めたことは、時分を合わせてセットボタンで 0 秒スタート、ってことでした。そこで、次のような操作で時刻合わせをするようにしたいと思います。

  1. ADJ/SET ボタンを押し、時刻合わせモードにはいる
  2. HOUR ボタン、または MIN ボタンを押すと、時または分の値がカウントアップする
  3. ADJ/SET ボタンで通常モードに戻ると、0 秒スタートする

ブロック図

図 1 時刻合わせ回路 ブロック図

時刻合わせ回路のブロック図です。初期化回路も含まれています。

初期化回路は、電源投入時に各カウンタを初期化します。RESET ボタンの押下でも初期化できます。

時刻合わせのための押ボタンは、ADJ/SET、MIN、HOUR があります。それぞれチャタリング防止回路をとおして、切換、選択回路にはいります。
ADJ/SET ボタンを押すと、切換回路により時刻合わせモードになります。時刻合わせモードでは、分カウンタ、時カウンタへ時刻合わせ用のクロック (2Hz) を入力するように、選択回路で切換えます。秒カウンタは、CLR 入力により停止します。
時刻合わせ後、ADJ/SET ボタンを押下すると、通常モードに戻ります。秒カウンタが 0 秒スタートし、各カウンタのキャリー出力が、上位のカウンタへ入力されるように切り換わります。

これでバッチリ、と思っていたのですが、いまいちうまくないんだなぁ、これが。

どこかのカウンタがキャリーを出している時に、時刻合わせモードに切り換えると、キャリーが失われて桁上がりしてしまいます。30 秒経過後だと分表示が、50 分経過後だと時表示が、ひとつ増えちゃうんですよねぇ。
でまぁ、解決策を考えてはいるんですが、とりあえず時刻合わせはできるし、ユーザーインターフェースが下手くそなのもアマチュア的でいいんじゃね?とゆーことで、今回はこのまま進めましょ。

各部の回路図

初期化回路・切換回路

図 2 初期化回路・切換回路

初期化回路を、RESET ボタンのチャタリング防止回路とともに、インバータでつくりなおしました。
電源投入時、R1、C1 の充電時間だけ RESET パルスが出力されます。押しボタンを押したときも、RESET は HIGH になります。

ADJ/SET ボタンを押すと、JK フリップフロップがトグルし、出力 ADJ が HIGH になります。このとき、秒カウンタへの CLR 信号も HIGH になります。

LED1 は、時刻合わせモード時に点灯します。

選択回路

図 3 選択回路 真理値表 カルノー図

通常モードでは、下位カウンタのキャリーを上位カウンタへ送ります。時刻合わせモードでは、時刻合わせ用のクロックを上位カウンタへ入力します。その選択、切換えを行なう回路です。

図 3 が、選択回路の真理値表とカルノー図、論理式です。

論理式には、ADJ がでてきます。これは切換回路のフリップフロップの Q が使えます。
3 入力 AND ゲートは部品箱にないので、2 入力を 2 段にしましょう。が、そろそろ AND ゲートも在庫が少ない。そこで、AND と OR を NAND に置き換えることにします。

図 4 選択回路

ということで、図 4 の回路となりました。

押しボタンからシュミットインバータまでは、チャタリング防止回路です。

インバータは、カウンタ回路で使っている 74HC04 の空き回路を利用できます。なので、実質 74HC00 1 個でつくることができました。

チャタリング防止

蛇足的ですが、チャタリング防止回路について。
言わずと知れた、押しボタンのチャタリングを防止、いや、消滅させるための回路です。チャタリングは嫌でも起きます。その影響をなくするための回路。押しボタン〜シュミットインバータまでが該当します。

通常、R1、R2 をとおして C1 が充電されています。シュミットインバータの出力は LOW。
押しボタンを押したとき、R1 をとおして C1 が放電するので、チャタリングがあっても、C1 の電圧はゆっくり下がる。で、低しきい値を下回ると、シュミットインバータの出力が HIGH になる。
押しボタンを離すと C1 はゆっくり充電され、高しきい値を超えると出力は LOW になる。

初期化回路の RESET スイッチ周りも同じ回路ですが、抵抗、コンデンサの定数が異なります。
電源が投入されると、C1 はゆっくり充電されます。その間、シュミットインバートの出力が HIGH になり、各フリップフロップのリセット信号となります。高しきい値をこえると出力は LOW になり、リセットは終了します。

なお、R3 (1KΩ) は、シュミットインバータの保護抵抗です。コンデンサが充電されている状態で電源が落ちると、コンデンサの電荷が、シュミットインバータの入力回路をとおして、電源側へ流れ込みます。この電流が既定値を超えると、IC が壊れてしまいますので、電流を制限して保護します。
ダイオードを電源側へ向けてつけた回路も、よくみますね。どちらでも、お好みで。

後記

ちょっとなぁってな部分もありますが、とにかくこれで時刻合わせができるようになりました。デジタル時計、ほぼ完成!って言っていいんじゃね?

最後になっちゃいましたが、次回は、時計の心臓部、基準クロック発振回路をつくりましょう。

タイトルとURLをコピーしました