LCDキャラクタディスプレイモジュールを使う、表示および命令解説編。
今回は、LCD表示機の初期設定の解説とC言語プログラムの解説をします。
まず、LCD表示機の表示形式について説明します。
今回使用するLCD表示機の表示は、2ライン16文字となっており、それぞれの1文字表示する部分に番地(アドレス)が割り当てられています(上図参照)。
ここで、2ライン目の番地が40から始まっているのは、このLCD表示機に使用されている制御ICが、横の文字数の対応が17文字以上のものにも対応しているためで、17文字目が10、18文字目が11・・・、となっているからです。
ここで、注意することは、00番地からデータを表示して行って(1文字入れると自動的に右に移動して表示される)0F番地までくると(16文字表示すると)次は、40番地に移動して文字が表示されそうですが、実際は番地が10番地になり、この表示機では存在しないので、送った文字は、無視されます(制御ICとしては、17番目に文字を表示している)。
従って、2行目の40番地に表示するには、文字データを送る前に。アドレスを指定する命令を送る必要があります。
次に、LCD表示機の制御命令の解説をします。
上は、LCD表示機を購入した時に同封されていた取扱説明書の制御命令一覧です。
分かり難いので、上から順に、1コマンドずつ解説します。
1、表示クリアー命令 RS=0,、W/R=0、コマンドデータ=0x01、命令実行時間1.53mS
命令の動作解説;LCD表示機全体の表示を空白にし、カーソルを左上の左端(00番地)に移動する。
2、カーソルホーム命令 RS=0,、W/R=0、コマンドデータ=0x02または0x03(どちらも同じ効果)、命令実行時間1.53mS
命令の動作解説;カーソルを左上の左端(00番地)に移動する、シフトしている表示は元に戻る、表示内容は変化なし。
3、エントリーモード設定命令 RS=0,、W/R=0、コマンドデータ=0x04~0x07、命令実行時間39μS
命令の動作解説;データ書込み読込時のカーソルの移動方向指定、表示をシフトするかしないかの選択。
4、表示オンオフ指定命令 RS=0,、W/R=0、コマンドデータ=0x08~0xFF、命令実行時間39μS
命令の動作解説;表示全体のオンオフ、カーソルの表示非表示選択、カーソルのある部分の表示の点滅の有効無効選択。
5、カーソル表示シフト命令 RS=0,、W/R=0、コマンドデータ=0x10~0x1F、命令実行時間39μS
命令の動作解説;カーソルを移動するかシフトするかの選択、その時の移動方向選択。
6.ファンクションセット命令 RS=0,、W/R=0、コマンドデータ=0x20~0x2F、命令実行時間39μS
命令の動作解説;データビットモード選択、1行表示か2行表示の選択、1文字を5×7ドット表示か5×10ドット表示かの選択
(注;5×10ドット表示で2行表示にすると1行目と2行目のスペースが無くなるので、上下の文字がつながって表示される)
7、CGRAMアドレスセット命令 RS=0,、W/R=0、コマンドデータ=0x40~0x4F、命令実行時間39μS
命令の動作解説;CGRAMのアドレスを指定、以後のデータはCGRAM用データを送る。
CGRAM;ユーザー独自の文字を表示させるデータを格納する場所。
8、DDRAMアドレスセット命令 RS=0,、W/R=0、コマンドデータ=0x80~0x8F、命令実行時間39μS
命令の動作解説;DDRAMのアドレスを指定、以後のデータはDDRAM用データを送る。
DDRAM;文字コードを格納する場所(今回の表示器では00番地~0F番地及び40番地~4F番地)。
9、ビジーフラグ及びアドレス読み出し命令 RS=0,、W/R=1、コマンドデータ=0x00~0xFF、命令実行時間0μS(無し)
命令の動作解説;LCD表示機が処理中かどうかのフラグ、CGRAM又はDDRAMの現在のアドレスを出力。
10、データ書込み命令 RS=1、W/R=0、コマンドデータ=0x00~0xFF、命令実行時間39μS
命令の動作解説;CGRAM又はDDRAMにデータを書き込む。(どちらに書き込むかは、前の命令がCGRAMアドレスセット命令かDDRAMアドレスセット命令かによる)
11、データ読出し命令 RS=1、W/R=1、コマンドデータ=0x00~0xFF、命令実行時間39μS
命令の動作解説;CGRAM又はDDRAMのデータを出力する。(どちらに出力するかは、前の命令がCGRAMアドレスセット命令かDDRAMアドレスセット命令かによる)
以上、命令を説明したが、完全に説明しきれないので、3番目以降の命令は、別記事で詳細解説する予定です。
また、命令を実行するに要する時間が長い命令が存在する(1と2)ので、データ送信サブルーチンの最後のウエイト命令は必要なようです、これがないと、前の命令を処理している途中で、次の命令が送られてきて、LCD表示機が予期しない動作になるようです。