12-1.LEDのダイナミック点灯
LEDのダイナミック点灯とは、例えば7セグメントの数字4桁を点灯する場合、下図のように1桁ずつ高速で順次点灯させる方法です。ダイナミック点灯では、LEDを駆動するドライバーIC(またはトランジスタ)の数や配線を節約できるという特長があります。LEDのダイナミック点灯についてもう少し詳しく知りたい人はこちらを参照してください。
このデジタル時計では、7セグメントの数字4桁(D0~D3)とバラのLEDを1桁分(D4)として、合計5桁分をダイナミック方式で点灯させています。
ダイナミック点灯の原理
12-2.ダイナミック点灯のタイミング
LEDをダイナミック点灯させるタイミングは下図のようになっています。
D0~D4は各桁を点灯させる信号を意味していて、LOWになっているとき点灯です。図にあるように、1桁あたり2mSの周期で点灯させていますが、ブランク期間※1は周囲の明るさによって変化(100μS~)するようにしています。つまり、周囲が明るいときはLEDを明るく、周囲が暗いときはLEDも暗くします。
※1.ブランク期間とは、下図でD0~D4のすべてがHIGHになって、どの桁も点灯していない瞬間をいいます。上図で、「すべて消灯期間」と書かれた部分に相当します。
13.プログラミング
13-1.LED点灯タイミングの作成
マイコンH8/3694Fに内蔵するタイマWをインターバルタイマとして使用し、LEDの点灯タイミングを作成しています。
タイマWには、コンペアマッチレジスタとして使用できるジェネラルレジスタが4本(GRA, GRB, GRC, GRD)あるので、そのうちGRAとGRBによるコンペアマッチAおよびコンペアマッチB割り込みを使って作成しています。
次の図で点灯タイミングの作成方法を説明します。
コンペアマッチAで点灯桁の切り替えとLED点灯(ソースドライバON)を行い、コンペアマッチBでLED消灯(ソースドライバOFF)を行っています。つまり、コンペアマッチAからBまでの時間が点灯時間(Ton)で、コンペアマッチBから次のコンペアマッチAまでの時間が消灯期間(ブランク)です。
コンペアマッチBの発生周期は2mS一定で、これが表示のリフレッシュ周期つまりスキャン周期となっています。コンペアマッチAは、コンペアマッチBから最低100μS経過後に発生しますが、周囲の明るさによって100μS(明)~1300μS(暗)の範囲で変化します。つまり、それがLEDの明るさ制御です。
消灯期間(ブランク期間)は最低100μSありますが、この期間は点灯するLEDの桁を切り替えるための時間です。この時間が不足すると、消灯しているはずのLEDが薄く光ったり、いわゆるゴーストが発生することがあります。
このデジタル時計での、タイマWを使ったインターバルタイマとそれによるLEDのダイナミック点灯プログラムを下記に示します。興味のある人は見てください。
・タイマWを使ったインターバルタイマ
・LEDのダイナミック点灯
注意:このプログラム例は参考のため省略している点があり、このままコンパイルできない場合があります。
13-2.ブザー発音方法
ブザー音は、タイマVのコンペアマッチA(0.166mS周期=3KHz)でTMOV端子のON/OFFを反転することで発生しています。それを100mS周期割り込みによって“ピピピ…”という断続音にしています。
100mS周期割り込みは、タイマWのコンペアマッチD割り込みを使って作成しています。しかし、コンペアマッチD割り込みは他の用途にも使うため10mS周期となっています、そこで10回数えて100mSを作成しています。
詳細は、前記のプログラム例「タイマWを使ったインターバルタイマ」をご覧ください。
13-3.RTC-8564NBとの通信
リアルタイムクロックRTC-8564NBは、I2Cバスインタフェースを使ってマイコンと接続します。
RTC-8564NBのI2C通信フォーマットは次のようになっています(各アドレスおよびデータはMSBから送信)。
最初に送信するスレーブアドレス(RTC-8564NBの場合は0xA2)のビット0が読み込み/書き込みを示すR/Wビットで、‘0’で書き込み ‘1’で読み込みを示します。
書き込みの場合は、(a)のようにR/Wビット=’0’としてスレーブアドレスを送信し、次に目的のレジスタアドレスを送信、続いて書き込むデータを送信します。
読み込みの場合は、(b)のように書き込みと同じようにスレーブアドレスとレジスタアドレスを送信した後に、再度開始条件を発行してR/Wビット=’1’として再びスレーブアドレスを送信し、その後読み込みデータを受信します。
書き込み/読み込み共に、複数バイトのデータを送信または受信すると、対象となるレジスタアドレスは1バイトごとに+1されます。
マイコンH8/3694FによるRTC-8564NB用のI2C通信プログラム、それにRTC-8564NBの制御フロー図と制御プログラムを下記に示します。興味のある人は見てください。
・RTC-8564NB用I2C通信プログラム
・RTC-8564NBの制御フロー図
・RTC-8564NBの制御プログラム
注意:このプログラム例は参考のため省略している点があり、このままコンパイルできない場合があります。
14.フラッシュの書き込み
マイコンのフラッシュメモリへの書き込みには、ルネサスエレクトロニクスのFDT Basic(Flash Development Toolkit Basic)という無償で使用できる書き込みソフトを使用しました。
書き込むのは、Cコンパイラ・リンカで作成されるプログラムファイル、つまりSフォーマットのロードモジュールファイル(ファイル名“xxxxx.mot”)です。
書き込みを行うには、パソコンのシリアルポート(RS-232)※2とメイン基板のシリアルポートをケーブルで接続し、H8/3694Fをブートモードで起動する必要があります。ブートモードはフラッシュメモリを書き込む専用の動作モードで、AKI-H8/3694FではJP2とJP3をそれぞれショートして電源ONすることでブートモードにすることができます。
書き込みが正常に終わったら、JP2とJP3を開放にして電源ONすれば通常動作モードで起動します。
下図にパソコンとメイン基板を接続するケーブルの配線図を示します。
※2.パソコンにシリアルポートがない場合は、USB-シリアル変換ケーブルを利用します。
15.プログラム差し上げます