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

74HC161A版 デジタル時計 / 7セグメントLED 表示器をつくる

前回は、バイナリ表示器の時計をつくってみました。2進数がわかる人には読めるけど、フツーの人には読めない時計でした。

今回は、誰でもわかる 7セグメントLED をつかった時計表示器をつくってみましょう。

7セグメントLED ダイナミック点灯回路

ロジックIC を使った 7セグメントLED のダイナミック点灯は、以前に試作しています。

基本的にこの回路を利用しますが、時計表示ということなので、時分秒の 6桁表示とし、午後表示とか、区切りのコロンとかもつけたいと思います。その他、細かいところで、いろいろと変更などしてます。

クロック発振回路

時計のクロックとは別に、ダイナミック点灯用のクロックをつくります。デジットの切り換えを行なうだけなので、シュミットトリガインバータをつかった発振回路 (過去記事) にしましょう。

図1. クロック発振回路

7セグメントLED の表示周期は 20ms以下。6桁ですので、1桁を 3.3ms以内で切り換える必要があります。したがって、必要な最低のクロック周波数は 300Hzです。

この発振回路の発振周期 T は、

T = C⋅R
  = 0.1 x 10-6 x 10 x 103
  = 1 x 10-3 = 1 [ms]

実測では、発振周期は 1.2ms (840Hz) ほどになりました。表示周期は 7.2ms なので、周波数が多少変動しても表示がチラつくことはないと思います。

6進カウンタ回路

図2. 6進カウンタ回路

4bit 同期カウンタIC 74HC161A をつかった 6進カウンタ回路です。

出力されるのは 0x0〜0x5 のアドレス信号です。これを後述するデコーダに入れて、どの桁の 7セグメントLED を点灯させるかを制御します。
また、デジット表示に合わせた入力信号の選択を行なうマルチプレクサも制御します。

初期化回路

図3. 初期化回路

電源オン時の初期化回路です。

出力は、電源をオンしたとき LOW で、約 2秒後に HIGH になります。
LOW のとき 7セグメントLED の表示が全点灯します。電源オン時の不要な点灯の抑止と、セグメントの点灯テストを兼ねています。

ブランキング信号発生回路

図4. ブランキング信号発生回路

ゴーストを消すためのブランキング信号発生回路です。7セグメントLED の輝度調整も行ないます。

オペアンプ LM358 でクロックを積分し、三角波を生成。それをコンパレータ LM2903で PWM波にしています。
デジット切り換えのタイミングで表示を消灯し、ゴーストを消します。ボリュームでブランキング時間を長くすると、7セグメントLED の輝度が下がります。

積分回路の基準電圧が 2.5Vなので入力電圧 Vin は 2.5V。積分時間 t はクロック周期の半分なので 0.6ms。出力電圧 Vout は、

Vout = Vin / (C3・R7) ⋅ t = 2.5 / (47 x 10-9 x 15 x 103) x 0.6 x 10-3 = 2.1 [V]

実測値では、出力電圧が最大 3.5V、最小 1.8Vで 1.7Vになりました。出力デューティ比は 0〜92%、最小ブランキング幅 0.1ms です。この部分はアナログな回路なので、各定数の調整が必要になるかと思います。

7セグメントLED 表示回路

6桁 7セグメントLED の表示回路です。手持ちの 1桁カソードコモンタイプをつかっています。7セグメントデコーダは TC4511B、デジット切り換えは 3to8 ラインデコーダ 74HC238 です。

図5. 7セグメントLED 表示回路

表示データは BCD です。TC4511B で各セグメントの点灯制御を行なっています。
デジット側は、6進カウンタから出力されたアドレス信号を 74HC238 でデコードして、表示するデジットを決めています。たとえば、アドレスが 0x0 ならば秒の一位、0x3 ならば分の十位が点灯します。デジット電流は最大 120mAですので、2SC1815 (150mA) で十分です。

初期化信号 RESET、ブランキング信号 Blanking は TC4511B の LTBI に、それぞれ入力します。 LT を LOW にすると全セグメントが点灯、BI を LOW にすると消灯します。

ちなみにこの回路、Arduinoなどからの出力で動かすことも可能です。

LED ドライバ回路

図6. LED ドライバ回路

午後表示と区切りコロンのための LED を点灯させる回路です。

午後表示は、時計モジュールからの PM 信号でオンオフします。コロンとともに、ブランキング信号で輝度調整を行なっています。

入力切り換え回路

わかっているつもりなのに、混乱してしまう入力切り換え回路 (;´Д`)
時計モジュールからの BCD データを、アドレス信号にしたがって切り換える、マルチプレクサ回路です。マルチプレクサは 8入力レジスタ付 74HC356 をつかっています。

図7. 入力切り換え回路

左のコネクタは、時計モジュールからくる時刻データの入力です。秒一位、秒十位などのデータはすべて BCD です。マルチプレクサは、U1〜U4 がそれぞれ、BCD の bit0 〜 bit3 の切り換えを行ないます。

アドレス信号はデジット表示切り換えと同じですので、たとえばアドレスが 0x0 ならば秒一位のデータ (SEC00〜SEC03) を、アドレスが 0x3 ならば分十位のデータ (MIN10〜MIN12) を出力します。出力された BCD データは 7セグメントLED デコーダ TC4511B へ送られます。
下にある NOT (74HC00) は、時十位が 0 のとき BCD の bit2、bit3 を 1 にする (0b1100) ことで、ゼロサプレスしています。TC4511B は、入力が 0xA 以上のときブランクになることを利用した動作です。分、秒の表示はゼロサプレスしていません。

ブレッドボード

完成した 7セグメントLED 表示時計です。
こつも A基板に載りそうだなぁ、と思ったんですけど、たぶんつくらないと思います。どうせなら汎用性高くしてやるか、どうか。

図8. 7セグメントLED 表示器

一番上が 7セグメントLED 表示部、時分秒の 6桁表示です。左の LEDは午後を表示しています。
次が、デジット制御のトランジスタとデコーダ 74HC238、7セグメントデコーダ TC4511B。

その下がブランキング信号発生回路のオペアンプ LM358 とコンパレータ LM2903。発振回路のインバータ 74HC14、6進カウンタの 74HC161A と 74HC00。右は 5V電源回路。

さらに、入力切り換えのマルチプレクサ 74HC356 が並びます。

一番下のブレッドボードは入力コネクタへのパッチにつかっています。こういう結線は混乱しやすいので、もっとワイヤに余裕をもたせないといけませんねぇ (;´Д`)

製作後記

妻が「寝室に、夜でも見える時計が欲しい」と申します。が、それ、実用性を求めるなら買ったほうがいいんじゃね? この 7セグメントLED 時計をつくるなら、ロジックIC とかを格好良く見せるデザインがよろしいかと。

さて、見せるデザインなぁ。デザインのセンスなんて爪の先ほどもない俺ですが、なんか楽しい表示器をつくってみたくなりました。ググってみると、いろんな時計がでてきますし、ねぇ。

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