《最新单片机 第2章PPT课件.ppt》由会员分享,可在线阅读,更多相关《最新单片机 第2章PPT课件.ppt(102页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第2章单片机键盘接口技术2.1 键键 盘盘 概概 述述2.1.1 按键的分类按键的分类组成键盘的按键开关按照结构原理可分为两类:一类是触点式按键开关,如机械触点式按键、导电橡胶式按键、柔性按键等;另一类是无触点按键开关,如电气式按键、磁感应按键等。第2章单片机键盘接口技术第2章单片机键盘接口技术第2章单片机键盘接口技术第2章单片机键盘接口技术第2章单片机键盘接口技术第2章单片机键盘接口技术第2章单片机键盘接口技术1. 硬件方法硬件消抖的典型做法是:采用R-S触发器或RC积分电路。1) 双稳态消抖双稳态消抖即在按键输出端加R-S触发器或单稳态触发器构成消抖电路,如图2-2所示,触发器一旦翻转,触
2、点抖动对其不会产生任何影响。电路的工作过程如下:(1) 当按键未按下时,a=0,b=1,输出A=1,B=0。第2章单片机键盘接口技术(2) 当按键按下时,按键的机械弹性作用使按键产生前沿抖动。 当开关没有稳定到达b端时,B输出为0,反馈到上面的与非门的输入端,封锁了与非门,双稳态电路的状态不会改变,输出A保持为1,这样就消除了前沿的抖动波形。 当开关稳定到达b端时,因a=1,b=0,使A=0,双稳态电路状态发生翻转。第2章单片机键盘接口技术(3) 当释放按键时,按键的机械弹性作用使按键产生后沿抖动。 当开关未稳定到达a端时,A=0,封锁了下面的与非门,双稳态电路的状态保持不变,输出A保持不变,
3、这样就消除了后沿的抖动波形。 当开关稳定到达a端时,因a=0,b=1,使A=1,双稳态电路状态发生翻转,输出A重新返回原来的状态。第2章单片机键盘接口技术图2-2 用R-S触发器构成的消抖电路第2章单片机键盘接口技术2) 滤波消抖如图2-3所示,利用RC积分电路可以吸收振荡脉冲的特点,正确选取适当的时间常数,便可消除按键抖动的影响。第2章单片机键盘接口技术图2-3 用RC积分电路构成的消抖电路第2章单片机键盘接口技术电路的工作过程如下:(1) 当按键未按下时,电容C两端的电压为Vcc,非门输出为1。(2) 当按键按下时,由于电容C两端的电压不能突变,因此即使在接触过程中出现抖动,只要C两端的充
4、电电压波动不超过非门的开启电压(TTL为0.8 V左右),非门的输出就不会改变(可通过选取合适的R1、R2和C的值来实现)。第2章单片机键盘接口技术(3) 当按键断开时,即使出现抖动,由于C两端的电压不能突变(它要经过R2放电),因此只要C两端的放电电压波动不超过非门的关闭电压,非门的输出就不会改变。所以,RC电路滤波消抖成败的关键在于R1、R2和C时间常数的选取。必须保证C由稳态电压充电到开启电压或放电到关闭电压的延迟时间大于或等于10 ms。参数的数值可由计算或实验确定,图2-3中的参数仅供参考。若采用输入端有施密特触发特性的门电路,则效果更好。第2章单片机键盘接口技术2. 软件方法软件方
5、法当按键较多时,硬件方法将导致系统硬件电路设计复杂化,硬件消抖将无法胜任,这时常采用软件方法进行消抖。软件消抖的基本原理是:在检测到有按键按下时,不是立即认定此键已被按下,而是执行一个10 ms左右(具体时间应视所使用的按键进行调整)的延时程序后,再确认该键电平是否仍然保持闭合状态电平,若仍然保持,则确认该键真正被按下。这实际上是避开了按键按下时的抖动时间,从而消除了前沿抖动的影响。 第2章单片机键盘接口技术同理,在检测到按键释放后,再延时510 ms,消除后沿抖动,然后再对键值进行处理。不过一般情况下,我们通常不对按键释放的后沿进行处理,实践证明,这样也能满足一定的要求。总之,硬件方法一般用
6、在对按键操作过程比较严格,且按键数量较少的场合,而按键数量较多时,通常采用软件消抖。更好的做法是利用定时中断服务程序或利用标志位的方法来实现软件消抖。第2章单片机键盘接口技术2.1.4 按键的其他问题按键的其他问题前面对按键的分类、输入及消抖进行了说明,在实际中还应该考虑按键的串键、连击、多功能键、复合键等其他问题。1. 串键串键串键是指同时有一个以上的键被按下。串键会引起CPU错误响应。通常采取的策略是:单键按下有效,多键同时按下无效。第2章单片机键盘接口技术2. 连击连击连击是指一次按键产生多次击键的效果。连击的本质就是一次按键被反复检测到。通常采取的策略是:等待按键释放,使得一次按键只执
7、行一次键功能处理(不管一次按键持续的时间多长,仅检测一次),否则,键功能处理程序的执行次数将是不可预知的,由按键时间来决定。比如,按键检测时间一般为微秒级,假设一次按键时间持续1 s,则执行键功能处理程序的次数将达到万次左右,大大降低了CPU的效率。第2章单片机键盘接口技术3. 多功能键多功能键在单片机应用系统中,为简化硬件线路,缩小整个系统的规模,总希望设置最少的按键,获得最多的控制功能。可以通过软件的方法实现一键多功能。通常采用的策略是:选择一个RAM工作单元,对某一个按键进行按键计数,根据不同的计数值,转到子程序。这种计数多功能键最好与显示器结合使用,以便知道当前的计数值,同时配合一个启
8、动键。第2章单片机键盘接口技术4. 复合键复合键复合键就是两个或两个以上的键的联合,当这些键同时被按下时,才能执行相应的功能程序。实际情况做不到“同时按下”,它们的时间差别可以长到50 ms。通常采用的策略是:定义一个或两个引导键,这些引导键被按下时没什么意义,执行空操作。微机键盘上的CTRL、SHIFT、ALT等均为引导键,其缺点是操作复杂,且操作时间较长。第2章单片机键盘接口技术2.1.5 键盘的编码方式键盘的编码方式键盘是由一组规则排列的按键组成的,每一个按键所在的物理位置不同,对应的功能也不同。按键所在的物理位置的编码称为键码,而按键所对应的功能或数值称为键名或键值,如数字键09、字符
9、键0AH0FH、功能键10H等。键码是人为规定的,由相应的键值处理程序来实现。第2章单片机键盘接口技术(1) 编码式键盘:键盘闭合键的识别是由专用硬件实现的,即硬件方法产生键码。(2) 非编码式键盘:键盘闭合键的识别是由软件实现的,即软件方法产生键码。第2章单片机键盘接口技术2.2 非编码式键盘非编码式键盘2.2.1 键盘的工作方式键盘的工作方式键盘的工作方式有程序扫描方式、定时扫描方式和中断方式。1. 程序扫描方式程序扫描方式程序扫描方式就是在主程序循环扫描各任务的中间,加入键盘扫描的任务。当主程序扫描的任务太多或任务耗时较长时,单片机的反应会有些慢。第2章单片机键盘接口技术2. 定时扫描方
10、式定时扫描方式定时扫描方式是指采用定时中断方式对键盘进行扫描,以响应键盘输入的请求。这种方式避免了程序扫描方式的缺点,能及时读取键盘的输入,但不管键盘上有无键闭合,CPU总是定时扫描键盘,降低了CPU的效率。程序扫描方式和定时扫描方式相似,都属于查询方式,后者较前者的实时性强,但需占用一个定时器。第2章单片机键盘接口技术3. 中断方式中断方式中断方式是指各个按键都接到一个与门上,当任何一个按键被按下时,都会使与门输出为低电平,从而引起单片机的中断,这样就克服了定时扫描方式的不足,但需要额外的硬件电路,并占用一个外部中断源。中断方式的好处是不用在主程序中不断地循环查询,如果有键被按下,则单片机再
11、去做相应的处理。第2章单片机键盘接口技术2.2.2 键盘的组成形式键盘的组成形式根据键盘组成形式的不同,非编码式键盘分为独立式键盘和矩阵式键盘两种,如图2-4所示。第2章单片机键盘接口技术图2-4 键盘的组成形式第2章单片机键盘接口技术1. 独立式键盘独立式键盘独立式键盘是指各个按键相互独立,每个按键的一端接地,另一端占用一个I/O口线。按键被按下时输出低电平有效,为了保证按键断开时输出高电平,在每个按键的输出端接入10 k左右的上拉电阻。第2章单片机键盘接口技术2. 矩阵式键盘矩阵式键盘矩阵式键盘也称为行列式键盘,由行线和列线组成,按键一端接行线,另一端接列线,行、列线不相交,按键数等于矩阵
12、行数和列数的乘积。同样,为了保证按键断开时,输出高电平,列线或行线通过上拉电阻接到+5 V上,每一根行线、列线占用一个I/O口线。例如,一个键盘有20个按键,如果采用独立式,则需要20个I/O口线;如果采用矩阵式(如4根行线、5根列线),则只需要占用9个I/O口线。第2章单片机键盘接口技术2.2.3 独立式键盘独立式键盘1. 接口电路接口电路独立式键盘单片机接口电路的设计一般采用低电平输入有效方式,按键直接与单片机的I/O口线相接。为了保证按键断开时,I/O口线有确定的高电平,在每个按键的输入端接有上拉电阻。图2-5(a)、(b)分别为采用查询方式和中断方式的接口电路。第2章单片机键盘接口技术
13、当使用80C51单片机的I/O口作为按键的输入端口时,如果使用P1、P2、P3端口,则因端口内部已有上拉电阻,故外部的上拉电阻可省略。当采用P0端口时,应外接10 k左右的上拉电阻。1) 查询方式如图2-5(a)所示,平时无键被按下时,各I/O口均为高电平;当某键被按下时,相应的输入线为低电平。CPU查询此输入口的状态就可很容易地判断哪个键被按下。第2章单片机键盘接口技术2) 中断方式如图2-5(b)所示,按键S0S2的数据输出线相与后与单片机的外部中断相连。平时无键被按下时,各I/O口均为高电平,也为高电平;当某键被按下时,相应的输入线为低电平,则为低电平,申请中断,CPU响应中断后查询此输
14、入口的状态就可知道哪个键闭合。0INT0INT0INT第2章单片机键盘接口技术图2-5 独立式键盘接口电路第2章单片机键盘接口技术2. 程序设计程序设计独立式键盘接口电路简单,软件程序也简单易写,有查询方式和中断方式两种结构。由于按键的数目较少,且相互独立,按键识别容易,因此CPU可以根据按键被按下时所对应的I/O输入口的状态直接进行编码识别。对键值的处理一般采取直接处理的方式,即用跳转指令AJMP或采用散转指令JMP A+DPTR。 第2章单片机键盘接口技术1) 查询方式 如图2-5(a)所示,I/O口采用P1口,先逐位查询每根I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该
15、I/O口线所对应的按键已被按下,然后,再转向该键的键值处理程序。当某一按键Sn(n=02)闭合时,P1.n输入为低电平;释放时,P1.n输入为高电平。程序中,F0F2为每个按键的功能程序的入口地址标号,PROM0PROM2分别为每个按键的功能程序。第2章单片机键盘接口技术 START:MOV A,0FFH MOV P1,A;置输入方式 MOV A,P1 JNB ACC. 0,XD;查询P1.0是否为低电平 JNB ACC. 1,XD;查询P1.1是否为低电平 JNB ACC. 2,XD;查询P1.2是否为低电平 SJMP STARTXD:LCALL Delay10ms;延时10 ms,消除抖动
16、MOV A,0FFH MOV P1,A;置输入方式第2章单片机键盘接口技术 MOV A,P1 JNB ACC. 0,F0;查询P1.0是否为低电平 JNB ACC. 1,F1;查询P1.1是否为低电平 JNB ACC. 2,F2;查询P1.2是否为低电平 SJMP START;无键按下,返回 F0: AJMP PROM0;转0号键功能程序 F1: AJMP PROM1 F2: AJMP PROM2第2章单片机键盘接口技术PROM0: ;0号键功能程序 LJMP STARTPROM1:;1号键功能程序 LJMP STARTPROM2:;2号键功能程序 LJMP STARTDelay10ms: ;
17、延时10 ms子程序RET第2章单片机键盘接口技术2) 中断方式查询方式使CPU时刻处于键盘检测状态,不能干别的事情。为了提高CPU的效率,可采用中断方式。如图2-5(b)所示,各个按键都接到一个“与门”上,当任何一个按键被按下时,都会使“与门”输出为低电平,从而引起单片机中断。它的好处在于:主程序不必不断地循环查询,只有中断请求(表示有键按下)时,单片机才去做相应的处理。第2章单片机键盘接口技术总之,独立式键盘的特点是各个按键相互独立,单独占用一根I/O口线,每根I/O口线的按键工作状态不会影响其他I/O口线的工作状态,电路配置灵活,软件结构简单。按键比较少或口线比较富余时, 可以采用这种类
18、型的键盘,但当按键数量较多时,I/O口线浪费较大,而且查询按键的时间也较长,不宜采用。第2章单片机键盘接口技术2.2.4 矩阵式键盘矩阵式键盘1. 接口电路接口电路图2-6所示的键盘为两种典型的键盘布局,一般由16个按键组成(即44矩阵式键盘结构),正好可以直接用单片机的一个并行口实现,这也是一般单片机系统中最常用的一种形式,其单片机接口电路如图2-7所示。第2章单片机键盘接口技术图2-6 两种典型的键盘布局第2章单片机键盘接口技术图2-7 P1口直接构成的44矩阵式键盘接口电路第2章单片机键盘接口技术矩阵式键盘的工作原理是:按键设置在行列线交叉点上,行列线分别连接按键开关的两端,列线通过上拉
19、电阻接到+5 V上。无键按下时,所有列线都处于高电平状态;有键按下时,按键所在行列线将导通,此时按键所在列线电平状态将由与此列线相连的行线电平决定,行线电平为低,则列线电平为低;行线电平为高,则列线电平为高。这是识别矩阵键盘按键是否被按下的关键所在。第2章单片机键盘接口技术需要说明的是:在单片机应用系统中,除了直接通过单片机I/O口连接键盘外,还可以通过三态缓冲器573、8155、8255等I/O口扩展芯片来外接键盘,或者利用单片机的串行接口通过串/并转换芯片74LS164来扩展键盘。图2-8所示为通过并行接口芯片8255扩展I/O口构成的48矩阵式键盘接口电路。第2章单片机键盘接口技术图2-
20、8 8255扩展的48矩阵式键盘接口电路第2章单片机键盘接口技术2. 按键的识别方法按键的识别方法由于矩阵式键盘采用行列式结构,行列线和多个键相连,因此各按键的按下与否均影响该键所在行线和列线的电平,各键间相互影响。也就是说,一根I/O口线的状态已经不能确定哪一个键被按下,需要通过连接到按键两端的两根I/O口线的状态共同确定按键的状态,因此,必须将行线与列线信号状态分别处理并综合考虑才能确定按键的行列位置。第2章单片机键盘接口技术1) 扫描法行扫描法就是使行线逐行步进输出“0”(相当于逐行动态接地),列线输入;相反,列扫描法就是使列线逐列步进输出“0”(相当于逐列动态接地),行线输入。扫描法原
21、理如图2-9所示。这里以行扫描法为例,即P1.0P1.3为行输出线,分时逐行输出“0”,P1.4P1.7为列输入线。注意:在读P1.4P1.7引脚状态时,必须先向它们写“1”。 第2章单片机键盘接口技术图2-9 扫描法原理图第2章单片机键盘接口技术具体分析如下: (1) 将P1口置“1”,然后令P1.0输出“0”时,扫描第0行,读入P1的状态。具体描述如下: 当0键被按下时,读入P1的状态为11101110,即0EEH。 当1键被按下时,读入P1的状态为11011110,即0DEH。 当2键被按下时,读入P1的状态为10111110,即0BEH。 当3键被按下时,读入P1的状态为0111111
22、0,即7EH。第2章单片机键盘接口技术(2) 当P1.1输出“0”时,扫描第1行,读入P1的状态。具体描述如下: 当4键被按下时,读入P1的状态为11101101,即0EDH。 当5键被按下时,读入P1的状态为11011101,即0DDH。 当6键被按下时,读入P1的状态为10111101,即0BDH。 当7键被按下时,读入P1的状态为01111101,即7DH。 第2章单片机键盘接口技术(3) 当P1.2输出“0”时,扫描第2行,P1.2所在的第2行的0、1、2、3列的4个按键8、9、A、B分别被按下时,对应的P1状态分别为0EBH、0DBH、0BBH、7BH。(4) 当P1.3输出“0”时
23、,扫描第3行,P1.3所在的第3行的0、1、2、3列的4个按键C、D、E、F分别被按下时,对应的P1状态分别为0E7H、0D7H、0B7H、77H。第2章单片机键盘接口技术2) 反转法前面介绍的扫描法要逐行(列)扫描查询,当被按下的键在最后一行(列)时,要经过多次扫描才能最后获得键值;反转法则显得很简练,无论被按下的键是处于第一列或是最后一列,均只需两步即可获得此按键所在的行列值。下面介绍反转法的两个步骤,其原理图如图2-10所示。第2章单片机键盘接口技术图2-10 反转法原理图第2章单片机键盘接口技术(1) 将P1.3P1.0编程为行输入线,P1.7P1.4编程为列输出线,并使P1口输出为0
24、FH(保证列输出P1.7P1.4为0000)。若有键被按下,则P1.3P1.0肯定不全为1,其中为0的位对应的是按键的所在行位置。如图2-10(a)所示,若按下A键,则P1.3P1.0输入肯定为1011,按键在第2行。将这个数据存放到存储器的某个单元(如N单元)中。第2章单片机键盘接口技术(2) 将第(1)步中的传送方向反转过来,即将P1.4P1.7定义为输入,P1.0P1.3定义为输出,并使I/O口输出的数据为N单元的数据(因为这时已经知道键所在的行位置),然后读入I/O口数据。该数据的P1.7P1.4位中“0”电平对应的位就是按下键的列位置。如果按下的是图2-10(b)所示的键,则P1.7
25、P1.4输入肯定为1011,按下键在第2列。第2章单片机键盘接口技术 3) 扫描程序下面编制基于扫描法识别按键的键盘扫描子程序(通常将查询键码的过程称之为“扫描”):当有键被按下时,将键值送回寄存器A;当无键被按下时,将“0”送回A。第2章单片机键盘接口技术;*扫描0行*GET_KEY:MOV P1,0FEH;扫描第0行,即P1口输出11111110 MOV A,P1;读入P1口,判断第0行是否有某一列的键被按下 CJNE A,0FEH,K3;若不相等,则按键在第0行,转去进行键值分析 ;若相等,则无键被按下,扫描下一行第2章单片机键盘接口技术;*扫描1行* MOV P1,0FDH ;扫描第1
26、行,即P1口输出11111101 MOV A, P1 ;判断第1行是否有某一列的键被按下 CJNE A,0FDH,K3 ;若不相等,则按键在第1行,转去进行键值分析 ;若相等,则无键被按下,扫描下一行第2章单片机键盘接口技术;*扫描2行* MOV P1,0FBH;扫描第2行 MOV A,P1 ;判断第2行是否有某一列的键被按下 CJNE A,0FBH,K3 ;若不相等,则按键在第2行,转去进行键值分析 ;若相等,则无键被按下,扫描下一行第2章单片机键盘接口技术;*扫描3行* MOV P1,0F7H;扫描第3行 MOV A, P1;判断第3行是否有某一列的键被按下 CJNE A,0F7H,K3
27、;若不相等,则按键在第3行,转去进行键值分析 MOV A,0;若相等,则无键被按下,A中返回“0 RET;返回 K3:;键值分析 第2章单片机键盘接口技术3. 键值分析键值分析是由键值处理程序来完成的。键值处理程序的关键是如何对按键进行编码,从而获取按键所对应的键号或键值。键号是键盘上各键的编号,如0、1、A、B、F。键值是指根据扫描原理,各键所对应的十六进制数码,如0EEH、0DEH、0BBH、7BH、77H。在键盘处理程序中,每个键都被赋予了一个键号。 第2章单片机键盘接口技术(1) 对于独立式键盘,由于按键的数目较少,且键盘中各个按键互不干扰,因此可以根据实际需要对键盘中的按键进行灵活编
28、码。最简单的编码方式就是直接状态编码,即根据I/O输入口所直接反映的相应按键被按下的状态进行编码。假如图2-5中的S0键被按下,则P1口的输入状态是11111110,S0键的直接状态编码就是FEH。CPU可以通过直接读取I/O口的状态来获取按键的直接状态编码值,然后根据这个值直接进行键值分析处理。第2章单片机键盘接口技术(2) 对于矩阵式键盘,由于按键的数目较多,采用行列式结构,键盘中各个按键相互影响,因此,键盘中的按键编码较为复杂,需要综合考虑。 键号编码:按键的键号由行号和列号唯一确定,所以分别对行号和列号进行二进制编码,然后将两值合成一个字节,高4位是行号,低4位是列号。例如,34H表示
29、第3行、第4列的按键,而C4H表示第12行、第4列的按键等。 第2章单片机键盘接口技术但这种编码方式对于不同行的键,其离散性较大。例如,对于一个44的键盘,14H键和21H键之间间隔13,实际上却是两个连续的键,因此不利于键值分析处理。所以,常常采用依次排列键号的方式对按键进行编码。对于一个44的键盘,可以键号编码为:01H、02H、03H、04H、0EH、0FH,共16个。第2章单片机键盘接口技术 键值编码:每个按键都有自己的行值和列值,行值和列值的组合就是这个按键的键值编码。例如,“按键的识别方法”部分中所述,“E”号键对应行线P1.3=0,其他全为“1”,行值为0111B,列线中P1.6
30、=0,其他的全为“1”,列值为1011B,故“E”号键对应键值编码为10110111B,高4位是列值,低4位是行值。以此类推,结合图2-9和图2-10,键号与键值的对应关系如表2-2所示。第2章单片机键盘接口技术第2章单片机键盘接口技术(3) 求键号与键值。键号编码与键值编码之间有一定的对应关系,可以通过查表或计算的方法来获取。 计算:键号=行首键号+列号。图2-10中,列号是0、1、2、3,行首键号是0、4、8、12。例如,对于“A”号键,10=8(行首键号)+2(列号)。第2章单片机键盘接口技术 参照表2-2,将键号“0”到“F”所对应的键值做成一个固定的表格,然后将识别按键的键值与表中的
31、键值逐一进行比较,同时计数器从0开始计数,若不相等,则增1,若相等,则计数器的值即为键号。相关参考汇编程序如下:第2章单片机键盘接口技术;求键值和键号PRO_KEY:MOV R1,#16 ;16个按键MOV R2,#0;计数器MOV DPTR,#KeyTAB;键值表首地址COMP: MOV A,R2MOVC A,A+DPTRCJNE A,B,KK;识别按键的键值在单元B中进行比较,若不相等则继续MOV A,R2;若相等,则取键号第2章单片机键盘接口技术RETKK:INCR2DJNZ R1,COMPRETKeyTABDB 0EEH,0DEH,0BEH,07EH ;0123DB 0EDH,0DDH
32、,0BDH,07DH ;4567DB 0EBH,0DBH,0BBH,07BH ;89ABDB 0E7H,0D7H,0B7H,077H ;CDEF第2章单片机键盘接口技术4. 程序设计软件实现过程及其程序设计结构分为以下四个步骤(如图2-11所示):(1) 判断键盘上有无键被按下。其方法为:快速扫描,即P1.0P1.3端口输出全为0,读P1.3P1.7端口状态,当全为“1”时,说明键盘无键按下,当不全为“1”时,说明键盘有键被按下。第2章单片机键盘接口技术图2-11 键盘扫描程序流程图第2章单片机键盘接口技术(2) 消除按键抖动的影响。其方法为:在判断有键被按下后,调用软件延时程序消除键盘抖动,
33、再判断键盘状态,若该键仍处于闭合状态,则确定该键被按下,否则作按键抖动处理。(3) 求键号和键值。根据前面介绍的按键识别方法,确定按键的行列位置,再利用计算或查表的方法求取按键的键号。根据按键位置进行键的重新编号,从而得到按键的键值。第2章单片机键盘接口技术(4) 等待释放并进行键值处理。为了保证按键每闭合一次,CPU仅作一次处理,等待按键释放后,再进行此次按键的键值分析处理。相关参考汇编程序如下:SCAN_KEY: MOV P1,0F0H;P1口初始化,快速扫描,所有行线输出全为0MOV A, P1 CJNE A,0F0H,XD ;若有,则转去进行键消抖处理 SJMP NO_KEY ;若无键
34、被按下,则A中返回“0”第2章单片机键盘接口技术XD: LCALL DELY 10ms;延时10 ms,消抖MOV P1,0F0H MOV A, P1 ;消抖时间过后,再判断是否有键被按下 CJNE A,0F0H,GET_KEY ;若有键被按下,则开始按键扫描NO_KEY: MOV A,0;若无键被按下,则A中返回“0” RETGET_KEY: ;按键扫描程序第2章单片机键盘接口技术MOV P1,#0F0H ;等待按键被释放SF: MOV A,P1CJNE A,#0F0H,SFPRO_KEY: ;键值分析 第2章单片机键盘接口技术 2.3 编编码码式式键键盘盘非编码式键盘接口电路中,无论是直接
35、通过单片机I/O口连接键盘,还是利用8155、8255等I/O口扩展芯片外接键盘,往往都会占用CPU有限的资源。因此,一些芯片公司推出了通用键盘显示接口芯片,比较典型的有美国Intel公司早期推出的8279、广州周立功单片机发展有限公司近期推出的ZLG7289和ZLG7290等。第2章单片机键盘接口技术2.3.1 ZLG7289概述概述ZLG7289内部含有译码器,可直接接收BCD码或十六进制码,并同时具有2种译码方式。此外,ZLG7289还具有多种控制指令,如消隐闪烁左移右移段寻址等。ZLG7289具有片选信号,可方便地实现多于8位的显示或多于64键的键盘接口。第2章单片机键盘接口技术ZLG
36、7289的技术特点如下:(1) 串行接口,无需外围元件即可直接驱动LED数码管。(2) 功能上完全替代8279、8155、8255、7279、7219系列器件。(3) 各位独立控制译码、不译码、消隐和闪烁属性。(4) 具有段寻址指令,可方便地控制独立LED数码管。(5) 64键键盘控制器,内含去抖动电路。 第2章单片机键盘接口技术(6) 标准DIP28/SOIC28封装。(7) 工作电压范围很宽,为+2.76 V。(8) 工作温度范围为40+85。(9) 段电流可达15 mA以上,字电流可达100 mA。ZLG7289可广泛地应用于仪器仪表、工业控制器、条形显示器、控制面板等领域。 第2章单片
37、机键盘接口技术2.3.2 ZLG7289的引脚排列及功能说明的引脚排列及功能说明ZLG7289芯片具有标准的DIP28和SOIC28两种封装形式。其引脚排列如图2-12所示,各引脚的功能说明如表2-3所示。第2章单片机键盘接口技术图2-12 ZLG7289的引脚排列(SOIC28,DIP28)第2章单片机键盘接口技术第2章单片机键盘接口技术第2章单片机键盘接口技术2.3.3 ZLG7289键盘接口方法键盘接口方法ZLG7289的典型应用电路如图2-13所示。第2章单片机键盘接口技术图2-13 ZLG7289编码式键盘接口电路第2章单片机键盘接口技术1. ZLG7289与单片机键盘接口图2-13
38、中,以80C51单片机为例,给出了ZLG7289与单片机的接口电路,采用SPI串行总线方式,ZLG7289的、CLK、DIO和分别与单片机的P1.0、P1.1、P1.2和连接,只需要占用单片机的4根I/O口线。CSINT第2章单片机键盘接口技术2. ZLG7289与键盘和LED数码管的连接在图2-13中,ZLG7289应连接共阴极数码管,应用中无需用到的数码管和键盘可以不连接,因而省去数码管和对数码管设置消隐属性均不会影响键盘的使用。数码管电路中,由于ZLG7289采用循环扫描工作方式,如果采用普通的数码管,亮度可能不够,因此应采用高亮度或超高亮度的数码管,且尺寸也不宜选得过大(一般字符高度不
39、超过1英寸(1英寸=2.54厘米),如果使用大型的数码管,则应选用适当的驱动电路)。第2章单片机键盘接口技术按键电路中,必须有相应的下拉电阻(如R1R8,阻值为100 k)和位选电阻(如R17R24,阻值为10 k,连接键盘与位选线DIG0DIG7)。实际应用中,下拉电阻与位选电阻应遵从一定的比例关系,下拉电阻的阻值应大于位选电阻的5倍,而小于其50倍,典型值为10倍。下拉电阻的取值范围是10100 k,位选电阻的取值范围是110 k。在不影响显示的前提下,下拉电阻应尽可能取较小的值,这样可以提高键盘部分的抗干扰能力。 第2章单片机键盘接口技术3. 其他外围电路ZLG7289正常工作时,需要外
40、接晶体振荡电路,其典型值为:晶振频率 f=16 MHz,电容C=15pF。ZLG7289的复位端在一般情况下可以直接和Vcc相连,而在需要较高可靠性的情况下,则可以连接外部复位电路或直接由MCU控制。在上电或端由低电平变为高电平后,通常要经过大约1825 ms的时间,ZLG7289才会进入正常工作状态。RSTRST第2章单片机键盘接口技术4. 键盘控制指令ZLG7289与键盘相关的指令为“读键盘数据指令”。该指令为带有数据的指令,可直接从ZLG7289中读出当前的按键代码,格式如下:第2章单片机键盘接口技术该指令与其他指令不同,有两个字节,前一个字节00010101B为单片机传送到ZLG728
41、9的读键盘指令,而后一个字节d7d0则为ZLG7289返回给单片机的按键代码,其范围是00H3FH(无键按下时为FFH)。各按键代码的定义如图2-13所示,图中S0S63号键分别对应键值的063(03FH)。第2章单片机键盘接口技术5. SPI接口时序ZLG7289与单片机的接口采用3线制SPI串行总线方式,由、CLK和DIO这3根信号线组成。和CLK是输入信号,由单片机提供。DIO信号是双向的,必须接到单片机中具有双向功能的 I/O口上。ZLG7289与单片机通信时,串行数据从DIO引脚送入芯片,并由CLK端同步。当片选信号变为低电平后,DIO引脚上的数据在CLK引脚的上升沿被写入ZLG72
42、89的缓冲寄存器中。SPI信号线的具体含义如表2-4所示。CSCSCS第2章单片机键盘接口技术第2章单片机键盘接口技术图2-14是读键盘数据指令时序图,宽度为16 bit:前半段时,DIO引脚处于高阻输入状态,以接收单片机发送的读键盘数据指令;后半段时,DIO引脚在第9个CLK脉冲的上升沿变为输出状态,以向单片机输出键值代码,并于第16个脉冲的下降沿恢复为输入状态,以等待接收下一个指令。第2章单片机键盘接口技术图2-14 读键盘指令时序(命令字在前,键值在后)第2章单片机键盘接口技术 习习 题题1. 机械触点式按键组成的键盘消除按键抖动的方法有哪几种?各有什么特点?2. 独立式键盘和矩阵式键盘各有什么特点?分别适用于什么场合?3. 对于矩阵式非编码键盘,按键的识别方法有哪几种?试简述它们的工作过程。4. 编码式键盘与非编码式键盘各有什么特点?分别适用于什么场合? 第2章单片机键盘接口技术5. 设计一个44矩阵式键盘接口电路,要求:采用并行接口芯片8255扩展I/O口,且8255的端口PA、PB、PC及控制寄存器的地址为7F00H、7F01H、7F02H、7F03H。6. 在第5题硬件电路的基础上,设计一个键盘扫描程序,要求采用反转法识别按键。7. ZLG7289读键盘数据指令的格式是什么?试简述其工作时序。102 结束语结束语