[トップページへ戻る]

LCDモジュール SC162シリーズ

2010年6月 ※2011/08 記事を改訂
LCDモジュール(キャラクタ液晶モジュール)はLEDや7セグより表現力が高いので機器の情報を表示するには打って付けのデバイスです。
製作物には必要なくても、開発中のデバッグに使うことはあると思います。

開発作業専用で使い回すLCDモジュールがあると便利です。
今回はそんな工作を紹介します。
LCDモジュールをAVRやPCで制御するプログラムも公開します。


LCDモジュールの互換性
電子工作のサイトで最もよく見かけるLCDモジュールはSUNLIKE社のSC1602シリーズです。
お馴染み秋月電子で多数販売されていて入手しやすいからでしょう。SparkFunでも様々なLCDモジュールを販売しています(参考リンク)。

これらLCDモジュールを作っているメーカーは何社もありますが、コントローラICは基本的にHD44780(と互換性のあるもの)が使われています。そのおかげでどれも同じ制御プログラムで動作します。ただしピンの配列は微妙に違うので、単純に差し替えても動くとは限りません。最悪の場合、電源逆挿しで壊れます。ピンの配列はデータシートで確認してください。

データシートがないLCDモジュールを使うためのヒント
HD44780互換のコントローラがデファクトスタンダードだとすれば、詳細不明のLCDモジュールでも他と同じように使えるかもしれません。それが1列に14ピンまたは16ピン並んでいるものとして、次のように見分けてください。

1.バックライト
14ピンならバックライトなし、16ピンならあり。バックライトのピンは15,16番と思ってよさそう。
どちらがアノードかカソードか、大抵は基板上にA,Kまたは+,-と書いてある。
書いてなければ100Ω程度の電流制限抵抗を付けて5Vを加えてみる。VF=4.2Vと思ってよさそう。
ただしこれが点いたからといって、LCDモジュール本体が使えるかどうかはまだ分からない。
点かなくても、バックライトだけ壊れていてLCDモジュール本体は使えるということもある。

2.信号線
データ線+制御線=計14本の内容と並び順は基本的に下表の通り。
ただしVSSとVDDが逆のものもあるので油断は禁物。例:SC1602B …7ピン2列ですが。
1,2番以外は番号と内容の割り当てはどれも同じと思ってよさそう。3番=Vo〜14番=DB7
14 13 12 11 10 9 8 7 6 5 4 3 2 1
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 E R/W RS Vo VDD VSS
ものによって左右どちら向きに並ぶかは異なる(1→14/14←1)

3.電源線
基板上の番号印刷からだけでなく、配線パターンの太さでも電源VDD(+V)/VSS(GND)を判断する。
2本のうちどちらがVDD(+V)かVSS(GND)か、周囲のパターンを見て慎重に確認する。
より広いパターンにつながっているのがVSS(GND)。

4.動作電圧
HD44780は2.7V以上5.5V以下で動作する。互換ICも同じと考えてよさそう。
しかし3.3V専用のLCDモジュールもあるので、まず3.3Vで試し、動作しなかったら5Vで試す。
表示確認のためにVoはVSS(GND)に接続する(文字が最も濃くなる設定)。

以上1〜4は何の保証もなし。試すなら「ダメでもともと」「壊れてもいいや」の覚悟で!

LCDモジュールの基本的な配線
HD44780互換のコントローラで動作するLCDモジュールは、ピンの並び順が違うことはあっても割り当てられる信号の内容は同じです。
データ線が8本。4bitモードで使うなら、このうちDB4〜DB7の4本を使います。
制御線が3本。よくやる方法としてR/W線をGNDに接続し、E線、RS線の2本を使います。
電源線が3本。VDD(+V), VSS(GND)の他、コントラスト(文字の濃さ)を調節するVoがあります。
バックライト付きのLCDモジュールの場合、アノード、カソードの配線もします。
LEDの電流制限抵抗として数十Ω〜100Ω程度、明るさの好みによって決めます。
14 13 12 11 10 9 8 7 6 5 4 3 2 1 15 16
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 E R/W RS Vo VDD VSS A(+) K(-)
データ線 制御線 電源 バックライト
4bitモードではこの4本を使う
4bitモードでは使わない

GNDに
接続

半固定
抵抗
+V
GND
電流制限
抵抗
GNDに
接続
1,2番の内容が逆の場合もある。15,16番の内容、並びが逆の場合もある。15,16番が14番側に並ぶ場合もある。

HD44780互換コントローラが付いたLCDモジュールの例
S-10551D(メーカー不明)

(VSS)1→14(DB7)

SD1602H(SUNLIKE社)

(DB7)14←1(VSS),16(K),15(A)

SC162C(DigiTron社)

(DB7)14←1(VSS),15(A),16(K)

コントローラ:HD44780 KS0066(HD44780互換) S6A0069(HD44780互換)

