c51单片机矩形键盘检测问题 急急!!! 100

#include<reg51.h>#defineuintunsignedint#defineucharunsignedchar#defineduanP0uchartemp... #include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define duan P0
uchar temp,num;
uchar code duanma[]={0x02,0x9e,0x24,0x0c,0x98,0x48,0x40,0x1e,
0x00,0x08};
void delayms(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{

duan=0x02;
while(1)
{
P1=0x7f;
temp=P1;
temp=temp&0x0f;
while(temp!=0x0f)
{
delayms(5);
temp=P1;
temp=temp&0x0f;
while(temp!=0x0f)
{
temp=P1;
switch(temp)
{
case 0x77: num=1;
break;
case 0x7b: num=2;
break;
case 0x7d: num=3;
break;
case 0x7e: num=4;
break;
}
P0=duanma[num];
}

}

}

}

我折程序哪里有问题啊 找了2天了都没找到 显示的是一个数码管 可是怎么按第一排键数码管动都不动
展开
 我来答
代號_熊貓
2015-01-19 · 超过21用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:32.8万
展开全部
因为我也刚好学到矩阵键盘扫描,但是我的代码成功了,所以和你一起探讨一下你的问题吧,

首先第一个问题应该是段选写了0x02..其实前面已经写了数组了直接引用不就好了嘛。

然后是矩阵键盘扫描的部分,你写的是0x7f,矩阵键盘扫描的原理应该是从底四位轮流输入低电平,然后再从高四位进行读取数据,检测到低电平时,说明该按键被按下。

那么在你的
P1=0x7f;
temp=P1;
temp=temp&0x0f;
后面应该用一个if判断语句,而不是直接进入while循环然后消抖,

你试试这样写

P1=0x7f;
temp=P1;
temp=temp&0x0f;
if(temp!=0x0f)
{
delayms(5);
temp=P1;
temp=temp&0x0f;
if(temp!=0x0f)

{
temp=P1;
switch(temp)
{
case 0x77: num=1;
break;
case 0x7b: num=2;
break;
case 0x7d: num=3;
break;
case 0x7e: num=4;
break;
}

我也是初学 还不能判断是不是这个问题,你的写法和我学的有比较大的出入,你先试试看!
更多追问追答
追问
嗯,按逻辑推下去不该有问题啊,就算有问题那起码数码管该有变化啊,可是一点动静都没有,怀疑原理图或者板子接线有问题
你的代码我看看怎么写的
he_123456
2015-01-19 · TA获得超过2892个赞
知道大有可为答主
回答量:3162
采纳率:58%
帮助的人:1330万
展开全部
最大的可能是P1口到键盘那根排线插反了,把某一头上下颠倒试试看?这样的话,应该那16个键的某些键有反应。
也可能那根排线有断线,可以换一根试试看。
追问
正反都试过,十六个键盘一个都没反应,搞得我头都大了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-01-19
展开全部
恕本人拙见,毕业好几年了,突然有点回忆了,程序什么的都不会了呢:主程序的驱动数码管的P0是显示0吧,再看下面循环检测的程序,我好像看到从上到下没什么意义呢,temp还是0x7f,而且下面case程序无7f的值,不妨改一个值为7f,看看显示会不会有变化。哈哈,不对的地方指教哈
更多追问追答
追问
0X7f&0x0f是检测是否有键盘按下的,如果确实按下才会进入while循环
追答
你吧P1=0x7f放到while(1)上面,不要放到循环里面
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式