<PC-PIC間のRS232C通信>
PCのキーボードから文字を、RS232C経由でPICに送るとPICから文字を返す回路とプログラムに挑戦です。
使用部品は、おなじみの16F688、FT232RL USB-シリアル変換モジュール、コンデンサ0.1μ、抵抗1Kです。
PC側に必要ソフトとして、ハイパーターミナル、Tera Termなどが必要です。
(PC側から文字をRS232Cを介して送るソフト)
ここでは、自作ソフトを使いました(下記画像のYYRS232_ver1)
回路図
完成回路(赤丸印の部品だけです。回路図にない部品は、次期ステップアップ用です。)
下記画像は(PC画面)、PCのキーボードから文字を入力するとPIC側から文字(顔文字)を返してくる。
3パターンで上からA、B、Cに対応する顔文字です。
//////////////////////// ソース /////////////////////
#include <htc.h>
#include <stdio.h>
#include <string.h>
__CONFIG(FCMDIS & IESODIS & BOREN & UNPROTECT & MCLREN & PWRTEN & WDTDIS & INTIO);
__IDLOC(0001);
ioport();
char getch();
void putch(char);
main()
{
OSCCON=0x30; /* 500kHz */
// OSCCON=0x70; /* 8000kHz */
ioport();
char rxdata;
RCSTA=0x90; /* USART非同期モード */
TXSTA=0x20;
BRGH=1; /* 500khz 1200bps */
SPBRG=25;
// BRGH=1; /* 500khz 2400bps */
// SPBRG=12;
// BRGH=0; /* 8000khz 2400bps */
// SPBRG=51;
// BRGH=0; /* 8000khz 9600bps */
// SPBRG=12;
while(1){
rxdata=getch(); /*rxdataにPCからの文字を入れる*/
if(rxdata == 'A'){
printf("(^^♪\n");
}
if(rxdata == 'B'){
printf("(~o~)\n");
}
if(rxdata == 'C'){
printf("(*^_^*)\n");
}
}
}
ioport()
{
TRISA=0x00; /* RC5/RXピンは入力ピン */
TRISC=0x2F; /* RC4/TXピンは出力ピン */
ANSEL=0x00;
CMCON0=0x07;
}
char getch()
{
while(!RCIF); /* 受信したら */
return(RCREG); /* データを読む */
}
void putch(char txdata)
{
while(!TXIF); /* 送信バッファが空いたら */
TXREG=txdata; /* 1バイトだけ書く */
}
///////////// ソース ここまで /////////////
*PCとPIC間のRS232C通信基礎が出来たので、次はキーボードから入力した欧文を
PICからモールス信号にして見たいと思います。
この、おもしろ実験室で紹介している「PICによるCW SEND」は文字入力を1文字づつ
SW操作で、モールス信号を出力させている。
文字数が長いと、SW操作に時間が掛かりやりづらい^_^;、SW操作なので仕方ないのですが(^_^.)