年の瀬にI2C接続のリアルタイムクロックを使ってみています。
時を刻むリアルタイムクロック(RTC)DS1307モジュールを試してみた

時間もないので?LEDパネルでの時刻表示の代わりに,手持ちの小さなキャラクタ液晶ディスプレイ(LCD)に表示してみました。

少々手間取りましたが,動かすことはできました。RTCの電池バックアップもちゃんと動いているようです(^^)。




1.ハード構成
・PICAXE-08M2
・リアルタイムクロック(RTC)DS1307モジュール
・I2Cキャラクター液晶ディスプレイ[ACM0802C-NLW-BBW-IIC]
 文字フォーマット:8文字×2行
 電源電圧:DC5V
 白色LEDバックライト:5V15mA
 コントローラーIC:RW1063-0Aまたは互換

ディスプレイのコネクタは10PinなのでI2Cと電源に必要な4本を出すようにしました。コントラスト調整用の20KΩの可変抵抗もつけています。





2.ソフトウェア
 PICAXEのBASICでそっけない表示だけのプログラムです。

RTCもLCDもI2Cなので,データ読み取りと表示の時に切り換えています。





3.I2C接続キャラクタ液晶ディスプレイのコントロールのメモ
 キャラクタLCDは長い間使われていて,もともとパラレルで動かしていたものにI2Cのコントロール部を追加したようなものが多いのではと思います。

そのためかI2C通信機器でよくあるレジスタアドレスを指定したやりとりの概念がなく,コマンドとデータの切り替えをコントロールコードで行います。

この切り替えをインストラクション表に突然現れる「RS」ビット(Resistor Select ?)を含むコントロールバイトをコマンドやデータの前に書き込むことで実現しています。

以前作ってみたJHD1313のインストラクション表です。
PICAXEでGroveの液晶モジュールを使う。そのメモ3.LCD表示のインストラクション



説明書などでは上記の表の中の「Co」(continue?)の説明が長くて,「RS」についての言及が無いものも多いですね。パラレルでは「RS」は信号線として独立しているからでしょうか,,。

ちなみに私は「Co」は考えるとめんどうなので0に固定して,
RS=0 → コマンド送信:コントロールバイト=0x00
RS=1 → データ送信:コントロールバイト=0x40
としています。安全策?ですね(^^;;;;;


後,LCDでは表示文字数にかかわらず次の行のアドレスは飛び番地になっている事が多いのも注意点です。

これも説明のない説明書?が見受けられますので,シフトで出てくる1行の隠れ文字数を調べておく必要がありますね。



久しぶりにLCDを触りました。OLEDでなくてもバックライト付きのは視野角では劣るものの,なかなか見やすいですね。

年越しの時をこじんまりと表示してくれるでしょう(^^)。