51单片机矩阵键盘原理
51单片机矩阵键盘原理

51单片机矩阵键盘原理51单片机矩阵键盘原理矩阵键盘是一种常用的输入设备,可以通过少量的I/O口控制多个按键。
51单片机作为嵌入式系统中常用的控制器,也可以通过控制矩阵键盘来实现输入功能。
1. 矩阵键盘的结构矩阵键盘由多个按键组成,每个按键都有一个引脚与其他按键共用,形成了一个按键矩阵。
例如,4x4的矩阵键盘有16个按键,其中每行和每列各有4个引脚。
2. 矩阵键盘的工作原理当用户按下某一个按键时,该按键所在行和列之间会形成一个电路通路。
这时,51单片机可以通过扫描所有行和列的电路状态来检测到用户所按下的具体按键。
具体实现过程如下:(1)将每一行引脚设置为输出状态,并将其输出高电平;(2)将每一列引脚设置为输入状态,并开启上拉电阻;(3)逐一扫描每一行引脚,当发现某一行被拉低时,则表示该行对应的某一个按键被按下;(4)记录下该行号,并将该行引脚设置为输入状态,其余行引脚设置为输出状态;(5)逐一扫描每一列引脚,当发现某一列被拉低时,则表示该列对应的是刚才所记录下的行号及其对应的按键;(6)通过行号和列号确定具体按键,并进行相应的处理。
3. 代码实现下面是一个简单的51单片机矩阵键盘扫描程序:```c#include <reg52.h> //头文件sbit row1 = P1^0; //定义引脚sbit row2 = P1^1;sbit row3 = P1^2;sbit row4 = P1^3;sbit col1 = P1^4;sbit col2 = P1^5;sbit col3 = P1^6;sbit col4 = P1^7;unsigned char keyscan(void) //函数定义{unsigned char keyvalue; //定义变量while(1) //循环扫描{row1=0;row2=row3=row4=1; //设置行状态 if(col1==0){keyvalue='7';break;} //读取按键值 if(col2==0){keyvalue='8';break;}if(col3==0){keyvalue='9';break;}if(col4==0){keyvalue='/';break;}row2=0;row1=row3=row4=1;if(col1==0){keyvalue='4';break;}if(col2==0){keyvalue='5';break;}if(col3==0){keyvalue='6';break;} if(col4==0){keyvalue='*';break;}row3=0;row1=row2=row4=1; if(col1==0){keyvalue='1';break;} if(col2==0){keyvalue='2';break;} if(col3==0){keyvalue='3';break;} if(col4==0){keyvalue='-';break;}row4=0;row1=row2=row3=1; if(col1==0){keyvalue='C';break;} if(col2==0){keyvalue='0';break;} if(col3==0){keyvalue='=';break;} if(col4==0){keyvalue='+';break;}}return keyvalue; //返回按键值}void main() //主函数{unsigned char key;while(1) //循环读取{key = keyscan(); //调用函数}}```以上代码实现了一个简单的矩阵键盘扫描程序,可以通过调用`keyscan()`函数来获取用户所按下的具体按键值。
基于51单片机的电子密码锁

电子密码锁一、工作原理本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O 线的数目,在按键比较多的时候,通常采用这样方法。
每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N ×M个按键的键盘。
在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。
4×4矩阵键盘的工作原理在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图5所示。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。
由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
扫描原理把每个键都分成水平和垂直的两端接入,比如说扫描码是从垂直的入,那就代表那一行所接收到的扫描码是同一个bit,而读入扫描码的则是水平,扫描的动作是先输入扫描码,再去读取输入的值,经过比对之后就可知道是哪个键被按下。
由于这种按键是机械式的开关,当按键被按下时,键会震动一小段时间才稳定,为了避免让8051误判为多次输入同一按键,我们必须在侦测到有按键被按下,就Delay一小段时间,使键盘以达稳定状态,再去判读所按下的键,就可以让键盘的输入稳定。
利用51单片机设计一个用16个按键输入,6位数字输出显示的电子时钟。
如图1-1所示。
图1-1按键分布图具体要求和按键功能介绍如下:1. 上电后,6 位数码管显示“—”;2. 设置6 位密码,密码通过键盘输入,按“确定”键确认,如密码正确,将锁打开;3. 密码由用户自己设定,若密码正确即锁被打开,则指示灯被点亮;4. 若密码1 次输入错误,则报警;5. 按Set 键,修改密码;6. 按Cle 键可清除已输入的密码,重新进行输二、系统硬件组成本次设计的主要有键盘,数码管,STC89C52芯片,以及LED灯。
实验一 矩阵键盘检测

