FRDM-KL25Zと液晶表示器

はじめに

 液晶表示器はキャラクタディスプレイとグラフィックディスプレイの二つに分かれます。
キャラクタディスプレイはキャラクタコードで決められた文字コードで表示を制御します。漢字は使用できませんがアルファベットや記号、カタカナが表示できます。
一方、グラフィックディスプレイは320×240などドット単位で表示を制御します。漢字や図形など自由に描画できますが、制御も大変になります。

ソフトウェアの入門書に必ず出てくる”Hello World!”はディスプレイにHello World!という文字列を表示するプログラムです。
組込マイコンでのHello WordはLEDの点滅が一般的です。デモプログラムBulinkyでLEDの点滅が出来たら、液晶ディスプレイにHello World!と表示して見ましょう。
更にタクトスイッチでLEDをON/OFFしたり、文字を表示したりできるようにします。
これで入力と出力が制御できるようになります。

液晶キャラクタディスプレイ

 秋月電子のホームページでキャラクタディスプレイは多数販売されています。分類は文字数、バックライト、入出力インターフェースなどです。

文字数
1行の文字数と行数で16文字2行であれば16x2と表現します。
8x2、16x2、20x2、20x4、40x4など

バックライト
液晶を後方から照らすLED照明の色や液晶文字色などで違います。
LED色はグリーン、アンバー、ホワイトなど
文字色は通常のグレーやブルー、反転文字のように表示される白抜きなどが有ります。そのほかにも自発光する有機ELタイプが有ります。

入出力インターフェース
4ビットバス方式が一般的ですが、最近はI2CインターフェースやSPIインターフェースもあります。
今回使用するのは超小型LCDキャラクタディスプレイモジュール(16×2行バックライト緑) ¥900です。

接続を以下に示します。

この液晶表示器は1列のピンヘッダで接続できるので、ブレッドボードやユニバーサル基板で配線が楽に行えます。
はじめにピン番号に注意してください。15,16,1〜14となっています。
15,16はバックライト用のピンで15ピンに100Ωを直列に入れて+5Vに接続します。
16ピンはGNDに接続します。VDDは+5V、VSSはGND、VEEは液晶のコントラスト調整電圧の入力ですから10〜20kΩのボリュウムで調整した電圧を加えます。

R/Wはリードライト制御端子ですが、ライトしかしないのでGNDに固定します。リードが必要な時はこの端子をHiにするとリードモードになります。

RS端子とE端子、D4〜D7の6本をポートA0〜A5に接続します。

液晶表示器は+5V動作、FRDM-KL25Zは3.3V動作なのですが、液晶表示器の入力がTTLになっているので、0.6V以下でLow、2.2V以上でHiと認識します。
3.3Vで直接接続する事が出来ます。

最初はコントラストを調整して文字が出るように調整が必要です。
接続を間違えなければ必ず表示できます。
もし表示しない時はもう一度接続を確認してください。

基板の製作

回路図の左側が液晶表示。右側がスイッチ入力回路です。
タクトスイッチはON/OFFする時にチャタリングを起こす可能性が有りますので0.1uFのセラミックコンデンサを並列に接続します。D0〜D4端子を入力に設定すると内部にプルアップが設定されるようなので、スイッチを押さない時は3.3Vで、押すと0Vに変化します。CN1とCN2はフォトトランジスタを接続してスイッチ入力としますが、今回はまだ使用しません。
スケールスピードメーターで使用します。

使用する部品を以下に記します。全部ネット通販で購入できる物です。リンクを貼ってありますので必要に合わせてご覧ください。尚リンク先は予告なく変更されるので見る事が出来ない場合はご容赦ください。秋月電子、千石電商、若松通商の3社で全て入手できます。部品は全部合わせても千円以内です。工具は別です。

ユニバーサル基板
ユニバーサル基板はArduino用ユニバーサル基板 ガラスコンポジット を使用します。

ピンヘッダとピンソケット
液晶キャラクタディスプレイに取り付けるピンヘッダは秋月電子のロープロファイルピンヘッダ(低オス) 1x40(40P) 9.54mmを使用します。(写真左)
基板側はシングルピンソケット(低メス) 1x20 (20P)になります。(写真右) どちらも必要なピン数でカットして使用します。

