第13讲51单片机按键电路_第1页
第13讲51单片机按键电路_第2页
第13讲51单片机按键电路_第3页
第13讲51单片机按键电路_第4页
第13讲51单片机按键电路_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、标题:键盘接口电路教学目标与要求:1 .键盘去抖动和连接、控制方式2 .独立式按键及其接口电路3 .矩阵式键盘及其接口电路授课时数:2教学重点:.矩阵式键盘及其接口电路 教学内容及过程: 一、键盘接口概述1、按键开关去抖动问题机械式按键再按下或释放时, 由于机械弹性作用的影响, 通常伴随有一定时间的触点机 械抖动,然后其触点才稳定下来。其抖动过程如图 9-11所示,抖动时间的长短与开关的机 械特性有关,一般为 5 10 msk按下键增开用8键输入键抖动09-11键幌作和键抖动在触点抖动期间检测按键的通与断状态,可能导致判断出错,即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的

2、。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施。这一点可从硬件、软件两方面予以考虑。在键数较少时,可采用硬件去抖,而当键数较多时,采用软件去抖。在硬件上可采用在键输出端加R-S触发器(双稳态触发器)或单稳态触发器构成去抖动电路。图9-12是一种由R-S触发器构成的去抖动电路,当触发器一旦翻转,触点抖动不会对其产生任何影响。礴态悄扑电路单稳态消抖电路图*12硬件消科申,路4-SV以滤树肖抖侬§软件上采取的措施是:在检测到有按键按下时,执行一个 10 ms左右(具体时间应视所使用的按键进行调整) 的延时程序后,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确

3、认该键处于闭合状态。同理,在检测到该键释放后,也应采用相同的步骤进行确认,从而可消除抖动的影响。2.编制键盘程序一个完善的键盘控制程序应具备以下功能:(1) 检测有无按键按下,并采取硬件或软件措施,消除键盘按键机械触点抖动的影响。(2) 有可靠的逻辑处理办法。每次只处理一个按键,其间对任何按键的操作对系统不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能程序。(3) 准确输出按键值(或键号) ,以满足跳转指令要求。二、独立式按键单片机控制系统中,往往只需要几个功能键,此时,可采用独立式按键结构。1 . 独立式按键结构独立式按键是直接用 I/O 口线构成的单个按键电路,其特点是每个按键

4、单独占用一根I/O 口线,每个按键的工作不会影响其它 I/O 口线的状态。独立式按键的典型应用如图 7.4 所示。 独立式按键电路配置灵活, 软件结构简单, 但每个按键必须占用一根I/O 口线, 因此,在按键较多时, I/O 口线浪费较大,不宜采用。2 .矩阵式键盘I/O 端线分为行线和列线, 按键跨接在行线和列线上, 按键按下时, 行线与列线发生短路。特点:占用 I/O 端线较少;软件结构教复杂。适用于按键较多的场合。3 .键盘扫描控制方式 程序控制扫描方式键处理程序固定在主程序的某个程序段。特点:对 CPU 工作影响小,但应考虑键盘处理程序的运行间隔周期不能太长,否则会影响对键输入响应的及

5、时性。 定时控制扫描方式利用定时/计数器每隔一段时间产生定时中断,CPU 响应中断后对键盘进行扫描。特点: 与程序控制扫描方式的区别是,在扫描间隔时间内, 前者用 CPU 工作程序填充,后者用定时/计数器定时控制。定时控制扫描方式也应考虑定时时间不能太长,否则会影响对键输入响应的及时性。 中断控制方式中断控制方式是利用外部中断源,响应键输入信号。特点:克服了前两种控制方式可能产生的空扫描和不能及时响应键输入的缺点,既能及时处理键输入,又能提高 CPU 运行效率,但要占用一个宝贵的中断资源。三、独立式按键及其接口电路1、按键直接与I/O 口连接图9-13独立式按键接口电路【例9-8】按图9-13

6、(a)、(b),试分别编制按键扫描子程序。解:按图9-13编程如下:KEYA:ORLP1,#07H;置P1.0P1.2为输入态MOVA,P1;读键值,键闭合相应位为0CPLA;取反,键闭合相应位为1ANLA,#00000111B;屏蔽高5位,保留有键值信息的低3位JZGRET;全0,无键闭合,返回LCALLDY10ms;非全0,有键闭合,延时10ms,软件去抖动MOVA,P1;重读键值,键闭合相应位为0CPLA;取反,键闭合相应位为1ANLA,#00000111B;屏蔽高5位,保留有键值信息的低3位JZGRET;全0,无键闭合,返回;非全0,确认有键闭合JBAcc.0,KA0 ;转0#键功能程

