7セグLEDの数字を動かしてみよう




 今回は7セグLEDの表示を動かしてみます。数字が0、1、2……と増えていくカウンターを作ります。

 そうした処理を実現したいときはマイクロコントローラ(マイコン)の出番です。マイコン上で走るソフトウエアによって、自由にコントロールできます。しかし、今回はソフトウエアの力を借りず、ハードウエアのみで作ってみましょう。デジタル回路の黎明期の雰囲気を少しだけ味わってみることが目的です。

 汎用ロジックICと呼ばれるチップが今回の主役です。74から始まる型番のチップを5つ使います。そのほかに、555も1つ使用します。

 コンピュータ・ヒストリー・ミュージアムの資料によると、74シリーズの最初の製品がテキサス・インスツルメンツ(TI)から発売されたのは1966年のことです。その後74シリーズは汎用ロジックICのデファクトスタンダードとなり、ラインアップは年々拡大されました。Wikipediaの汎用ロジックICの項目には240種類の74シリーズICが記載されています。

 そのなかから必要な機能を持つICを選んで組み合わせることで、さまざまなデジタル回路を構築できます。

74シリーズのICは、同じ型番のものが複数のメーカーから提供されました。写真は今回使用しなかったICですが、上は東芝、下は日立(現ルネサス・テクノロジ)の製品で、互換性があります。購入時には、型番さえ一致していればメーカー名は気にしなくても大丈夫です
【回路図】基本となる回路です。ちょっと複雑に見えるかもしれません。まずは74HC192と74HC4511という2つのICに注目してください。このICがカウンタと7セグLEDの制御を担当します

 回路を出力側から見ていきましょう。

 7セグLEDはアバゴ・テクノロジーのHDSP-H213という製品で、カソードコモンタイプです。赤色で1桁のものならば、他の製品も使えます(ピン配置は異なるかもしれません)。アノードコモンのものは、そのままでは使えません。

 前回、7セグLEDは抵抗を通して電池につなぎました。今回は電池ではなく、74HC4511というICにつなぎます。

 74HC4511は7セグメント・デコーダと呼ばれ、2進数の入力を7セグメントの表示に変換するのが仕事です。たとえば、2進数の11が入力されたら、7セグLED上の5つのLEDを光らせて数字の“3”を表示します。

 いま簡単に「2進数の11が入力されたら」と書きましたが、それはどうやって行なうのでしょうか?

 74HC4511は4桁の2進数を受け付けます。4桁を4bitと言い換えても同じ意味ですね。4bitはそのまま4本の入力ピンに対応付けられていて、それぞれのピンの電圧で0か1かを判断します。電圧が電源電圧(ここでは3V)と同じならば1、GND(0V)と同じならば0です。この2つの状態をHIとLOWとも言います。さらに略してH、Lと記述することもあります。

 4本のピンがすべてLならば、0000が入力されていることになります。つまり0です。7セグLEDには0が表示されます。4本のピンがHLLHのときは1001、つまり9です。7セグLEDには9が表示されます。では、HHHHのときはどうなるでしょう? 2進数の1111は15ですから、1桁では表示できません。

 74HC4511が扱う2進数はBCDと呼ばれる形式で、4bitで0から9までの数字を表し、10から15までは無視します。HHHHという組み合わせは存在しないものとして処理され、LEDには何も表示されません。

アバゴ・テクノロジーの7セグLED、「HDSP-H213」です。ピン番号1のところに青いマジックペンで丸をつけてあります。データシートは次のURLから入手できます。ピン配置を確認したいときに参照してください。http://www.avagotech.co.jp/docs/5989-2795EN(PDF)

 7セグLEDに表示する数字を4bitの2進数で表していること、2進数は電圧の高低(H/L)で表現すること、BCDという2進数は0~9の数を扱い10~15は無視すること、この3つがここまでのポイントです。

 さて、数字の表示は74HC4511で可能になりました。次に重要なのが「カウント」をする部分です。74HC192の担当です。

 74HC192は十進カウンタと呼ばれるICで、BCDで4bitの数字を1つ記憶していて、外部からの入力に応じてその数を1つずつ増やします(逆に減らすこともできます)。N=N+1という計算をする素子と見てもいいでしょう。

 BCD形式で数を表現するので、7、8、9と数が増えていったら、次は0に戻ります。人間にとって自然な「9の次は0」という表現のためにBCDは便利です。

 さきほど「外部からの入力に応じて数を1つずつ増やす」と書きましたが、これはどういう仕組みになっているのでしょうか。

 回路図の74HC192を見ると、CUPという名前のついたピンがあります。これはカウントアップの略です。このピンにかかる電圧がLからHに切り替わるごとに、1を加える処理が実行されます。上記の回路では、この機能をタクトスイッチと抵抗の組み合わせで実現しています(赤い部分)。スイッチを押すと、CUPの端子がLからHになってカウンタが1つ進みます。スイッチを離すと、HからLに戻ります。このときはなにも起こりません。

