目次 > 8章.機能が豊富なPICを使う(PIC16F88) > RS232Cでパソコンと通信

RS232Cでパソコンと通信(PIC16F88)

更新日2009.8.30


ここでは、PIC16F88のAUSART(*1)機能を使ってパソコンとRS232C通信する実験を行います。
同時に双方向通信(送受信)を行います。

(*1 AUSART:Addressable Universal Synchronous Asynchronous Receiver Transmitter)

RS232Cについて
もし、秋月のPICライタをお使いであれば、パソコンとRS232Cインタフェースで接続しています。

RS232Cは、一昔前のパソコンでは低速機器を接続するインタフェースとして主流でした。(モデム接続など)
その後、コネクタの小型化や通信速度の高速化が進み、最近のパソコンはUSBが主流となり、RS232Cはあまり見かけなくなっています。

とは言え、RS232CインタフェースはUSBなどに比べ簡単に扱える事もあり、今でも現役です。
パソコン側にRS232Cインタフェースが無くても、USB−RS232C変換ケーブルで接続できます。


PICとパソコンの接続
PICをパソコンに接続するには、RS232Cケーブルを使います。
秋月のPICライタをお使いであれば、PICライタの代わりにPICを接続するイメージです。

<パソコンにRS232Cポートがある場合>
RS232Cケーブル(ストレート)でパソコンとPIC側を接続します。

パソコン
RS232Cポート
Dsub9ピンコネクタ(オス)
<オス>
↑接
↓続
<メス>
RS232C
ケーブル
(ストレート)
<オス>
↑接
↓続
<メス>
PIC

<パソコンにRS232Cポートが無い場合>
USB-RS232C変換ケーブルを使って接続します。

パソコン
USBポート
↑接
↓続
USB-RS232C
変換ケーブル
<オス>
↑接
↓続
<メス>
PIC
PIC側は、RS232Cコネクタをどのように取り付ける
かによって異なりますが、今回はブレッドボードを使う
前提で上のようなケーブルを作成しました。

PIC側のコネクタ
PIC側のコネクタ(Dsub9ピン メス)を後ろから見た状態です。
写真と同じ向きで見たピン配置
ピンの意味は以下のようになっています。
ピン番号信号意味
1DCDキャリア検出
2RxD受信データ(PC←PIC)
3TxD送信データ(PC→PIC)
4DTRデータ端末レディ
5GND信号グランド
6DSRデータセットレディ
7RTS送信要求
8CTS送信可
9RI被呼表示
パソコン側が基準になっていますので、例えば2番ピンはパソコンから見れば受信ですが、PICから見ると送信になります。3番ピンはその逆になっています。

9ピンの内、使うのは下図の緑の5ピンだけです。

7番ピンと8番ピンは直結します。
これは、パソコンからの送信要求(7番ピン)に対し、無条件に送信可(8番ピン)を返すようにするためです。

5番ピンはグランドに接続します。

2番ピンと3番ピンだけが、PICから制御する信号線になります。

RS232Cレベル変換
PICの電源電圧や信号電圧は、+5Vですが、RS232Cインタフェースでは、±12Vを扱います。
そのままPICと接続できませんので、MAX232と言うレベル変換ICを使います。
今回は、MAX232互換のADM3202を使いました。
ADM3202自身は5V電源で動作しますので、特別な電源を用意する必要はありません。



実験回路
今回の実験回路です。

RS232Cで使うPICのピンは、RB2/RXとRB5/TXの2ピンだけです。

ADM3202の機能ブロック図(データシートより抜粋)
電源電圧は、3.0〜5.5Vの範囲で動作します。


こちらは、ブレッドボードに組んだ状態。

プログラムの仕様

プログラムでは以下の動作をさせます。
1. LCDの1行目に、「PIC16F88 RS232C」と表示させる。
2. パソコンに、「PIC16F88 RS232C test\r\n」を送信し続ける。
 (\r\nは、復帰,改行のコードで、16進数では、0Dh,0Ahです。)
3. パソコンから1文字受信したら、LCDの2行目に順に表示する。
 パソコンから受信した文字(コード)が復帰(0Dh)であれば、LCDの2行目をクリアする。


プログラム全体
プログラムはこちらです。

動作確認

それでは実際にパソコンと接続して通信を行って見ましょう。

手順は以下の通りです。

  1. パソコンとPICを接続する(PIC側の電源はOFF状態)
  2. パソコンのハイパーターミナルを起動して設定を行う
  3. PICの電源を入れる
    これで、PICから送った文字列がハイパーターミナルに表示される
  4. パソコンからキー入力する
    キー入力した文字がPIC側のLCDに表示される
1.パソコンとPICを接続する

前で説明した、「PICとパソコンの接続」,「PIC側のコネクタ」,「実験回路」を参考に、パソコンとPICを接続して下さい。
この時点では、PIC側に電源はOFFのままです。

2.パソコンのハイパーターミナルを起動して設定を行う
次に、パソコンのハイパーターミナルを起動して設定を行います。
この、ハイパーターミナルがPICとの通信相手になります。

(1) ハイパーターミナルを起動します。
 「スタート」→「プログラム」→「アクセサリ」→「通信」→「ハイパーターミナル」
(2) そうすると「接続の設定」ウィンドウが開きますので「名前」に任意の文字列を入力します。
 例では、「test」としています。
 入力したら、「OK」ボタンを押します。
(3) 続いて電話番号情報入力ウィンドウが開きます。
(4) 一番下にある、「接続方法」からCOMポートを選択します。
 この例では、COM3ですがパソコンによってはCOM1やCOM4になります。
(5) この状態で、「OK」ボタンを押します。
(6) 続いてCOM3のプロパティウィンドウが開きます。
(7) ここでの設定は、「ビット/秒」と「フロー制御」です。
 以下のように設定して「OK」ボタンを押します。
(8) ここまでで初期設定が完了し、ハイパーターミナルが起動します。
ボタンの状態で接続状態がわかります。接続されている状態であることを確認します。
接続されている(PICと通信が可能)。右のボタンを押すと切断される。
切断されている(通信できない)。左のボタンを押すと接続される。


3.PICの電源を入れる

それでは、PIC側の電源を入れてみましょう。
下のように、ハイパーターミナルに文字列が表示され続ければ成功です。

4.パソコンからキー入力する

続いて、パソコンから何かキー入力して下さい。
ハイパーターミナルには、PICから送った文字列が表示され続けていますが、そのままの状態でパソコンからキー入力します。
すると、PIC側のLCDの2行目にパソコンから入力した文字が1文字ずつ表示されます。

下の写真は、パソコンから「from PC」と入力した状態です。
パソコンのEnterキーを押すと、LCDの2行目はクリアされます。


どうでしたか。
以外に簡単にパソコンと通信ができたのでは無いかと思いますが。