7、序JBAcc.1,KA1;转1#键功能程序JBAcc2 KA2;转2#键功能程序GRET:RETKA0: LCALLWORK0;执行0健功能子程序RETKA1: LCALLWORK1;执行1#键功能子程序RETKA2: LCALLWORK2;执行2健功能子程序RET按图9-13(b)编程如下:KEYB:ORLP1,#07H;置P1.0P1.2为输入态MOVA,P1;读键值,键闭合相应位为1ANLA,#00000111B;屏蔽高5位,保留有键值信息的低3位JZGRET;全0,无键闭合,返回LCALLDY10ms;非全0,有键闭合,延时10ms,软件去抖动MOVA,P1;重读键值,键闭合相应位为1

8、ANLA,#00000111B;屏蔽高5位,保留有键值信息的低3位JZGRET;全0,无键闭合,返回;非全0,确认有键闭合JBAcc.0,KB0;转0#键功能程序JBAcc.1,KB1JBAcc2 KB2GRET:RETKB0: LCALLWORK0RETKB1: LCALLWORK1RETKB2: LCALL WORK2RET;转1#键功能程序;转2#键功能程序;执行0#键功能子程序;执行1#键功能子程序;执行2#键功能子程序四、矩阵式键盘及其接口电路80C5LF1. 0Pl. 1P1. 2F1. 3P1. 4P1. 5P1. 6P1, 7K1K1附KlS1K1, 口1K2 Uk3图A15矩

9、阵式键盘的结构矩阵式键盘中,行、列线分别连接到按键开关的两端,行线通过上拉电阻接到+ 5V上。当无键按下时,行线处于高电平状态;当有键按下时,行、列线将导通,此时,行线电平将 由与此行线相连的列线电平决定。这是识别按键是否按下的关键。然而,矩阵键盘中的行线、 列线和多个键相连,各按键按下与否均影响该键所在行线和列线的电平,各按键间将相互影响,因此,必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位置。2 .矩阵式键盘按键的识别识别按键的方法很多,其中,最常见的方法是扫描法。下面以图7.5中8号键的识别为例来说明扫描法识别按键的过程。按键按下时,与此键相连的行线与列线导通,行线在无键按下

10、时处在高电平。显然,如果让所有的列线也处在高电平,那么,按键按下与否不会引起行线电平的变化,因此, 必须使所有列线处在低电平。 只有这样,当有键按下时,该键所在的行电平才会由高电平变为低 电平。CPU根据行电平的变化,便能判定相应的行有键按下。8号键按下时,第2行一定为低电平。然而,第 2行为低电平时,能否肯定是 8号键按下呢?回答是否定的,因为 9、10、11号键按下,同样会使第 2行为低电平。为进一步确定具体键,不能使所有列线在同一时刻都处在低电平,可在某一时刻只让一条列线处于低电平,其余列线均处于高电平,另一时刻,让下一列处在低电平,依此循环,这种依次轮流每次选通一列的工作方式称为键盘扫

11、描。 采用键盘扫描后, 再来观察 8 号键按下时的工作过程, 当 第 0 列处于低电平时,第2 行处于低电平,而第1 、 2 、 3 列处于低电平时,第2 行却处在高电平,由此可判定按下的键应是第 2 行与第 0 列的交叉点,即 8 号键。3 . 键盘的编码对于独立式按键键盘,因按键数量少,可根据实际需要灵活编码。 对于矩阵式键盘,按键的位置由行号和列号惟一确定, 因此可分别对行号和列号进行二进制编码, 然后将两值合成一个字节,高 4 位是行号,低4 位是列号。如图 9-15 中的 8 号键,它位于第 2 行,第 0列,因此,其键盘编码应为20H 。采用上述编码对于不同行的键离散性较大,不利于

