#概要
PCF8574Tを使ってLCDを制御する。
ライブラリの中身まで説明しているサイトが見つからなかったため覚書として記録。
Arduinoのライブラリを使わない方向け。
#参考サイト
・LCDの使い方
http://mitt.la.coocan.jp/pic/pic5_17.html
http://elm-chan.org/docs/lcd/hd44780_j.html
・LCD + PCF8574Tモジュール 購入先
https://www.amazon.co.jp/gp/product/B07NNFFCJD/ref=ppx_yo_dt_b_asin_title_o04_s00?ie=UTF8&psc=1
#PCF8574TとLCDの配線
LCD | DB7 | DB6 | DB5 | DB4 | ※注1 | E | R/W | RS |
---|---|---|---|---|---|---|---|---|
PCF8574T | P7 | P6 | P5 | P4 | P3 | P2 | P1 | P0 |
※注1:バックライトON/OFF制御用FETのGATEに接続、以降「Y」
#LCDの初期化手順(4bitモード)
##大まかな流れ
- 一旦8bitモードに設定(3回繰り返す)
- 4bitモードに設定
- 2行表示モードに設定
- ディスプレイOFF,カーソルOFF,ブリンクOFFに設定
- ディスプレイのクリア
- エントリーモード設定(初期化完了)
##送信データ
###一旦8bitモードに設定(3回繰り返す)
0x30 -> 0x34 -> 0x30
LCD | DB7 | DB6 | DB5 | DB4 | - | E | R/W | RS |
---|---|---|---|---|---|---|---|---|
PCF8574T | P7 | P6 | P5 | P4 | P3 | P2 | P1 | P0 |
コマンド | 0 | 0 | 1 | 1 | Y | X | 0 | 0 |
###4bitモードに設定
0x20 -> 0x24 -> 0x20
LCD | DB7 | DB6 | DB5 | DB4 | - | E | R/W | RS |
---|---|---|---|---|---|---|---|---|
PCF8574T | P7 | P6 | P5 | P4 | P3 | P2 | P1 | P0 |
コマンド | 0 | 0 | 1 | 0 | Y | X | 0 | 0 |
###2行表示モードに設定
0x20 -> 0x24 -> 0x20
0x80 -> 0x84 -> 0x80
LCD | DB7 | DB6 | DB5 | DB4 | - | E | R/W | RS |
---|---|---|---|---|---|---|---|---|
PCF8574T | P7 | P6 | P5 | P4 | P3 | P2 | P1 | P0 |
コマンド | 0 | 0 | 1 | 0 | Y | X | 0 | 0 |
コマンド | 1 | 0 | 0 | 0 | Y | X | 0 | 0 |
###ディスプレイON,カーソルON,ブリンクONに設定
0x00 -> 0x04 -> 0x00
0xF0 -> 0xF4 -> 0xF0
LCD | DB7 | DB6 | DB5 | DB4 | - | E | R/W | RS |
---|---|---|---|---|---|---|---|---|
PCF8574T | P7 | P6 | P5 | P4 | P3 | P2 | P1 | P0 |
コマンド | 0 | 0 | 0 | 0 | Y | X | 0 | 0 |
コマンド | Blink | Cursor | Display | 1 | Y | X | 0 | 0 |
###ディスプレイのクリア
0x00 -> 0x04 -> 0x00
0x10 -> 0x14 -> 0x10
LCD | DB7 | DB6 | DB5 | DB4 | - | E | R/W | RS |
---|---|---|---|---|---|---|---|---|
PCF8574T | P7 | P6 | P5 | P4 | P3 | P2 | P1 | P0 |
コマンド | 0 | 0 | 0 | 0 | Y | X | 0 | 0 |
コマンド | 0 | 0 | 0 | 1 | Y | X | 0 | 0 |
###エントリーモード設定(初期化完了)
0x00 -> 0x04 -> 0x00
0x60 -> 0x64 -> 0x60
LCD | DB7 | DB6 | DB5 | DB4 | - | E | R/W | RS |
---|---|---|---|---|---|---|---|---|
PCF8574T | P7 | P6 | P5 | P4 | P3 | P2 | P1 | P0 |
コマンド | 0 | 0 | 0 | 0 | Y | X | 0 | 0 |
コマンド | S | I/D | 1 | 0 | Y | X | 0 | 0 |
###カーソルをホームに移動(下位4bit送信時にバックライトON)
0x00 -> 0x04 -> 0x00
0x28 -> 0x2C -> 0x28
LCD | DB7 | DB6 | DB5 | DB4 | - | E | R/W | RS |
---|---|---|---|---|---|---|---|---|
PCF8574T | P7 | P6 | P5 | P4 | P3 | P2 | P1 | P0 |
コマンド | 0 | 0 | 0 | 0 | Y | X | 0 | 0 |
コマンド | Don't care | 1 | 0 | 0 | Y | X | 0 | 0 |
#文字の表示
###カーソルを1行目の1列目に移動
0x88 -> 0x8C -> 0x88
0x08 -> 0x0C -> 0x08
LCD | DB7 | DB6 | DB5 | DB4 | - | E | R/W | RS |
---|---|---|---|---|---|---|---|---|
PCF8574T | P7 | P6 | P5 | P4 | P3 | P2 | P1 | P0 |
コマンド | 1 | 0 | 0 | 0 | Y | X | 0 | 0 |
コマンド | 0 | 0 | 0 | 0 | Y | X | 0 | 0 |
###カーソルを2行目の1列目に移動
0xC8 -> 0xCC -> 0xC8
0x08 -> 0x0C -> 0x08
LCD | DB7 | DB6 | DB5 | DB4 | - | E | R/W | RS |
---|---|---|---|---|---|---|---|---|
PCF8574T | P7 | P6 | P5 | P4 | P3 | P2 | P1 | P0 |
コマンド | 1 | 1 | 0 | 0 | Y | X | 0 | 0 |
コマンド | 0 | 0 | 0 | 0 | Y | X | 0 | 0 |
###数字の1を出力
0x38 -> 0x3C -> 0x38
0x18 -> 0x1C -> 0x18
LCD | DB7 | DB6 | DB5 | DB4 | - | E | R/W | RS |
---|---|---|---|---|---|---|---|---|
PCF8574T | P7 | P6 | P5 | P4 | P3 | P2 | P1 | P0 |
コマンド | 0 | 0 | 1 | 1 | Y | X | 0 | 1 |
コマンド | 0 | 0 | 0 | 1 | Y | X | 0 | 1 |
###数字の2を出力
0x38 -> 0x3C -> 0x38
0x28 -> 0x2C -> 0x28
LCD | DB7 | DB6 | DB5 | DB4 | - | E | R/W | RS |
---|---|---|---|---|---|---|---|---|
PCF8574T | P7 | P6 | P5 | P4 | P3 | P2 | P1 | P0 |
コマンド | 0 | 0 | 1 | 1 | Y | X | 0 | 1 |
コマンド | 0 | 0 | 1 | 0 | Y | X | 0 | 1 |