第43回 LCDモジュール制御(文字表示)

今回の記事では、LCDディスプレイに文字を表示するコマンドを説明します。

目次

文字表示の方法

前回の記事で説明したように、LCDモジュールに文字を表示する場合、文字コード表に従って「0x40」と「文字データ」の2バイトをLCDモジュールに送信します。

例えば、「A」(0x41)を表示したい場合は次のように0x400x41をLCDモジュールに送信します。

この状態で「B」(0x42)を表示するために0x400x42をLCDモジュールに送信すると、次のように「A」の右隣に「B」という文字が表示されます。

この状態で、さらに文字データを送信すると、現在表示されている文字の右隣に次々に表示されていきます。

このように、LCDモジュールは文字データを送信するたびに、表示する場所を1文字ずつ進めながら文字表示してくれます。

文書作成アプリやエディターでは、キーボードで文字を入力するたびに表示する場所を1つずつ進めながら入力した文字が表示されますよね。

LCDモジュールの文字表示方法はそれと同じような仕組みです。

表示位置の指定

ところで、実践編で作成するプログラムでは、LCDディスプレイの特定の位置に温度、湿度、気圧データを表示します。

上で説明したように、文字データを送るたびに1文字ずつ表示位置を進めながら表示してくれるという仕組みは、それはそれでいいとして、特定の位置に文字を表示したいケースもあります。

そこで、表示位置の指定方法について説明します。


今回使用するLCDモジュールは「16文字 × 2行」の文字表示ができます。

合計で32ヶ所の文字表示位置があるわけですが、それぞれの表示位置には以下のように「アドレス」という番号が割り当てられています。(16進数表記です)

表示位置の指定は、動作設定コマンドで行います。フォーマットは次のようになっています。

例えば、2行目の先頭位置(アドレスが0x40)に表示する位置を指定したい場合、コマンドは次のようになります。

LCDモジュールに対して、動作設定コマンドであることを示す0x00と、表示位置指定コマンド0xC0を送ると文字表示位置は2行目の先頭に設定されます。

表示位置指定関数の作成

プログラムで表示位置を指定する場合、表示位置のアドレスを指定するより、「何行目の何文字目」という指定をしたいですよね。

例えば、「アドレス0x40」という指定方法より、「2行目1文字目」という指定方法の方が断然わかりやすいです。

そこで、次のようにX(何文字目)とY (何行目)の位置指定ができるように関数を作っておきたいと思います。

関数の中身は次回の記事で作成しますが、ここでは計算方法について確認しておきます。

まず関数としては、表示位置(カーソル位置)を指定するという意味でlcdLocateCursorという関数名にします。

また引数は文字表示位置で、上の図のように座標指定とします。

関数は以下のように座標(x, y)を引数として定義することにします。

void lcdLocateCursor(uint8_t position_x, uint8_t position_y);

このような引数にすると、アドレスの計算は以下のようになります。

  • yが0の場合(1行目の場合)
    アドレス = 0x00 + x
  • yが1の場合(2行目の場合)
    アドレス = 0x40 + x

アドレスがわかったら、コマンドは第7ビットを1にすればいいので、コマンドは次のようにすればOKです。

コマンド = アドレス + 0x80または、コマンド = アドレス | 0x80|は論理和)


次回はLCDモジュールに文字を表示するプログラムを作成してみます。

更新履歴

日付内容
2018.7.27新規投稿
2025.8.15説明内容整理
通知の設定
通知タイミング
guest
0 コメント
新しい準
古い順 一番投票が多い
本文中にフィードバック
全てのコメントを見る
目次