实验一矩阵键盘检测一、实验目的:1、学习非编码键盘的工作原理和键盘的扫描方式。
2、学习键盘的去抖方法和键盘应用程序的设计.二、实验设备:51/AVR实验板、USB连接线、电脑三、实验原理:键盘接口电路是单片机系统设计非常重要的一环,作为人机交互界面里最常用的输入设备。
我们可以通过键盘输入数据或命令来实现简单的人机通信。
1、按键的分类一般来说,按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。
前者造价低,后者寿命长.目前,微机系统中最常见的是触点式开关按键(如本学习板上所采用按键)。
按键按照接口原理又可分为编码键盘与非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键码的方法。
编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的识别.全编码键盘由专门的芯片实现识键及输出相应的编码,一般还具有去抖动和多键、窜键等保护电路,这种键盘使用方便,硬件开销大,一般的小型嵌入式应用系统较少采用。
非编码键盘按连接方式可分为独立式和矩阵式两种,其它工作都主要由软件完成.由于其经济实用,较多地应用于单片机系统中(本学习板也采用非编码键盘)。
2、按键的输入原理在单片机应用系统中,通常使用机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。
也就是说,它能提供标准的TTL 逻辑电平,以便与通用数字系统的逻辑电平相容。
此外,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据。
当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能。
因此,键信息输入是与软件结构密切相关的过程。
对于一组键或一个键盘,通过接口电路与单片机相连.单片机可以采用查询或中断方式了解有无按键输入并检查是哪一个按键按下,若有键按下则跳至相应的键盘处理程序处去执行,若无键按下则继续执行其他程序。
矩阵键盘的原理及应用

矩阵键盘的原理及应用1. 矩阵键盘的原理矩阵键盘是一种常见的输入设备,由多个按键组成,可以同时检测多个按键的状态。
它采用了行列交叉的按键排列方式,通过按键的组合来实现多个输入选项。
其原理主要包括以下几个方面:1.1. 电路结构矩阵键盘的电路结构也称为“行列式键盘”,主要由行线(Row)和列线(Column)组成。
行线和列线通过导线互相交叉连接形成一个矩阵,每个按键都对应矩阵中的一个交叉点。
按键按下时,会导通对应的行线和列线,从而实现按键的状态检测。
1.2. 矩阵扫描矩阵键盘的工作原理是通过矩阵扫描来检测按键状态。
扫描过程由控制器完成,控制器通过逐行扫描的方式检测按键状态。
具体流程如下:1.所有行线置为高电平,所有列线设置为输入模式。
2.逐行将某一行设置为低电平,同时读取列线上的状态。
3.根据读取到的列线状态,确定按下的按键。
4.更新按键的状态,并记录下来。
5.重复以上步骤,直到扫描结束。
1.3. 按键编码矩阵键盘检测到按键状态后,需要进行按键编码,将按键状态转化为数字或字符。
常见的按键编码方式有两种:•行列编码:将矩阵键盘的行和列对应关系转化为一个唯一的值,通常使用二进制编码来表示。
•状态编码:通过按键的状态(按下或释放)来表示,通常使用两个状态位来编码。
2. 矩阵键盘的应用矩阵键盘由于其结构简单、使用方便等特点,在多个领域都得到了广泛的应用。
以下是矩阵键盘的一些常见应用场景:2.1. 电子产品矩阵键盘在电子产品中被广泛应用,比如手机、电视遥控器、计算器等。
它可以提供多个输入选项,方便用户进行操作。
矩阵键盘的结构紧凑,可与其他电路板集成,节省空间,适用于小型电子产品。
2.2. 工业控制矩阵键盘在工业控制领域也有重要应用。
比如工控终端设备、仪表仪器等,可以利用矩阵键盘实现数据输入和操作控制。
由于矩阵键盘可以同时检测多个按键的状态,因此非常适合于工业环境中需要同时输入多个信号的场合。
2.3. 家用电器矩阵键盘在家用电器中也有广泛应用,如洗衣机、微波炉、冰箱等。
单片机实验报告——矩阵键盘数码管显示

