单片机实现4X4矩阵键盘控制项目.ppt

单片机实现4X4矩阵键盘控制项目.ppt

ID:51438573

大小:1.46 MB

页数:16页

时间:2020-03-22

单片机实现4X4矩阵键盘控制项目.ppt_第1页
单片机实现4X4矩阵键盘控制项目.ppt_第2页
单片机实现4X4矩阵键盘控制项目.ppt_第3页
单片机实现4X4矩阵键盘控制项目.ppt_第4页
单片机实现4X4矩阵键盘控制项目.ppt_第5页
资源描述:

《单片机实现4X4矩阵键盘控制项目.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、第13章单片机实现4*4矩阵键盘控制项目学习内容13.1项目需求13.2项目工作原理分析13.3项目硬件电路设计13.4项目软件程序设计13.5系统调试结果总结13.1项目需求矩阵键盘又称行列键盘,它是用四条I/O线作为行线,四条I/O线作为列线组成矩阵键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4*4个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。项目要求:设定矩阵键盘编号,按下键盘中的某个按键,可以通过数码管看到显示对应的键盘编号值。(4*4)矩阵键盘实物图13.2项目工作原理分析4*4矩阵键盘的行信号分别接P2.0—P2.3,列信号分别接

2、P2.4—P2.7,无按键闭合时,P2.0—P2.3与P2.4—P2.7开路。当有键闭合时,与闭合键相连的两条I/O口线之间短路。判断矩阵键盘有按键按下方法如下:先让P2.0—P2.3输出低电平,监测P2.4—P2.7的状态,如果P2.4—P2.7输出为高电平则没有按键闭合,如果检测到P2.4—P2.7输出为低电平则表示有按键按下发生闭合状态,以上只是说明有按键闭合,具体是哪个按键闭合好需要进一步检测。一旦确定有按键已经稳定闭合后,接着判断为哪一个按键闭合,采用对按键进行扫描的方式,依次给每一条列线送低电平,其余各列都为高电平,并检测每次扫描的行状态。每当扫描输出某一列为低电平时,相继

3、读入行线状态。若全为高电平,表示为低电平的这列没有按键闭合。否则行线不全部为高电平,表示为低电平的这列上有按键闭合。确定闭合按键的位置后,计算出按键值,产生按键码。在矩阵按键处理过程中,一旦检测到有按键闭合与确认按键已经稳定闭合期间,通过调用10-20ms延时子程序避开按键抖动问题。由于按键是机械器件,按下或者松开时有固定的机械抖动,抖动图如图所示。按键去抖分为硬件去抖和软件去抖,硬件去抖最简单的是按键两端并联电容,容量根据实验而定。软件去抖使用方便不增加硬件成本,容易调试,所以现在处理按键抖动问题大部分选择软件去抖。软件去抖操作步骤如下:①检测到按键按下后进行10-15ms延时,用于

4、跳过这个抖动区域。②延时后再检测按键状态,如果没有按下表明是抖动或者干扰造成,如果仍旧按下,可以认为是真正的按下。并进行对应的操作。③同样按键释放后也要进行去抖动延时,延时后检测按键是否真正松开。采用单片机控制矩阵按键实现按键键码值显示的电路结构由51单片机最小系统、数码显示电路、数码驱动电路、矩阵键盘电路和电源供电电路组成。单片机控制矩阵键盘电路结构图13.3项目硬件电路设计矩阵键盘电路的行信号分别接P2.0—P2.3,列信号分别接P2.4—P2.7,进行按键检测时,假设查询到P25为低电平,P24P26P27为高电平,那么可能按下的按键为S2S6S10S14。进一步探测,先把P20

5、设置为低电平,P21P22P23为高电平,如果此时P25一直为低电平,就是S2按键被按下。如果P25为高电平,令其P21设为低电平,P20P22P23为高电平,如果此时P25为低电平,表明S6按键被按下。依此类推,可以确定S1-S16中哪个按键被按下。单片机控制矩阵键盘硬件电路原理图13.4项目软件程序设计矩阵键盘行线P20~P23为输出线,列线P24~P27为输入线。单片机将行线(P20~P23)全部输出低电平,此时读入列线数据,若列线全为高电平则没有键按下,当列线有出现低电平时调用延时程序以此来去除按键抖动。延时完成后再判断是否有低电平,如果此时读入列线数据还是有低电平,则说明确实

6、有键按下,再来进一步确定键值。系统软件设计流程图程序代码#include//包含头文件,头文件包含特殊功能寄存器的定义#defineucharunsignedchar#defineuintunsignedintunsignedcharconsttable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xa7,0xa1,0x86,0x8e};//定义共阳数码管段码表0-Fucharkeyscan(void);//键盘扫描函数声明voiddelay(void);//延时函数声明ucharke

7、yscan(void)//键盘扫描函数{ucharkey_h,key_l;//行列值中间变量P2=0xf0;//行线输出全为0key_h=P2&0xf0;//读入列线值if(key_h!=0xf0)//先检测有无按键按下{delay();//去抖if(key_h!=0xf0){key_h=P2&0xf0;//读入列线值P2=key_h

8、0x0f;//输出当前列线值key_l=P2&0x0f;//读入行线值return(key_h+key_l);

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。