S-10551D, SD1602Hは秋月電子で購入。SC162Cはaitendoで購入。
SD1602Hは小型でバックライト付き。秋月電子では他にSC1602シリーズなどSUNLIKEのLCDモジュールを多数取り扱っています。
aitendoはDigiTronのLCDモジュールを多数取り扱っています。16x2タイプはSC162シリーズA〜Dがあり、さらにDigiTron製以外の物もあります。他に8x2, 20x2, 24x2, 40x4タイプなどLCDモジュールの品揃えが豊富です。
取扱商品の情報は2010/06現在

SC162Cを工夫して使う
DigiTronのSC162シリーズ(A〜D)を紹介します。
どれもバックライト付き。A/C/Dの文字の大きさはSUNLIKEのSC1602と同じです。Bは大きめ。
SC162A…端子が基板の上辺左寄りに、1→16の順で並ぶ。
SC162B…端子が基板の下辺左寄りに、16←1の順で並ぶ。文字と本体が大きい。
SC162C…端子が基板の下辺左寄りに、14←1,15,16の順で並ぶ。基板の余白が大きい。
SC162D…端子が基板の左側に、7ピン2列で並ぶ。右側にバックライトのA/K端子。

LCDモジュールを使うには配線材の他、コントラスト調節用の半固定抵抗とバックライト(LED)用の電流制限抵抗が必要です。これらの部品を別途用意した小さな基板に乗せ、LCDモジュール本体をピンヘッダ/ピンソケットで取り付ければ、毎回の製作で楽に取り回せる形になります。
実はDigiTronのSC162Cが、このような使い方に向いています。部品が節約できる。

SC162C(REV 1.0)の様子

撮影の加減でバックライトにムラがあるように見えますが、実際は均一に綺麗に光っています。
文字(ドット)もぼやけずカッチリ表示されます。
もちろんバックライトを点けずに文字を表示することも出来ます。

SC162Cは基板の余白が大きいので、コントラスト調節用の半固定抵抗が乗せられます。
しかもお得なことに、バックライト用の電流制限抵抗が既に取り付けられています。


SC162Cに工作する
コントラスト調節の配線について。
基板の余白に穴を開け、半固定抵抗を取り付けます。SUNLIKEのSC1602などは+5Vを分圧してVoに入力しますが、SC162シリーズでは違います。右の図のように配線します。
カバーを留めるツメの下2つ(左、中)のパターンはVSS(GND)とつながっています。利用しましょう。
写真右側、R6の空きパターンはVoとVSS(GND)です。

バックライトの配線について。
写真左側、バックライトのLEDのアノード(A,+)、カソード(K,-)付近にハンダパッドがあります。それぞれVDD(+V)、VSS(GND)につながるようになっているので、ハンダを盛ります。[写真 赤丸の2カ所]
またアノードの線上には抵抗R7([5R1]=5.1Ω)が付いています。これはLEDの電流制限抵抗です。
LEDは6灯ないし8灯だと思われるので、抵抗の値は小さいです。

基板中央の少し下、R/W端子をGNDに接続してあります。R/W端子のピンヘッダは使いません。

【参考】SC162A(VER 3.2)の様子
バックライトの端子付近にハンダパッドはなく、抵抗R7は0Ω.
コントラスト調節の抵抗(SC162CではR6)を付ける空きパターンもなし。
写真のR6は[913]=91kΩ、動作周波数を決める抵抗(SC162CではRFと印刷されている)。

(VSS)1→14(DB7),15(A),16(K)

【参考】SC802シリーズ(3.3V版)の様子 ※28ピンICは大きさ比較のため
 ←とにかく小さい。
SC802A-3.3V(REV 1.2)
バックライト端子にはアノード側に5.1Ωの抵抗あり。カソード側は半田パッドでGNDへつながるが、アノード側にVDDとつながる半田パッドがないので、あまり利用価値がない。
抵抗R6,R7はコントラスト調整のためVDD,VSS,Voをつなぐ空きパターン。実質3端子になっているので半固定抵抗をつなぐのに都合がよい。…のだが、このモジュールはVoを0Vに固定して使うため、実際はこの空きパターンの利用価値は低い。

 ←SC802A-3.3Vより少し大きい。
SC802B-3.3V
バックライト端子にはアノード側に5.1Ωの抵抗あり。アノード側、カソード側ともに半田パッドがあり、それぞれVDD,VSSとつながるのだが、つないではいけない。モジュールが3.3V駆動であるのに対し、バックライト点灯には5Vが必要であるため。ちなみに「削り跡」は最初から付いていた。
※確実にカットするための作業を生産ラインでやっているのか?
右下、抵抗の空きパターンはコントラスト調整のためVoとVSSがつながる。このモジュールはVoを0Vに固定して使うため、もし空きパターンを使うなら0Ωの抵抗を付け、ピン3(Vo)は空ける。

