I2CLCD AQM0802AをPICマイコンで表示(PIC12F675)

Topics XC8 PIC12F675

はじめに

最近ではI2CタイプのLCDが一般的になり、少ないピン数のマイコンでも簡単にLCDに表示できるようになりました。ただ、PICマイコンとI2CLCDとの接続については、記事が少ないようなので、自分で作ってみました。ある案件で圧力センサを直読できる冶具が欲しかったのもあり、実用を兼ねた製作です。
PIC12F675を選んだのは、手持ち在庫を減らしたかったというのもあります。

まだ暫定公開なので、徐々に記事を整理していきたいと思います。

特徴

MSSPエンジンを積んでいない12F675などでも使えるように、ソフトウェアによるI2C制御としました。12F1822にすれば、プログラム容量2KWまで使えるので、printf構文が活用できます。
I2CとつながるのはLCDだけと想定しているため、I2Cクロックをトーテムポール出力、データを入力に切り替えて内部プルアップを有効にすることでスリーステートを実現しています。

回路図


必要最低限の回路構成です。3.3Vはシリーズレギュレータやスイッチングレギュレータなどで別途用意します。ICSPコネクタは省略しています。

プログラムダウンロード

Date version Build File Device note
New
 2017/6/28
0.01  MPLABX v3.65
XC8 v1.42
ii2c_lcd.X_20170628-012733.zip PIC12F675  サンプルプログラムとして公開

詳細説明

今回は圧力センサー(DPH-102-M5-R-C5パナソニック)を使用しましたが、main.cを眺めると、そんなに大げさなことはやっていません。
応用は容易にできると思います。PIC12F675の場合stdio.hを組み込んでprintfを使用した場合、ちょっとした演算でプログラムメモリーが足りなくなります。ですので、putchで一文字ずつ書いています。

用意しているコマンド
i2clcdclear()
i2clcdinit()
i2clcdlocate(unsigned char c)
i2clcdset(unsigned char cmd,unsigned char data)
です。LCDに表示させるものはputchで書き込めます。

PIC12F675の場合、書き込み時は5Vを必要としますので、一時的に3.3V電源を5Vにするか、PICkit3からの印加設定を行います。この時LCDには5Vが掛かりますが、LCDの最大定格は5.5Vのため、問題はありません。

I2Cは本来FETやトランジスタなどのオープンドレイン(オープンコレクター)で接続し、各々の信号をプルアップしますが、今回はPIC内部のプルアップレジスタを使用しています。オシロスコープで波形は確認して問題無いですが、2つ以上のデバイスをつけたい場合は、プルアップ処理や、SCLのスリーステート化を検討した方が良いでしょう。

I2C読み込みは、AQM0802Aが読み込みコマンドがないので用意していません。


2017/6/28 初版作成

(C)2017 air variable All Rights Reserved..


ホーム