液晶モジュールの文字コード
投稿:2012-12-17、更新:2018-01-19
インタフェースが異なる2個の液晶モジュールに個別のドライバを用意して同時表示をさせてみました。
それぞれで4つの
Ω/ → Ω_てしっ
を表示させてみようというものです。
Ω/ → Ω_てしっ
を表示させてみようというものです。
初めてのGPIO制御でしたから、その辺りで失敗するかと思いきや「Ω」だけが出ません。
色々調べてみるとI2C液晶とGPIO液晶では文字コードというかCGROMの内容が違ってました。
この手の仕様は万国共通だと思い込んでいたのが誤り。
最初のアプリケーションはI2C液晶で「Ω」を表示させているもので文字コードを0x1Eを使い、
それを基に共通のソースで動作させるとGPIO液晶で表示できなかった訳です。
「Ω」の文字コードはI2C液晶=0x1E、GPIO液晶=0xF4、
更にCGROMの0x10はI2C液晶だけで、0xE0と0xF0は定義が異なります。
歴史の面ではGPIO液晶が長いのでI2C液晶のドライバを修正、文字コード0xF4が指定されたら0x1Eを出力するようにしました。
特殊キャラクタは「Ω」しか表示させる気がないのでこれで問題ナッシング。<おい
GPIO液晶のつもりでアプリケーションを作れば、I2C液晶で同様に表示できるという考え方です。
I2C液晶のCGROM特有の文字を使いたくなったらどうしようか…CGRAMにキャラクタパターンを描いて使えばいいのよ(苦笑)。
あたりまえだけどGPIO液晶を使っている方々はI2C液晶特有の文字を使っていないんだよな、コレ。
あと特殊なキャラクタの文字コードをCGROMの空きに割り当てるのは液晶モジュールの仕様上やむを得ないとして、ドライバはきちんとした文字コードを使って受け付けたい。
将来はドライバがUTF-8で受け付けてアプリケーションのソースコードで16進表記しなくても文字リテラル L'Ω' で(遠い目)。
私が使っているI2C液晶はストロベリーリナックスから購入した物です。
一方、秋月電子通商が販売しているI2C液晶はGPIO液晶と同一CGROMのように見えますから
インタフェースで区別するよりもモジュールに載せているコントローラで区別するほうが良さそうです。
将来I2C液晶が流行すると私のように頭を抱える人が続出しそうです。<「Ω」を使う人なんていませんよ
動作させるとこんな感じ。
2018-01-19
【この動画を削除しました】
GPIO液晶のドライバを作ってみて誤動作するから色々と疑うこと30分…まさかのCGROM違い。
まあ、どうせ話が通じないと思うので、あとはソース見てください(^^;
yrntrlmnmnt20121217.zip
yrntrlmnmnt20121217.zip