当ブログをご覧いただき、ありがとうございます。
ご注意事項:
記載内容には、十分注意しておりますが、勘違い、記憶違い、理解不足、思い込み等が無いとは限りませんので、申し訳ありませんが、 記載内容の正確性は保障致しません(出来ません)。
従いまして、このブログの内容を参考にする事に起因して生じる、または 生じた、いかなる事態にも、当方は何の責任も取れませんので、 参考にされる場合は、自己責任にてお願い致します。
このブログのC言語に関する説明には、PICで電子工作するのに必要な事柄以外(私のレベルで)は出てきません、出てこないことの方が多いと思いますので、ご了承願います。

7セグメントLEDに、1~9、0を順次点灯させるプログラム。

今回は、7セグメントLED表示器に1~9,0を順次に点灯させるプログラムを作ります。

最初に考えたのは、下のように1から9そして、0を順番に遅延を書きながらデータを書いておく(途中省略してます)というものです、

f:id:higonohimajin:20210319151619p:plain

ですが、これでは、プログラム作りに進歩がありませんので、次のようにプログラムしました。

f:id:higonohimajin:20210319152059p:plain

どうですか?プログラムがだいぶん短くなり、見やすくなりました。

 

前回説明した配列が早速登場しています。

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に焼いて、動作を確かめます。

youtu.be

無事、7セグメントLED表示器に1~9、0を順次点灯させることが出来ました。

 

今回は、ここまでです。

次回から、7セグメントLED表示器を2つ使い、2桁の数字を表示する事を目標にします。