单片机实验报告信息处理实验实验二矩阵键盘专业:电气工程及其自动化指导老师:***组员:明洪开张鸿伟张谦赵智奇学号:152703117 \152703115\152703118\152703114室温:18 ℃日期:2017 年10 月25日矩阵键盘一、实验内容1、编写程序,做到在键盘上每按一个键(0-F)用数码管将该建对应的名字显示出来。
按其它键没有结果。
二、实验目的1、学习独立式按键的查询识别方法。
2、非编码矩阵键盘的行反转法识别方法。
3、掌握键盘接口的基本特点,了解独立键盘和矩阵键盘的应用方法。
4、掌握键盘接口的硬件设计方法,软件程序设计和贴士排错能力。
5、掌握利用Keil51软件对程序进行编译。
6、会根据实际功能,正确选择单片机功能接线,编制正确程序。
对实验结果能做出分析和解释,能写出符合规格的实验报告。
三、实验原理1、MCS51系列单片机的P0~P3口作为输入端口使用时必须先向端口写入“1”。
2、用查询方式检测按键时,要加入延时(通常采用软件延时10~20mS)以消除抖动。
3、识别键的闭合,通常采用行扫描法和行反转法。
行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。
行反转法识别闭合键时,要将行线接一并行口,先让它工作在输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口在各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。
然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上输入值,那么,在闭合键所在行线上的值必定为0。
这样,当一个键被接下时,必定可以读得一对唯一的行线值和列线值。
由于51单片机的并口能够动态地改变输入输出方式,因此,矩阵键盘采用行反转法识别最为简便。
矩阵键盘的键值计算及编程

2 读取I/O口值的练习
.j
用程序控制单片机P2口工作,让高四位全高电平,低四位全低电平。 即:P2=0xf0; 具体实现见操作,结果如图。
P1口高四位是指:P1.7 P1.6 P1.5 P1.4
一般都是自高到低读出一个端口各脚电平 ,得到8位二进制数,再将8位二进制转换成2位十六进数。
P3口值= P3.7 P3.6 P3.5 P3.4P3.3 P3.2 P3.1 P3.0 =1111 1010=0xfa
2 读取I/O口值的练习
.j
当 程序使P2=0x0f; 外接一个两脚开关到P2口只能让P2产生如下四个新的值: 0x0e, 0x0d,0x0b,0x07 0x0d 0x0b
找出行线值 置行线所处端口位置高电平
找出列线值 置列线所处端口位置高电平
行线值+列线值=键值
计算键值一般方法
3 键盘的键值
.j
先找出行线值,再找出列线值,最后绘出矩阵键盘的键值。
总结
4×4矩阵键盘的键值 共有16个,计算键值时总是:
4 键盘扫描编程__线反转法
.j
/************键盘扫子描函数*******************/ char keyscan(void) //键盘扫描函数,键盘使用P2口 { char value_h,value_l; //value_h行值变量,value_l列值变量 P2=0xf0; //将行线所处位置置高电平 if((P2&0xf0)!=0xf0) //判断是否有键按下 { delay(10); //延时防抖 if((P2&0xf0)!=0xf0) //仍有键按下 { value_h=P2&0xf0; //读出P2口值给变量value_h P2=0x0f; //将列线所处位置置高电平 value_l=P2&0x0f; //读出P2口值给变量value_l return(value_l+value_h); //找到的键值返回给调用函数 } } }
51单片机矩阵键盘设计

