输入输出设备及接口技术(键盘)_第1页
输入输出设备及接口技术(键盘)_第2页
输入输出设备及接口技术(键盘)_第3页
输入输出设备及接口技术(键盘)_第4页
输入输出设备及接口技术(键盘)_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、第十章第十章 输入输入/ /输出设备及接口技术输出设备及接口技术10.2 10.2 键盘接口技术键盘接口技术 常用的按键,都存在两种状态:断开和闭合 当某一键被按下,则为闭合状态 键释放,则为断开状态 键盘电路的功能就是将键的闭合和断开状态用“0”和“1”来表示,然后通过数据线送到CPU内进行键的识别一一 键盘工作原理键盘工作原理1. 1. 键盘的可靠性键盘的可靠性 按键的机械抖动:在实际按键操作中,由于按键动作是一个机械动作,键在闭合或断开的过程会发生抖动 键抖动时间的长短与开关的机械特性和人的操作有关,一般为5ms10ms左右,然后达到稳定状态。 键盘接口:为了保证CPU对键的一次操作仅作

2、一次处理,必须去除抖动,使CPU在键的稳定闭合或断开状态时读取键值。抖动时间抖动时间10ms开关动作时间开关动作时间100ms“ 1 ”“ 0 ”10msI/O接接口口+5v+5v消除抖动电路消除抖动电路按键按键单片机单片机消除抖动的方法消除抖动的方法硬件去抖:硬件去抖:软件:软件:在键盘接口中,另一种普遍使用的是采用软在键盘接口中,另一种普遍使用的是采用软件延时来完成消抖的方法。件延时来完成消抖的方法。 基本思想是:在检测到按键按下或释放时,记基本思想是:在检测到按键按下或释放时,记录按键的状态,延时大约录按键的状态,延时大约10ms10ms,再次检测按键的状,再次检测按键的状态,若与前一次

3、的状态相同,说明按键的状态已稳态,若与前一次的状态相同,说明按键的状态已稳定,可进行处理;否则,表示键的状态不稳定,可定,可进行处理;否则,表示键的状态不稳定,可能是误动作,不应被处理。能是误动作,不应被处理。二二 、独立式按键、独立式按键1 1、接口设计、接口设计P1.0P1.1P1.7+5v(1) (1) 接口与数据接口与数据 每个按键单独占有一根每个按键单独占有一根I/OI/O接口引线。接口引线。 输入每根输入每根I/OI/O接口引线的接口引线的信号对应某个按键状态。信号对应某个按键状态。2 2、独立式按键接口程序设计、独立式按键接口程序设计键盘处理程序任务键盘处理程序任务1)1)键输入

4、键输入 检查键盘是否有键被按下,消除按检查键盘是否有键被按下,消除按键抖动。确定被按键的键号。键抖动。确定被按键的键号。 硬件电路消除抖动或软件消除抖动。硬件电路消除抖动或软件消除抖动。2)2)键译码键译码 确定键值确定键值3)3)键处理键处理 根据键值转移到不同程序段。若键根据键值转移到不同程序段。若键 值属于数字、字符键,则调用显示数字值属于数字、字符键,则调用显示数字和字符的子程序。若键值属于功能键,和字符的子程序。若键值属于功能键,则进行多分支转移,执行各个功能程序则进行多分支转移,执行各个功能程序段。段。延时等待延时等待10ms 仍有按键信号?仍有按键信号?Y 有按键信号?有按键信号

5、?NYN键盘处理键盘处理 按键释放?按键释放?NY3 3、独立式按键接口程序、独立式按键接口程序 KEY:SETB P1.0KEY:SETB P1.0 JB P1.0, KEY JB P1.0, KEY ;有键按下;有键按下P1.0=0P1.0=0KEY1: ACALL DELAY KEY1: ACALL DELAY ;延时,防止抖动;延时,防止抖动 SETB P1.0 SETB P1.0 JB P1.0, KEY JB P1.0, KEY ;键是否仍按下?;键是否仍按下? KEY2:JNB P1.0, KEY2 KEY2:JNB P1.0, KEY2 ;消除了连击功能;消除了连击功能 ACA

