欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

关于矩阵键盘点亮led灯

更新时间: 2014-01-05 03:15:23 责任编辑: Author_N1

 

求助关于矩阵键盘点亮LED灯
 
    我将矩阵键盘引脚与P2口相连。该历程中,利用2组P3口返回值定位按下的键,继而点亮LED灯。我编写的程序如下:
#include<reg51.h>

sbit LED1 = P3^0;
sbit LED2 = P3^1;
sbit LED3 = P3^2;
sbit LED4 = P3^3;
sbit LED5 = P3^4;
sbit LED6 = P3^5;
sbit LED7 = P3^6;
sbit LED8 = P3^7;

void Delay(unsigned int i);
void Key(void);

void main()
{
while(1)
{
Key();
}
}

void Key(void)
{
unsigned char i = 0;
unsigned char j = 0;
unsigned char k = 0;
unsigned char KEY_Value = 0;

P2 = 0x0F;
i = P2;
if(i != P2)
{
Delay(1000); // 延时消抖
P2 = 0x0F; // 输入0xFF
i = P2; // 返回P2值
if(i != P2) // 监测是否有按键按下
{
P2 = 0x0F;
i = P2; // 返回值1
P2 = 0x70;
j = P2; // 返回值2
P2 = 0x7F;
k = i|j; // 两返回值按位或得到定位键盘的值
switch(k) // 定位按下的键盘
{
case 0x37:
{
KEY_Value = 1;
break;
}
case 0x3B:
{
KEY_Value = 2;
break;
}
case 0x3D:
{
KEY_Value = 3;
break;
}
case 0x3E:
{
KEY_Value = 4;
break;
}
case 0x57:
{
KEY_Value = 5;
break;
}
case 0x5B:
{
KEY_Value = 6;
break;
}
case 0x5D:
{
KEY_Value = 7;
break;
}
case 0x5E:
{
KEY_Value = 8;
break;
}
case 0x67:
{
KEY_Value = 9;
break;
}
case 0x6B:
{
KEY_Value = 10;
break;
}
case 0x6D:
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:15:23
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20190/
本文WWW.DOC100.NET DOC100.NET版权所有。