51单片机 c语言编程 4*4矩阵键盘如何实现等待按键松开功能?

51单片机,c语言编程,4*4矩阵键盘如何实现等待按键松开功能?程序如下:ucharkey_scan(){ucharkey_l,key_h;ucharkey;P1=0xf... 51单片机,c语言编程,4*4矩阵键盘如何实现 等待按键松开功能?
程序如下:
uchar key_scan()
{
uchar key_l,key_h;
uchar key;
P1=0xf0;
key_l=P1;
key_l=key_l&0xf0;
key=' ';
if(key_l!=0xf0)
{
delay_nms(5);
key_l=P1;
key_l=key_l&0xf0;
if(key_l!=0xf0)
{
key_l=P1&0xf0; //1110 0000
key_l=key_l|0x0f;//1110 1111
P1=key_l; //1110 1111
key_h=P1; //1110 1110
key_h=key_h&0x0f;//0000 1110 h
key_l=key_l&0xf0;//1110 0000 l
key=key_h+key_l; //1110 1110
}
}
while(P1!=0xf0); //我加了这句话,但不好使!
switch(key)
{
case 0xee:n='0';break;
case 0xde:n='1';break;
case 0xbe:n='2';break;
case 0x7e:n='3';break;

case 0xed:n='4';break;
case 0xdd:n='5';break;
case 0xbd:n='6';break;
case 0x7d:n='7';break;

case 0xeb:n='8';break;
case 0xdb:n='9';break;
case 0xbb:n='+';break;
case 0x7b:n='-';break;

case 0xe7:n='*';break;
case 0xd7:n='/';break;
case 0xb7:n='?';break;
case 0x77:n='!';break;
}
return n;
}
展开
 我来答
百度网友1b2bc70
2012-07-08 · TA获得超过150个赞
知道答主
回答量:115
采纳率:0%
帮助的人:62.6万
展开全部
if(key_l!=0xf0)
{
delay_nms(5);

key_l=P1;
……
在第4行加 while( key_l!=0xf0 );
等待按键释放,按键不放开就一直在此处等待,知道按键释放,此语句执行完。再往下执行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sky_wym
2011-05-28 · TA获得超过137个赞
知道答主
回答量:19
采纳率:0%
帮助的人:13.6万
展开全部
利用定时器,对键盘进行扫描。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
当空金羽
2011-05-22 · 超过10用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:22.1万
展开全部
P1口不能直接加入逻辑判断,可以先读出P1口值:temp=P1,再用 while(temp!=0xf0);判断。
追问
好的,我试试
追答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
独小林
2011-05-21 · TA获得超过138个赞
知道答主
回答量:110
采纳率:0%
帮助的人:84.6万
展开全部
现延时一下再松开 可能要好些
追问
嗯,你说得对。我也试过了,有效果,但不能解决根本问题……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a3332008
2011-05-23
知道答主
回答量:20
采纳率:0%
帮助的人:0
展开全部
单片机C语言程序设计师
追问
What's meaning?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式