根据线反转法扫描键盘返回的键值编码,查键值编码表,从而得到键值并送数码管显示,开机时显示“-”

2025-04-24 03:39:07
推荐回答(1个)
回答1:

if(keycode=key_code[j]) --应该是双等号。

试试下面的:

uchar keyscan()
{
uchar scan1, scan2;
P1 = 0xf0;
scan1 = P1;
if((scan1 & 0xf0) != 0xf0) {
scan1 = P1;
delay(30);
if((scan1 & 0xf0) != 0xf0) {
P1 = 0x0f;
scan2 = P1;
scan1 = scan1 | scan2;
for(scan2 = 0; scan2 < 16; scan2++)
if(scan1 == key_code[scan2]) return(scan2);
}
}
return(16);
}
void main()
{
uchar key;
P0 = 0xbf;
P27 = 0;
while(1) {
key = keyscan();
if(key < 16) P0 = table[key];
}
}