4x4矩阵键盘?
#define u8 unsigned char
#define KEY P3
#define K1 P3_4
#define K2 P3_5
#define K3 P3_6
#define K4 P3_7
u8 GetKey(void);
u8 GetKey(void)
{
KEY=0xff;
K1=0;
switch(KEY&0x0f)
{
case 0x0e:return 0;
case 0x0d:return 1;
case 0x0b:return 2;
case 0x07:return 3;
}
KEY=0xff;
K2=0;
switch(KEY&0x0f)
{
case 0x0e:return 4;
case 0x0d:return 5;
case 0x0b:return 6;
case 0x07:return 7;
}
KEY=0xff;
K3=0;
switch(KEY&0x0f)
{
case 0x0e:return 8;
case 0x0d:return 9;
case 0x0b:return 10;
case 0x07:return 11;
}
KEY=0xff;
K4=0;
switch(KEY&0x0f)
{
case 0x0e:return 12;
case 0x0d:return 13;
case 0x0b:return 14;
case 0x07:return 15;
}
return 255;
}
可以指定返回的数值为特殊指令
例如 #define KEY_UP 15 返回15代表↑
仿照手机的按键方式1-9代表26个英文字母
可以按下键后显示3个字母然后选中其中一个再继续输入下一个字母
直到最后按下确定键的时候显示出相应的字符
我之前做的是就一个方向键+确定取消返回
楼主想在51上写汉字输入法啊?拼音输入?那你得将汉字的编码与你的键盘输入的码对应,还是一对多的对应,比如,你输入ni,那你得将所有的这个音的汉字排列出来,然后再进行选择。你知道,汉字多,你的程序不好实现啊。
还有,你后面的问题没看明白。
可采用周立功公司生产的键盘接口芯片,其资料到周立功公司网站上查。