只有1234能显示,其他键按了无反应。。怎么回事
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
char code tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段定义:0~9
uchar keyscan();
sbit SMG_g = P1^3; //定义数码管阳级控制脚(个位)
void delay(uint);
void display(uchar);
void delay1(int);
void main()
{
while(1)
{
keyscan();
}
}
uchar keyscan()
{
uchar h,l,key,num;
P3=0xf0;//11110000
l=P3;
l=l&0xf0;
if(l!=0xf0)
{
delay(100);
if(l!=0xf0)
{
l=P3&0xf0;//11100000
l=l|0x0f; //11101111
P3=l;
h=P3;//11101110
h=h&0x0f;//00001110
l=l&0xf0;//11100000
key=h+l;
}
switch(key)
{
case 0xee:display(1);break;
case 0xde:display(2);break;
case 0xbe:display(3);break;
case 0x7e:display(4);break;
case 0xed:display(5);break;
case 0xdd:display(6);break;
case 0xbd:display(7);break;
case 0x7d:display(8);break;
case 0xeb:display(9);break;
}
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x--;x>0)
for(y=110;y--;x>0);
}
void delay1(int tValue)
{
int i,j;
for(i=0; i<tValue; i++)
{
for(j=0; j<550; j++);
}
}
void display(uchar num)
{
SMG_g=0;
P0=tab[num];
delay1(2);
}
矩阵键盘的电路图都是和普通的一样的,现在只有4个有反应其他12个没反应
你测试了吗,难道我的开发版坏了?
我就是想程序是没问题的啊,意思也对呢
恩 我试了,到9都没问题
追问我的只有4个按键正常其他的没反应怎么会这样的
我只测试1到9
恩,以前我也有这个问题,原因就是翻转的出现了问题,不知道你是不是这个问题,不过在我开发板上是对的
追问什么翻转??
告诉我吧,我会采纳的
一句两句的说不清楚,你加我Q吧 314878022
我的程序有问题吗?
追答你的程序没有送行扫描码,必须依次送。
追问我觉得程序没错的啊,先检测列在检测横