12、散转指令对按键进行处理。因此,可采用依次排列键号的方式对按排进行编码。以图7.5中的4X4键盘为例,可将键号编码为:01H、02H、03H、0EH、0FH、10H等16个键号。编码相互转换可通过计算或查表的方法实现。【例 9-10】按图 9-15 及图9-16,试编制矩阵式键盘扫描程序。解:KEY:MOVP1,#0F0H; 行线置低电平,列线置输入态KEY0:MOVA,P1; 读列线数据CPLA;数据取反,“1”有效ANLA,#0F0H; 屏蔽行线, 保留列线数据MOVR1,A;存列线数据 (R1 高 4 位)JZGRET; 全0, 无键按下,返回KEY1:MOVP1,#0FH;行线置输入态,

13、列线置低电平MOVA, P1; 读行线数据CPLA;数据取反,“1”有效ANLA, #0FH; 屏蔽列线,保留行线数据MOVR2,A;存行线数据 (R2 低 4 位)JZGRET; 全0, 无键按下,返回JBCF0,WAIT; 已有消抖标志, 转SETBF0; 无消抖标志,置消抖标志LCALLDY10ms;调用 10ms 延时子程序(参阅例4.13),消抖SJMPKEY0; 重读行线列线数据GRET:RETWAIT:MOVA,P1;等待按键释放CPLA;ANLA,#0FH;JNZWAIT; 按键未释放, 继续等待KEY2:MOVA,R1;取列线数据(高 4 位 )MOVR1,#03H;取列线编

14、号初值MOVR3,#03H;置循环数CLRC;KEY3:RLCA; 依次左移入 C 中JCKEY4;C=1,该列有键按下,(列线编号存R1)DECR1;C=0, 无键按下, 修正列编号DJNZR3,KEY3; 判循环结束否?未结束继续寻找有键按下的列线KEY4:MOVA,R2;取行线数据(低 4 位)MOVR2,#00H;置行线编号初值MOVCLRR3,#03HC;置循环数 ;KEY5:RRCA;依次右移入C中JCKEY6;C=1,该行有键按下,(行线编号存R2)INCR2;C=0,无键按下,修正行线编号DJNZR3,KEY5;判循环结束否?木结束继续寻找肩键按下的行线KEY6:MOVA,R2

15、;取行线编号CLRC;RLCA,仃编p八 2RLCA,仃编人4ADDA,R1/丁编入4+歹U编一按键编KEY7:CLRC;RLCA;按键编号X 2RLCA;按键编号X 4(LCALL+ REI 共4字节)MOVDPTR,#TABJ;JMPA+DPTR;散转,执行相应键功能子程序TABJ:LCALLRETWORK0;调用执行0#键功能子程序;LCALLRETWORK1;调用执行1#键功能子程序;LCALLRETWORK15;调用执行15#键功能子程序【例9-11按图9-17,试编制中断方式键盘扫描程序,将键盘序号存入内 RAM 30H 。INTOFl. 7图17工作于中断方式的矩阵式键盘接口电路

16、解:ORG0000H;复位地址LJMPSTAT;转初始化ORG0003H;中断入口地址LJMPPINT0;转中断服务程序ORG0100H;初始化程序首地址STAT: MOVSP,#60H;置堆栈指针SETBIT0; 置为边沿触发方式MOVIP,#00000001B ;置为高优先级中断MOVP1,#00001111B ;置 P1.0P1.3输入态,置 P1.4P1.7 输出 0SETBEA;CPU 开中SETBEX0; 开中LJMPMAIN;转主程序,并等待有键按下时中断OGR2000H;中断服务程序首地址PINT0: PUSHAcc; 保护现场PUSHPSW;MOVA,P1;读行线(P1.0P

17、1.3)数据CPLA;数据取反, “1”有效ANLA, #0FH;屏蔽列线,保留行线数据MOVR2,A;存行线(P1.0P1.3)数据(R2低4位)MOVP1,#0F0H;行线置低电平,列线置输入态MOVA,P1;读列线(P1.4P1.7)数据CPLA;数据取反, “1”有效ANLA,#0F0H;屏蔽行线,保留列线数据(A 中高 4 位)MOVR1,#03H;取列线编号初值MOVR3,#03H;置循环数CLRC;PINT01:RLCA; 依次左移入 C 中JCPINT02;C=1,该列有键按下,(列线编号存 R1)DECR1;C=0,无键按下,修正列编号DJNZR3,PINT01; 判循环结束否?未结束继续寻找有键按下列线PINT02:MOVA,R

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论