矩阵键盘

时间:2024-04-07 07:34:34编辑:奇事君

键盘逐行扫描法和行列扫描法的区别

一、原理不同逐行扫描法的原理是由程序对键盘进行逐行扫描,通过检测到的列输出状态来确定闭合键。行列扫描法的原理是通过行列颠倒扫描来识别闭合键。在扫描每一行时,读列线;然后依次向列线扫描输出,读行线。二、端口不同逐行扫描法需要设置输入口、输出口各一个。行列扫描法需要提供两个可编程的双向输入/输出端口。扩展资料键盘的基本工作原理就是实时监视按键,将按键信息送入计算机。在键盘的内部设计中有定位按键位置的键位扫描电路、产生被按下键代码的编码电路以及将产生代码送入计算机的接口电路等等,这些电路被统称为键盘控制电路。根据键盘工作原理,可以把计算机键盘分为编码键盘和非编码键盘。键盘控制电路的功能完全依靠硬件来自动完成的,这种键盘称为编码键盘,它能自动将按下键的编码信息送入计算机。另外一种键盘,它的键盘控制电路功能要依靠硬件和软件共同完成,这种键盘称为非编码键盘。这种键盘响应速度不如编码键盘快,但它可通过软件为键盘的某些按键重新定义,为扩充键盘的功能提供了极大地方便,从而得到了广泛应用。参考资料来源:百度百科-键盘 (计算机输入设备)百度百科-逐行扫描

矩阵键盘扫描程序分析

矩形键盘扫描程序分析如下:

1、在键盘中按键数量较多时,通常将按键排列成矩阵形式,在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接;

2、一个端口就可构成16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键,由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的;

3、在单片机应用系统中,键盘扫描只是CPU的工作内容之一,CPU对键盘的响应取决于键盘的工作方式,键盘的工作方式应根据实际应用系统中CPU的工作状况而定,其选取的原则是既要保证CPU能及时响应按键操作,又不要过多占用CPU的工作时间,通常,矩形键盘的工作方式有三种,即编程扫描、定时扫描和中断扫描。


单片机中的4×4矩阵键盘的键值怎么求?

单片机书上应该有讲的哦,多查资料。
既然是4x4,即4行4列了,共需要8个I/O口,有8bit数据(如高四位为行4bit,低四位为列4bit)位:xxxx xxxx。还要结合你的程序来编码键值,如果有键按下了,查询所有按键的所连接的I/O口电平状态,每个按键需要两个I/O口,一端连接行(行4bit之一),一端连接列(列4bit之一);若此时按键的电平状态为0010 0001,即十六进制数据0x21,按下的按键所对应的键值编码即为0x21。当然为了使用方便,在确定了按下按键的编码后,可对其赋值,我要将它赋值为数字键8,方便后续编程使用。例:

//获取键值编码,由于确定哪个按键按下
uchar keyscan(void)//键盘扫描函数,使用行列反转扫描法
{
uchar cord_h,cord_l;//行列值
P3=0x0f; //行线输出全为0
cord_h=P3&0x0f; //读入列线值
if(cord_h!=0x0f) //先检测有无按键按下
{
delay(100); //去抖
if(cord_h!=0x0f)
{
cord_h=P3&0x0f; //读入列线值
P3=cord_h|0xf0; //输出当前列线值
cord_l=P3&0xf0; //读入行线值
return(cord_h+cord_l);//键盘最后组合码值
}
}return(0xff); //返回该值
}

while(1)
{
key=keyscan();//调用键盘扫描,

//keyVal=0~15表示按键对应的功能
switch(key)
{
case 0x7e:keyVal=0;break;//0 按下相应的键显示相对应的码值
case 0x7d:keyVal=1;break;//1
case 0x7b:keyVal=2;break;//2
case 0x77:keyVal=3;break;//3
case 0xbe:keyVal=4;break;//4
case 0xbd:keyVal=5;break;//5
case 0xbb:keyVal=6;break;//6
case 0xb7:keyVal=7;break;//7
case 0xde:keyVal=8;break;//8
case 0xdd:keyVal=9;break;//9
case 0xdb:keyVal=10;break;//a
case 0xd7:keyVal=11;break;//b
case 0xee:keyVal=12;break;//c
case 0xed:keyVal=13;break;//d
case 0xeb:keyVal=14;break;//e
case 0xe7:keyVal=15;break;//f
}


单片机中的4×4矩阵键盘的键值怎么求?

矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。这样键盘中按键的个数是4×4个。这种行列式键盘结构能够有效地提高单片机系统中I/O口的利用率。由于单片机IO端口具有线与的功能,因此当任意一个按键按下时,行和列都有一根线被线与,通过运算就可以得出按键的坐标从而判断按键键值。原理如同矩阵数列的行列式可以用下述代码进行://*************************************************** //函数功能: //单片机驱动4*4键盘,读入键盘值并使用数码管静态 //显示按键键值,若没有数码管用8421码显示LED灯也可以的 //读入原理:先令单片机端口输出11110000读一次,然后 //再令单片机输出00001111读一次把两次的值相加,最后 //获取一个高位和低位分别有0的值即可判断键值, //如11101110 //*************************************************** #include #define uchar unsigned char #define uint unsigned int unsigned char code smg_d[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //************************************************ //延时函数,在12MHz的晶振频率下 //大约50us的延时 //************************************************ void delay_50us(uint t) { uchar j; for(;t>0;t--) for(j=19;j>0;j--); } void main() { uchar key_l,key_h; uchar key; while(1) { P1=0xf0; key_l=P1; //读P1端口的值 key_l=key_l&0xf0; //令低4位置位为0 if(key_l!=0xf0) //判断是否有按键按下 { delay_50us(100); if(key_l!=0xf0) { //若有按键按下,则切换高低4位判断键值 key_l=P1&0xf0; //11100000 获取第一次键值 key_l=key_l|0x0f;//11101111 P1=key_l; //反过来再读一次,由于人手按下按键的时间虽然短暂,但是 key_h=P1; //对于单片机来说,已经足够长,因此可以正反读取两次值 key_h=key_h&0x0f;//00001110 key_l=key_l&0xf0;//11100000 key=key_h+key_l; //11101110 } } switch (key) { case 0xee:P2=smg_d[0];break; case 0xde:P2=smg_d[1];break; case 0xbe:P2=smg_d[2];break; case 0x7e:P2=smg_d[3];break; case 0xed:P2=smg_d[4];break; case 0xdd:P2=smg_d[5];break; case 0xbd:P2=smg_d[6];break; case 0x7d:P2=smg_d[7];break; case 0xeb:P2=smg_d[8];break; case 0xdb:P2=smg_d[9];break; case 0xbb:P2=smg_d[10];break; case 0x7b:P2=smg_d[11];break; case 0xe7:P2=smg_d[12];break; case 0xd7:P2=smg_d[13];break; case 0xb7:P2=smg_d[14];break; case 0x77:P2=smg_d[15];break; } } }


单片机独立键盘和矩阵键盘的对比,他们的优缺点是什么

独立按键:优点:可以直接读取,检测占用时间较少,不受其它因素影响。缺点:占用IO口资源较多,每一个按键都独占一个IO口。矩阵键盘:优点:占用IO口资源较少。缺点:必须扫描检测按键情况,程序复杂,占用时间较多。扩展资料:在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显。参考资料来源:百度百科-矩阵键盘

上一篇:电工电路图

下一篇:16番