向高手请教C51单片机4*4矩阵键盘控制八个二极管显示问题,谢谢!!!!!!
哪位高手能帮我用C语言写一个程序,当按下第一个按键时第一个二极管亮依次往下直到按第八按键时第八个二极管亮,但要用下面的这种扫描程序:voidmatrixkeyscan()...
哪位高手能帮我用C语言写一个程序,当按下第一个按键时第一个二极管亮依次往下直到按第八按键时第八个二极管亮,但要用下面的这种扫描程序:
void matrixkeyscan()
{
uchar temp,key;
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delayms(10);
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0);
{
temp=P3;
switch(temp)
{
case 0xee:
key=0;
break;
case 0xde:
key=1;
break;
case 0xbe:
key=2;
break;
case 0x7e:
key=3;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
display(key);
}
}........................................
PS:程序中有用不到或错误的地方可以进行修改。 展开
void matrixkeyscan()
{
uchar temp,key;
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delayms(10);
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0);
{
temp=P3;
switch(temp)
{
case 0xee:
key=0;
break;
case 0xde:
key=1;
break;
case 0xbe:
key=2;
break;
case 0x7e:
key=3;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
display(key);
}
}........................................
PS:程序中有用不到或错误的地方可以进行修改。 展开
展开全部
1、第二处 if(temp!=0xf0); 最后的分号应该是笔误,去掉;。
2、此子函数的末尾,缺}一个。
3、该子程序,影响全局变量key。另外,键值并没有给出5-8键值码。
4、不知道:LED挂在什么地方,咋亮(P1),不知道:是不是按啥,第啥个灯亮的控制要求。
unsigned char key;
void matrixkeyscan(void);
main()
{
unsigned char i;
while(1)
{
matrixkeyscan();//假设你用了静态扫描显示key,且保留。
i=1;
i<<=(key-1);
P1=~i; //其实这三行,可以放在display的后面。
}
}
2、此子函数的末尾,缺}一个。
3、该子程序,影响全局变量key。另外,键值并没有给出5-8键值码。
4、不知道:LED挂在什么地方,咋亮(P1),不知道:是不是按啥,第啥个灯亮的控制要求。
unsigned char key;
void matrixkeyscan(void);
main()
{
unsigned char i;
while(1)
{
matrixkeyscan();//假设你用了静态扫描显示key,且保留。
i=1;
i<<=(key-1);
P1=~i; //其实这三行,可以放在display的后面。
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询