LCDモジュールの動作確認
データシートが見つからず、「多分HD44780互換だろう」と当てずっぽうで配線した場合、本当にそれで合っているか動作確認をします。…というのは冗談としても、ハンダ付けミスはないか、モジュールが壊れていないかを確認するために動作テスト/表示テストをする必要はあります。テスト内容は、「LCD初期化→画面全体に文字を表示」で十分です。

AVRで制御する


AVRに書き込むhexファイル
プログラムはこちら→ダウンロード LCDtest_v100.zip

適当にピン数が多くて安価なATtiny2313を使います。回路図は今回作ったSC162C用ですが、他のLCDモジュールでも信号線を合わせればプログラム(hexファイル)はそのまま使えます。

SC162Cは、SUNLIKEのSD1602と比べてバックライトのピン(15,16)の並びが逆であることに注意。
ただし15ピンがアノード(A,+)、16ピンがカソード(K,-)であることは同じです。もしSD1602と共用のケーブルを作るなら、バックライトのA/K逆接続を回避するよう工夫してください。

同梱のlcdlib.c/.hは自作のLCD制御ライブラリです。このサイトで公開しているLCD関係の工作でも同じものを使っています。今後もバージョンアップを重ねて行きますが、上記のものはこの記事公開時点での最新版です。

PCで制御する


PCからパラレルに信号線を操作する方法でLCDモジュールを制御します。
ここでは仮想COMポートのモジュールであるAVR-CDC(CDC-IO)のATtiny2313版を使いました。
AVR USB接続の周辺機器をPCから操作する〜仮想COMポート〜」で作ったもの。

USBコネクタにつないだAVR-CDCはPCからはCOMポートに見え、プログラム上ではCOMポートをオープンして接続します。またAVR-CDCは、自身であるATtiny2313のポートをプログラム上から操作することができます。それによりLCDモジュールが制御できるようになります。

AVR-CDCでなくとも、USB-シリアル変換ICでよく知られているFT232Rをビットバンモードで使い、同様のLCD制御プログラムを組むこともできます。要するに、LCDモジュールの電源を確保し、6本の線をパラレルに操作できる方法なら何でもよいのです。

PC用LCDテスト表示プログラム
テスト表示プログラム本体と説明書→ダウンロード LCDCtrlTest_v100.zip
VisualStudio2008のプロジェクト→ダウンロード LCDCtrlTest_vs2008proj.zip

LCDモジュールSC162CをPCで制御する (動画)
ケータイで撮影
5fps 無音

動作環境や使用方法は同梱の説明書を見てください。
開発環境: WindowsXP、.NET Framework 3.5、Visual Studio 2008 Exp.Edition/C#

動画説明
テストプログラムを実行すると、LCDモジュールにAVR版と同じ画面が表示され
(1234567890123456/ABCDEアイウエオabcdeカ)、2秒後に上記写真の画面に切り替わります。
1行目は表示がバグってるわけではなく、もともとそれらの記号を表示するようになっています。
2行目の1文字目はユーザー定義文字です。PCからでも文字の定義は出来ますよ、というデモ。
その後の負数は32bit符号付き整数の最小値です(C#のInt32.MIN_VALUE)。

AVR-CDCとの通信が9600bpsなので表示が遅いです。1行3秒くらい。
通信速度を上げれば表示は速くなります。AVR-CDCをバルク転送モードで使うか、FT232Rへ移行。

プロジェクトフォルダ内の主なファイルの説明
[CdcIO.cs]
AVR-CDCを操作するクラス。オリジナルのcdcio.csにRxD/TxDの制御を加えたもの。
AVR USB接続の周辺機器をPCから操作する〜仮想COMポート〜」などで使用したもの。今回RxD/TxDは関係なし。

[ATtiny2313.cs]
ATtiny2313のSFR(Special Function Register)とビットの値を定義したもの。
AVR USB接続の周辺機器をPCから操作する〜仮想COMポート〜」などで使用したもの。

[LcdLib.cs]
AVRで使用したlcdlib.c/.hをAVR-CDCで使えるように移植したもの。

文字コードの違いに注意
C#(.NET Framework)でデフォルトの文字コードはUnicodeです。LCDモジュール側の文字コードはShift-JISです。従って文字を表示するときに、文字コードを変換する必要があります。

関連サイト
秋月電子通商 …SC1602/SD1602他を販売。
aitendo …SC162シリーズ他を販売。データシートあり。
SUNLIKE …SC1602/SD1602シリーズのメーカー。データシートあり。
DigiTron …SC162シリーズのメーカー。寸法図(ピンアサイン付き)あり。
Recursion …AVR-CDCを公開。トップ - Prose - USB Interface (- Japanese) / CDC-IO
FTDI …FT232Rのメーカー。ドライバあり。
Microsoft …Visual Studio(この記事公開時点での最新版は2010)、.NET Framework 3.5(WindowsXPで必要)


◆ ◆ ◆
「いつものヤツ」とは違うLCDモジュールも、実はいつも通りに使えます。
選択肢と楽しみが増えました。


(C) 『昼夜逆転』工作室 [トップページへ戻る]
inserted by FC2 system