7セグメントLEDに、1~9、0を順次点灯させるプログラム。
今回は、7セグメントLED表示器に1~9,0を順次に点灯させるプログラムを作ります。
最初に考えたのは、下のように1から9そして、0を順番に遅延を書きながらデータを書いておく(途中省略してます)というものです、
ですが、これでは、プログラム作りに進歩がありませんので、次のようにプログラムしました。
どうですか?プログラムがだいぶん短くなり、見やすくなりました。
前回説明した配列が早速登場しています。
21行からメイン関数が始まっていて、23~27行が初期値設定です。
28行がローカル変数宣言。
29行は配列の宣言と初期値の代入、0x80が1を表示するデータ、0xDCが2を表示するデータ、・・・・、0xF6が9を表示するデータ、0xEEが0を表示するデータです。
31行のwhile文で条件式に(1)の条件を指定することにより、33行から37行までを永遠に繰り返します。
33行のfor文で変数countの初期値を0にし、count(この時の内容は0)と10が比較され、成立するので、{}内の文が実行されます。
35行は、PORTBにdata[count(この時の内容は0)]の内容(0x82)が代入されます、すると、それがPORTBに出力され、7セグメントLED表示器に1が表示されます。
36行は、2000ミリ秒(2秒)間、ウェイト(待機、何もしない)します。
37行は、for文の終わりですから、count++が実行されcountの内容は1となり、for文の行に戻ります。
33行のfor文に戻ると、count(この時の内容は1)と10が比較され、成立するので、{}内の文が実行されます。
これが、繰り返され、7セグメントLED表示器に0が表示されると、countの内容は9となっています、そして、37行でcount++が実行されcountの内容は10となり、for文の行に戻ります。
33行のfor文に戻ると、count(この時の内容は10)と10が比較され、成立しないので、38行に行きますが、while文の終わりですから、while文の最初31行に戻り、while文で(1)の条件が指定されているので、永遠に繰り返されます。
ビルドは成功しました、PICに焼いて、動作を確かめます。
無事、7セグメントLED表示器に1~9、0を順次点灯させることが出来ました。
今回は、ここまでです。
次回から、7セグメントLED表示器を2つ使い、2桁の数字を表示する事を目標にします。