独立键盘和矩阵键盘检测原理及实现
键盘的分类:编码键盘和非编码键盘
键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如:计算机键盘。靠软件编程识别的称为非编码键盘;在单片机组成的各种系统中,用的最多的是非编码键盘,也有用到编码键盘的。
非编码键盘又分为独立键盘和行列式键盘(矩阵键盘)。
在计算机工程中指的是线路逻辑中的"或"和"与"操作。在电路中,线或操作涉及到一条线和一个开关,当开关闭合时,整条线的电平状态会发生变化。具体来说,如果一端是高电平,另一端是低电平,开关闭合后,整条线会变为低电平,这就是线与的关系;如果一端是高阻态,另一端是高电平,开关闭合后,整条线会变为高电平,这就是线或的关系
原理图如下:
cpp
#include <reg52.h>
sbit d1=P1^0;//声明第一个发光二极管
sbit key1=P3^4;
sbit wela=P2^7;
sbit dula=P2^6;
unsigned char num;//定义数码管显示的数字变量
unsigned char code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
//打开第一个数码管
wela=1;
P0=0xfe;
wela=0;
P3=0xff;
while(1)
{
if(key1==0)
{
delay(10);//延迟一段时间
if(key1==0)
{
d1=0;//按键按下第一个发光二极管点亮
num++;
if(num==10)
{
num=0;
}
}
while(!key1);//如果key1=0,说明未松手(松手检测),一直等待
delay(10);
while(!key1);
}else{
d1=1;//否则第一个发光二极管熄灭
}
dula=1;
P0=table[num];
dula=0;
}
}
独立键盘与数码管联动