i2cスレーブ液晶表示回路の実験                                nobcha(c)2011

1.初めに

 i2cのインターフェイス用マスター関数が用意できました。そうなるとSCL/SDAの2本の信号線用ポートを用意するだけでペリフェラルがつながるとはんだ付け数も少なくて済むし、デバッグ時にも便利です。特に液晶表示はストロベリーリナックス液晶がデバッグに活躍したので、それに変わるものをスレーブ側試作として実験して見ます。

 マスター側はソフト制御でも可能でしたが、スレーブはハード制御で無いと難しいとのことで、PIC16F88のSSPを使って作ることにしました。

 

2.回路仕様
項番 項目 内容 備考
  1 PIC CPU PIC16F88
  2 i2cアドレス 0x7C ストロベリーリナックスLCDに合わせた
  3 接続液晶モジュール SC2402を4ビットモードで接続 たまたま手持ちだった
  4 制御コマンド 2バイト構成とする       1バイト目は0x40でRS、0x00で〜RSとする          2バイト目は1バイト目が0x40なら制御データ、0x00なら表示文字コードとする 2バイト×3回までの連続WRITEできる           制御データ(8ビット)表示文字コード(8ビット)はSC2402が受け取れるもののみ有効
  5 SLAVE方式 SSPを使って割込み制御起動とする
  6 液晶駆動回路のイニシャル スレーブ側PIC16F88が行うので、上位側は電源投入後200mS経過待つこと
  7 デバッグモード設定 RB5がHでデバッグモード 受信データとステイタスをダンプ表示する

  

3.回路図 

   回路図は水魚堂さんのBSchを使いました。また関連記号類も利用させていただきます。公開された作者さん達のご努力に感謝いたします。

   http://www.suigyodo.com/online/schsoft.htm  

4.プログラム

 言語はCでHI-TECH社PICC LITEのV9.82を使います。デバッグはMPLAB V8.73です。

 関数としてはi2cスレーブでマスター側からの信号を得てLCDを4ビット並列で制御するMAIN4ビット並列LCD駆動関数、そのヘッダファイル待ち時間発生関数ヘッダです。

  

5.実験

 実験はブレッドボードを用いました。また、WSNAK基板を用いICSPコネクタでPICKIT2に接続しやすくしております。

 電源投入後RB5がLであるとデバッグモードになり、このようにLCDの2行目にタイトルが現れます。RB5がHであると、LCDをイニシャライズした後カーソルを1文字目に移しマスター側からのコマンドを待機します。

 そして受信するとストップコンデョションが来るまでダンプ結果を表示します。このときストップコンディション検出をコメントアウトしたので、延々と続く限り表示していました。区切りマークは#、次の2バイトは4ビットに0x30付加して表示(ヘキサデシマルではない)している。次の2バイトはSSPSTATです。

 因みにこの時は1文字目はステイタス0x08でスタートコンディション検出しWビットでした。次は受信データは0x40でRSビットとその時のステイタスは受信したのはデータでスタートコンデョション検出、Wビットです。次はデータが0x6Fでストロベリーリナックス液晶用FOLLOWERバイト、その時のステイタスは先と同じ。

 この後にストップコンディションが入っていますが、この時はデバッグ中で無視しています。そして続く受信データはアドレス0x7Cであり、ステイタスはアドレス、スタートコンデョション検知。続いてRSバイト0x40が来ております。

    

WEBに公表された情報などを参考にしました。PICファンパイオニアの方々の情報提供に感謝します。

非商用の教育・ホビー用に限り、再利用を許諾します。また引用時にはソース表示をお願いします。

再利用により生じた損害などについては責任を負いません。利用者の判断でお願いします。

 全体目次に戻る 

 アイコンは「牛飼いとアイコンの部屋」 からの提供。

  ありがとうございます。

               2011.10.09

inserted by FC2 system