6、LL PROGRAM ACALL PROGRAM ; RETRET三、矩阵式键盘三、矩阵式键盘1 1、结构、结构由多条由多条I/OI/O接口引线组成矩阵式键盘接口引线组成矩阵式键盘由行线和列由行线和列线组成,按线组成,按键位于行、键位于行、列线的交叉列线的交叉点上点上行:行: 输入输入列:列: 输出输出 矩阵式键盘中,行、列线分别连接到按键开关的两端矩阵式键盘中,行、列线分别连接到按键开关的两端 当无键按下时,行线处于高电平状态;当无键按下时,行线处于高电平状态; 当有键按下时,行、列线将导通,此时,行线电平将当有键按下时,行、列线将导通,此时,行线电平将由与此行线相连的列线电平决定。这是识别

7、按键是否按下由与此行线相连的列线电平决定。这是识别按键是否按下的关键。的关键。 矩阵键盘中的行线、列线和多个键相连,各按键按下矩阵键盘中的行线、列线和多个键相连,各按键按下与否均影响该键所在行线的电平,各按键间将相互影响,与否均影响该键所在行线的电平,各按键间将相互影响,因此,必须将行线、列线信号配合起来作适当处理,才能因此,必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位置。确定闭合键的位置。2. 矩阵式键盘按键的识别 识别按键的方法很多,其中,最常见的方法是扫描法。识别按键的方法很多,其中,最常见的方法是扫描法。 (1) (1) 判断有无键按下。判断有无键按下。方法为:输出口全为

8、方法为:输出口全为“0”0”,读输入口状态,若全为,读输入口状态,若全为“1”1”,则说明无键按下;若不全为则说明无键按下;若不全为“1”1”,则说明有键按下,则说明有键按下 (2) (2) 消除按键抖动的影响。消除按键抖动的影响。方法为:在判断有键按下后,用软件延时的方法延时方法为:在判断有键按下后,用软件延时的方法延时10ms10ms后,后,再判断键盘状态,如果仍为有键按下状态,则认为有一个按再判断键盘状态,如果仍为有键按下状态,则认为有一个按键按下,否则当作按键抖动来处理。键按下,否则当作按键抖动来处理。 (3 3)键的识别。)键的识别。方法为:列线逐列输出方法为:列线逐列输出“0”0”

9、,某行有键按下,则对应行线,某行有键按下,则对应行线输入为输入为“0”0”,若该行无键按下,对应行线输入为,若该行无键按下,对应行线输入为“1”1”。四四. . 键盘的工作方式键盘的工作方式 对键盘的响应取决于键盘的工作方式,键盘的工作对键盘的响应取决于键盘的工作方式,键盘的工作方式应根据实际应用系统中方式应根据实际应用系统中CPUCPU的工作状况而定,其选取的工作状况而定,其选取的原则是既要保证的原则是既要保证CPUCPU能及时响应按键操作,又不要过多能及时响应按键操作,又不要过多占用占用CPUCPU的工作时间。通常,键盘的工作方式有三种,即的工作时间。通常,键盘的工作方式有三种,即编程扫描

