键盘是十分重要的人机对话的组成部分是人向机器发出指令.ppt

上传人:本田雅阁 文档编号:3180687 上传时间:2019-07-21 格式:PPT 页数:25 大小:538.02KB
返回 下载 相关 举报
键盘是十分重要的人机对话的组成部分是人向机器发出指令.ppt_第1页
第1页 / 共25页
键盘是十分重要的人机对话的组成部分是人向机器发出指令.ppt_第2页
第2页 / 共25页
键盘是十分重要的人机对话的组成部分是人向机器发出指令.ppt_第3页
第3页 / 共25页
键盘是十分重要的人机对话的组成部分是人向机器发出指令.ppt_第4页
第4页 / 共25页
键盘是十分重要的人机对话的组成部分是人向机器发出指令.ppt_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《键盘是十分重要的人机对话的组成部分是人向机器发出指令.ppt》由会员分享,可在线阅读,更多相关《键盘是十分重要的人机对话的组成部分是人向机器发出指令.ppt(25页珍藏版)》请在三一文库上搜索。

1、键盘是十分重要的人机对话的组成部分,是人向机器发出指令、输入信息的必需设备。 1、键的特性 键盘是由若干独立的键组成,键的按下与释放是通过机械触点的闭合与断开来实现的,因机械触点的弹性作用,在闭合与断开的瞬间均有一个抖动过程 。抖动必须消除,去抖动的方法主要有以下两种:,5.1 键盘接口技术,硬件去抖动 软件去抖动,5.1 键盘接口技术,如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延时程序,产生5ms10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms10ms的延时,待后沿抖动消失后才能转入该键的处理程序

2、。,硬件取抖电路,在键数较少时可用硬件方法消除键抖动。下图所示的RS触发器为常用的硬件去抖电路。,图中两个“与非”门构成一个RS触发器。当按键未按下时,输出为1;当键按下时,输出为0。此时即使用按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),中要按键不返回原始状态A,双稳态电路的状态不改变,输出保持为0,不会产生抖动的波形。也就是说,即使B点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波。这一点通过分析RS触发器的工作过程很容易得到验证。,2、键盘的形式 键盘的形式有以下两种: 独立式键盘 编码式键盘 (1)独立式键盘 每一个按键的电路是独立的,占用一条数据线 。这

3、种键盘占用硬件资源多,适合少量按键的情况。,5.1 键盘接口技术,独立式键盘结构,独立式键盘与单片机接口,程序框图,独立式键盘与单片机接口,程序清单: ORG 0030H KB:MOV P1,#0FFH ;置P1口为输入口 MOV A,P1 ;读键状态 CPL A ANL A,#0FH ;屏蔽高4位 JZ KB ;无键闭合则返回 ACALL D10MS ;延时去抖动 MOV A,P1 ;再读键状态 CPL A ANL A,#0FH JZ KB ;无键闭合则返回 CJNE A,#01H,KB01 INC 20H ;K1键闭合,20H单元加1 SJMP KB,独立式键盘与单片机接口,KB01:CJ

4、NE A,#02H,KB02 DEC 20H ;K2键闭合,20单元减1 SJMP KB KB02:CJNE A,#04H,KB03 MOV 21H,#00H ;K3键闭合,21H单元清0 SJMP KB KB03:CJNE A,#08H,KB MOV 21H,#0FFH ;K4键闭合,21H单元置FF SJMP KB ;若有两键以上闭合则返回 END,独立式键盘与单片机接口,矩阵式键盘结构,扫描原理: 首先确定是否有键闭合 然后逐一扫描以进一步确定是哪一键闭合 以44键盘为例: (1)判断是否有键按下:使列线D0D3都输出0,检测行线D4D7的电平。如果D4D7上的电平全为高,则表示没有键被

