简介
矩阵键盘一般为4×4或4×3的。矩阵键盘的判断方式分按行扫描和按列扫描。
简单说就是给全体一个高电平,然后给一个按键的一端附上低电平,再判断另一端是否为低电平。
原理图
代码部分
#include <REGX52.H>
void delay()//延时函数
{
unsigned int i;
for(i=0;i<30000;i++);
}
unsigned char MatrixKey()
{
unsigned char KeyNumber;//定义一个返回值
P1=0xFF;//全体给高电平
P1_0=0;//一端给低电平
if(P1_4==0)//判断另一端是否为低电平
{
delay();
while(P1_4==0);
delay();
KeyNumber=1;//返回第一个按键
}
if(P1_5==0)
{
delay();
while(P1_4==0);
delay();
KeyNumber=2;
}
if(P1_6==0)
{
delay();
while(P1_4==0);
delay();
KeyNumber=3;
}
P1=0xFF;
P1_1=0;
if(P1_4==0)
{
delay();
while(P1_4==0);
delay();
KeyNumber=4;
}
if(P1_5==0)
{
delay();
while(P1_4==0);
delay();
KeyNumber=5;
}
if(P1_6==0)
{
delay();
while(P1_4==0);
delay();
KeyNumber=6;
}
P1=0xFF;
P1_2=0;
if(P1_4==0)
{
delay();
while(P1_4==0);
delay();
KeyNumber=7;
}
if(P1_5==0)
{
delay();
while(P1_4==0);
delay();
KeyNumber=8;
}
if(P1_6==0)
{
delay();
while(P1_4==0);
delay();
KeyNumber=9;
}
P1=0xFF;
P1_3=0;
if(P1_4==0)
{
delay();
while(P1_4==0);
delay();
KeyNumber=10;
}
if(P1_5==0)
{
delay();
while(P1_4==0);
delay();
KeyNumber=11;
}
if(P1_6==0)
{
delay();
while(P1_4==0);
delay();
KeyNumber=12;
}
return KeyNumber;//返回值
}
结论
代码我只给了矩阵键盘这部分。矩阵键盘这方面知识很简单但也很重要,到后面的学习一般都会用得到。