#目的
少し前に、ベーシックマスター レベル3をFPGA上で動かした。
表示には長残像モニタが必要だが信号を弄り、VGAディスプレィに表示させた。
でもどうせなら、表示一体型にしたらかっこいいのじゃない。
◆◆◆ そうだ、小型LCDモニターを作ろう ◆◆◆
まずはLCDを選定して、表示テストからだ。
#経緯
LCDは「3.97inch_8&16BIT_Module_NT35510_800x480_MRB3973」が安かったので購入。
このLCDは、MRB3973というボードに、NT35510という表示基板を使っており、ドライバーはOTM8009A。
購入手配をした後で調べたら、アマチュアでの表示成功例は見当たらず。とほほ大丈夫だろうか。
幸いなことに「ボードの解説ページ」が見つかったので参考にする。
LCD試験用のマイコンは、ESP32をarduino開発環境で使用する。理由は準備が簡単でそこそこ高速と言う理由。
但し、ESP32を使うので8bitパラレルとする。そうしないとESP32の端子が足りないから。
SPIは使えない。だってボード上でピンに出力してないからね。
この条件に合うソフトを探したが、見つからなかった。「Adafruit_NT35510-master」なんてのが有ったが、下記理由により却下。
・SPIと16bitパラレルを併用している どちらも物理的にESP32では繋ぐことが出来ない。
・Adafruit-GFXライブラリの仕様が前提 このライブラリは画面バッファとして800x480x2=768Kbyteのバッファが必要だがESP32では無理。
しかたが無いので各ライブラリ類を眺めて、ゴニョゴニョやったら何とかなった。ゴミ箱行にならなくて良かった。
#前提条件
以下のハード・ソフトを必要に応じ、予め準備してね。(購入先、金額は参考)
1.LCD aliで1.8K\で購入。此処で無くとも3.97inchで検索すれば出てくる。
※8bitモードに変更が必要。基板のR3の抵抗を取り外しR2の位置にはんだ付け変更が必要。
※この試作では、タッチパネルは制御していません。あしからず。
2.arduino-ESP開発環境 ネットで調べてね。
3.ESP32 何でもいいが、13ピン以上の入出力が有れば良し。
4.ブレッドボードと配線 適当に。
#接続
プログラム(LCD.ino)を見れば判るが、下記端子の接続を行う。
LCD_BLは、電源(3.3V)に接続する。
PARALLEL_0は、GPIO12~GPIO19にDB0-DB7を連番で接続する。
#define LCD_CS 5
#define LCD_RS 4
#define LCD_RD 21
#define LCD_WR 22
#define LCD_RST 23 // Set.Hi (low level reset)
#define LCD_BL VCC // Set.Hi (High level light)
#define PARALLEL_0 12 // Byte Inpu Start 12(-19)Pin For R/W 8bit.parallel
上記接続を行い電源をいれると、LCDがうっすらと光るはず。
※基盤を8bitモードに設定するのを忘れないでね。
※BLをVCCに繋ぐのを忘れないでね。
#動作原理
データの入出力は単純。
Readは、csをloにして、rdをloにすると、parallelにデータが出てくる。
Writeは、csをloにして、wrをloにすると、parallelからデータが読み込まれる。
R/W操作は8bitモードなので、連続二回実行する必要が有る。
rsでレジスタ/メモリのアクセスを切り替え。
※ただし、これだけでは済むはずは無かったが。一寸した鼻薬が必要。
#ソフト
ソフトはarduinoのlibraries擬きで作っている。inoと同一もしくはlibrariesディレクトリに入れれば動くはず。
関数の機能として、文字、直線、四角、円、塗りつぶしなどが可能。
ボードの初期化後に、簡単なdemoを行ているので参照されたい。
※関数の一部はネットから拾ってきている。出自を明らかにすべきだが何処からだったか...。
「デモソフトの掲示場所(github)」
このLCDの発色は綺麗だと思う。小型カラーLCDのいかにもカラーですよというギラギラ感が無い。
二千円前後でこのクオリティ、チャイナパワーに脱帽かな。タッチパネル無かったらもう少し安くなるのでは。
なお、もし追試する奇特な方がおられた場合、上記記載内容は無保証であり、各自の責任においてご利用願います。