「RRP1320-0 ハードデバック」に書いたように、当分LCDを使う予定は無いのですが、LCDを動作させた記憶が残っている間にもう少し試してみました。 LCDはSUNLIKE社製SC2004Cです。

このタイプのLCDはデータ転送(1byte)の都度40usec以上の時間を置いて次のデータを転送する必要があるようです。 40usecと言うとRRP-1320-0(主クロック8MHz)でも80サイクルの処理が可能で、NOP等のアイドルループで時間待ちするのはもったいないと感じました。

このブログで扱う予定の道具類は、リアルタイムにセンサーやキー入力の状態を監視して、出力を変化させる場面が多いと思います。 LCDへのデータ転送処理を割り込みを使って断続的に行なう方がリアルタイム制御に向いているように思います。

割り込みタイムチャート

そこで、データ・メモリーの一部に、アスキーコードを書くだけでLCDの所定の位置に表示するプログラムを作ってみました。 動作の概要は下図のようなものです。
 
LCD転送

一度作って動作を確認すれば、後はLCDへのデータ転送手順やコマンドを意識する必要がなくなり、所定のデータ・メモリー(0A0H~0EFH)にアスキーコードを書くだけで表示させることが出来ます。 TIMER2とFSR2を占有しますが、2msec毎に1文字(164msecで全画面分)を転送し続けます。

下図は動作確認の様子です。

DSC00069

Hello World の文字は、一旦Haltして File Registers ウィンドウから書きこんで Run したものです。 メイン処理でデバック対象のデータ・メモリーの値を ASCII 変換して V-RAM に書き込んで使えば、MPLABの File Registers ウィンドウや Watch ウィンドウと違って、リアルタイムにデバック対象の値を見れる為、デバックが容易になる場面もありそうです。

LCD_VRAM

このプログラムの詳細は、複数の記事に分けて紹介する予定です。 最後の記事からプロジェクトをダウンロード出来るようにする予定です。


以下は関連記事のインデックスです。

LCDに自動転送2 
  TIMER2 の割り込みから CALL されて LCD にデータやコマンドを送信するプログラムについて説明します。

LCDに自動転送3 
 TIMER2 低位割り込み処理に当たるプログラムで、前回(LCDに自動転送2)で説明したプログラムを CALL してLCDにコマンドとデータを送ります。 前回とこの記事のプログラムがLCD自動転送プログラムの中核です。

LCDに自動転送4 
 TIME2を使って2msec間隔の低割り込みを発生させる設定プログラムです。 この割込みを許可すると前回紹介した割込み処理が始まります。

LCDに自動転送5 
 前回までに説明した割込み処理による自動転送を始めるまでのメイン処理です。
一連の記事で紹介したソース・ファイル(プロジェクト)をダウンロード出来ます

RRP1320-1-01 概要 
 ブレッドボードに実現して、所定のデーター・メモリーの内容をLCDに自動転送するプログラムを作りました。
お忙しい方の為にプロジェクトとドキュメントを、デジマーケットのシステムを使って(可能な範囲でお安く)ダウンロード販売しています。


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。