PIC時計では4つの7セグLEDをダイナミック点灯で制御しています。
今回、ダイナミック点灯を初めてやったので、最初のうちは1つ前の桁の影響を受けてきれいに表示できませんでした。
例えば、15を表示すると、1に5がうっすらと重なって表示されて9っぽくなってしまいます。5には(当初は2桁でテストしていたため)1が重なってこちらも9っぽくなってしまいます。
表示の時間のせいかと思って時間をいろいろ変えましたが、直りませんでした。
その後、「一回表示を消したら・・・」と全部を消灯して、その後に数字を表示するようにしたらきれいに表示するようになりました。
ソースコードでは、以下の部分が1桁分の処理(分の10の桁)です。
selectDigit(99); outputDigit(10); outputDP(0); selectDigit(selector++); outputDigit(min / 10); outputDP(0); delay(1);
処理内容としては、
- どの桁も選択しない状態にする
- 全部消す
- DPを消す
- (分の10の)桁を選択
- 数値(min/10)を表示
- DPを消す
- 少々待つ(表示時間)
です。
たぶん、桁を選択する時点でポートの状態がクリアされている必要があったんでしょうね。