51单片机矩阵键盘设计
一、引言
AT89C51单片机矩阵键盘设计是嵌入式系统中一个重要的技术,它的
作用是以矩阵形式把外部按键与MCU相连,使得系统可以对外部的按键进
行检测和响应。
矩阵键盘设计在可编程嵌入式系统的设计中占有重要的地位,如智能交通系统、智能家居系统、航空电子系统等。
本文主要介绍了矩阵键盘设计中硬件电路的设计,包括按键、拉电阻、和矩阵编码等,同时给出系统的控制算法,使得系统可以实现有效的按键
检测和响应。
二、矩阵键盘概述
矩阵键盘是将多个按键排布成列行形式进行连接,一般来说,矩阵键
盘是由按键、拉电阻、矩阵编码器和控制器组成,按键是系统中重要的部件,其作用是将外部输入信号传递给控制器。
拉电阻起到的作用是防止按
键耦合,一般可以使用4.7KΩ拉电阻来防止按键耦合。
矩阵编码器用来
识别按键的状态,通常通过硬件把按键信号编码为数字信号,输入到处理
器或控制器。
控制器用来实现按键信号的检测,通过定义硬件定时器和软
件定时器,实现按键检测和处理。
1、硬件电路设计
应用AT89C51单片机矩阵键盘。
51单片机矩阵键盘线反转法体会