5、按下。如果D4D7上的电平不全为高,则表示有键被按下。 (2)扫面按键键值:如果没有键闭合,就返回扫描。如果有键闭合,在进行逐列扫描,找出闭合键的键号。先使D0=0,D1D3=1,检测D4D7上的电平,如果D4=0,表示K1键被按下;同理,如果D5D7=0,分别表示K5、K9、K13键被按下;如果D4D7=1,则表示这一列没有键被按下。再使D1=0,D0、D2、D3为1,对第二列进行扫描,这样依次进行下去,直到把闭合的键找到为止。,矩阵式键盘的工作原理,矩阵式键盘与单片机接口,按键及相关说明,一、程序扫描方式 三个步骤: 判断有无键按下; 软件延时10ms去抖动; 求键的位置(行、列)。,矩阵

6、式键盘与单片机接口,程序清单: KSCAN: ACALL KEYS1 ;调用判键闭合子程序 JNZ KEY1 ;(A)0有键闭合则转至去抖动 AJMP RETURN ;无键闭合则返回 KEY1: ACALL D10MS ;调用10ms延时程序 ACALL KEYS1 ;再次调用判键闭合子程序 JNZ KEY2 ;确认有键闭合,开始扫描 AJMP RETURN ;无键闭合则返回 KEY2: MOV R2,#0FEH ;送首列扫描字 MOV R4,#00H ;送首列号 KEY0: MOV A,R2 MOV P1,A MOV A,P1 ;扫描字从P1口送出 JB ACC.4,LINE1 ;第1行无键

7、闭合,转第2行 MOV A,#00H ;第1行首键号送A AJMP KPV ;转键值计算程序,矩阵式键盘与单片机接口,LINE1: JB ACC.5,LINE2 ;第2行无键闭合,转第3行 MOV A,#04H ;第2行首键号送A AJMP KPV ;转键值计算程序 LINE2: JB ACC.6,LINE3 ;第3行无键闭合,转第4行 MOV A,#08H ;第3行首键号送A AJMP KPV ;转键值计算程序 LINE3: JB ACC.7,NEXT ;第4行无键闭合,转下1列 MOV A,#0CH ;第4行首键号送A KPV: ADD A,R4 ;计算键值 PUSH ACC KEY3:

8、ACALL KEYS1 ;等待键释放 JNZ KEYS1 POP ACC SETB FLAG ;置有键按下标志 SJMP KEY4 RETURN:CLR FLAG ;清有键按下标志 KEY4: RET NEXT: INC R4 ;列号加1,矩阵式键盘与单片机接口,MOV A,R2 CJNE A,#0F7H,RETURN ;判断4行是否都已扫描完, ;完则返回 RL A ;为扫描下1行做准备 MOV R2,A AJMP KEY0 ;开始扫描下1列 KEYS1:MOV P1,#0F0H ;判键闭合子程序 MOV A,P1 CPL A ANL A,#0F0H RET D10MS:MOV R7,#14

9、H ;10ms延时子程序 DLY: MOV R6,#0F8H DLY1: DJNZ R6,DLY1 DJNZ R7,DLY RET,矩阵式键盘与单片机接口,二、定时中断扫描方式 该方式利用定 时器10ms产生一次 中断,设置两个标 志(FLAG1、 FLAG2),FLAG1 用于去抖动标志, FLAG2用于键处理 标志。,FLAG1=1,矩阵式键盘与单片机接口,程序清单: FLAG1 BIT 20H.0 ;定义抖动标志 FLAG2 BIT 20H.1 ;定义处理标志 KEYV EQU 30H ;定义键值单元 ORG 0000H AJMP MAIN ORG 000BH AJMP INTT0 MA

10、IN: MOV TMOD,#01H ;T0为方式1,定时10ms MOV TL0,#0F0H MOV TH0,#0D8H MOV IE,#82H SETB TR0 HERE:SJMP HERE ;主程序踏步,矩阵式键盘与单片机接口,INTT0: MOVTL0,#0F0H ;中断服务,重新给定时器赋初值 MOV TH0,#0D8H ACALL KEYS1 ;判断键是否按下 JNZ KB1 ;有键按下则转至KB1 CLR FLAG1 ;清除抖动标志 CLR FLAG2 ;清除处理标志 AJMP KB2 ;中断返回 KB1: JB FLAG1,KB3 ;判抖动标志是否有效 SETB FLAG1 ;无

