ブレッドボードラジオデジタルICの実験

LCD・液晶ディスプレイに手動で文字を表示する

 LCD・液晶ディスプレイの画面に手動で文字を表示する実験をしました。LCDは本来マイコンでプログラムを組んで動作させるものですが、ここでは手回しのデジタルスイッチで文字コードを設定して、チマチマと一文字ずつ表示していくというしょうもないことをやっています。
 実験にあたっては、「ラジオの製作」1998年12月号の岩上篤行氏の記事を参考にしました。ただ、雑誌記事の通りではうまくいかないところがあったので、回路や操作手順を一部変更しています。LCDは秋月電子通商で売っていたサンライク社のSC1602BSLBを使用しました。このLCDは16文字x2行の表示ができます。

 写真5

1. 回路と部品

 第1図

 今回実験した回路は上記の通りです。LCD本体の他はスイッチが5個とCR部品が少しの比較的簡単な回路です。
 以下、LCDの端子番号の順に回路の説明をします。
 1番はVddです。電源のプラスにつなぎます。電源電圧は5Vです。
 2番はVss、電源のマイナスです。
 3番(Vo)はLCDのコントラストを調節するための端子です。この端子の電圧を低くするほどコントラストが強く(表示が濃く)なります。Vo=0Vでは濃すぎて文字を表示する枠までうっすら見えてしまいます。逆にVo=5Vでは薄すぎて何も見えません。通常は下記のようにボリュームで適度なコントラストに調節するようですが、今回はダイオード1本で簡単に済ませました。だいたいVo=0.3〜1Vくらいが実用範囲だと思います。

 第2図

 4番はRS(レジスタ選択)端子です。文字入力のときは「1」(電源電圧に近い電圧)、カーソル移動などそれ以外の機能を使うときは「0」(0Vに近い電圧)に切り替えます。「1」はHレベル、「0」はLレベルのことですが、ラ製の記事でもLCDの取扱説明書でも「1」と「0」で説明されているので、本稿でもそれに倣います。切替はS4(3Pトグルスイッチ)によって行ないます。
 なお、この実験の終わり近くになってようやく気が付いたのですが、S4と電源プラスの間の抵抗R10は必要ありません。S4の「1」側端子は開放にしておいても同じです。

 5番はR⁄W(読出し⁄書込み切替)です。読出しのときは「1」、書込みのときは「0」に設定します。今回は文字を書き込むので、5番は電源のマイナスにつなぎます。「読出し」というのはどういうことかよくわかりません。
 6番はE(イネーブル)という端子です。普段は「0」にしておいて、RSや後述のDB0〜DB7での設定を実行するときに一瞬だけ「1」にします。パソコンのEnterキーのような役割です。本器では押しボタンスイッチ(S3)を用いています。

 7〜14番はデータビット端子(DB0〜DB7)です。入力する文字のコード番号やカーソルの位置などを8ビット、つまり8桁の2進数で設定するための端子です。8本の端子のそれぞれがスイッチで「1」あるいは「0」に切り替えられるようにしておく必要があります。独立した8個のスイッチでは切替えが大変なので、ここでは0〜15のデジタルスイッチを2個用いました。
 S1は上位4ビット(DB7〜DB4)の切替え用、S2は下位4ビット(DB3〜DB0)の切替え用です。デジタルスイッチは内部に4個のスイッチが組み込まれていて、つまみを回すと0〜15の番号に応じてA,B,C,Dのスイッチが下の図のように切り替わります。スイッチが開いている状態が「0」で、このときDB端子はアース(R1〜R8でプルダウン)されます。スイッチが閉じた状態が「1」で、このときDB端子は電源のプラスにつながります。なお、0〜15のうち10〜15はA〜Fで表わされることもあります。

写真2
第3図 写真2

2. ブレッドボード上の配線

 下に本器のブレッドボード上の配線図と試作写真を掲げます、LCDはアルミパネルに取り付け、スズメッキ線のプラグ(自作)を付けてボードに挿せるようにしました。また、S3はプッシュONとプッシュOFFが組み合わさった3Pのプッシュスイッチです。

 第4図

 写真4

 写真3

 写真3

