单片机C矩阵键盘问题

2024-12-04 14:12:04
推荐回答(3个)
回答1:

main()
{
while(1)
{
key();
display(keynum);
}
}

void display( uchar keynum) //根据keynum返回值显示数字
{

P2=0xfe;
P0=table[keynum];

}

你试下改为

main()
{
while(1)
{

display(key());
}
}

void display( uchar keyone) //根据keynum返回值显示数字
{

P2=0xfe;
P0=table[keyone];

}

你定义了一个全局变量keynum 又在子函数从新定义一个局部变量keynum这样可能会导致错误

再试试~不行在和我说

回答2:

你用的是什么编程软件,Keil的调试功能很强的。你应该学会用。
每个判断语句如if(P1&0xf1!=0xf1)改为
if((P1&0xf1)!=0xf1)因为非运算比与运算优先级高要加括号。

回答3:

你的思路大体是对的,但是有些问题。
首先,数码管要稳定显示,需要10毫秒以上的延时,你没加。
其次,扫描行要用0去扫描,不能用1,而你用的是1,同时消抖延时也用us也太短,应该用ms级的。
最后,你给的数码管段码似乎有问题,好好检查下。(是1还是0的时候亮,要看好三极管的接法)