40文字×4行 LCDモジュールを使ってみる(1)

lcd404-1

今回は、40文字×4行の大型キャラクタ表示LCDモジュール C-51849NFJ-SLW-ADNをCQカチャduino(Arduino)で動かします。LiquidCrystalとほぼ互換性のあるドライバ(ライブラリ)も作ったので、そちらも紹介します。

なお、この記事は、1年ほど前にCQ出版社のブログに掲載したものを再編集したものです。

●40文字×4行のLCD

マイコンで装置を作る場合、表示がネックになることがよくありますが、表示文字数が多くなると用途が広がります。そこで、秋月電子で販売されているC-51849NFJ-SLW-ADN(以下、C-51849)という40文字×4行の大型のキャラクタLCDを使ってみます。

40文字×4行となると、さすがに大きいです。基板の大きさは190mm×55mm、厚み15mmほどあります。次の写真は16文字×2行のものと対比したものです。

lcd404-2

文字、背景の色は、通常の緑っぽいタイプですが、バックライトが白色LEDなので、くっきり見やすくなっています。白抜きタイプではないので、バックライトなしでも見えます。文字の大きさは一般的なLCDと同じです。

ネットでデータシートを探したのですが、製品に添付されている以上のものは見つからなかったので、コマンドやRAMのマッピングは不明でした。そのため、一般的なものとある程度互換性があるとの前提で、使い方を調べるために、手っ取り早くArduinoへ接続して動かしてみました。それをここでまとめておきます。なお、本稿では、入手が容易な16文字×2行のものを「一般的なLCD」と表現することにします。

●データ信号

データ信号は一般的なLCDと同様、パラレルI/Oで制御します。8ビット・モードしかないようですので、データ信号は8本必要です。

●制御信号

これも一般的なLCDと同様、RS(レジスタセレクト)、R/W(リード/ライト)、E(イネーブル;ストローブ)と3種類です。ただ、C-51849にはE信号がE1E2と2本あります。制御方法によってはライト・オンリで作られますので、R/W信号は”L”レベルに固定できます。その場合は、制御信号はRS、E1、E2の3本になります。

データ信号が8本、R/W信号は”L”に固定しても制御信号が3本で、パラレル・ポートが合計11本必要です。

●バックライト

端子の17、18番はバックライト用LEDの端子になっています。17番がプラス(A)、18がマイナス(K)ですが、直列に電流制限用の抵抗器か定電流ダイオードを入れる必要があります。VF=3.5V(typ)、IF=90mAとなっていますので、約半分の50mA流すとすると抵抗値は

R = E / I = (5 – 3.5) / 0.09 = 約17Ω

となります。実験では33Ωを使いましたが、少し暗いかな、というぐらいで使えます。

●接続端子の配列

接続端子の配列は下図のようになっています。18端子(2列×9)で一般的なLCDより4端子多くなっています。ただ、配列を見ると、1番から14番の端子の配列が一般的なものと同じなので、ある程度の互換性があることが予想できます。

なお、一般的なLCDと端子の並びは同じですが、番号の振り方が異なるため、注意してください。表の黄色い背景部分(15~18)が一般的なLCDから拡張されている端子です。

lcd404-3

●E1, E2端子と画面構成

上図のようにC-51849にはE端子が二つあります。E端子はデータのリード/ライトの際に使用するストローブ信号です。データシートのブロック図によると、コントローラが2組実装されていることがわかりましたので、下図のように画面が二つに分かれているようです。

lcd404-4

そこで、早速、1~14ピンをArduinoに接続して(一般的なLCDと同じ配線)表示させてみました。標準ライブラリのLiquidCrystalをそのまま使っていますが、40文字×2行の設定で上半分に問題なく表示できました。

E1の代わりにE2に接続を変更すると、案の定、下半分に表示できます。また、E1とE2をショートすると、上下に同じ内容が表示できます。

つまり、このC-51849は40文字×2行のものを二つ並列接続して、E信号だけ個別に取り出したものと考えられます。カーソル位置を変えて試してみましたが、RAMのマッピングも40文字×2行のものと同じでした。

●どうやって使うか考える

制御方法はわかりましたが、どうやって上下のエリアを切り換えるかが問題です。標準のLiquidCrystalでは2つのE信号を切り換えられません。そこで、二つの40文字×2行LCDが2個あると考えて、E1とE2を別々のポートに割り付け、LiquidCrystalに手を加えて、E1、E2信号を切り換えて制御するように関数を追加することにしました。

なお、LCDだけでディジタル・ポートを11本も使うというのは効率が悪いので、最終的には、I2Cで制御するアダプタをCQカチャduino(WSN282)とブレッドボードで製作します。また、現在は、I2C化する基板も販売しています。↓
WSN318 LCD I2C化 モジュール(Arduino互換)

次回はArduino標準ドライバのLiquidCrystalを改造して、CQカチャduino(Arduino)に接続して実際に文字を表示させます。


参考文献
このLCDについては書籍「Arduino実験キットで楽ちんマイコン開発」でも扱っています。

コメントは受け付けていません。