今回からLCDモジュールをI2C通信で制御するプログラムを作成していきます。最初はLCDモジュールの概要説明です。
「LCD」?
この記事のタイトルは「LCDモジュール」としていますが、他にも「液晶表示器」などいろいろな呼び名があるようです。
「LCD」は「Liquid Crystal Display」で、日本語では「液晶表示器」「液晶ディスプレイ」という意味です。
一般的に販売されている液晶表示器は、表示部本体が基板に装着されています。
また、基板には液晶表示器本体の他に、制御するための回路も実装されています。

「LCDモジュール」とは、液晶表示本体部に基板や制御回路を取り付けたモジュール、という意味になります。
とはいってもあまり厳密な使い分けがされているわけではありませんので、「液晶表示器」「LCD」「LCDモジュール」はどれも同じもの、と理解していただいて大丈夫です。
LCDモジュールの種類
電子部品の通販サイトを見ると、LCDモジュールには多くの種類があることがわかります。
表示領域のサイズの違い、文字色の違いなどにより多くの製品が販売されていますが、表示内容を制御する方法の観点で大きく2種類に分類されます。
ひとつは「キャラクタディスプレイ」、もうひとつは「グラフィックディスプレイ」です。
それぞれの製品例としては次のようなものがあります。
LCDキャラクタディスプレイモジュール(16×2行)バックライト付 (秋月電子通商)
LCDグラフィックディスプレイモジュール(122×32ドット)バックライト付 (秋月電子通商)
最初にこれらの違いを説明します。
LCDモジュールの基本構造
キャラクタディスプレイもグラフィックディスプレイも、LCD本体は以下のようにドット(点)から構成されています。

この図ではドットに色をつけていますが、実際のLCDモジュールでは何も表示していない場合はこのドットは見えません。
何か情報を表示する場合、それぞれのドットをON/OFF制御します。
例えば「A」を表示する場合は以下のようにドットのON/OFF制御を行います。

キャラクタディスプレイでもグラフィックディスプレイでも、表示部ではドットをON/OFF制御して表示を行います。
一方、LCDモジュールを外部から制御する方法は、キャラクタディスプレイとグラフィックディスプレイで大きく異なります。
キャラクタディスプレイの特徴
例えば、LCDモジュールに「A」という文字を表示ケースを考えてみます。
キャラクタディスプレイの場合、LCDモジュールに対して「A」という文字を表示するように指示します。
PICマイコンから制御する場合、PICマイコンは「A」という1バイトのデータをLCDモジュールに送ると、LCDモジュールはドットをON/OFF制御して「A」という文字を表示します。
「キャラクタディスプレイ」とは、「(外部からキャラクタ(文字)の情報を受け取って、その文字を表示するディスプレイ」という意味です。

グラフィックディスプレイの特徴
グラフィックディスプレイでは、LCDモジュールには「どの位置のドットをONにするか」という情報を送る必要があります。
そのため、「A」という文字を表示する場合でも「どこの位置のドットをONにするか」というデータをLCDモジュールに送る必要があります。
「グラフィックディスプレイ」とはドットを直接制御して「グラフィック(画像)を表示するディスプレイ」という意味です。

グラフィックディスプレイの場合、「A」という一文字を表示するだけでも「A」のドットデータを作成してそれをLCDモジュールに送る、という大変さがあります。
一方、ドット単位でON/OFF制御できますので、文字以外にもグラフや画像なども表示することができます。
違いまとめ
このようにキャラクタディスプレイとグラフィックディスプレイはそれぞれの特徴がありますので、用途に応じて使い分けることになります。
種類 | 制御方法 | 特徴 |
---|---|---|
キャラクタディスプレイ | 表示する文字データを送る | 数字や英文字、カタカナなど決まった文字を表示する場合に適している。制御は容易。 |
グラフィックディスプレイ | ドットのON/OFF制御情報を送る | 絵やグラフなど自由な描画をする場合に適している。ドット単位で表示制御するため、文字を表示する場合でもドットデータを作成して制御する必要があり、プログラムがちょっと大変。 |
実践編では温湿度、気圧の数値データを表示するだけですのでキャラクタディスプレイを使用します。
応用としては、グラフィックディスプレイに変更して、温湿度と気圧のグラフに表示して、さらに天気予報のアイコンも表示する、というのも面白いと思います。(プログラムが大変ですが…)
コントローラの種類
キャラクタディスプレイでもグラフィックディスプレイでも、LCDモジュール内部には液晶表示部を制御するコントローラが内蔵されています。
そのコントローラを外部から制御することにより表示制御を行います。

市販されているLCDモジュールでは、このコントローラはいくつか種類があり、データ通信方式や制御コマンド(制御方法)はコントローラごとに異なります。
キャラクタディスプレイの代表的なコントローラは「HD44780」(日立製作所社製)と呼ばれているものです。
このコントローラには互換品もあり、互換品を使用したLCDモジュールは次のように「インターフェースIC:HD44780コンパチブル」(「制御ICはHD44780と互換品」という意味)などと記載されています。
LCDキャラクタディスプレイモジュール (16×2行バックライト付) (秋月電子通商)
コントローラICがHD44780か互換品のLCDモジュールであれば、同じデータ通信方式、同じ制御コマンドで制御することができます。
なお、実践編で使用するLCDモジュールのコントローラは、Sitronix社製の「ST7032」というコントローラが使用されています。
このコントローラは、データ通信方式としてI2C通信をサポートしており、制御コマンドはHD44780とは少し異なります。
実践編で作成するLCDディスプレイの制御プログラムは、コントローラとしてST7032を使用しているLCDモジュールであれば流用できます。
今までの情報をまとめると、実践編で使用するLCDモジュールはキャラクタディスプレイで、通信方式はI2C通信です。
次のように、PIC16F18857からI2C通信でLCDモジュールのコントローラST7032を制御することにより表示制御を行います。

それでは、次回からLCDモジュールの制御プログラムを作成していきます。
更新履歴
日付 | 内容 |
---|---|
2018.7.4 | 新規投稿 |
2025.8.12 | 画像サイズ変更 |
早速の回答ありがとうございます。
実験してみたらうまく表示されました。
これだと老眼でもよく見えます。
ストロベリーLinuxの液晶も同じコントローラーのようです。
そのまま置き換え可能でしょうか?
https://strawberry-linux.com/catalog/items?code=27002
ご質問どうもありがとうございます。
はい、利用できます。コントローラはST7032ですので同じプログラムで動作します。なお、ピンが5本あり1番ピンがリセット端子になっていますので、リセットピンはVDDに接続する必要があります。