タクトスイッチはとても愛らしいパーツですが、どの向きに取り付ければいいかわからなくなりがちな部品でもあります。4本あるピンのうち、間隔の狭い2本が押したときに繋がります。ただし、製品によっては外見から判断するのは難しいかもしれません。はじめて使うときはテスターを当てて確認したほうがいいでしょう。また、足が曲がっていてそのままではブレッドボードに刺さらないことがあります。その場合は、ラジオペンチでまっすぐに伸ばしてから使います
回路ができあがりました。ICの型番が読み取りにくいですね。左が74HC192、右が74HC4511です。スイッチ回路(赤い部分)は別のブレッドボードで組み、あとで接続します。連結して使うことを考えて、小さいブレッドボードを使った結果、窮屈な仕上がりになってしまいました
スイッチと電池を接続しました。まず0が表示され、その後、スイッチを押すたびに表示される数字が増えていきます。9の次は0に戻ります。1桁のカウンタが完成しました。でも、この回路には1つ問題があります

 電源は乾電池2本を使用してください。配線の密度が高めなので、作業の順序を決めて確実に接続していってください。我々は、込み入っている7セグLEDの周辺から始めて、スイッチ回路へ向かって繋いでいきました。もちろん、順序は逆でも構いません。

 電源を入れるとまず0が表示され、タクトスイッチを押すたびに数字が1つ増えるはずです。しかし何度か試していると、1回押しただけで、数字がいくつも進んでしまうことがあるでしょう。

 これはタクトスイッチのバウンシングが原因です。機械式のスイッチは切り替わる瞬間に必ず接点がバウンドして細かくON/OFFを繰り返します。これが回路に伝わってしまうと、何度もスイッチが押されたと判断されて、誤動作につながります。今回の回路では、1回押しただけで、数字がいくつも進んでしまうという現象になって現れます。

 なお、似た現象にチャタリングがあります。古くからのPCユーザーは、「キーボードのチャタリング」という言葉を聞いたことがあるかもしれません。キーを1回叩いただけのはずなのに、数個分の文字が入力されてしまう状況を指します。

 スイッチメーカーのオムロンは、バウンシングとチャタリングを区別していて、FAQのページには「チャタリングは外部からの衝撃・振動により起こり、バウンシングはスイッチのON/OFFにより必ず起こる現象です」とあります。我々はその定義にならってバウンシングと表記していますが、一般的には区別せずチャタリングと総称することも多いようです。

 さて、このバウンシングを取り除く方法ですが、ネットを検索すると、いろいろな手法が存在します。今回は汎用ロジックICを使う作例ですので、ここでも74シリーズを使用してみましょう。

【回路図】部品がいくつか加わっただけでなく、SW1とR8の位置が入れ替わっている点に注意してください。74HC14でH/Lが反転するので、この回路では、スイッチを押したときにLとなるように変更しています
TIの74HC14を使いました。右端のコンデンサは大きなフィルムコンデンサになっていますが、これはたまたま手元にあったものを使用したためです。新たに用意するときは、積層セラミックコンデンサを選択してください
カウンタ回路に接続した状態です。電源ラインを忘れないようにしてください。少し大がかりな回路になってしまいましたが、これでタクトスイッチのオンオフを正確に検出できるようになりました

 74HC14はシュミット・トリガと呼ばれる回路を6つ内蔵しており、デジタル回路の作例によく登場します。74シリーズの14番目という型番の若さからも、汎用性が高いパーツであることが読み取れます。

 シュミット・トリガ回路はHとLの識別を明確にしたいときに使われ、コンデンサと組み合わせることで、バウンシングを確実に取り除いてくれます。

新品のICの足はなぜか少し外に広がっています。横から見るとハの字になっていて、そのままではブレッドボードに刺さりません。根本を曲げて平行にする必要があります。写真のようにつまんで机の表面に押し当て、折るように力をいれることで修正できるのですが、ちょっと慣れが必要です
ICがたくさんあるときや、ピン数が多いICを使うときは、もっとラクな方法が欲しくなるかもしれません。サンハヤトの「ICピンそろった」を使うと、面白いようにピンがまっすぐになります

 続いて、自動的に数字が増えていく回路に改造してみましょう。タクトスイッチのかわりに、以前作った555回路を流用して信号を生成し、74HC192に入力します。

