第5章 MCS-51单片机外部并行口扩展技术-5.4.2 键盘接口工作原理.ppt
第第5 5章章 MCS-51MCS-51单片机外部单片机外部 并行口扩展技术并行口扩展技术5.4.2 5.4.2 键盘接口工作原理键盘接口工作原理5.4.2 5.4.2 键盘接口工作原理键盘接口工作原理p键盘键盘n人机交互的一个重要工具人机交互的一个重要工具n两种基本类型两种基本类型p编码键盘编码键盘除了按键以外,还包括产生键码的除了按键以外,还包括产生键码的硬件硬件电路电路使用方便、价格较高使用方便、价格较高 p非编码非编码键盘键盘靠靠软件软件来识别键盘上的闭合键,由此计算出编码来识别键盘上的闭合键,由此计算出编码几乎不需要附加硬件逻辑几乎不需要附加硬件逻辑在单片机应用系统中被普遍使用在单片机应用系统中被普遍使用1.1.非编码非编码键盘键盘的工作原理的工作原理 p分类分类n硬件编码式键盘、二维直读式键盘硬件编码式键盘、二维直读式键盘n独立式键盘独立式键盘简单键盘简单键盘、行列式键盘(矩阵式键盘)、行列式键盘(矩阵式键盘)独立式按键独立式按键 行列式键盘行列式键盘0 1 1 11 0 1 11 1 0 11 1 1 02.2.按键开关去抖动问题按键开关去抖动问题p按键抖动按键抖动n在按下和释放时,按键有抖动在按下和释放时,按键有抖动n按键时间:按键时间:100ms100msn前跳沿和后跳沿:前跳沿和后跳沿:20ms20ms,抖动时间一般为抖动时间一般为5 510ms10msA为确保:对键的为确保:对键的一次闭合一次闭合仅作仅作一次处理一次处理必须:必须:去除抖动去除抖动3.3.消除抖动不良后果的方法消除抖动不良后果的方法p 硬件去抖动硬件去抖动nRCRC滤波电路去抖动电路简单实用,效果较好。滤波电路去抖动电路简单实用,效果较好。p 软件去抖动软件去抖动n检测到按键按下后,执行检测到按键按下后,执行延时延时10ms10ms子程序后子程序后再确认再确认该该键是否确实按下,消除抖动影响。键是否确实按下,消除抖动影响。键处理的流程图键处理的流程图 4.4.独立式按键独立式按键p处理过程处理过程n查键:扫描有否键按下,若无键按下,返回查键:扫描有否键按下,若无键按下,返回n有键按下软件去抖:延时有键按下软件去抖:延时20ms20msn找键找键n等键释放等键释放n软件去抖:延时软件去抖:延时20ms20ms 例例11p有键按下,返回键值;否则,返回有键按下,返回键值;否则,返回0FFH0FFHP10P118051 K1P12P13P14P15K2K3K4K5K6+5V ;准备输入准备输入 等等放放去去抖抖查查键键KE2:MOVB,#0;保存键值保存键值0KE3:ANLA,#3FHRRCA;(A.0)CyJNCKE4INCBSJMPKE3KE4:ORLP1,#3FHMOVA,P1ANLA,#3FHCJNEA,#3FH,KE4MOVA,B ;返回键值返回键值CJNEA,#06H,KE5KE5:JCKE6;Cy=1,(A)=6KE6:RETKE:ORLP1,#3FH MOVA,P1ANLA,#3FH ;P1.0P1.5CJNEA,#3FH,KE1SJMPKE7 ;无键按下无键按下KE1:LCALL DL20 ;延时去抖延时去抖ORLP1,#3FH ;修改修改P1MOVA,P1 ;读读P1ANLA,#3FHCJNEA,#3FH,KE2SJMPKE7 ;误动作返回误动作返回找找键键5.5.矩阵式键盘矩阵式键盘p工作方式工作方式n查询查询n定时定时p每隔一段时间对键盘扫描一次每隔一段时间对键盘扫描一次利用单片机内部的定时器的定时器溢出中断。利用单片机内部的定时器的定时器溢出中断。n中断中断中断方式中断方式00001 1 1 1p处理过程处理过程n键扫描键扫描p确认有无按键按下确认有无按键按下n去抖动去抖动p延时延时n按键的识别:确定键的行、列号按键的识别:确定键的行、列号p扫描算法扫描算法、线反转法、线反转法n键号的确定键号的确定p键号键号=所在行号所在行号键盘列数键盘列数+所在列号所在列号n等待键释放等待键释放p扫描算法:扫描算法:n逐行逐行置低电平,其余各行为高电平,检查各列电平的置低电平,其余各行为高电平,检查各列电平的变化,如果某列线电平为低电平,即可确定此行列线变化,如果某列线电平为低电平,即可确定此行列线交叉点交叉点处的按键被按下。处的按键被按下。n交换行列线的输出读取关系也可以实现。交换行列线的输出读取关系也可以实现。p线反转法:线反转法:n首先,将行线编程为输入线,列线编程为输出线,然首先,将行线编程为输入线,列线编程为输出线,然后使后使列线线全输出低电平列线线全输出低电平,读取行线电平读取行线电平,行线从高行线从高电平转为低电平的行线为按下按键所在行电平转为低电平的行线为按下按键所在行;n然后,将列线编程为输入线,行线编程为输出线,然然后,将列线编程为输入线,行线编程为输出线,然后使后使行线全输出低电平行线全输出低电平,读取列线电平读取列线电平,列线从高电列线从高电平转为低电平的列线为按下按键所在列平转为低电平的列线为按下按键所在列。例例1 1 扫描算法扫描算法p用用8255A8255A作单片机键盘接口,作单片机键盘接口,A A口为输出口口为输出口接键盘列线。接键盘列线。C C口为输入口口为输入口接键盘的接键盘的4 4条行线条行线8255A8255A地址地址A A口:口:7FFCH7FFCH B B口:口:7FFDH7FFDHC C口:口:7FFEH7FFEH 控制寄存器:控制寄存器:7FFFH7FFFHp子程序子程序 KSI KSI:判定有无闭合键的:判定有无闭合键的KSI:MOVDPTR,#7FFCH;A口地址口地址MOVA,#00HMOVX DPTR,A;A口送口送00HINCDPTRINCDPTR;C口地址口地址MOVX A,DPTR;读读C口口CPLA ANLA,#0FH;屏蔽高四位屏蔽高四位RET0 0 0 0 0 0 0 0有闭合键,则有闭合键,则(A)0无闭合,无闭合,则则(A)=01 1 1 1KEY1:ACALL KSI;检查是否有键闭合检查是否有键闭合JNZLK1;A非非“0”则转移则转移ACALL DIR;显示一次显示一次LED(“延时延时6ms”)AJMPKEY1LK1:ACALL DIR;有键闭合二次延时有键闭合二次延时ACALL DIR;共共12ms去抖动去抖动ACALL KSI;再检查是否有键闭合再检查是否有键闭合JNZLK2;有键闭合转移到有键闭合转移到LK2ACALL DIRAJMPKEY1;无键闭合,延时无键闭合,延时6ms后转后转KEY1有闭合键,有闭合键,则则(A)0无闭合,无闭合,则则(A)=0LK2:CLRF0;有键有键标志标志MOVR2,#0FEH;扫描初值送扫描初值送R2MOVR4,#00H;扫描扫描列号列号送送R4LK4:MOVDPTR,#7FFCH;A口地址口地址MOVA,R2MOVXDPTR,A;扫描初值送扫描初值送A口口INCDPTRINCDPTR;C口地址口地址MOVXA,DPTR;读读C口口有闭合键,有闭合键,则则(A)0无闭合,无闭合,则则(A)=00 1 1 1 1 1 1 1JBACC.0,LONE;ACC.0=1,第,第0行无键闭合,转行无键闭合,转LONEMOVA,#00H;装第装第0行值行值AJMPLKPLONE:JBACC.1,LTWO;ACC.1=1,第,第1行无键闭合,转行无键闭合,转LTWOMOVA,#08H;装第装第1行值行值AJMPLKPLTWO:JBACC.2,LTHR;ACC.2=1,第,第2行无键闭合,转行无键闭合,转LTHRMOVA,#10H;装第装第2行值行值AJMPLKPLTHR:JBACC.3,NEXT;ACC.3=1,第,第3行无键闭合,转行无键闭合,转NEXT MOVA,#18H;装第装第3行值行值LKP:ADDA,R4;计算键码计算键码PUSHACC;保护键码保护键码LK3:ACALL DIR;延时延时6msACALL KSI;检查是否继续闭合,若闭合再延时检查是否继续闭合,若闭合再延时JNZLK3POPACC;若键起,则键码送若键起,则键码送ARET扫描扫描列号列号:R4NEXT:INCR4;扫描列号加扫描列号加1 MOVA,R2JNBACC.7,KND;若第若第7位位=0,已扫完最高列则转,已扫完最高列则转KNDRLAMOVR2,AAJMPLK4;进行下一列扫描进行下一列扫描KND:SETBF0;无键无键标志标志RET;扫描完毕扫描完毕扫描扫描列号列号:R4键盘键盘/显示一体显示一体 8255 8255接口图接口图小结小结p键盘接口工作原理键盘接口工作原理p相应的程序设计方法相应的程序设计方法实验:键盘扫描显示实验:键盘扫描显示74LS24574LS245p双向总线收发器双向总线收发器 74LS27374LS273p地址锁存器地址锁存器