R2/10/29:更新
テスト動作中のLCDPicでI2c_LCDアダプターを使う
こんな価格でいいの?と思いながら購入したLCDとArdiunoでの利用をうたったI2cのインターフェースモジュールがあります。何とかPICで動作させられないかと模索していましたが、やっと使える目途がたちました。
![]()
<使用部品について:>
- ◎PIC : 12F683:12F1822というI2c用のPicもありますが、あえて汎用性の高い手持ちのものを使いました。
- ◎LCD : KKHMF DC 5V 1602 LCD:1台送料込みで200円以下という安さにつられて購入しました。製品についての仕様・説明等はありませんが、多分同様の製品と大きくは違わないであろう・・という希望的観測で買ってしまいました。
- ◎アダプタ: KKHMF I2c シリアルインターフェースモジュール:今回のテストの対象パーツです。LCDでの表示は分かり易くてよいのですが、最低6個のポートが必要になります。I2cの利用により2個のポートで制御でき、また安さにもつられて、使える確信のないままに購入しました。16本のピンヘッダーがLCDの端子穴に合致します。
<インターフェースの説明>
- I2cのLCDインターフェースは数種類あるようです。
- 私の購入したのは、PCF8574Tを使ったもので、LCDとの対応は次のようになっている模様です。
LCD DB7 DB6 DB5 DB4 (BL) EN RW RS PCF8574T P7 P6 P5 P4 P3 P2 P1 P0 - (BL)はバックライトのon/off用で、"1"のとき点灯、"0"で消灯です。
- 表示の濃淡はインターフェースに取り付けられたVRで行います。中央付近よりMax寄りでやっと表示文字が確認できました。
- スレーブ・アドレスは、0x27 でした。
<プログラムとテスト回路について>==>ソース(Hi_tech_c)
- 開発環境は、MPLAB IDE v8.84 です。
- 動作テスト用ですから、LCDには文字とカウントアップする数字が表示されるだけです。(回路図参照)
- GP2につながるLEDは、main()のwhile_loopの動作確認のためです。コントラスト用のVRを動かさないと文字が表示されていないように見えます。
- 基本的に上下の4ビットずつ2回に分けてデータをLCDに送信しますが、途中(Pic → アダプタ)が I2c 経由のシリアル転送です。
- 初期化の初めに『4ビットモード』の'2'を送信すれば、後はLCDを直接制御する場合と同様です。
- I2cを介している分表示の反応は遅いと思われますが、私のLCDの利用状況では2本の信号線で制御出来て必要十分です。
- ◎参照させていただいたページ
ありがとうございました。
- http://oasis.halfmoon.jp/『PIC microcontroller用I2C汎用ライブラリ』
- https://qiita.com/『PCF8574Tを使ったLCD制御』
- http://rikei60.web.fc2.com/toybox/PCF8574/index.htm