16×2キャラクタLCDモジュールを使ってみよう
意外に時間のかかるhello, worldへの道
マイコン工作をしていくと、状態やデータの確認に何かと表示機がほしくなります。単純なものならLEDで何とかなるのですが、文字や数値表示ができるものがあれば見栄えがいいし、デバッグに使うときも手段が広がります。
今回はPICマイコンの実験として、秋月電子通商のAKI-PIC18キャリーボードキットを使って付属の16×2キャラクタ液晶 SC1602BS*Bに何か表示させてみようと思います。
↓AKI-PIC18キャリーボードキット
AKI-PIC18キャリーボードキットはPIC16F84Aマイコンモジュールにマザーボードを追加したものです。マザーボードにはキャラクタLCD等の周辺回路が搭載されています。このキットはLCDモジュールにキャラクタを表示したり、D-Sub9ピンコネクタからシリアル通信ができます。PICを使った簡単な学習実験ならコレで十分でしょう。
AKI-PIC18キャリーボードキットの内容物: マザーボード PIC16F84Aマイコンモジュール シリアル通信用D-Sub9ピンコネクタ(メス) 16×2キャラクタLCDモジュール SC1602BS*B LED3色 タクトスイッチ×3
PIC16F84Aマイコンモジュールは、マザーボードといくつかの部品を追加したセットです。
↓PIC16F84Aマイコンモジュール
PIC16F84Aマイコンモジュールキットの内容物: PIC16F84 10MHzのセラロック 5Vの3レギュレータ RS232C用ドライバIC
写真ではPICを直接半田付けしていますが、2000円以下から始められるPIC入門のライタを使うならICソケットを使う必要があります。
SC1602BS*BはSUNLIKE社の16×2キャラクタのLCDモジュールです。これには日立のHD44780互換のインターフェースICが使われています。web上で公開されている電子工作の記事でキャラクタ液晶といえばHD44780互換のものが定番です。HD44780についてはこのサイトが参考になります。
HD44780にはキャラクタフォントが内蔵されているので、カーソル移動のコマンドとキャラクタコードを送信すれば文字が表示されます。
↓SC1602BS*B
写真は下は最初に買った古いの。上は予備に買った比較的新しいものです。
AKI-PIC18キャリーボードキットが見かけなくなってきたので、今回の実験で必要な部分について回路図を描いてみました。
↓回路図 PDF版はこちら
2930L05は5Vの低ドロップレギュレータです。まぁ9Vも突っ込んでいるので、低ドロップの必要はありませんけど。
C言語の聖典「K&R」以来のお約束としてhello, worldを表示してみます。PCのコンソールに出力するだけなら僅か数行のhello, worldも、マイコンでイチから作るとなるとイロイロ考える必要があります。
SC1602BS*Bはキャラクタフォント内臓のLCDモジュールです。キャラクタはほぼJISコード(ASCIIコードにカナを追加したもの)に準じています。まず、LCDモジュールの初期化し、カーソルを移動して、表示するキャラクタコードを送信します。
SC1602BS*Bには、送信に8ビットモードと4ビットモードがありますが、できるだけPIC16F84のピンを使わないようにしたいので、4ビットモードを使います。データシート通りに初期化しデータを送信します。データシートは舐めるように読みましょう。
↓動作風景
hello,worldのサンプル
アセンブラソース:
lcdtest.asm
アセンブラソースをアセンブルしたhexファイル:
lcdtest.hex
LCDモジュールとPICはキャリーボード上で結線されています。PICにプログラムを書き込んで電源を入れるだけで動作します。
HもWも小文字だろ…という突っ込みは無しです。
・・・。
・・・・・・。
・・・・・・・・・これだけ。
液晶モジュールが高機能なおかげで、結構簡単に表示できました。プログラムはアセンブラなので、長々としていますが。
何はともあれ、電子工作の世界でテキスト出力ができました。
これでパラメータやコンソールの表示などができます。