部品の整理をしていたところ、色々なLCDが出てきた。
※安売りでバーゲンしてる時に買ったもの。
RX24Tには、まだ液晶を接続していなかったので、RX24Tで実験してみた。
赤い基板と横長の基板は、ST7565で、小さいのは、UC1701、白い枠は、
カラーTFT液晶。
横長は、モノ128×32、他はモノ128×64、カラーは128×160となって
いる。
どのLCDも、SPIで通信するものだけど、ピンアサインが、どれも微妙に異な
る・・・
また、基本的には、電源は3.3Vだけど、バックライト用電源が異なるモジュー
ルがある。(Aitendo さん何で同じにしないかなぁ・・・)
以前に買ったLCDで、LCDの不良(仕様違い)で、使わなくなっていたやつを
交換してきた、メールで問い合わせたら、返金すると言っていたが、同等品があった
ので、交換にした。
このLCDは大型でバックライトもあり、なかなか良い。
同じコントローラーでもLCDによりコントラストの設定が異なるのが、多少厄介。
※周囲が暗いけど、小さめの赤い基板のLCD、液晶の応答速度が若干速い気がする。
※さらに小型のLCD(バックライト付)で、コントローラーがUC1701
他にもあるが、どれも表示は問題無くできる。
// SPI 定義(RSPI0) typedef device::rspi_io<device::RSPI0> SPI; SPI spi_; typedef device::PORT<device::PORT6, device::bitpos::B1> LCD_SEL; ///< LCD 選択信号 typedef device::PORT<device::PORT6, device::bitpos::B2> LCD_A0; ///< LCD レジスター選択 #ifdef LCD_ST7565 // ST7565 drive chip::ST7565<SPI, LCD_SEL, LCD_A0> lcd_(spi_); #endif #ifdef LCD_UC1701 // UC1701 drive chip::UC1701<SPI, LCD_SEL, LCD_A0> lcd_(spi_); #endif
「LCD_SEL」はLCDの選択信号
「LCD_A0」は、LCDの制御レジスター切り替え
LCDの切り替えは、インスタンスを代える事で行う。
「spi_」は、SPIを制御するクラスで、コンストラクター時、参照で受け取るよう
にしてある為、SPI の制御をシェア可能になっている。
LCDのコントラストは、LCDのスタート時に(初期化)設定する。
lcd_.start(0x00);
※大きいタイプは0x10程度、他は、0x00くらいだった。(LCDにより調整
が必要なようだ)