LCDの表示ができた。ダメだった理由は単純、LCDのRSとEの端子を逆に思っていたから。

折角なので、作ったプログラムを整理してここに出しておこう。

<今回のハード環境>
 PIC16F88
 クロック 外部水晶発振子(手持ちの19.6608MHz+22pFコンデンサ2個)
、LCD 8文字x2行 ACM0802C-NLW-BBH
 電源 NiMH単三充電池4本(実測電圧約5.1v)

<PIC16F88の各ピンの割り当て>
 1 pin (RA2) なし
 2 pin (RA3) LCD-RS (出力)
 3 pin (RA4) LCD-E (出力)
 4 pin (RA5) なし
 5 pin  GND
 6 pin (RB0) LCD-DB4 (出力)
 7 pin (RB1) LCD-DB5 (出力)
 8 pin (RB2) LCD-DB6 (出力)
 9 pin (RB3) LCD-DB7 (出力)
 10 pin (RB4) なし
 11 pin (RB5) LED (出力)
 12 pin (RB6) なし
 13 pin (RB7) なし
 14 pin +5V
 15 pin (RA6) 外部クロック
 16 pin (RA7) 外部クロック
 17 pin (RA0) なし
 18 pin (RA1) なし

<LCD各ピンの割り当て>
 1 pin GND
 2 pin +5V
 3 pin 20kΩ半固定抵抗(コントラスト調整用)
 4 pin RS (PIC 2pinとつなぐ)
 5 pin R/W (GNDにつなぐ)
 6 pin E (PIC 3pinとつなぐ)
 7 pin DB0 (GNDにつなぐ)
 8 pin DB1 (GNDにつなぐ)
 9 pin DB2 (GNDにつなぐ)
 10 pin DB3 (GNDにつなぐ)
 11 pin DB4 (PIC 6pinとつなぐ)
 12 pin DB5 (PIC 7pinとつなぐ)
 13 pin DB6 (PIC 8pinとつなぐ)
 14 pin DB7 (PIC 9pinとつなぐ)

以上の接続でも分かるように、LCDは4ビットモード表示でやっていた。

<ソフト環境>
 MPLAB IDE v8.73
 HI-TECH C Compiler ver 9.81 (Lite Mode)

LCDの表示をテストするために作成したプログラムは2つ、ヘッダファイルは1つ。
 lcd.h lcd.cの中に作られた関数を利用するためのヘッダファイル
 lcd.c LCD表示用ドライバ
 main.c LCD表示用テストプログラム

注意して欲しいのは、重要な定義2つが lcd.c のなかにされているので、実情に合わせてそれらを修正しないといけない。
① 4ビット表示モードに対応するピン6本の割り当て
 PICの余ったピンを使えばいいわけなので、クロックや電源、GND以外のピンを適宜割り当てること。ただ、PICによっては、出力として使えないピンがある。
② クロック数の定義 _XTAL_FREQ
 例に倣って、実際のクロック数で書きなおすこと。

110816-3.jpg

Comments are closed.

Post Navigation