PIC16F1827を使ってi2cスレーブキーを試作する nobcha@2012  20120927

 1.始めに

 PIC16F1827を使い、ICSPコネクタや4ビットLCD接続やi2c接続などが構成できるように配線したプリント基板を作りました。この基板を使って、i2c式のキーパッドスレーブを試作します。AVRを使用してi2cキーを作られたばんとさんの試作を参考にしてスタートしました。使用するキーはプッシュホン電話器からはずしたらしいジャンクパーツの再利用です。

 主な部品は次のとおり
部品 部品仕様など 備考
CPU PIC16F1827 18ピンICソケット
LCDモジュール SC1602互換  
キーパッド プッシュホンジャンク DIGITで購入
シングルラインピンヘッダ 6ピンを2個  
ダイオード 1S1588x7、LEDx1 汎用ダイオード、LED
RC類 1/4W抵抗、セラコン、アルミ、半固定抵抗  
基板、配線材   FUSIONで製作

 

2.仕様・コマンド

  次のような仕様とi2cコマンドを用意します。

項目 内容 備考
LCD接続 SC1602あるいは相当品を4ビットインターフェイスで接続します。RS:RB7,EN:RB6,W:GND,DATA4−7:RA0-3
ICSP接続 指定ポートを6ピンコネクタに接続 PICKIT3につなぎます
i2c接続 SCL:RB4,SDA:RB1でVdd,GNDなども含めた6ピンコネクタを用意 ブレッドボード差込ピンヘッダ用 ブレッドボードに挿して配線するつもり
3V動作 CLK−OUT(RA6)を倍圧整流して作ったマイナス電源をSC1602のVoに加え、3VでLCD表示を出す
キーパッド接続 4列3行のDTMF対応キーパッドを使用 キー押下時に行と列のクロス点が導通する 列をLCD接続のデータ線と共用し0電圧でスキャンする。行側は抵抗プルアップし、押下時には該当行が0になりキー位置を検知する
i2cコマンド @アドレス:0x74、ALCD用Wコマンド:1バイト目は0x0で表示データ、0x40でRSが1になり、コマンド、Bキー用Wコマンド:0x11でキースキャンスタート、0x10で機スキャンストップ、Cキー用Rコマンド:下7ビットが数字ASCII(キースタートから10mS以上押されると検知,MSBが1で長押し(2500mS以上) i2c接続LCDのコマンドはストロベリーリナックス社が販売しているモノを参考にしました。LCDの制御とデータ出力は2バイトペアになっております。

 

3.回路図

 回路図はBSchを使用して書きました。不要な周波数カウンタ用アンプ部分なども記載されています。

 

  ピン接続表

      

4.ソフトウェア

 プログラムはHI−TECH C V9.83を用い、MBPLAB IDE V8.85でコンパイルリンクしました。ICSPにPICKIT3経由でフラッシュ書き込みを行い、デバッグしました。

 MAIN関数LCD関数LCD関数ヘッダファイルの3種を使います。

(注)MAIN関数のOSCCON記述が間違っております。OSCCON=0b0111000が正しい記述です。現在のままだと8MHzになっています。2013.06.09

 

5.組み立て・デバッグ

 水魚堂のMBEを使ってパタン設計を行い、中国FUSION社でプリント基板を作りました。この基板にキーパッド部を追加して試作回路を作ります。

 まずはキースキャン部分が動くかどうか心配だったので、ソフトデバッグ途中でキー入力だけ実験しました。キースキャンして、キーコードを計算し、LCDにその結果を表示します。またスキャンは50ms単位で行い、2回続けて同じならキー入力受付、100回続けて同じなら長押しフラグを立てるようにしました。ここではキーコードとしてヘキサデシマル2桁、次はキー押し時間カウンタの2桁になります。key v4とでているのはデバッグモードタイトル表示の一部です。

 同じプリント基板でマスター側も試作しました。マスター側はi2c接続LCDのデバッグにいつも使っているプログラム(タイトルを出して2行目に6桁カウンタをカウントアップ表示するものです)を改造準備しました。MAIN関数、直接つないでいる4ビットIFのLCD制御関数今回試作のi2c接続LCD+KEY制御関数MSSPを使用したi2cプロトコル関数を使います。またヘッダファイルもLCD制御関数用i2c接続LCD+KEY制御関数用i2cプロトコル関数用をひきこみます。

 

 このマスター/スレーブ接続実験では マスター側が自分のLCDとスレーブ側のLCDにタイトルおよびカウント値を表示します。次にSW2の押下があると、スレーブ側にキースキャンスタートを掛けキー値をリードします。帰ってきたキー値ASCIIコードを自分のLCDとフレーブのLCDに表示するというものです。

 

6.謝辞

 i2c接続のキーパッド試作実験はばんとさんによるAVRでの試作を参考にしました。またキーの対チャタリングについてはnoriさんからアイデアいただきました。回路図ソフトは水魚堂のBSchを使いました。コンパイラとデバッグはMPLAB IDE、HI-TECH Cコンパイラ、PICKIT3を用いました。フリーソフトやアイデアや情報の提供者の皆様に感謝します。

 

7.参考資料(マイクロチップ社の主に英文のドキュメント以外に次の資料を使いました)

@マイクロチップ社AP-734「MSSPを使用したi2cスレーブについて」の一部和訳

Aマイクロチップ社PIC16F1827ドキュメント(DS41391B-P.254) 「スレーブ送信」の和訳

Bマイクロチップ社PICドキュメント(DS30487C-P.92) 「ccpのi2c動作」の和訳P1P2P3P4

新4桁シリーズの目次へ   WEBのTOPへ

inserted by FC2 system