Arduino

ArduinoでI2C接続LCDを動かす(よく使う制御コマンドのまとめ)

I2C接続LCDで初期化の設定などでよく使う制御コマンドについてまとめました。

この記事を読めば、I2C接続LCDを使用する上で最初に行わなければならない初期化の設定ができるようになると思います。

また、別記事の「I2C接続LCDを動かす(表示データの指示方法)」の内容と組み合わせれば表示した文字に駅の電光掲示板のようなアニメーションをつけることが出るようになると思います。

記事の最後にサンプルプログラムをつけておきますので参考にしていただければと思います。

目次
  • 初期化で使う制御コマンド
  • アニメーションに使う制御コマンド
  • サンプルプログラム

初期化で使う制御コマンド

1.Function Set(機能設定)

・各bit説明

データ転送のデータ幅8bit or 4bit ,表示行数,フォントタイプ、命令テーブルの設定

7bit6bit5bit4bit3bit2bit1bit0bit
001DLNDH0IS

DL・・・データ転送のデータ幅を設定 通常は「1」の8ビット・モード

0:4ビット・モード
1:8ビット・モード

N…表示行数の設定

0:1行表示
1:2行表示

DH…フォントタイプの設定

0:通常フォントを使用
1:大フォントを使用

IS…命令テーブルの設定

0:命令テーブル1を選択
1:命令テーブル2を選択

表示行数,フォントタイプの設定について

今回使用しているLCDは2行16列となっており、N=0とすると上の行のみを使用するようになります。2行表示のLCDにわざわざ1行のみ使用する設定を行っても意味はありません。この設定はDHの設定で大フォントを選択したときに使用します。

IS(命令テーブルの設定)について

IS=0の命令デーブル1はSet CGRAM Address(CGRAMアドレス設定)となっています。あまり使わないので説明は省略します。

IS=1の命令テーブル2では、通信クロックやコントラストなどの設定を行います。

・Internal OSC frequency(内部クロック周波数)
7bit6bit5bit4bit3bit2bit1bit0bit
0001BHF2F1F0

BS・・・内部発振回路の設定で通常は「0」を指定

0:1/5バイアス
1:1/4バイアス

F2~F0…内部発振回路の周波数の設定で通常はF2=1,F1~0=0を指定

・Power/ICONControl/Contrast set(パワー/アイコン制御/コントラスト設定)
7bit6bit5bit4bit3bit2bit1bit0bit
0101IonBonC5C4

Ion・・・アイコンの表示設定 今回の製品はアイコンが設定されていないため「0」

0:アイコンの表示をOFF
1:アイコンの表示をON

Bon…内部で電圧を上げるブースター回路の設定

0:ブースタ回路をOFF
1:ブースタ回路をON

今回のLCDは5V駆動ですが、内部で電圧を上げるブースター回路を使用することで電源電圧が3.3Vだった場合でも使用することができます。

C5~4…コントラストを設定

・Contrast set(コントラスト設定)
7bit6bit5bit4bit3bit2bit1bit0bit
0111C3C2C1C0

先の「Power/ICONControl/Contrast set」のC5~4と含めたC5~0でコントラストの設定ができます。通常はC5=1,C4~0=0の「100000」で設定します。

・Follower control(フォロワ回路制御)
7bit6bit5bit4bit3bit2bit1bit0bit
0110FonRab2Rab1Rab0

Fon・・・フォロワ回路ON/OFFの設定

0:フォロワ回路をOFF
1:フォロワ回路をON

Rab2~0…フォロワ回路の増幅度を設定

液晶コントラスト制御関係の回路設定を行います。通常はFon=1,Rab2=1,Rab1~0=0 で設定します。

2.Display ON/OFF Control(表示ON/OFFコントロール)

LCD電源のON/OFFとカーソル(入力位置)の表示設定を行います。

7bit6bit5bit4bit3bit2bit1bit0bit
00001DCB

D・・・LCD電源ON/OFFの設定

0:ディスプレイをOFF
1:ディスプレイをON

C・・・カーソル表示ON/OFFの設定

0:カーソル表示をOFF
1:カーソル表示をON

B・・・ブリンク表示ON/OFFの設定

0:ブリンクをOFF
1:ブリンクをON

カーソルOFF_ブリンクOFF

カーソルON_ブリンクOFF

カーソルOFF_ブリンクON

3.Clear Display(表示をクリア)

LCDの表示箇所の全域に「半角スペース」を書込みます。また、カーソル(入力位置)を初期位置(左上)に戻します。

7bit6bit5bit4bit3bit2bit1bit0bit
00000001

4.プログラム例

液晶の初期化のプログラム例を下記に示します。参考にしていただければと思います。下記プログラムでLCDは「2.Display ON/OFF Control」にある「カーソルOFF ブリンクOFF」の動きをします。

アニメーションに使う制御コマンド

液の電光掲示板のように表示した文字が横にスライドしていくような演出をしたいときに使うコマンドを紹介します

1.Set DDRAM Address(DDRAMアドレス設定)

入力位置を任意の場所に設定します。

7bit 6bit 5bit 4bit 3bit 2bit 1bit 0bit
1 入力位置Address

入力位置Address(初期位置)

上記の入力位置Addressは7bit目除いての16進数表記になります。実際のプログラムでは7bit目と6~0bitを分けて書いた方が便利です。要するに入力Address「01」を指示したい時は

0b10000000+0b00000001=0x80+0x01

と入力するわけです。こうすることでプログラム内でも入力位置Addressがわかりやすくなります。本記事でのプログラムはこのように書いております。

2.Entry Mode Set(エントリ・モード設定)

表示データを書込んだ後のカーソルの移動方向を設定します。また,表示データの書込みを行った後に,表示をシフトするかどうかを設定します。

7bit6bit5bit4bit3bit2bit1bit0bit
000001I/DS

I/D・・・カーソルの移動方向を設定

0:カーソルを左に移動
1:カーソルを右に移動

S・・・カーソルと共に表示をシフトするかどうかを設定

0:表示のシフトは行わない
1:表示をカーソルと共にシフトする(方向はI/Dと同じ)

3.Return Home(初期位置に戻る)

カーソルを初期位置「入力位置Address=00」に戻し,表示のシフトも元に戻す。「Clear Display」とは違い、表示内容はクリアにならない。

7bit6bit5bit4bit3bit2bit1bit0bit
0000001

4.アニメーション制作

上の3項目の制御コマンドを使えば下にあるようなアニメーションか作れるようになります。

カーソルや表示のシフトについては文字やプログラムでは分かりにくいかもしれません。下記にプログラムと表示箇所を示した資料を用意しましたので参考になればと思います。

サンプルプログラム

アニメーションのサンプルプログラムです。参考にしていただければと思います。

1.左から右へ

2.左右の行き来を3回