3. 文字の入力方法

 LCDに文字を表示するための操作手順について書きます。まずは1行目の1文字目(上段の左端)にアルファベットの「A」を出してみます。

手順1 S5(電源スイッチ)をONにする。
 →LCDのバックライトが点灯し、1行目(上段)全体がうす黒くなっています。
手順2 S4=0、S1=3、S2=8にセット。
手順3 S3をチョンと1回押す。
 →LCD画面の表示がすべて消えてまっさらになります。
手順4 S4=0、S1=0、S2=14にセット。
手順5 S3をチョンと1回押す。
 →1行目の1文字目にカーソルが表示されます。これで文字入力の準備ができました。
手順6 S4=1、S1=4、S2=1にセット。文字入力のときはS4(RS)を「1」にします。
手順7 S3をチョンと1回押す。
 →1行目の1文字目に「A」が表示され、カーソルは2文字目に移動します。

 続いて2行目(下段)の1文字目にカタカナの「ア」を入力します。

手順8 S4=0、S1=12、S2=0にセット。
手順9 S3を1回押す。
 →カーソルが2行目の1文字目に移動します。
手順10 S4=1、S1=11、S2=1にセット。
手順11 S3を1回押す。
 →2行目の1文字目に「ア」が表示され、カーソルは右隣へ移動します。

 最後にすべての文字を消去してカーソルを元へ戻します。

手順12 S4=0、S1=0、S2=1にセット。
手順13 S3を1回押す。
 →すべての文字が消え、カーソルは1行目の1文字目に移動します。

 ざっとこんな感じです。S4,S1,S2による設定を実行するときは、その都度S3を1回押します。2文字目以降を入力するときは手順6〜7(10〜11)を繰り返します。2文字目にも1文字目と同じ文字を入力するときは、あらためて文字コードを設定する必要はなく、S3を続けて押すだけでOKです。

4. 文字コードの一覧表

 上記の「手順6」で「A」を表示するときS1=4、S2=1にセットしたのは、「A」の文字コードが「4-1」だからです。このLCDは数字、アルファベット、カタカナ、その他の記号などを表示できますが、それぞれの文字には決まったコード番号があります。下記はLCDの説明書に載っていた文字コードの一覧表です。「上位ビット(DB7〜DB4)」のところに横に並んでいる数字がS1で設定するコード、「下位ビット(DB3〜DB0)」のところに縦に並んでいる数字がS2で設定するコードです。文字の割り当てのないコード番号を指定すると、スペース(1文字分の空白)が入力されます。

 第5図

 デジタルスイッチを使わずに8個の独立したスイッチで文字コードを指定するときは、上位ビット(S1)、下位ビット(S2)の数字をそれぞれ2進数に直してDB7〜DB0用の8個のスイッチを切替えます。例えば「A」の場合、上位ビットが「4」すなわち2進数で「0100」、下位ビットが「1」(2進数で0001)ですから、DB7〜DB0の各スイッチを下記のようにセットします。

DB7DB6DB5DB4DB3DB2DB1DB0
01000001