【回路図】第15回「タイマーICを使ってみよう」で作ったLED点滅回路と同じ構成です。抵抗R2、可変抵抗VR1、コンデンサC1の値は変更しました。1秒間隔のパルスを作れる組み合わせになっているはずです。C1をもっと小さくして、高速にカウントアップする回路にしてみても面白いでしょう
スイッチの代わりに555を使った発振回路をつなぐことで、数字が自動的に増えていくようになりました

 デジタル回路の面白さの1つは、このように単純な方法で機能を足していけるところにあると思います。

 さらに、追加してみましょう。7セグ・カウンタ回路をもう1つ作り、2桁のカウンタにしてみます。74HC192は数珠繋ぎにすることで複数桁の表示装置が作れるようになっています。

【回路図】2桁目(十の位)を表示する回路です。最初に作ったものと同じですが、74HC192のカウントアップ入力の接続先だけが違います。スイッチや555をつなぐ代わりに、1桁目の74HC192のTCUピンにつなぎます
2桁のカウンタができました。2つのブレッドボードを比較すると、配線が一部異なりますが、これは2度目のほうが慣れのおかげでキレイに仕上がったためで、機能的には同じです。この回路で0から99までをカウントできます。99の次は0に戻ります

 555回路の可変抵抗を調整して、正確に1秒を刻むようにすれば、ストップウオッチとして使えるかもしれません。もちろん、市販のデジタル時計並みの安定した正確さを実現するのは難しいと思われます。

 回路図を見ると、74HC192にはTCUというピンがあります。これはTerminal Count Upの略で、カウンタが9から0に変わるとき、ここにパルスが生じます。このパルスを1つ上の桁のカウンタに入れてやることで、十の位を表現しています。

 ちなみに、TCUという記号はTIのデータシートのもので、意味がわかりにくいと思います。ルネサスのデータシートでは同じ端子がCarryと表記されています。carryを普通の辞書で調べると「繰り上げる」という意味がありました。このほうが自然ですね。

 もう少しよくルネサスのデータシートを見てみると、Carryの隣に、Borrowというピンがあることに気付くでしょう。borrowは「借りる」ですが、引き算をするときに1桁上から借りてくるときもborrowというようです。このピンは複数桁のカウントダウン回路を作るときに使います。限られたピン数でいろいろな使い方ができる、よく考えられたICです。カウントダウン回路への改造は簡単ですから、皆さん研究してみてください。

【動画】動作中にジャンプワイアを抜いて、74HC192のカウントアップ入力ピンに何も繋がっていない状態にしてみました。すると、数字がチラチラとランダムに変化しました。ICの入力ピンが宙に浮いた状態になると、このように動作が不安定になります。ドラマ「24」の冒頭のシーンのようで面白いのですが、ICが故障に至る可能性があることを覚えておいてください

今回使用した部品をまとめました(555回路で使う部品は含まれていません)。もしかすると74HC192を扱っているお店がなかなか見つからないかもしれません。我々が調べた範囲では、国内で販売中なのは共立電子と若松通商の2社でした。

番号 品名 型番/仕様 数量 参考単価 購入店
IC1 7セグ・デコーダ 74HC4511 2 99 共立電子産業
IC2 BCDカウンタ 74HC192 2 82 共立電子産業
IC3 シュミット・トリガ 74HC14 1 47 共立電子産業
LED 7セグLED(赤) HDSP-H213 2 - 購入店不明(手持ちの部品を使用)
SW1 タクトスイッチ - 1 7 秋月電子通商
C1 積層セラミックコンデンサ 0.1μF 1 21 共立電子産業
R1-7 カーボン抵抗器 330Ω 14 1 秋月電子通商
R8 カーボン抵抗器 10KΩ 1 1 秋月電子通商
R9 カーボン抵抗器 100Ω 1 1 秋月電子通商

 今回使用した74シリーズのICについては、ルネサス・テクノロジの汎用ロジックIC「HD74HCシリーズ」のページに日本語のデータシートが用意されています。

□関連記事
【11月20日】【武蔵野】7セグメントLEDを使ってみよう
http://pc.watch.impress.co.jp/docs/2008/1120/musashino019.htm

バックナンバー

(2008年11月27日)


船田戦闘機、スタパ齋藤、上杉季明によるユニット。電子工作からバンド演奏までさまざまな活動を行なうが、各活動に共通するテーマは“電気が通ること”としている。電子部品・電子回路の玄人ではなく、それらに対して強い興味を抱いている。ブレッドボーダーズは、そんな立ち位置から電子部品・電子回路に触れていくプロジェクトである。


【PC Watchホームページ】


PC Watch編集部 pc-watch-info@impress.co.jp ご質問に対して、個別にご回答はいたしません

Copyright (c) 2008 Impress Watch Corporation, an Impress Group company. All rights reserved.