2017-10-29 18:30 | カテゴリ:PIC応用回路

とりあえず時計の文字盤風の表示と運針のアイデアが出来ました。
MTX30.jpg

(MTX30)


続きは、、、



さて、肝心の時間計測のプログラムですが、アイデアはこうでした。

1)内蔵タイマーを20msec毎にリセットさせるように各種パラメータをセットします。
  これは、クロックが12.8MHzなのでそれを分周させて得られる時間となります。

クロックが20MHzだと、分周をいろいろ変えても一秒間隔を作るのは難しいのですが、12.8MHzだと
1/16分周して、TMR2のコンパレータ(PR2)に0xF2をセットすれば、20msec毎に割り込みが発生するはずです。

2)タイマーが20msec毎にリセットされる際に、割り込みが発生する様にします。

MCC(コードコンフィギュレータ)でTMR2を設定します。

(MTX31)
MTX31.jpg




3)割り込みが発生したら、20msecを単位としたカウントを順次進めて、秒、分、時間を求めます。

ここは以前に製作したプログラムから借用します。

(MTX32)
MTX32.jpg

20msec毎の割り込みをカウントして、秒、分、時をカウントアップしていきます。


4)1秒ごとに、秒針、長針、短針の角度を求めて、時計画面を更新します。(SPI通信)

この時分秒のカウントに基いて、文字盤に時分針を表示します。
秒から分、分から時間へのカウントを進めて、時分針の角度を計算し、その角度に基いて、針の回転をして表示します。

(MTX33)
MTX33.jpg

Data_Buff_Clear()関数で、バッファーをクリアし、
Set_Clock_FAce2()関数で、文字盤を表示、
To_RT_Conv()関数で、時針のXY座標を極座標に変換し、
角度を指定の時間に変更したうえで、
Fm_RT_Conv()関数で、極座標から直交座標(x、y)に再度戻したうえで、表示バッファに時針のドットを表示、改めてバッファデータをLEDに表示して、時刻が表示されます。

実際には、時針、分針、時針を処理した後に、バッファデータをLEDに転送して表示しています。


初期設定として、スタートする時間を設定する部分を追加して、時計としてのプログラムがとりあえず完成しました。

ブレッドボード上で、時計が時をカウントしています。

(MTX34)
MTX34.jpg

とりあえずできたのですが、どうもスマートではありませんね。(笑)

もう少し何とかできないか??
ちょっと考えてみます。




関連記事

管理者のみに表示する