• 締切済み

PICマイコンで工作

初心者なのですが、PICマイコンでLCD表示に挑戦したいと思っています。 そこで皆さんにお聞きしたいのですが、プロットボード上にPIC16F873を利用して回路を作成したのですが、何も表示されずただ■■■■■■が表示されるのみです。 何が原因なのか全然わからないので皆さんのご意見をお聞きしたいのですが・・・。 よろしくお願いします。 LCD Vdd・・・5V Vss・・・GND Vo・・・・20KΩ可変抵抗 RS・・・・RB3 R/W・・・RB2 E・・・・・RB1 DB0、DB1、DB2、DB3・・・GND DB4・・・RB4 DB5・・・RB5 DB6・・・RB6 DB7・・・RB7 PIC MCLR/Vpp・・・5V Vss・・・GND OSC1・・12.8MHz VDD・・・5V このような感じです。 プログラムは以下のHPを参考にさせて頂きました。 http://speana-1.hp.infoseek.co.jp/lcd/lcd_4/lcd_4.htm

みんなの回答

回答No.1

使用しているLCDモジュールが、コントローラーにHD44780U互換のものを使用していると想定して解答します。 このモジュールは、電源だけをONにして初期化を行わない(もしくは、正しく初期化を行わない)と、■■■■■■が表示される状態になります。 多くの場合、LCDモジュールの初期化の失敗は信号のタイミングを正しく制御できていないのが原因です。 正しいタイミングはLCDモジュール(もしくは、コントローラーチップ)の仕様書やデータシートに書かれています。 HD44780Uのデータシートは、オークス電子のページにあるものを見ればいいでしょう。 データシート(英文) http://www.oaks-ele.com/oaks8/cd-rom_ver2/HD44780.pdf このデータシートには、制御信号の変化のさせ方が、58ページ Timing CharacteristicsのFigure 25,26に記述されています。49ページ Bus Timing Characteristicsの項目に、各信号の満たすべきタイミングが記載されています。 これをすべて満たすような制御をソフトで行う必要があります。tAS,tPWEH,tAH,tDSW,tHを実際の制御と比較してみてください、このどれも仕様を満たさなければなりません。(多くの場合NOP命令でタイミングを調整して仕様を満たすようにします。NOP命令が12.8MHzでどれだけ時間を消費するか計算してタイミング調整に使用する個数を決めます。) 初期化の手順は、46ページのInitializing by InstructionのFigure 24 4-Bit Interfaceに記載されています。このように動作させているか確認してみてください。 また、54ページ Electrical Characteristics Notesに記載されているとおり、信号RS,R/W,DB0-7はチップ内部でプルアップされる構造のため、4bitバスモードで使用する場合でもDB0-3はオープンで使用してかまわない構造になっています。(直接GNDに繋いだ場合このプルアップが無駄な電力を消費します。microchipのアプリケーションノートには4bitで使用する場合の回路図はGNDに繋ぐよう書いてあるのでこうする人が多いようです。) 一方、信号Eはこのプルアップの回路が無いため、電源ONからPICが初期化動作開始するまでに信号レベルが不安定になり誤動作しないように適当な抵抗でプルダウンしておいたほうがより好ましいようですね。

参考URL:
http://www.oaks-ele.com/oaks8/cd-rom_ver2/HD44780.pdf
Hakaseminarai
質問者

お礼

参考にさせて頂きます。ありがとうございました。