前回7セグメントディスプレイ1桁をの表示を行いました。しかし、実際使う場合、1桁だけということは少ないと思います。そこで今回は複数桁数(3桁)の制御を行います。さて、複数桁を表示する場合、それぞれにIOをつなげる(2桁なら16ピン?)なんてことをするのでしょうか?答えはNoです。さすがにそのように使用するとIOがいくらあっても足りなくなってしまいます。ということで、7セグメントディスプレイで複数桁の対応方法を説明します。
1.今回使用するPICについて
今回使用するPICは「PIC16F1829」です。
2.回路
2.1 電子回路図
2.2 電子回路の写真
2.3 回路説明
2.3.1 今回使用するパーツ
パーツ名 | 使用数 |
---|---|
PIC16F1829 | 1 |
7セグメントディスプレイ(3桁) | 1 |
抵抗 1[kΩ] | 8 |
抵抗 4.7[kΩ] | 3 |
抵抗 10[kΩ] | 3 |
トランジスタ(2SA950) | 3 |
基板 | 1 |
2.3.2 今回使用する7セグメントディスプレイ
今回使用する7セグメントディスプレイはアノードコモンタイプです。PICからローの信号を出力すると対応した発光ダイオード(LED)が点灯します。またアノードコモンタイプは電源に接続する必要があります。
注:アノードコモンとカソードコモンがあり、接続および制御の方法が変わるので注意してください。
2.3.2 PICと7セグメントディスプレイとの接続関係
PICと7セグメントディスプレイは以下のように接続しています。(1桁表示時とは違うピンを使用しています)
PIC | 7セグメントディスプレイ |
---|---|
RA2 | a |
RA0 | b |
RC3 | c |
RC7 | d |
RB7 | e |
RA1 | f |
RC4 | g |
RC6 | dp |
RA5 | 1桁目(トランジスタ) |
RA4 | 2桁目(トランジスタ) |
RC5 | 3桁目(トランジスタ) |
2.3.4 回路説明
7セグメントディスプレイでは発光ダイオード(LED)の制御用の8ピンと、桁数と同じ数だけのアノードコモンのピンが存在します。今回は3桁表示のなので、アノードコモンは3ピン存在します。
7セグメントディスプレイはアノードコモンに電源が供給されると表示されます。1桁目を表示させたい場合は1桁目のアノードコモンに、2桁目を表示させたい場合は2桁目のアノードコモンに電源を供給します。3桁目も同様です。
さて、前回の1桁表示の7セグメントディスプレイの回路との違いは、アノードコモンに対して電源を直接接続するのではなく、トランジスタを経由して接続していることです。なぜ間にトランジスタを入れているのか、それはアノードコモンへの電源供給を制御するためです。PICからトランジスタへ信号を送ると、接続されているアノードコモンに電源が供給され対応した桁部分が点灯します。
ここまででなんとなく気が付いた方もいるかもしれませんが、7セグメントディスプレイの複数桁数表示の方法は1桁ずつ表示を行います。ただし、1桁ずつの表示を高速で切り替え、人間の見た目では全てが点灯しているように見せます。
以下にサンプル動画を掲載します。この動画では切り替え速度を徐々に減らしていき、どのくらいの切り替え時間で全てが表示されているように見えるかがわかります。7セグメントディスプレイに表示されている数字は切り替え時間です。単位はミリ秒で、900ミリ秒から徐々に減らしていき、5ミリ秒で終了します。
動画で確認した通り、5ミリ秒以下にしないと全てが点灯しているように見えませんでした。
3.プログラム
基本的に1桁表示の7セグメントディスプレイのプログラムと同じなので説明はこちらを参考にしてください。ただし、接続しているピンが違っているので、その変更は必要です。
3.1 1桁表示時との違い
1桁表示時のプログラムとの違いは、どの桁に表示させるかの切り替え部分だけです。トランジスタに対してローを出力すると点灯し、ハイで消灯します。なので、表示したい桁に対してロー、その他にはハイを出力するようにします。
// 表示桁指定 if( 対象の桁番号 == 0 ) RA5 = 0; else RA5 = 1; if( 対象の桁番号 == 1 ) RA4 = 0; else RA4 = 1; if( 対象の桁番号 == 2 ) RC5 = 0; else RC5 = 1;
「対象の桁番号」とは表示したい桁の番号です。0が1桁目、1が2桁目、2が3桁目です。
3.2 ソースコード
プログラムの全文を掲載します。
<注意>
本サイトの注意事項を確認してください。
ソースコードや回路図などを使用する場合、上記注意とともに、自己責任でお願いします。
4.動作確認
電源を入れると111から順に222、333、・・・、999と順に表示します。その後、123、456、789と表示します。以上の繰り返しです。
<更新履歴>
新規作成:2015年6月18日
第2版:2016年10月7日:フォーマット変更(内容の変更はなし)