51单片机矩阵键盘线反转法体会独立式键盘扫描只需读取IO口状态,而矩阵式键盘描通常有两种实现方法:逐行扫描法和线反转法。
(1)逐行扫描法依次从第一至最末行线上发出低电平信号,如果该行线所连接的键没有按下的话,则列线所接的端口得到的是全“1”信号,如果有键按下的话,则得到非全“1”信号。
(2)线反转法线反转法比行扫描速度快,原理是先将行线作为输出线,列线作为输入线,行线输出全“0”信号,读入列线的值,那么在闭合键所在的列线上的值必为0;然后从列线输出全“0”信号,再读取行线的输入值,闭合键所在的行线值必为0。
这样,当一个键被按下时,必定可读到一对唯一的行列值。
再由这一对行列值可以求出闭合键所在的位置。
/*在TX-1C实验板上实现如下描述:实验板上电时,数码管不显示,顺序按下矩阵键盘后,在数码管上依次显示0~F,6个数码管同时显示。
这里用“线反转”的方法写,可以代替郭天祥书上例【4.2.1】该书上使用逐行扫描的方式。
*/#include<reg52.h>#define uchar unsigned char#define uintunsigned intsbit duan=P2^6;//打开位选和段选sbit wei=P2^7;uchar code table[]={//数码管显示数值表0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delay(uint x){uint i,j;for(i=x;i>0;i--)for(j=110;j>0;j--);}void xianshi(uchar num){P0=table[num]; duan=1;duan=0;}uchar keyscan(void){uchar h,l;P3=0x0f;h=P3&0x0f;if(h!=0x0f){delay(10);if(h!=0x0f){h=P3&0x0f;P3=0xf0;l=P3&0xf0;return (h+l);}}return 0xff;}void main(){uchar key;P0=0;示duan=1;duan=0;//毫秒级延时函数//段选显示函数//矩阵键盘扫描函数//定义行、列值中间变量//列线输出全为0//读入行线//检测有无按键按下//延时去抖//如果确实按下//再次读入行线//输出当前列线值,行线反转//读入列线值//键盘最后组合编码值,也就是键值//其余情况返回该值//关闭所有数码管段选,实验板上电数码管不显P0=0xc0;//选中6位数码管wei=1;wei=0;while(1){key=keyscan();//用key读取keyscan()的值switch(key){case 0xee:key=0;while(keyscan()!=0xff); xianshi(key); break;//while(keyscan()!=0xff)是松手检测语句,松手时检测case0xde:key=1;while(keyscan()!=0xff);xianshi(key);//keyscan()函数会得到返回值0xff,!=oxff时表示按下去了case 0xbe:key=2;while(keyscan()!=0xff); xianshi(key); break;case 0x7e:key=3;while(keyscan()!=0xff); xianshi(key); break;case 0xed:key=4;while(keyscan()!=0xff); xianshi(key); break;case 0xdd:key=5;while(keyscan()!=0xff); xianshi(key); break;case 0xbd:key=6;while(keyscan()!=0xff); xianshi(key); break;case 0x7d:key=7;while(keyscan()!=0xff); xianshi(key); break;case 0xeb:key=8;while(keyscan()!=0xff); xianshi(key); break;case 0xdb:key=9;while(keyscan()!=0xff); xianshi(key); break;case 0xbb:key=10; while(keyscan()!=0xff); xianshi(key); break;case 0x7b:key=11; while(keyscan()!=0xff); xianshi(key); break;case 0xe7: key=12; while(keyscan()!=0xff); xianshi(key); break;case 0xd7: key=13; while(keyscan()!=0xff); xianshi(key); break;case 0xb7: key=14; while(keyscan()!=0xff); xianshi(key); break;case 0x77: key=15; while(keyscan()!=0xff); xianshi(key); break;default:break;}}}/*后记*//*刚开始写这个程序时我把主函数里面的switch—case语句这样写的,while(1){key=keyscan();//用key读取keyscan()的值switch(key){case 0xee:key=0;break;case 0xde:key=1;break;case 0xbe:key=2;break;break;}case 0x7e:key=3;break;case 0xed:key=4;break;case 0xdd:key=5;break;case 0xbd:key=6;break;case 0x7d:key=7;break;case 0xeb:key=8;break;case 0xdb:key=9;break;case 0xbb:key=10; break;case 0x7b:key=11; break;case 0xe7: key=12; break; case 0xd7: key=13; break; case 0xb7: key=14; break; case 0x77: key=15; break; default:break;}xianshi(key);运行程序后发现当手按下按键时会有数码的显示,但是一旦放开按键数码管就什么都不显示了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机矩阵键盘原理
介绍
在嵌入式系统中,矩阵键盘是一种常见的输入装置。
51单片机是广泛使用的一种
微控制器,结合矩阵键盘可以实现各种应用。
本文将详细介绍51单片机矩阵键盘
的原理及其工作方式。
什么是矩阵键盘?
矩阵键盘是将一组按钮布置成矩阵形式,以减少输入引脚的数量。
每个按钮在矩阵键盘中都会被分配一个坐标,通过扫描行和列,可以确定用户按下的是哪个按钮。
51单片机的输入输出结构
51单片机具有强大的输入输出能力,可以连接各种外设。
在使用矩阵键盘时,通
常使用IO口进行输入和输出操作。
矩阵键盘的接线方式
将矩阵键盘与51单片机连接时,需要将键盘的行和列引脚分别连接到单片机的IO 口。
通过对行进行扫描,再根据列的输入状态判断按钮是否按下。
这种接线方式可以大大减少所需的IO口数量。
矩阵键盘的扫描原理
矩阵键盘的扫描原理是通过不断扫描行并读取列的状态来判断按钮是否按下。
具体步骤如下: 1. 将所有行引脚设为输出,输出高电平。
2. 逐个扫描行,将当前行引脚设为低电平。
3. 读取所有列引脚的状态,如果有低电平表示有按钮按下。
4. 如果有按钮按下,则根据行和列的坐标确定按下的按钮。
51单片机矩阵键盘的实现
以下是使用51单片机实现矩阵键盘的基本步骤: 1. 将行和列引脚连接到单片机的IO口。
2. 初始化IO口的状态。
3. 在主程序中进行循环扫描,根据扫描结果执行相应的操作。
优化矩阵键盘的扫描速度
为了提高矩阵键盘的扫描速度,可以采用以下优化方法: 1. 使用硬件定时器来定时扫描行,减少CPU的负载。
2. 使用中断方式处理按键事件,从而减少程序中的轮询操作。
3. 将矩阵键盘的行和列布局进行优化,减少扫描的时间复杂度。
利用矩阵键盘实现密码输入
矩阵键盘广泛应用于密码输入功能。
通过将矩阵键盘与51单片机结合,可以实现密码的输入、验证等功能。
以下是一个简单的密码输入的实现步骤: 1. 设置一个密码数组用于存储密码。
2. 使用矩阵键盘获取用户输入的密码,并依次存储到临时数组中。
3. 在输入完成后,将临时数组与密码数组进行比较,判断是否输入正确。
利用矩阵键盘还可以实现更多有趣的功能,如控制LED灯的亮灭、控制电机的转动等。
小结
51单片机矩阵键盘原理是一种常见的输入方式,通过对行和列的扫描,可以准确判断用户按下的按钮。
本文详细介绍了51单片机矩阵键盘的原理、接线方式、扫描方法以及实现密码输入的示例。
希望读者通过本文的学习,能够充分理解并应用51单片机矩阵键盘的原理。