PIC16F88での7SEGx4LEDの時計をLCDに表示するためのプログラムが一応できた。7SEGで使用したプログラムは基準タイマー以外はほとんど使わないで、結局別プログラムにて作ることとなりました。応用的な作成は可能ですが、新たに作り直したほうが、プログラム量的にもスマートで面倒が無いと思われたからです。作るとはいえ、あちらこちらからの良いとこ取りの手法です。時計とRS-232Cシリアル通信もマージ的に組み込んだ為かなりプログラム量が増えています。ちょっとした事をやると4Kはメモリでは不足した為、シリアル通信も簡単な動作でしか組めていません。IOポートの使い方の練習であれば十分だということで、まずは納得しています。なお動作は,時計とシリアル通信は別モードとして動作させています。切り替えは3つあるSWの内の一つを割り当てました。時計用のSWは、時間のHH時間調整用SWと、MM分調整用SWの2つです。モード切り替えは通常時(OFF)で時計モードです。SW3はプッシュSWでなく,ON/OFF型のSWで行います。ONではシリアル通信モードに表示が変わり、時計モードは表示されません。SWをOFFに戻すとまたもとの時計モードになります。時計はキチンと止まらずに動きます。通常時(電源オン)は時計モードです。
いままで、小型のブレッドボードにあった通信インターフェースをメインのブレッドボードに移し変えました。空いたブレッドボードは別のPIC12F683での割り込み、タイマーの動作確認練習用で使用しています。
実際にボード上のPIC16F88でのCLOCKのボード上の状態です。7SEGは表示のみのせてあり、本体のPICは小型のブレッドボードにあります。なお表示はシャッタースピードの関係で1桁しか写っていませんが、人の目では全部表示が見えています。
時計はLCDのカーソル表示を止めて、モード切替(RS-232C)との表示前の初期化が一番大切です。データ表示は単純に場所を決めてデータ表示するだけです。表示前に表示部をクリアしてから表示です。尚ちらつきはほとんど感じられません。
ロジックアナライザーでは一目瞭然で各7SEGx4LEDの1目盛りが1msのアクティブローで動作しているのが分ります。1回全LED表示するのに4msで、1秒間に250回も表示動作が行われています。このロジックの表示を見ていて思い出しましたが、ステッピングモータの回転のロジックに似ています。応用ができますね。今回は割り込みとタイマーの使い方の理解に時間をかけました。時計の基準時間作成が基本であることが良く分りました。



手持ちにロジックアナライザがあったので、7SEGX4LEDのクロックの各LEDを順次表示するタイミングを見てみた。ちゃんと1つ1つ別々に表示されているのがわかる。高速に行われているので、点いたり消えたりしているのが全く目には分らないということです。
