1、1,一、键盘基础知识 二、MCS-51对非编码键盘的接口 三、键盘的工作方式,10.2 键盘接口原理,2,一 键盘基础知识,键盘是一组按键的组合,它是最常用的单片机输入设备,操作人员可以通过键盘输入数据或命令,实现简单的人机对话。,1、什么是键盘?,3,2、按键的分类,按键按照结构原理可分为两类:触点式开关按键:如机械式开关等。无触点式开关按键:如磁感应按键。 前者造价低,后者寿命长。 目前,微机系统中最常见的是: 触点式开关按键,4,键盘按其结构形式可分为两种:编码键盘:由硬件逻辑自动提供与键对应的编码。使用方便,但电路复杂,价格较贵,在单片机应用系统中较少采用。非编码键盘:由软件来实现键盘
2、的定义与识别。结构简单、成本低廉,在单片机应用系统中被普遍采用。,5,3、按键去抖动处理,由于通常的按键所用的开关是机械开关,当开关闭合、断开时并不是马上稳定地接通和断开,而是在闭合与断开瞬间均伴随有一连串的抖动。当扫描表明有键被按下之后,紧接着应进行去抖动处理。抖动时间长、短与键的机械特性有关,一般为5l0ms。,6,如图所示:,图3-1,7,请思考,什么是键抖动?为什么键盘要考虑去抖动? 一般常用去抖动的方法有哪些?,8,什么是键抖动? 由于通常的按键所用的开关是机械开关,被按下时,由于机械触点的弹性及电压突跳等原因,触点闭合或断开的瞬间会出现电压抖动。为什么键盘要考虑去抖动? 键抖动可能
3、导致计算机将人工按一次键操作识别为多次,为了消除干扰,保证在按键闭合稳定状态下读取键值,需要对键盘进行消抖处理。,9,一般常用去抖动的方法有几种?常用的消抖措施有硬件消抖和软件消抖。硬件方法就是在键盘中附加去抖动电路,从根本上消除抖动产生的可能性;软件方法则是采用时间延迟以躲过抖动(大约延时1030ms即可),待行线上状态稳定之后,再进行状态输入。,10,就是在第一次检测到有键按下时先不动作,延时一段时间(一般为10ms),再次检测按键的状态,如果仍保持闭合状态,则确认真正有键按下。当检测到按键释放后,也要给5ms10ms的延时,待后沿抖动消失后才能转入按键的处理程序。,软件消抖,11,对于两
4、个或多个按键同时按下的重键问题,可以采用“先入有效”或“后留有效”的原则加以处理。 “先入有效”:指当多个按键同时按下时,只有第一个按下的键有效,其它键无效。 “后留有效”:指当多个按键同时按下时,只有最后松开的按键有效,其它键均无效。,12,4、键盘接口的操作功能,从按一个键到键的功能被执行主要包括两项工作:第一项:键的识别,即在键盘中找出被按的是哪个键。第二项:键功能的实现。 第一项工作使用接口电路实现,第二项工作是通过执行查询/中断服务程序来完成。我们先讨论第一项,即键盘接口问题。,13,键盘接口的操作功能: 键盘扫描,以判定是否有键被按下(称之为“闭合键”)。 键识别,以确定闭合键的行
5、列位置。 产生闭合键的键码。 排除多键、窜键(复按)及去抖动。,14,二 MCS-51对非编码键盘的接口,非编码键盘有两种形式:独立式键盘接口:单片机系统中,如只需要几个功能键,此时,可采用独立式按键结构。矩阵式(行列式)键盘接口:单片机系统中,若使用按键较多时,通常采用矩阵式键盘。,15,1、独立式键盘接口,独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单独占用一根I/O口线,每个按键的工作不会影响其它I/O口线的状态。独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,因此,在按键较多时,I/O口线浪费较大,不宜采用。,按键硬件结构,16,MCS-51
6、对独立式非编码键盘的接口,此种接口适于键数较少或操作速度较高的场合。,图3-3,17,图(a)为中断方式的独立式键盘工作电路,图(b)为查询方式的独立式键盘工作电路,工作原理: 当任何一个键被按下时,与其相连的输入线被置成 “0”,平时该线为“1”。,工作方式:,18,图3-4,19,独立式按键的软件结构 常采用查询式结构: 先逐位查询每根I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下; 然后,再转向该键的功能处理程序。,20,独立式键盘处理程序流程,图3-5,21,2、矩阵式(行列式)键盘接口,用于按键数目较多的场合,由行线和列线组成,按键位于行
7、、列的交叉点上。 行列式键盘与独立式键盘相比,要节省很多的I/O口线。,按键硬件结构,22,23,矩阵式键盘工作原理,无键按下,该输入(行)线为高电平,当有键按下时,输入(行)线电平由输出(列)线的电平来决定。 由于行、列线为多键共用,各按键彼此将相互发生影响,必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置。,24,矩阵式按键的识别方法,a. 扫描法 b. 线反转法,25,第1步:识别键盘有无键按下。,第2步:如有键被按下,识别出具体的按键。,把所有列线置0,检查各行线电平是否有变化,如有变化,说明有键按下,如无变化,则无键按下。,先把某一列置低电平,其余各列为高电平,检查各行
8、线电平的变化,如果某行线电平为低,可确定此行列交叉点处的按键被按下。,a. 扫描法,26,过程:1.先判断有无键按下,列线输出0000,然后输入行线状态: 若没有键按下,则行线状态为全1(1111); 若有任一键按下,则行线状态不为全1。,27,图3-7,28,过程:2.再确认哪个键被按下,列线逐行输出0,然后输入行线状态: 若没有键按下,则行线状态为全1(1111); 若有任一键按下,则行线状态不为全1。,29,扫描法识别出具体按键的过程:,图3-7,P1.7,P1.6,P1.4,P1.5,P1.3,P1.2,P1.0,P1.1,30,P1.7,P1.6,P1.4,P1.5,P1.3,P1.
9、2,P1.0,P1.1,31,P1.7,P1.6,P1.4,P1.5,P1.3,P1.2,P1.0,P1.1,32,第1步:列线输出为全低电平,则行线中电平由高变低的所在行为按键所在行。,第2步:行线输出为全低电平,则列线中电平由高变低所在列为按键所在列。,b. 线反转法,只需两步便能获得此按键所在的行列值。,33,图3-7,34,图3-7,35,比较说明:,扫描法对键的识别采用逐列扫描的方法获得键的位置,当被按下的键在最后一列时需要扫描N次(N为列数),当N比较大时键盘工作速度较慢;而线反转法则不论键盘有多少行和多少列只需经过两步即可获得键的位置。,36,正逻辑表示-行列线数据求反组合,上例
10、中的各键值分别为:88H、84H 、82H 、81H、,48H 、44H 、42H、41H、,28H、24H、22H、21H、,18H、14H、12H、11H,确定每个键的键值,负逻辑表示-行列线数据直接组合,上例中的各键值分别为: 77H、7BH 、7DH 、7EH、,B7H 、BBH 、BDH、BEH、,D7H、DBH、DDH、DEH、,E7H、 EBH、EDH、EEH,37,三 键盘的工作方式,单片机在忙于各项工作任务时,如何兼顾键盘的输入,取决于键盘的工作方式。原则:即要保证能及时响应按键操作,又不要过多占用CPU的工作时间。通常,键盘工作方式有3种:,编程扫描、定时扫描、中断扫描,3
11、8,1. 编程扫描方式,工作过程:,(1)在键盘扫描子程序中,先判断 有无键按下。,(2)用软件来消除按键抖动的影响。 如有键按下,则进行下一步。,(3)求按下键的键号。,(4)等待按键释放后,再进行按键 功能的处理操作。,39,2. 定时扫描工作方式,利用单片机内的定时器,产生10ms的定时中断,对键盘进行扫描。只有在键盘有键按下时,才执行键盘扫描程序,如无键按下,单片机将不理睬键盘。,3.中断工作方式,40,小结:键盘所做的工作分为三个层次:,41,第1层:单片机如何来监视键盘的输入。 三种工作方式: 编程扫描定时扫描中断扫描,第2层:确定具体按键的键号。 体现在按键的识别方法上就是: 扫描法;线反转法。,第3层:执行键处理程序。,42,10.2节要点:,键盘的抖动与消抖。非编码键盘的两种形式,各自的特点。矩阵式键盘的两种识别方法。键盘的三种工作方式。,