H8で学ぶマイコン開発入門

H8で学ぶマイコン開発入門(7)

LCDに文字を表示させるプログラミング

山本 繁寿 ソフィアシステムズ 2007/3/19

本連載は、組み込みソフトウェア開発の初級者に向け、H8マイコンを題材に、マイコンの基礎知識からC言語による周辺機器制御プログラミングまでを解説する。(編集部)

- PR -

 本連載で使用しているターゲットボード(第6回を参照)には、LEDやモータなどが接続されています。これらの装置の状態をLCD(Liquid Crystal Display)に表示させることができます。例えばLEDを点灯させた場合は、LCDに文字列「LED TEST」を表示させるといった処理です。そこで今回は、LCDの制御について解説します。

ターゲットボードに搭載された
LCDの仕様

 ターゲットボードに接続されているLCDは、16けた×2行、5×7ドットマトリクス+カーソルの表示能力があります。LCDの制御信号とデータバスは、下記表のようにH8/3048F-ONEのポート4(P4)に接続されています(表1)。

信号名 ポート ポートの方向 用途
E P46 出力 イネーブルパルス信号:動作起動信号(ON/OFF)
R/W P45 出力 リードライト信号:LCDモジュールからのデータ読み出し/書き込みを選択
RS P44 出力 レジスタ選択信号:データバスの信号がデータか命令かを指定。RS=1:データ、RS=0:命令
DB7 P43 入力/出力 データ信号
DB6 P42 入力/出力 データ信号
DB5 P41 入力/出力 データ信号
DB4 P40 入力/出力 データ信号
表1 LCDが接続されるポート

 本連載で使用しているターゲットボードでは、7本の信号線でLCDを接続しています(LCDは4ビットモードで動作)。このため、LCDに1文字を出力するためにはプログラムが若干複雑になり、上位4ビットと下位4ビットを2回に分けて出力する必要があります(図1)。

図1 LCD接続の回路図


LCD処理の流れ

 LCDの操作は、データ信号(DB4〜DB7)、レジスタセレクタ信号(RS)、リードライト信号(R/W)およびイネーブルパルス信号(E)を用いて行います。処理の流れは、以下のとおりです。

(1) ●データ信号(命令コードまたは文字コード)をラッチ
  ●必要な項目
・表示データRAM(DD RAM)
・キャラクタジェネレータRAMとROM(CG RAM、CG ROM)
・命令コード、文字コード
・アドレスカウンタ(AC)
    ↓
(2) ●レジスタセレクタ信号とリードライト信号を確定
  ●必要な項目
・命令レジスタ(IR)
・データレジスタ(DR)
    ↓
(3) ●イネーブルパルスを作り、(1)でラッチしておいたコードを実行
  ●必要な項目
・ビジーフラグ(BF)


使用するレジスタ

 ユーザーが使用できるレジスタには、以下の2つがあります(表2)。

レジスタ名 用途
命令レジスタ(IR) 表示クリアやカーソルシフトといった命令コードや、表示データRAM(DD RAM)とキャラクタジェネレータRAM(CG RAM)のアドレス情報を記憶
データレジスタ(DR) DD RAMやCG RAMへ書き込むデータおよびDD RAMやCG RAMから読み出されるデータを一時的に記憶
表2 LCD使用するレジスタ

 これらのレジスタは、表3のレジスタセレクタ信号(RS)で選択します。

RS R/W 動作
0 0 IR選択。IR書き込み。内部動作:表示クリア命令の実行など
0 1 ビジーフラグ(DB7)とアドレスカウンタ(DB0〜DB6)の読み出し
1 0 DR選択。DR書き込み。内部動作:(DR) → (DD RAMまたはCG RAM)
1 1 DR選択。DR読み出し。内部動作:(DD RAMまたはCG RAM) → (DR)
表3 レジスタセレクタ信号(RS)


ビジーフラグ:BF

 LCDは2枚のガラス板の間に閉じ込めた液晶に電圧を掛けることで液晶分子の方向を変え、光の透過率を加減することで像を表示する仕組みになっています。液晶分子の方向を変えるためには時間がかかります。ビジーフラグ(BF)は、LCDモジュールが次の命令を受け付けられる状態にあるかどうかを示します。

 BF=1のときは命令実行中状態であり、次の命令は受け付けられません。BF=0のときは次の命令を受け付けることができます。よって命令を実行する際にはBFの値をモニタする必要があります。もしBFの状態を確認せずに命令を実行するのであれば、各命令の実行時間以上の待ち時間を設けて次の命令を実行します。

アドレスカウンタ:AC

 アドレスカウンタ(AC)は、DD RAMやCG RAMへデータを書き込む際のアドレスおよびDD RAMやCG RAMに記憶されているデータを読み出す際のアドレスを、アドレスセット命令により7ビットで指定します。アドレスは一度セットされると、以後書き込みや読み出し命令が実行されるたびに、自動的に次のアドレスに再セットされます。

表示データRAM:DD RAM

 DD RAMは80×8ビットの容量を持ち、8ビットの文字コードで表される表示データを80文字分記憶します。DD RAMアドレスと表示けたの対応関係は表4のとおりです。

  1 2 3 15 16 17 18 19 20 21 38 39 40 表示けた
1行目 00 01 02 0E 0F 10 11 12 13 14 25 26 27 DD RAMアドレス
2行目 40 41 42 4E 4F 50 51 52 53 54 65 66 67 (HEX)
表4 DD RAMアドレスと表示けたの対応関係

 LCDは16けたですので、先頭位置から16けた分が2行表示されます。1行目の最後と2行目の最初のアドレスは連続しません。

  • 連載バックナンバー
  • 全記事インデックス
  • 組み込み開発トップ
  • MONOistトップ

メールマガジン

スポンサーからのお知らせ

Windows Embeddedコーナー

Windows Embedded
Windows Embedded専門コーナー誕生。Windows CEやXP Embeddedに関する技術情報を提供します。

@IT MONOist 求人情報