资源描述:
《MCS-51单片机外部并行口扩展技术-542 键盘接口工作原理1》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章MCS-51单片机外部并行口扩展技术5.4.2键盘接口工作原理5.4.2键盘接口工作原理键盘人机交互的一个重要工具两种基本类型编码键盘除了按键以外,还包括产生键码的硬件电路使用方便、价格较高非编码键盘靠软件来识别键盘上的闭合键,由此计算出编码几乎不需要附加硬件逻辑在单片机应用系统中被普遍使用1.非编码键盘的工作原理分类硬件编码式键盘、二维直读式键盘独立式键盘〔简单键盘〕、行列式键盘(矩阵式键盘)独立式按键行列式键盘01111011110111102.按键开关去抖动问题按键抖动在按下和释放时,按键有抖动按键时间:>100ms前跳沿和后跳沿:<20ms,抖动时间一般为
2、5~10msA为确保:对键的一次闭合仅作一次处理必须:去除抖动3.消除抖动不良后果的方法⑴硬件去抖动RC滤波电路去抖动电路简单实用,效果较好。⑵软件去抖动检测到按键按下后,执行延时10ms子程序后再确认该键是否确实按下,消除抖动影响。键处理的流程图4.独立式按键处理过程查键:扫描有否键按下,若无键按下,返回有键按下软件去抖:延时20ms找键等键释放软件去抖:延时20ms[例1]有键按下,返回键值;否则,返回0FFHP10P118051K1P12P13P14P15K2K3K4K5K6+5V;准备输入等放去抖查键KE2:MOVB,#0;保存键值0KE3:ANLA,#3FHRR
3、CA;(A.0)CyJNCKE4INCBSJMPKE3KE4:ORLP1,#3FHMOVA,P1ANLA,#3FHCJNEA,#3FH,KE4MOVA,B;返回键值CJNEA,#06H,KE5KE5:JCKE6;Cy=1,(A)<6KE7:MOVA,#0FFH;(A)>=6KE6:RETKE:ORLP1,#3FHMOVA,P1ANLA,#3FH;P1.0~P1.5CJNEA,#3FH,KE1SJMPKE7;无键按下KE1:LCALLDL20;延时去抖ORLP1,#3FH;修改P1MOVA,P1;读P1ANLA,#3FHCJNEA,#3FH,KE2SJMPKE7;误动作返
4、回找键5.矩阵式键盘工作方式查询定时每隔一段时间对键盘扫描一次利用单片机内部的定时器的定时器溢出中断。中断中断方式00001111处理过程键扫描确认有无按键按下去抖动延时按键的识别:确定键的行、列号扫描算法、线反转法键号的确定键号=所在行号×键盘列数+所在列号等待键释放扫描算法:逐行置低电平,其余各行为高电平,检查各列电平的变化,如果某列线电平为低电平,即可确定此行列线交叉点处的按键被按下。交换行列线的输出读取关系也可以实现。线反转法:首先,将行线编程为输入线,列线编程为输出线,然后使列线线全输出低电平,读取行线电平,行线从高电平转为低电平的行线为按下按键所在行;然后,将
5、列线编程为输入线,行线编程为输出线,然后使行线全输出低电平,读取列线电平,列线从高电平转为低电平的列线为按下按键所在列。[例1]扫描算法用8255A作单片机键盘接口,A口为输出口接键盘列线。C口为输入口接键盘的4条行线8255A地址A口:7FFCHB口:7FFDHC口:7FFEH控制寄存器:7FFFH子程序KSI:判定有无闭合键的KSI:MOVDPTR,#7FFCH;A口地址MOVA,#00HMOVX@DPTR,A;A口送00HINCDPTRINCDPTR;C口地址MOVXA,@DPTR;读C口CPLAANLA,#0FH;屏蔽高四位RET00000000有闭合键,则(A)
6、≠0无闭合,则(A)=01111KEY1:ACALLKSI;检查是否有键闭合JNZLK1;A非“0”则转移ACALLDIR;显示一次LED(“延时6ms”)AJMPKEY1LK1:ACALLDIR;有键闭合二次延时ACALLDIR;共12ms去抖动ACALLKSI;再检查是否有键闭合JNZLK2;有键闭合转移到LK2ACALLDIRAJMPKEY1;无键闭合,延时6ms后转KEY1有闭合键,则(A)≠0无闭合,则(A)=0LK2:CLRF0;有键标志MOVR2,#0FEH;扫描初值送R2MOVR4,#00H;扫描列号送R4LK4:MOVDPTR,#7FFCH;A口地址MO
7、VA,R2MOVX@DPTR,A;扫描初值送A口INCDPTRINCDPTR;C口地址MOVXA,@DPTR;读C口有闭合键,则(A)≠0无闭合,则(A)=001111111KEY1:ACALLKSI;检查是否有键闭合JNZLK1;A非“0”则转移ACALLDIR;显示一次LED(“延时6ms”)AJMPKEY1LK1:ACALLDIR;有键闭合二次延时ACALLDIR;共12ms去抖动ACALLKSI;再检查是否有键闭合JNZLK2;有键闭合转移到LK2ACALLDIRAJMPKEY1;无键闭合,延时6ms后转KEY1LK2