PS/2 テンキーとの接続
スポンサーリンク
PS/2テンキーの使用
PICへのデータ入力手段としてPS/2インターフェイスのテンキーを使うことにしました。PICとテンキーは4本の電線でテンキー上の17ヶのキーの入力が可能ですので配線の省力化に大きく貢献します。
mikroCからPS/2キーボードを使う際に、キーボードのキーの押し下げに対してどのようなコードが帰ってくるか調査しました。
下の写真のように、PIC16F88にサンワサプライのテンキーとLCDを接続してそれぞれのキー押し下げに対して以下のプログラムにて確認しました。
while(1){
Ps2_Key_Read(&KeyValue, &KeySpecial, &KeyPressed);
iv=KeyValue;
isp=KeySpecial;
sprinti(DispLine,"Val=%d Sp=%d",iv,isp);
Lcd_Out(1,1,DispLine); // LCDに表示
}// end of while
結果は以下の通りです。表中の数字は十進数での表現です。数字だけの入力を欲しい場合は、NumLockをONにしてもらう必要があることがわかります。mikroCではPS/2の双方向通信はできないのでPIC側からNumLockをONにできません。したがって、NumLock OFFでキーを押されたときには何らかのアラームを出してNumLockをONにしてもらうことを促す必要がありそうです。
キー刻印 | NumLock OFF | NumLock ON |
TAB | 35 | 35 |
/ | 47 | 47 |
* | 42 | 42 |
BS | 16 | 16 |
7 | 27 | 55 |
8 | 32 | 56 |
9 | 14 | 57 |
- | 45 | 45 |
4 | 30 | 52 |
5 | 53 | |
6 | 31 | 54 |
+ | 43 | 43 |
1 | 26 | 49 |
2 | 33 | 50 |
3 | 15 | 51 |
Enter | 13 | 13 |
0 | 17 | 48 |
00 | ||
. | 18 | 46 |