目次:
このディスプレイは、マイクロコントローラのADC機能を使用する場合に非常に便利です。
ディスプレイを制御するには2本のピンしか必要ありません(ラッチも制御したい場合は3本)。 2つの7セグメントでそれは16進数として0xFFまで表示することができます。これは8ビットの範囲全体で、小さいuCに最もよく使われる可変幅です。
最終的なアプリケーションにはディスプレイがないので、私はそれを構築しました、そして私はそれを終える前に何が起こっているのか知りたいと思いました。
2つの74HC959シフトレジスタ、2つの7セグメントディスプレイ、および14(16)の抵抗器が必要です。ドットを使用する場合は16が必要です。これはソフトウェアには実装されていません。しかし、ドットを使用すると、表示可能な値は10ビットまたは0から1027に拡張されます。これを理解するためにあなたに任せます。
用品:
ステップ1:回路図
7つのセグメントディスプレイを接続するのに2つの74HC595シフトレジスタを使用します。あなたがコモンアノードまたはコモンカソード7セグメントを使用するかどうかあなたは回路を調整しなければなりません。私は一般的な陰極を使いました。これは、各セグメントが1つの緑色のLEDで、すべてのLEDのカソードが互いに接続されていることを意味します。 (7セグ表示のピン3と8)
シフトレジスタは次のように機能します。
シフト入力にパルスを印加するたびに、シリアル入力ピンの現在の状態は74HC595のメモリ内でシフトされます。ラッチ入力にパルスが到着するたびに、内部メモリの状態が出力の駆動に使用されます。
8シフトサイクル後、最初の入力はピン9で再びシフトアウトされ、別の74HC 595への入力として使用できます。これはデイジーチェーンとも呼ばれます。
74HC595は合計で最大70mAを駆動することができるので、各LEDセグメントを流れる電流が9mA以下になるように抵抗を調整する必要があります。これは5Vおよび使用されるディスプレイでは約470Ωです。
ステップ2:シフトレジスタ75HC595
写真を見ると、どのピンを接続する必要があるかがわかります。
ピンを上から見た場合、IC上のマークから反時計回りにカウントされます。
ピン1 - 7とピン15を7セグメントのピンに接続します。
ピン8と13はグランドに接続する必要があります(GNDまたはバッテリの負端子)
ピン9は次のICのピン14に接続されています。
ピン10とピン16は電源電圧(VCCまたはバッテリのプラス端子)に接続する必要があります。
ピン11、12、および14はマイクロコントローラによって駆動されるインタフェースで、外部インタフェース用にこれらを3ピン・ピンヘッダに接続します。
ステップ3:ディスプレイを組み立てる
カスタム回路基板をエッチングすることは可能だったでしょうが、細い銅線を使って全体をブレッドボード上に構築することにしました。
この銅線はコーティングされていますが、コーティングは少しの溶融錫で焼失する可能性があります。接続するのはとても簡単です。片端を錫メッキし、それをピンにはんだ付けしてからもう一方のピンに引き伸ばして、はんだ付けしたい場所に絶縁材を焼き付けます。それからそれをピンにはんだ付けして、残りを切ります。職人によるこのような30Wのはんだごては仕事には十分以上です。
私は小さい1206個のSMD抵抗器を使いました、なぜならこれらは7セグメントディスプレイの下にうまく収まるからです。
しかし、結局のところ、あなたは自分でボードを作る必要があります、そしてもちろんあなたも好きな抵抗を取ることができます。
ステップ4:セグメントの順序を見つける
最後に、意味のあるものを表示するための関数を書く必要があります。
主な問題は、正しいセグメント制御シーケンスを見つけることです。最初に、シフトレジスタ全体に1つの1をプッシュしてみます。
シリアル入力をハイにしてシフトを1回パルスしてください。ラッチを1回パルスして、どのセグメントが点灯するかを確認します。
次にシフト&ラッチボタンをもう一度押すと、次のセグメントが点灯します。
最後に、すべてのセグメントの順序が決まったら、それらを2進数に変換できます。
ステップ5:コードを書く
私は自分のAVRマイクロコントローラでディスプレイを使いたかった。だから私はどんなプロジェクトにも含めることができる*.hファイルを書きました。ボードを別の方法で配線した場合は、segmentcontrol 配列を調整する必要があります。
これを使用するには、ファイルdebug.hのピン定義(最初の12行)を調整する必要があります。
メインアプリケーションでは、以下の行を追加する必要があります。
#include "debug.h"
initdebug(); //これはdebug.hで指定された出力ポートを初期化します
それからデバッグ機能を呼び出すだけで、8ビット変数を表示できます。変数がcounterと呼ばれるとすると、counterの現在の値は次のように表示されます。
デバッグ(カウンター);
ヒント:
- 値を読み取るための時間を確保するために、debug()の呼び出し後に遅延時間を追加してください。
- シフトとラッチを一緒に接続したときは、2つのポートを同じピンに定義するだけです。シフトがトリガされるたびに、現在の状態もラッチアウトされます。つまり、シフトレジスタがロードされている間はディスプレイが点滅します。あなたがディスプレイをそのままにしておく時間と比較してこれを速くするならば、それは別名です。
- 16ビット値を表示するには、それを256で割って結果を表示するか、または上位バイトと下位バイトを分離して、間に小さなブレーキを置いて次々に表示します。
ステップ6:テストする
ディスプレイをテストするためには、このインストラクターで公開したattiny2313ブレッドボードアダプターを使うのが理想的です。www.instructables.com/id/Make-a-breadboard-adapter-for-your-AVR-microcontroller
埋め込みビデオのプログラムは、0から0xFFまでを数え、また戻ってきます。
ビデオ: