AQM0802の文字表示

もう少し自由にAQM0802に文字を表示してみます。そのためには液晶の仕様を知る必要がありますね。

AQM0802の仕様

AQM0802液晶の命令コードやキャラクタの文字コードがわかれば、i2csetコマンドでこの液晶を自由自在に操作できそうです。

部品にはデータシートがついていなかったのですが、スイッチサイエンスのサイトの工作記事から秋月(!)のサイトのデータシートにリンクが張られています。命令コードの方はぼやけていてよく読めないので改めてAQM0802で検索しなおしたらマルツパーツの鮮明な資料を見つけました。

とりあえず初期化処理はよくわからないけれどデータシートのサンプルをちょっと変えてカーソル表示ONにしただけでいいでしょう。それ以外の命令といえば改行ぐらいしか使わないかな。

液晶の初期化

いまひとつデータシートを読んでも何をしているのかわからない部分がありますが、とりあえず2回に分けてデータを送ればいいようです。

sudo i2cset -y 1 0x3e 0x00 0x38 0x39 0x14 0x70 0x56 0x6c i
sudo i2cset -y 1 0x3e 0x00 0x38 0x0d 0x01 i

2回に分けているのは、それぞれのコマンド送信間隔を200ミリ秒以上取る必要があるためです。データシートには電力を安定させるためだとあります。シェルのコマンドなら余裕で200ミリ秒以上の時間がかかるんでしょうね。

カーソル周りの制御

カーソル周りの制御を抜粋します。

命令 命令コード 内容
Clear Display 0x01 全画面消去
Return Home 0x02 ホームポジション(1行目1桁目)へ戻る
Set DDRAM address 0x80 / 0xc0 1行目1桁目へ移動(Return Homeと同じ)/ 2行目1桁目へ移動(改行と同じ)
0x81 / 0xc1 1行目2桁目へ移動 / 2行目2桁目へ移動
0x82 / 0xc2 1行目3桁目へ移動 / 2行目3桁目へ移動
0x83 / 0xc3 1行目4桁目へ移動 / 2行目4桁目へ移動
0x84 / 0xc4 1行目5桁目へ移動 / 2行目5桁目へ移動
0x85 / 0xc5 1行目6桁目へ移動 / 2行目6桁目へ移動
0x86 / 0xc6 1行目7桁目へ移動 / 2行目7桁目へ移動
0x87 / 0xc7 1行目8桁目へ移動 / 2行目8桁目へ移動
Display ON/OFF 0xc0 カーソルOFF
0xd0 カーソルON

文字表示はカーソル位置に対して行われるので、データアドレス0x00にこれらのコードを送ってカーソル移動が制御できるようになると、結果的に文字表示位置を自由自在に指定できることになります。