- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机实现44矩阵键盘控制项目
13.1 项目需求 矩阵键盘又称行列键盘,它是用四条I/O线作为行线,四条I/O线作为列线组成矩阵键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4*4个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。 项目要求:设定矩阵键盘编号,按下键盘中的某个按键,可以通过数码管看到显示对应的键盘编号值。 13.2 项目工作原理分析 4*4矩阵键盘的行信号分别接P2.0—P2.3,列信号分别接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输出为低电平则表示有按键按下发生闭合状态,以上只是说明有按键闭合,具体是哪个按键闭合好需要进一步检测。 一旦确定有按键已经稳定闭合后,接着判断为哪一个按键闭合,采用对按键进行扫描的方式,依次给每一条列线送低电平,其余各列都为高电平,并检测每次扫描的行状态。每当扫描输出某一列为低电平时,相继读入行线状态。若全为高电平,表示为低电平的这列没有按键闭合。否则行线不全部为高电平,表示为低电平的这列上有按键闭合。确定闭合按键的位置后,计算出按键值,产生按键码。 在矩阵按键处理过程中,一旦检测到有按键闭合与确认按键已经稳定闭合期间,通过调用10-20ms延时子程序避开按键抖动问题。由于按键是机械器件,按下或者松开时有固定的机械抖动,抖动图如图所示。 按键去抖分为硬件去抖和软件去抖,硬件去抖最简单的是按键两端并联电容,容量根据实验而定。软件去抖使用方便不增加硬件成本,容易调试,所以现在处理按键抖动问题大部分选择软件去抖。软件去抖操作步骤如下: ① 检测到按键按下后进行10-15ms延时,用于跳过这个抖动区域。 ② 延时后再检测按键状态,如果没有按下表明是抖动或者干扰造成,如果仍旧按下,可以认为是真正的按下。并进行对应的操作。 ③ 同样按键释放后也要进行去抖动延时,延时后检测按键是否真正松开。 采用单片机控制矩阵按键实现按键键码值显示的电路结构由51单片机最小系统、数码显示电路、数码驱动电路、矩阵键盘电路和电源供电电路组成。 13.3 项目硬件电路设计 矩阵键盘电路的行信号分别接P2.0—P2.3,列信号分别接P2.4—P2.7,进行按键检测时,假设查询到P25为低电平,P24 P26 P27为高电平,那么可能按下的按键为S2 S6 S10 S14。进一步探测,先把P20设置为低电平,P21 P22 P23为高电平,如果此时P25一直为低电平,就是S2按键被按下。如果P25为高电平,令其P21设为低电平,P20 P22 P23为高电平,如果此时P25为低电平,表明S6按键被按下。依此类推,可以确定S1-S16中哪个按键被按下。 13.4 项目软件程序设计 矩阵键盘行线P20~P23为输出线,列线P24~P27为输入线。单片机将行线(P20~P23)全部输出低电平,此时读入列线数据,若列线全为高电平则没有键按下,当列线有出现低电平时调用延时程序以此来去除按键抖动。延时完成后再判断是否有低电平,如果此时读入列线数据还是有低电平,则说明确实有键按下,再来进一步确定键值。 程序代码 #includereg52.h //包含头文件,头文件包含特殊功能寄存器的定义 #define uchar unsigned char #define uint unsigned int unsigned char const table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xa7,0xa1,0x86,0x8e};//定义共阳数码管段码表0-F uchar keyscan(void);//键盘扫描函数声明 void delay(void); //延时函数声明 uchar keyscan(void) //键盘扫描函数 { uchar key_h,key_l;//行列值中间变量 P2=0xf0; //行线输出全为0 key_h=P20xf0; //读入列线值 if(key_h!=0xf0) //先检测有无按键按下 { delay(); //去抖 if(key_h!=0xf0) { key_h=P20xf0; //读入列线值 P2=key_h|0x0f; //输出当前列线值 key_l=P20x0f;
您可能关注的文档
最近下载
- 美国AB变频器说明书 22F Power Flex 4m.pdf VIP
- 初三家长会家长代表发言稿(合集15篇).docx VIP
- 小学科学新苏教版二年级上册1.1 认识常见材料教学课件(2025秋).pptx VIP
- 袋式除尘器过滤材料用各种纤维的特性及其应用.doc VIP
- 初中九年级全套体育教案(共36课).doc VIP
- ASM-IS868LA操作说明书-M215C-CE-rev-A.pdf VIP
- 2.7 变形游戏(课件) 2025冀人版二年级科学上册.ppt
- 第二单元《银屏乐声》第3课时《人世间》+《永志不忘》课件 人音版八年级音乐上册.pptx VIP
- 企业主要负责人安全述职报告.pptx VIP
- 浙教版(2023)四年级上册信息科技 第1课 身边的数据 教案.docx VIP
文档评论(0)