マイコンの入力ポートが足りないことはありがちです。そんな時によく使われるのがシリアルパラレル変換のロジックIC。入力ポートは4.7kΩのプルアップをしてディップスイッチに接続されています。ディップスイッチはONでGNDに落ちます。それ以外の配線は下記の図のとおりです。S/Lなどはソースのほうを参照してください。SINは74HC165を2個以上使用するときに使います。
使用機器は下記のとおり。他、パソコンや電源、PICKIT2も当然ながら必要です。
ロジックIC…74HC165(実験時には東芝製TC74HC165を使用しました)
マイコンボード(PIC16F1947搭載)…ZEATEC co.,ltd. ZT-PIC16F194701(5V仕様)
接続は下記のとおりでロジックICから各ディップスイッチへの配線は記載を省略しています。CKにクロック信号、S/Lの信号でQHからシリアルデータが送信されます。
74HC165用ライブラリ tc74hc165.zip
TC74HC165データシート TC74HC165AP.pdf
TPIC6B165Nデータシート TPIC6B165N.pdf
プロジェクトファイルも含めたサンプル ZT-PIC16F194701_tc74hc165.zip
開発環境:MPLAB_IDE_8_92 + CCS-C PCMコンパイラVer.4.132
/*******************************************************************************
74HC165用ライブラリ 2015/4/10作成
□提供元
ZEATEC co.,ltd.
□ご利用について
転載・無断使用可です。このライブラリを使用した上での不具合等に関しては、いかなる内容におい
ても一切の責任を追わないものとします。
□使用方法
#include "tc74hc165.c"をヘッダーに追加してください。
取得したい変数を用意してtest_val = tc74hc595();というように使います。
*******************************************************************************/
//シリアルパラレル変換
int tc74hc165_8(){
//PIN_E0 QH シリアルデータ
//PIN_E1 CK クロック
//PIN_E2 S/L データ送信開始指示
int tmp1 = 0;
int tmp_ans = 0;
<span style="color: #009900;">//S/L
output_bit(PIN_E2,0);
output_bit(PIN_E2,1);
for(tmp1=0;tmp1<8;tmp1++){
//CK
output_bit(PIN_E1,0);
if(input(PIN_E0) == 0){
bit_set(tmp_ans,7-tmp1);
}else{
bit_clear(tmp_ans,7-tmp1);
}
//CK
output_bit(PIN_E1,1);
}
return tmp_ans;
}
©ZEATEC co.,ltd.