单片机独立键盘和4*4矩阵键盘中松手检测的区别,为什么矩阵键盘不能使用独立键盘的松手检测?

ucharkeyscan(){P3=0xfe;temp=P3;//P3=0xeetemp=temp&0xf0;while(temp!=0xf0){delay(5);tem... uchar keyscan()
{
P3=0xfe;
temp=P3; //P3=0xee
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P3; //P3=0xee
temp=temp&0xf0; //temp=0xe0
while(temp!=0xf0)
{
temp=P3; //temp=0xee
switch(temp)
{
case 0xee:num=0;break;
case 0xde:num=1;break;
case 0xbe:num=2;break;
case 0x7e:num=3;break;
}
while(temp!=0xf0)
{
temp=P3; //temp=0xee
temp=temp&0xf0; //temp=0xe0
}
}
}
return num;
}

其中
while(temp!=0xf0)//自己认为是松手检测
{
temp=P3; //temp=0xee
temp=temp&0xf0; //temp=0xe0
}
是矩阵键盘的松手检测

while(key!=0);这就是独立键盘的松手,
为什么矩阵键盘的不能用独立键盘的呢,研究了好长时间了,麻烦大侠说详细点,可以多给分的!谢谢!
展开
 我来答
做而论道
高能答主

2011-04-01 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3.1万
采纳率:82%
帮助的人:8435万
展开全部
楼主提供的程序,并不完整,不好讨论。
一般来说,4*4矩阵键盘函数的返回值是:按键信息0~15,和没有按键的代码16。
当有键按下后,还要反复检测按键,当得到返回值是16,才能认为全部按键都已经松手。
独立键盘,while(key!=0);只是等待这个按键盘何时松手,其它键,假如仍然按着,程序也不管了。
独立键盘的检测,实在是太简单了。
追问
您好,您的百度空间我是看了好多次了,真的学习很多东西,非常感谢您的无私分享!
ball648500361
2011-04-01 · TA获得超过606个赞
知道小有建树答主
回答量:270
采纳率:50%
帮助的人:192万
展开全部
呵呵,说白了矩阵键盘结构复杂,不能用简单的松手检测是很正常的。就拿矩阵键盘的扫描来说吧是动态的,而且比独立键盘复杂的多。当然对他进行二次检测也是复杂的。
你说的while(key!=0);只是检测了一条io口,你想矩阵键盘要确定一个按键至少操作两条io,于是乎你想上面的指令就不行了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱单片机生活
2011-04-01 · TA获得超过207个赞
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:124万
展开全部
你那按键按下去是什么电平的啊,while(key!=0);是代表1时一直执行上面的语句,等于0时才执行下面的(你上面的程序我没时间看了)。
uchar flay=1;
if(!key);
{
Delay(10);
{
if(!key&&flay);
{
flay=0;
执行语句;
}
}
else
flay=1;
这样也是等你放开按键才执行的(久按也是执行一次)。希望对你有帮助。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
春夏秋冬
2011-04-01 · 知道合伙人教育行家
春夏秋冬
知道合伙人教育行家
采纳数:490 获赞数:1419

向TA提问 私信TA
展开全部
加上 软件去抖动检测吧,诸如 while(temp!=0xf0) //软件去抖动?
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式