タクトスイッチ
タクトスイッチは秋月電子のボタン付タクトスイッチ(緑色)を4個使用します。

半固定抵抗(ボリュウム)
私が使用した物は一般に販売されていないので若松通商のCT6S 10kΩを推奨します。
液晶キャラクタディスプレイの下側に取り付けるので半固定抵抗は横型の物を選んでください。

コネクタ
コネクタは千石電商で購入できる日本圧着端子(JST)のS2B−XH−A(LF)(SN)XHコネクタ 基板用ポスト 2P L型を使用します。
最もポピュラーな2.54mmピッチの基板用コネクタです。
今回は不要ですが配線側のコネクタハウジングも合わせて購入すると良いでしょう。尚、ハウジングには専用のコンタクトと圧着工具が別途必要です。
写真は左から基板用ポスト、コネクタハウジングコンタクト圧着工具(エンジニア PA-20)

固定抵抗
R1,R2 10kΩは1/8W以上であれば何でも構いません。
秋月電子ではカーボン抵抗(炭素皮膜抵抗) 1/6W10kΩ (100本入)を推奨します。100本も要らないと思うかもしれませんが、一袋\100です。
10kΩや47kΩはマイコン関係では良く使うので無駄にはならないと思います。
R3 100Ωは液晶キャラクタディスプレイに付属の物を使用します。

配線材
パターンの配線にはスズメッキ銅線を使用します。サンコー電商 TCW 0.29 L−20 など太さ0.3mm前後の物を選んでください。

部品面
スイッチやピンソケットボリュウム、コネクタ、抵抗など部品面に取り付ける部品を指定の位置に取り付けます。下図の左がパターン図です。
赤い線は半田面のパターン、緑の線は部品面のジャンパー線です。ジャンパー線はメッキ線に被服を被せる等、絶縁が必要です。私は#28など普通のビニール線を適当な長さに切って芯線を抜き、メッキ線を通して使用しています。
右の写真は部品だけを取り付けた状態です。半田面のピンプラグは最後に半田付けします。このユニバーサル基板のピンプラグ用のパターンは一つ内側のスルーホールと接続されていますので、部品を取り付ける前に確認しておくと良いでしょう。

プログラム
下図が今回コーディングしたプログラムの全てです。
今回のプログラムは左から3つのスイッチを押すと対応する色のLEDが点灯し、一番右のスイッチを押すとLCDにアスキーコードの30h(0)から順番に1文字ずつ表示するという物です。
アスキーコードを以下に示します。

  0 1 2 3 4 5 6 7
  0 NUL DLE SP 0 @ P ` p
 1 SOH DC1 ! 1 A Q a q
 2 EXT DC2 " 2 B R b r
 3 EOT DC3 # 3 C S c s
 4 EOT DC4 $ 4 D T d t
 5 ENQ NAK % 5 E U e u
 6 ACK SYN & 6 F V f v
 7 BEL ETB ' 7 G W g w
 8 BS CAN ( 8 H X h x
 9 HT EM ) 9 I Y i y
 A LF SUB * : J Z j z
 B VT ESC + ; K [ k {
 C FF FS , < L \ l |
 D CR GS - = M ] m }
 E SO RS . > N ^ n ~
 F SI US / ? O _ o DEL

今回のプログラムは将来、スケールスピードメータにする為、プログラム名はScaleSpeedとしています。ImportでTextLDCというライブラリをインポートし、ヘッダファイルTextLCD.hをインクルードします。
18行目TextLCD関数でRS,E,D0,D1,D2,D3の接続ポートを指定します。この関数はLCDの初期設定を実施してくれるので後は文字列データを送るだけです。
lcd.printfが文字列を表示する関数です。pc.printf関数はデバック用にCOMポートに文字列を出力する関数です。スイッチの名前もスケールスペードメータ用に付けました。

コンパイルしてダウンロードされたバイナリーファイルをドラッグ&ドロップでFRDM-KL25Zにコピーすれば動作します。