11、效则设置成有效 AJMP KB2 ;返回 KB3: JB FLAG2,KB2 MOV R2,#0FEH ;送首列扫描字 MOV R4,#00H ;送首列号 KEY0: MOV A,R2 MOV P1,A MOV A,P1 ;扫描字从P1口送出 JB ACC.4,LINE1 ;第1行无键闭合,转第2行 MOV A,#00H ;第1行首键号送A AJMP KPV ;转键值计算程序,矩阵式键盘与单片机接口,LINE1: JB ACC.5,LINE2 ;第2行无键闭合,转第3行 MOV A,#04H ;第2行首键号送A AJMP KPV ;转键值计算程序 LINE2:JB ACC.6,LINE3 ;第

12、3行无键闭合,转第4行 MOV A,#08H ;第3行首键号送A AJMP KPV ;转键值计算程序 LINE3:JB ACC.7,NEXT ;第4行无键闭合,转下1列 MOV A,#0CH ;第4行首键号送A KPV: ADD A,R4 ;计算键值 MOV KEYV,A ;存放键值 SETB FLAG2 ;设置处理标志 AJMP KB2 NEXT: INC R4 ;列号加1 MOV A,R2 CJNE A,#0F7H,KB2 ;判断4行是否都已扫描完,完则返回 RL A ;为扫描下1行做准备 MOV R2,A AJMP KEY0 ;开始扫描下1列 KB2: RETI END,矩阵式键盘与单片

13、机接口,扩展单片机输入键的另一种方法,扫描原理: 1、读键前先向P1口写数据,即扫描值,使该端口 始终有一位清0,其它位均为1。 2、将P1口的数据读入ACC,如没有键按下,则读入的值和 扫描值相同,此时PSW的P标志(奇偶标志)=1(A中有奇数个1) ,程序 按无键按下处理。如有键按下,则读入的数据必然有2位 为0,则P标志为0,程序将按键临时存入B,延时取抖后再读P1值送A,如A=B则按有键按下处理,无则按无键按下 处理。 3、每完成一次键盘扫描无论有无键按下,扫描值都循环左移 一位再写入P1口,循环判断所有的输入键。 程序流程图如下:,P1.7 p1.6p1.5p1.4p1.3p1.2p

14、1.1p1.0,上例中8根口线只能扩展16个按键,现介绍另一种方法:同样用8根口线,可使按键增加到28个,最多到36个。,begin,初始化,扫描值送P1,读P1送A,奇偶位=1?,A送B暂存,取抖动延时,读P1送A,A=B?,执行相应程序,用户其它程序,扫描值左循环,org 0000h ajmp step org 0050h step: mov r5,#11111110b;键扫描主程序 main1: mov P1,r5 ;扫描值送P1口 mov a,P1 ;读端口数据至ACC jb P,main2 ;奇偶标志是否为1 mov b,a ;为0,键值暂存B acall delay ;延时取抖 m

15、ov a,P1 ;再读端口数据至A cjne a,b,main2 ;键值是否与第一次相等 ajmp look1 ;相等,确实有键按下 main2: mov a,r5 ;当前扫描值送A rl a ;左移一位 mov P1,a ;送回扫描值寄存器 ajmp main1 ;转主程序入口,程序清单,y,N,y,N,look1: cjne a,#11111100b,look2 lcall Q1 ;1键按下,转Q1处理 ajmp main2 ; look2: cjne a,#11111010b,look3 lcall Q2 ;2键按下,转Q2处理 ajmp main2 look3: ; look26: c

16、jne a,#10011111b,look27 lcall Q26 ;26键按下,转Q26处理 ajmp main2 look27: cjne a,#01011111b,look28 lcall Q27 ;27键按下,转Q27处理 ajmp main2 look28:,程序清单,cjne a,#10011111b,look29 lcall Q28 ;28键按下,转Q28处理 ajmp main2 look29: ajmp main2 delay: mov r6,#1fh ;延时处理 delay1: mov r7,#1fh djnz r7,$ djnz r6,delay1 ret end,程序清单,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1