させてみただけの記事です。
使用したLCDは、80~90年代にヤマハLM楽器に多用されていた16×2行の
バックライトなしLCDです。以前 REX50 のLCDをバックライト付きに改造
した時に外したやつ。ずっと用途もなく手元に転がっていたので、ちょっと
遊びますか。
※赤字は今回使うピンです。
裏面には2つのチップが載っていますね。
HD44780A00
Dot Matrix Liquid Crystal Display Controller/Driver
HD44100H
LCD Driver with 40-channel Outputs
HD44780はこの時代の標準的なドライバとしてLCDに多用されていました。
今でも互換品が秋月電子などで購入できます。
HD44780 のROMコードは A00 なので日本市場向けのチップで、英数記号
以外にカタカナやギリシャ文字、千 万 円などの記号も収録されています。
キャラクタ表は上位4ビット/下位4ビットのマトリクスになっていますので、
該当する文字の2進を16進に変換して組み合わせるだけです。
例えば S という文字なら上位 0101 (05H)・下位 0011 (03H)なので、組み
合わせて 53H 、プログラム内で 0x53 と指定します。
ラズピコとの結線はこのようにしました。今回は上位4ビットのみ使うので、
下位4ビット(D0~D3 / 7~10ピン)は未接続です。
14ピンが1列のDX7用と違い、端子が2列になっておりこのままではブレボに
挿せないので、配線を引き出してピンヘッダをハンダ付け。
コントラスト用抵抗はVDD側4.7kΩ、VSS側680Ωで5Vを分圧し、0.63Vを
LCDの3ピンに。
接続完了。いつものように microPython でプログラムを書き、Thonnyで
ラズピコに転送して実行させます。
当ブログのタイトル Synthesized Malfunction を2行に分けて、それぞれ
左詰めと右詰めにして表示。問題なく表示されました。
カタカナも表示できました。
1行にまとめ、2行目には右詰めで顔文字も表示。
Yukkuri.txt
プログラムはこんな感じです(別タブ表示)。変数の定義やLCDの初期化等を
行ってから、# Main Process 部分で表示したい文字列を転送しています。
ぶっちゃけ文字のコードとキャラクタの対応を調べるのが億劫だったので、
適当なコードを指定してそこから希望のキャラが出るまで足したり引いたり
して指定しました(笑)。
結構簡単に出来るので、例えばラズピコのボード上にある温度センサからの
温度を拾って表示するとか、Wi-Fi付きのラズピコならRTCモジュールと組み
合わせ、NTPサーバから時刻を拾って来る事で、正確なデジタル時計などが
作れるかも知れませんね。
秋月で売られている20×4行のLCDでも、多分同じように制御できるかと。
簡単なプログラムで動かせるので、結構楽しい。

