永发信息网

键盘输入哪里错了,各位大哥帮我看看

答案:3  悬赏:10  手机版
解决时间 2021-05-12 06:07

各位大哥帮我看看(我有时动作稍微慢些去按键,数码管就没反映。有时实验板一通电马上按下键后,数码管显示,得马上再去按第2次键,不然动作慢了,按了就没反映了)

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar num,temp;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0};
sbit dula=P2^6;
sbit wela=P2^7;
void delay(uint z);
void main()
{
dula=1;
P0=0;
dula=0;
wela=1;
P0=0xfe;
wela=0;
while(1)
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;//P3口高4位分别对应键1,2,3,4,当键按住时,
while(temp!=0xf0)//当键按住时,原先temp&0xf0就不等于0xf0了,就执行while语句了

{
delay(10);//延时,消除抖动
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)//是否确实有键按下
{
temp=P3;
switch(temp)
{
case 0xee:num=1;
break;
case 0xde:num=2;
break;
case 0xbe:num=3;
break;
case 0x7e:num=4;
break;
}
dula=1;
P0=table[num-1];
dula=0;
}

}
}
}

void delay(uint z)
{
uint x,y;
for(x=110;x>0;x--)
for(y=z;y>0;y--);
}

最佳答案

SORRY , 没啥时间, 简单的说下吧! 看你的情况可能是 检测按键的时候没有 判断按键是否松开。 或者是你的 去抖动时间 正确与否。 建议你去网上看看那些正确的代码 从中吸取点 经验。

全部回答

同志,把你的主函数main()里的dula=1;
P0=0;
dula=0;
wela=1;
P0=0xfe;
wela=0;

放到下面的while(1)的函数体中,
如下所示,再试一下应该已经解决了,我没有你的仿真图没法仿真:

#include<reg52.h> #define uint unsigned int #define uchar unsigned char uchar num,temp; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0}; sbit dula=P2^6; sbit wela=P2^7; void delay(uint z); void main() {

while(1) { dula=1; P0=0; dula=0; wela=1; P0=0xfe; wela=0; P3=0xfe; temp=P3; temp=temp&0xf0;//P3口高4位分别对应键1,2,3,4,当键按住时, while(temp!=0xf0)//当键按住时,原先temp&0xf0就不等于0xf0了,就执行while语句了

{ delay(10);//延时,消除抖动 temp=P3; temp=temp&0xf0; while(temp!=0xf0)//是否确实有键按下 { temp=P3; switch(temp) { case 0xee:num=1; break; case 0xde:num=2; break; case 0xbe:num=3; break; case 0x7e:num=4; break; } dula=1; P0=table[num-1]; dula=0; }

} } }

void delay(uint z) { uint x,y; for(x=110;x>0;x--) for(y=z;y>0;y--); }

while(temp!=0xf0)//是否确实有键按下 下面的大括号是到那里的~应该是这里面的出问题
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
初一上学期人教版生物的练习题
谁有工具条啊要酷的 无毒的发给我
死灵和刺客的特点,不知道转么好"
在淘宝开店后需要投资吗
网络资源分开
龙之谷金属板如何得到?
比喻法律的句子,关于法律的诗句
有创意的班级奋斗口号,有没有关于在外拼搏的
妖精的尾巴追悼艾尔莎的追悼词
大盘单一股票一天的涨幅指数由什么得到的
关于许久没联系的诗句,用自责造做错事后的句
摩托车交流点火器上一共有几根线?分别是什么
两天洗一次头发,算忙吗
寻仙驭剑70级诛仙剑碎片好吗?
有关冬天雪景的美文,优美散文 冬季的
推荐资讯
付息债券是什么?
手机玩开心牧场怎样删除列表好友?
安装Photoshop.CS4无法更改储存路径。
买衣服应该怎么和店住说价的?
谁有能用的挂QQ宠物软件吗?推介个啊?
吉他怎么看简谱
《泡沫之夏》电视剧哪里可以看?
侧面烘托是什么意思,什么叫侧面描写?
电子邮箱怎么打
不是我好友为什么还能偷我的菜
感冒气管炎咳嗽怎么办,老人支气管炎经常咳嗽
梦幻牧场问题。。。。
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?