10、、定时扫描和中断扫描。编程扫描、定时扫描和中断扫描。 1 1: 编程扫描方式编程扫描方式 编程扫描方式是利用编程扫描方式是利用CPUCPU完成其它工作的空余时间,完成其它工作的空余时间,调用键盘扫描子程序来响应键盘输入的要求。在执行键调用键盘扫描子程序来响应键盘输入的要求。在执行键功能程序时,功能程序时,CPUCPU不再响应键输入要求,直到不再响应键输入要求,直到CPUCPU重新扫重新扫描键盘为止。描键盘为止。2 2: 定时扫描方式定时扫描方式 定时扫描方式就是每隔一段时间对键盘扫描一次,定时扫描方式就是每隔一段时间对键盘扫描一次,它利用单片机内部的定时器产生一定时间(例如它利用单片机内部的定

11、时器产生一定时间(例如10ms10ms)的定时,当定时时间到就产生定时器溢出中断。的定时,当定时时间到就产生定时器溢出中断。 CPUCPU响应中断后对键盘进行扫描,并在有键按下时响应中断后对键盘进行扫描,并在有键按下时识别出该键,再执行该键的功能程序。识别出该键,再执行该键的功能程序。 定时扫描方式的硬件电路与编程扫描方式相同定时扫描方式的硬件电路与编程扫描方式相同按键处理程序按键处理程序:延时消抖延时消抖键扫描求键号键扫描求键号延时延时键译码求键值键译码求键值输入数字输入数字跳转各功能程序跳转各功能程序有按键输入?有按键输入?确有按键?确有按键?按键释放?按键释放?是数字键?是数字键?3 3

12、: 中断扫描方式中断扫描方式 采用上述两种键盘扫描方式时,无论是采用上述两种键盘扫描方式时,无论是否按键,否按键,CPUCPU都要定时扫描键盘,而单片机都要定时扫描键盘,而单片机应用系统工作时,并非经常需要键盘输入,应用系统工作时,并非经常需要键盘输入,因此,因此,CPUCPU经常处于空扫描状态。经常处于空扫描状态。中断式键盘电路中断式键盘电路P1.0-P1.3 P1.0-P1.3 输出,为输出,为“0”0”P1.4-P1.7 P1.4-P1.7 输入输入P1.0P1.1P1.3P1.2P1.4P1.5P1.6P1.7INT08031&无键按下时,与门各输入无键按下时,与门各输入端均为

13、高电平,输出端保端均为高电平,输出端保持为高电平持为高电平有键按下时,与门输入有有键按下时,与门输入有低,输出端为低电平,向低,输出端为低电平,向CPUCPU申请中断,若申请中断,若CPUCPU开放开放外部中断,则会响应中断外部中断,则会响应中断请求,转去执行键盘扫描请求,转去执行键盘扫描子程序。子程序。五:键盘接口五:键盘接口原理图原理图程序流程图程序流程图 用行扫描法进行键扫描的程序 其中KS1为判键闭合的子程序。有键闭合时(A)=0。 DIR为数码显示器扫描显示子程序,执行一次的时间约6ms。 程序执行后, 若键闭合, 键值存入A中, 键值的计算公式是: 键值=行号4+列号; 若无键闭合

14、, 则A中存入标志FFH。 键盘扫描程序:键盘扫描程序:KEY1: LCALL KS1 ;KEY1: LCALL KS1 ;检查有闭合键否?检查有闭合键否? JNZ LK1 ;AJNZ LK1 ;A非非0,0,有键闭合则转有键闭合则转 LJMP LK8 ;LJMP LK8 ;无键闭合转返回无键闭合转返回LK1: LCALL DIR ;LK1: LCALL DIR ;有键闭合有键闭合, ,则延时则延时12ms12ms LCALL DIR ; LCALL DIR ;消抖消抖 LCALL KS1 ;LCALL KS1 ;再次检查有键闭合否?再次检查有键闭合否? JNZ LK2 ;JNZ LK2 ;有

15、键闭合则转有键闭合则转 LJMP LK8 ;LJMP LK8 ;无键闭合转返回无键闭合转返回LK2: MOV R3,LK2: MOV R3,00H ;00H ;行号初值送行号初值送R3 R3 MOV R2, MOV R2,0FEH ;0FEH ;行扫描初值送行扫描初值送R2R2LK3: MOV DPTR,LK3: MOV DPTR,7F01H ;7F01H ;指向指向81558155的的PAPA口口 MOV A,R2 ;MOV A,R2 ;行扫描值送行扫描值送A A MOVX DPTR,A ; MOVX DPTR,A ;扫描扫描1 1行行 INC DPTRINC DPTR INC DPTR ;

16、 INC DPTR ;指向指向81558155的的PCPC口口 MOVX A,DPTR ;MOVX A,DPTR ;读入列值读入列值 ANL A,ANL A,0FH ;0FH ;保留低保留低4 4位位 MOV R4,A ;MOV R4,A ;暂存列值暂存列值 CJNE A,CJNE A,0FH,LK4 ;0FH,LK4 ;列值非全列值非全“1”1”(有键按下),转计算键值(有键按下),转计算键值 MOV A,R2 ;MOV A,R2 ;行扫描值送行扫描值送A A JNB ACC.7,LK8 ; JNB ACC.7,LK8 ;已扫到最后已扫到最后1 1行则转行则转 RL A ;RL A ;未扫完

17、未扫完, ,则移至下则移至下1 1行行 MOV R2,A ;MOV R2,A ;行值存入行值存入R2R2中中 INC R3 ;INC R3 ;行号加行号加1 1 SJMP LK3 ; SJMP LK3 ;转至扫描下转至扫描下1 1行行 LK4: MOV A,R3 ;LK4: MOV A,R3 ;行号送入行号送入A A ADD A,R3 ; ADD A,R3 ;行号行号2 2 MOV R5,A ; MOV R5,A ;暂存暂存 ADD A,R5 ;ADD A,R5 ;行号行号4 4 MOV R5,A ; MOV R5,A ;存入存入R5R5中中 MOV A,R4 ;MOV A,R4 ;列值送入列

18、值送入A A LK5: RRC A ; LK5: RRC A ;右移右移1 1位位 JNC LK6 ;JNC LK6 ;该位为该位为0 0则转则转 INC R5 ;INC R5 ;列号加列号加1 1 SJMP LK5 ; SJMP LK5 ;列号未判完继续列号未判完继续 LK6: PUSH R5 ;LK6: PUSH R5 ;保护键值保护键值 LK7: LCALL DIR ;LK7: LCALL DIR ;扫描扫描1 1遍显示器遍显示器 LCALL KS1 ;LCALL KS1 ;发全扫描信号发全扫描信号 JNZ LK7 ;JNZ LK7 ;键未释放则等待键未释放则等待 LCALL DIR ;

19、LCALL DIR ;键已释放键已释放 LCALL DIR ;LCALL DIR ;延时延时12ms,12ms,消抖消抖 POP A ;POP A ;键值存入键值存入A A中中 KND: RET ; KND: RET ;返主程序返主程序 LK8: MOV A,LK8: MOV A,0FFH ;0FFH ;无键闭合标志无键闭合标志FFHFFH存入存入A A中中 RET ;RET ;返主程序返主程序 KS1: MOV DPTR,KS1: MOV DPTR,7F01H ;7F01H ;有无闭合键判断子程序有无闭合键判断子程序 MOV A,MOV A,00H ;00H ;取全扫描信号取全扫描信号 MO

20、VX DPTR,A ;MOVX DPTR,A ;发全扫描信号发全扫描信号 INC DPTRINC DPTR INC DPTR ; INC DPTR ;指向指向81558155的的PCPC口口 MOVX A,DPTR ;MOVX A,DPTR ;读入列值读入列值 ANL A,ANL A,0FH ;0FH ;保留低保留低4 4位位 ORL A,ORL A,0F0H ;0F0H ;高高4 4位取位取“1”1” CPL A ; CPL A ;取反取反, ,无键按下则全无键按下则全0 0 RET ; RET ;返主程序返主程序 DIRDIR数码显示器扫描显示子程序参阅数码显示器扫描显示子程序参阅LEDL

21、ED数码显示器数码显示器 键盘键盘( (显示显示) )接口及程序设计接口及程序设计图见图见P199 P199 图图10-710-781558155的的I/OI/O口地址口地址:7F00H-7F05H:7F00H-7F05H PA PA口口: :输出输出, ,作键盘的列线作键盘的列线( (键扫描键扫描) ) 又作又作6 6位显示器的位扫描位显示器的位扫描 PBPB口口: :输出输出, ,作显示器段数据输出作显示器段数据输出 PCPC口口: :输入输入, ,作键盘的行线作键盘的行线( (键输入键输入) )键输入程序功能键输入程序功能:1:1、判有无键按下、判有无键按下 2 2、去抖、去抖 3 3、

22、判键号、判键号 4 4、其它(键释放才执行,多键等)、其它(键释放才执行,多键等)键输入程序清单键输入程序清单KEY1:MOV A,#03H MOV DPTR,#7F00H MOVX DPTR,A ACALL KS1 JNZ LK1 ACALL DIR AJMP KEY1 LK1:ACALL DIR ACALL DIR ACALL KS1 JNZ LK2 ACALL DIR AJMP KEY1 LK2:MOV R2,#0FEH MOV R4,#0 LK4:MOV DPTR,#7F01H MOV A,R2 MOVX DPTR,A INC DPTR INC DPTR MOVX A,DPTR JB

23、ACC.0,LONE MOV A,#0 AJMP LKPLONE:JBACC.1,LTWO MOV A,#08H AJMP LKPLTWO:JB ACC.2,LTHR MOV A,#10H AJMP LKPLTHR:JB ACC.3,NEXT MOV A,#18HLKP:ADD A,R4 PUSH ACCLK3:ACALL DIR ACALLKS1 JNZ LK3 POP ACC RETNEXT:INC R4 MOV A,R2 JNB ACC.7,KND RL A MOV R2,A AJMP LK4KND:AJMP KEY1 KS1:MOV DPTR #7F01HKS1:MOV DPTR #7

24、F01H MOV A,#0 MOV A,#0 MOVX DPTR,A MOVX DPTR,A INC DPTR INC DPTR INC DPTR INC DPTR MOVX A,DPTR MOVX A,DPTR CPL A CPL A ANL A,#0FH ANL A,#0FH RET RET注注: A: A为为”0”,0”,则无键按下则无键按下 否则有键按下否则有键按下DIR:DIR: RET RET同同P194P194程序程序, ,此略此略实验九实验九显示显示: :设显示缓冲器为设显示缓冲器为: :7CH7CH(左)(左) 、7DH7DH、7EH7EH、7FH7FH(右)(右) MOV

25、A,#0HMOV A,#0H MOV 7CH,A MOV 7CH,A MOV 7DH,A MOV 7DH,A MOV 7EH,A MOV 7EH,A MOV 7FH,A MOV 7FH,A ACALL DISP ACALL DISPKEY1:ACALL KSKEY1:ACALL KS JNZ LK1 JNZ LK1 ACALL DISP ACALL DISP SJMP KEY1 SJMP KEY1LK1: ACALL DISPLK1: ACALL DISP ACALL DISP ACALL DISP ACALL KS ACALL KS JNZ LK2 JNZ LK2 ACALL DISP AC

26、ALL DISP SJMP KEY1 SJMP KEY1 LK2:MOV R2,#0FEH LK2:MOV R2,#0FEH MOV R4,#0 MOV R4,#0 LK3:MOV A,R2 LK3:MOV A,R2 MOV P3,A MOV P3,A MOV A,P3 MOV A,P3 JB ACC.4,LONE JB ACC.4,LONE MOV A,#0 MOV A,#0 AJMP LKP AJMP LKPLONE: JB ACC.5,LTWOLONE: JB ACC.5,LTWO MOV A,#4 MOV A,#4 AJMP LKP AJMP LKPLTWO: JB ACC.6,LTH

27、RLTWO: JB ACC.6,LTHR MOV A,#8 MOV A,#8 AJMP LKP AJMP LKPLTHR: JB ACC.7,NEXTLTHR: JB ACC.7,NEXT MOV A,#0CH MOV A,#0CH LKP: ADD A,R4 LKP: ADD A,R4 PUSH ACC PUSH ACC LK4: ACALL DISP LK4: ACALL DISP ACALL KS ACALL KS JNZ LK4 JNZ LK4 POP ACC POP ACC ACALL DSPL ACALL DSPL LJMP KEY1 LJMP KEY1NEXT:INC R4NEXT:INC R4 MOV A,R2 MOV A,R2 JNB ACC.3,KND JNB ACC.3,KND RL A RL A MOV R2,A MOV R2,A AJMP LK3 AJMP LK3 KND:AJMP KEY1 KND:AJMP KEY1DSPL:MOV 7CH,7DHDSPL:MOV 7CH,7DH MOV

温馨提示

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

评论

0/150

提交评论