5. その他の機能

 わからないながらもスイッチをあれこれいじくっているうち、下記のような機能を「発見」しました。いずれの操作のときもS4(RS)は「0」にしておきます。また、S1,S2をセットした後、S3を1回チョンと押すことで設定が実行されます。

 S1=1、S2=0。カーソルが1文字分左へ移動します。S3を押すたびに1文字分ずつ左へ動きます。S2は0から3のどれでもOKです。
 S1=1、S2=4。カーソルが1文字分右へ移動します。S3を押すたびに1文字分ずつ右へ動きます。S2は4から7のどれでもOKです。
 この機能は入力した文字を訂正するときに使えます。間違えた文字のところにカーソルを持っていき、S4を「1」に切り替えて正しい文字を入力します。元の文字は消えて後から入力した文字が上書きされます。

 S1=1、S2=8。文字列全体が1文字分左へ移動します。2行同時に動きます。S3を1回押すたびに1文字分ずつ左へずれていきます。S2は8〜11のどれにセットしても同じです。
 S1=1、S2=12。上記と反対に、文字列が右へ動きます。上記の操作で文字列を左へ動かすと、左端の文字は画面から消えますが、右へ戻すといったん消えた文字が再び現れます。

 S1=4、S2=0。カーソルが2行目の1文字目へジャンプ。
 S1=4、S2=1。カーソルが2行目の2文字目へジャンプ。
 S1=4、S2=2。カーソルが2行目の3文字目へジャンプ。

 S1=8、S2=0。カーソルが1行目の1文字目へジャンプ。
 S1=8、S2=1。カーソルが1行目の2文字目へジャンプ。
 S1=8、S2=2。カーソルが1行目の3文字目へジャンプ。

 これらはカーソルを離れた場所へ一気に移動させる機能です。S2を「n」にセットするとカーソルは「n+1文字目」へ飛びます。カーソルが飛んだ場所から右方向へ上書きで文字を入力できます。これらの機能が使えるのは、S1=0、S2=14 で左上にカーソルを表示した後に限ります。

ほかにもいろいろありそうですが、現段階では見つけられません。

6. 4ビット動作

 これまで書いてきたのはDB7〜DB0の8ビットを使って文字を表示する方法ですが、このLCDはDB7〜DB4の4ビットのみを使用して文字表示や機能の設定をすることもできます。4ビット動作の場合は、まずS1で上位ビット(DB7〜DB4)のデータをセット、S3を1回押す、続いて同じくS1で下位ビット(DB3〜DB0)のデータをセット、S3を1回押す、という手順になります。つまり、データ設定の操作をS1のみで2回行なうわけです。

 最初に4ビットでの書込みを設定するためにS2を「8」にセットする必要があるのですが、それ以降はS2の操作は不要です。S2はどの数字にセットしてあっても無関係になります。4ビット動作で1行目の1文字目に「A」を表示する手順は以下の通りです。

手順1 S5(電源スイッチ)をオンにする。
手順2 S4=0、S1=2、S2=8にセット。
手順3 S3を1回押す。
 →これで4ビットでの書込みが可能になりました。以降、S2の操作はありません。
手順4 S4=0、S1=0にセット。
手順5 S3を1回押す。
 →この段階では何もおきません。
手順6 S4=0、S1=14にセット。
手順7 S3を1回押す。
 →ここでカーソルが表示されます。
手順8 S4=1、S1=4にセット。
手順9 S3を1回押す。
手順10 S4=1、S1=1にセット。
手順11 S3を1回押す。
 →「A」の文字が表示されます。

 S2、すなわちDB3〜DB0は「8」(2進数の1000)に固定しておいてかまわないので、最初から4ビットで実験する場合は下のような回路にすれば、S2とR5〜R8が不要になって部品が節約できます。DB端子はLCD内部でプルアップされているため、DB3を開放にすれば自動的に「1」になります。

 第6図

7. 各部の電圧と消費電流

 本器の消費電流は、S1〜S4をすべて「0」にしたときが約15mA、S1〜S4をすべて「1」にしたときが約20mAでした。LCDの各端子の電圧と電流については下の第7図を見てください。ただし、一部計算で求めた値を記入しています。私が購入したLCDはバックライト(LED)が付いていて、100Ωの抵抗を介して電源につながっています。これに流れる電流が13.7mAですので、LCD本体の消費電流はごくわずかです。バックライトにはもう少し電流を流した方が明るくなって良いと思います。

 LCDの端子のうち、RS(4番)、R/W(5番)、DB0〜DB7(7〜14番)は数十kΩ程度の抵抗でプルアップされている(電源のプラス側につながっている)ようです。そのため、直接あるいは10kΩ以下の抵抗でアースすると、0.085mAの電流が流れ出します。これらの端子を電源のプラスにつないだときはほとんど電流は流れません。

 E端子(6番)はプラスにつないでもマイナスにつないでもほとんど電流が流れません。C-MOSのゲート入力のようになっているのだと思います。Vo(3番)端子から流れ出る電流は、端子電圧が1V以下の場合は0.15mA前後です。

 第7図

 写真1