- ベストアンサー
2進→10進表示
2進データを4倍してLED表示する回路を考えています。 2進の4倍はシフトレジスタを使えばいいというところまでは、分かるのですが、4倍したデータをBCD変換して10進表示する方法が分かりません。 ちなみに4倍しない普通の2進データをBCD変換する方法は分かります。 2進データを4倍した場合はどのようにして10進表示すればいいのでしょうか?
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
>> 今のところ中途半端なのですが5bit構成、74HCシリーズなどのICでの構成を << いまどき多桁の NB→BCD 回路を SSI で構成させる学校は今どき考えられませんので、工作の相談だと解釈しました。 紹介する回路は、代表的な二進計数IC 161 の修得に使ったものです。加減算ICなどが無いので高級感は無いですが安くできます。 1.使用部品 Binary counter HC161 2個 BCD counter HC160 3個 2入力NORゲート おまかせ 1個 インバータ HC04など 2個 7セグドライバ HC4511など 3個 7セグLED 3桁 クロック源 556タイマーなど 1式 またはゲートの余りで作成。 2.回路構成 HC161──HC161──inv─ XC ↑ ↑ HC04 HC04 ↑ ↑ d0,d1,d2,d3 d4,d5,d6,d7 自然二進データの入力 オールゼロ(グランド)をD入力へ ↓ ↓ ↓ HC160─HC160─HC160 ↓ ↓ ↓ 4511 4511 4511 ↓ ↓ ↓ 7セグ 7セグ 7セグ 1の桁 十の桁 百の桁 3.配線リスト 00 全てのICと7セグ表示器の電源とグランドを配線。 01 全ての161と160の#2ピンとNORゲート入力1個を一筆書き状に配線。(クロック配線) 02 全ての161と160の#1,7をVccへ固定。 03 下位の161(左側)の#10をVccに固定。 04 最下位の160(左端)の#10をVccに固定。 05 下位161の#15を上位161の#10へ。 06 最下位160の#15を2段目160の#10へ。 07 2段目160の#15を最上位160の#10へ。 08 上位161の#15をインバータ入力へ。 09 そのインバータ出力(上図XC)を全ての161と160の#9と、配線01のNORゲートの入力へ。 10 自然二進入力データをインバータの人力へ。 (この回路は8本まで対応できますから 5bit4倍は守備範囲です。使わない入力bitは インバータ入力の所でグランドに落とすとかプルダウン抵抗とかでゼロを入れてください。最初に全入力を抵抗プルダウンしておけば、あとでいろいろつなぎ変えて試すときに楽です。) 11 そのインバータの出力を161のData入力へ。 (ビットの順番の混乱に注意。回路図は左から右へ信号を流すのが規約だからカウンタの下位桁は左側に書かれる。対して現物の7セグの並べは人間に見やすいように左から百,十,1,の桁。) 12 全ての160のData入力をグランドに落とす。(論理ゼロ。) 13 全ての160のQ出力を7セグドライバの入力へ。 14 全ての7セグドライバの#3,4をVccへ。 15 配線09のNORゲートの出力を、となりのNORゲートの入力両方へ(インバータとして使います。) 16 そのNORゲート出力を、全ての7セグドライバの#5へ。 17 全ての7セグドライバ出力を電流設定抵抗経由で7セグ表示器へ。 18 なお、161のQ出力はまったく使いませんので。 19 タイマー555(または余ったゲートで)で数10kHzほどの発振回路を組んで、その出力を配線01の一筆書き配線の端に接続。 20 使わなかったIC入力をすべてグランドへ。 4.動作 161の帰還(XC)によって自律的に反復する回路です。Natural Binary → BCD への変換原理は一目瞭然すぎて説明いらないですよね。 「1の補数」とかの勉強を兼ねて追ってみてください。 この回路の弱点; 入力を161に取り込む所が非同期ですが、バイナリ入力はゆっくりした変化だと思いますので。 なお、 クロックを全く使わない純組み合わせ回路はかなりの大規模です。 7セグは眼で見るのだから目に分からないほど素早ければ間欠処理でも十分だろう ということです。 (仕事でなら設計ツールまかせですね、頭でシコシコ考える時代ではなくなってます。)
その他の回答 (6)
- Teleskope
- ベストアンサー率61% (302/489)
訂正: 556タイマー → 555タイマー 556は2個入りでした、1個入りの555で十分です。お買いの際はぜひ CMOS タイプを。バイポーラタイプと値段同じで CMOS の方が高速です。 下記の無安定回路が発振回路です。 http://akizukidenshi.com/pdf/ns/LMC555.pdf ゲートの余りで作る場合は http://www2.denshi.numazu-ct.ac.jp/mirs/m3db/kaihatu/document/vpro/card/cimg104_4.gif などです。この回路の場合は出力をインバータ1個通してから使ってください。図中の 102 は 1000pF です。 変な波形になってないかオシロスコープで確認が欲しいです。 新しく IC を買う場合は、TTL は避けて すべて CMOS で揃えることをお奨めします。
- mac_res
- ベストアンサー率36% (568/1571)
> そうすると2^2、2^3の場合はどうしたらいいんでしょうか? 同然、2^2->2^4,2^3->2^5となるのですが、larsson7さんが言っている「二進数」は、実はBCDが並んだものなので、桁あがり出来なくなってしまうのです。 純2進数をBCDに変換して十進数表示するのは、そんなに簡単ではありません。 PICなどマイコンが使えるなら比較的簡単です。 3桁LEDに表示するなら、まず、4倍したデーターから、100を負にならない回数引いてその回数を100の位とし、あまりから10を負にならない回数引いてその回数を10の位とし、あまりを1の位にします。 74HCで組む方法もありますが、たぶん「宿題」でしょうから、自分で解きましょう。 ヒントとしてPICでやった方法をそのままADDERとカウンタを使ってやるというのも答えです。
お礼
>ヒントとしてPICでやった方法をそのままADDERとカウンタを使ってやるというのも答えです。 ありがとうございます。その方法で回路を考えてみたいと思います。
- Teleskope
- ベストアンサー率61% (302/489)
(1)「もとの2進データ」というのは何ビット構成なのですか? (2)それは全部0から全部1まで変化するんですか? (3)PICやAVRのようなマイコンなどを使える環境ですか?それとも74HC…などの昔からある単機能ICに限るのですか? 宿題じゃないですよね?
お礼
>(1)「もとの2進データ」というのは何ビット構成なのですか? 今のところ、中途半端なのですが5bit構成を考えています。 >(2)それは全部0から全部1まで変化するんですか? 2進カウンタの動作ということでしょうか? それなら全部0から全部1まで変化します。 >(3)PICやAVRのようなマイコンなどを使える環境ですか?それとも74HC…などの昔からある単機能ICに限るのですか? マイコンについては知識がないので、74HCシリーズなどのICでの構成を考えています。
- JO_O
- ベストアンサー率34% (13/38)
3桁BCDを4倍した場合「キャリ」が出る可能性がありますが、 これはどのように処理するつもりですか?
お礼
>3桁BCDを4倍した場合「キャリ」が出る可能性がありますが、これはどのように処理するつもりですか? 桁上げの処理についてどうしようか悩んでいます。 BCDに変換する前に4倍した方がいいのか、それともBCDに変換した後に4倍した方がいいのか… どちらにしても桁上げ処理は必要になってくると思いますが。
- mac_res
- ベストアンサー率36% (568/1571)
> 2進の4倍はシフトレジスタを使えばいい LED表示にするならデーターはパラレルですよね。 二進パラレルデータを4倍するのにシフトレジスタはいりません。2^0->2^2, 2^1->2^3と線を二本ずらすだけです。 というわけで、 > ちなみに4倍しない普通の2進データをBCD変換する方法は分かります。 ダウト!です。 あなたが理解している方法を書いてみてください。
お礼
>LED表示にするならデーターはパラレルですよね。 そうですね。パラレルです。 >二進パラレルデータを4倍するのにシフトレジスタはいりません。2^0->2^2, 2^1->2^3と線を二本ずらすだけです。 確かに2^0、2^1の場合は言われた方法でできそうですね。そうすると2^2、2^3の場合はどうしたらいいんでしょうか? >4倍しない普通の2進データをBCD変換する方法 すいません、間違えました。訂正させて頂きます。2進データをBCD変換する方法ではなく、BCDでカウントした値をデコーダを通して、LEDに10進表示までの流れが分かると言うことでした。2進データをBCD変換する方法も分かっていませんでした。 もう少し詳しく質問の内容を書きます。4倍した2進データをLEDで3桁の10進表示をしたいのですが、その場合、4倍した2進データBCDに変換しなければならないと思っています。ヒントだけでもいいので、教えて頂けないでしょうか。
- OsieteG00
- ベストアンサー率35% (777/2173)
>普通の2進データをBCD変換する方法 と同じでよいです。シフト後のデータを元データとすればよいです。
お礼
詳しい説明本当にありがとうございます。 知識不足の部分もあるので、勉強しながら進めてみたいと思います。