资源预览内容
第1页 / 共25页
第2页 / 共25页
第3页 / 共25页
第4页 / 共25页
第5页 / 共25页
第6页 / 共25页
第7页 / 共25页
第8页 / 共25页
第9页 / 共25页
第10页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Copyright http:/www.myvtc.edu.cn 2006 键盘是十分重要的人机对话的组成部分,是人向机器发出指键盘是十分重要的人机对话的组成部分,是人向机器发出指令、输入信息的必需设备。令、输入信息的必需设备。1 1、键的特性、键的特性 键盘是由若干独立的键组成,键盘是由若干独立的键组成,键的按下与释放是键的按下与释放是通过机械触点的闭合与断开来实现的,因机械触通过机械触点的闭合与断开来实现的,因机械触点的弹性作用,在闭合与断开的瞬间均有一个抖点的弹性作用,在闭合与断开的瞬间均有一个抖动过程动过程 。抖动必须消除,去抖动的方法主要有以抖动必须消除,去抖动的方法主要有以下两种:下两种:5.1 键盘接口技术 Copyright http:/www.myvtc.edu.cn 2006硬件去抖动硬件去抖动软件去抖动软件去抖动前沿抖动稳定后沿抖动图5.1 按键抖动信号波形5.1 键盘接口技术如果按键较多如果按键较多,常用软件方法去抖常用软件方法去抖,即检即检测出键闭合后执行一个延时程序测出键闭合后执行一个延时程序,产生产生5ms10ms的延时的延时,让前沿抖动消失后让前沿抖动消失后再一次检测键的状态再一次检测键的状态,如果仍保持闭合如果仍保持闭合状态电平状态电平,则确认为真正有键按下。当则确认为真正有键按下。当检测到按键释放后检测到按键释放后,也要给也要给5ms10ms的延时的延时,待后沿抖动消失后才能转入该待后沿抖动消失后才能转入该键的处理程序。键的处理程序。 Copyright http:/www.myvtc.edu.cn 2006硬件取抖电路在键数较少时可用硬件方法消除键抖动。下图所示的RS触发器为常用的硬件去抖电路。图中两个图中两个“与非与非”门构成一个门构成一个RS触触发器。当按键未按下时发器。当按键未按下时,输出为输出为1;当当键按下时键按下时,输出为输出为0。此时即使用按。此时即使用按键的机械性能键的机械性能,使按键因弹性抖动使按键因弹性抖动而产生瞬时断开(抖动跳开而产生瞬时断开(抖动跳开B),中中要按键不返回原始状态要按键不返回原始状态A,双稳态电双稳态电路的状态不改变路的状态不改变,输出保持为输出保持为0,不会不会产生抖动的波形。也就是说产生抖动的波形。也就是说,即使即使B点的电压波形是抖动的点的电压波形是抖动的,但经双稳但经双稳态电路之后态电路之后,其输出为正规的矩形其输出为正规的矩形波。这一点通过分析波。这一点通过分析RS触发器的工触发器的工作过程很容易得到验证。作过程很容易得到验证。 Copyright http:/www.myvtc.edu.cn 20062、键盘的形式键盘的形式有以下两种:独立式键盘编码式键盘(1)独立式键盘 每一个按键的电路是独立的,占用一条数据线 。这种键盘占用硬件资源多,适合少量按键的情况。5.1 键盘接口技术 Copyright http:/www.myvtc.edu.cn 2006独立式键盘结构 Copyright http:/www.myvtc.edu.cn 2006独立式键盘与单片机接口 Copyright http:/www.myvtc.edu.cn 2006程序框图程序框图键闭合吗?置P1口为输入方式开 始延时10ms消除抖动有键闭合吗?是K1键闭合吗?20H单元加1YYYYYYNNNNNN图5.5 独立键盘程序框图流程是K2键闭合吗?是K3键闭合吗?是K4键闭合吗?20H单元减121H单元清021H单元置FF独立式键盘与单片机接口 Copyright http:/www.myvtc.edu.cn 2006程序清单: ORG 0030HKB:MOVP1,#0FFH;置P1口为输入口MOVA,P1;读键状态CPLAANLA,#0FH;屏蔽高4位JZKB;无键闭合则返回ACALLD10MS;延时去抖动MOVA,P1;再读键状态CPLAANLA,#0FHJZKB;无键闭合则返回CJNEA,#01H,KB01INC20H;K1键闭合,20H单元加1SJMPKB独立式键盘与单片机接口 Copyright http:/www.myvtc.edu.cn 2006KB01:CJNE A,#02H,KB02 DEC 20H ;K2键闭合,20单元减1 SJMP KBKB02:CJNE A,#04H,KB03 MOV 21H,#00H ;K3键闭合,21H单元清0 SJMP KBKB03:CJNE A,#08H,KB MOV 21H,#0FFH ;K4键闭合,21H单元置FF SJMP KB ;若有两键以上闭合则返回 END独立式键盘与单片机接口 Copyright http:/www.myvtc.edu.cn 2006矩阵式键盘结构 Copyright http:/www.myvtc.edu.cn 2006扫描原理:首先确定是否有键闭合然后逐一扫描以进一步确定是哪一键闭合 以44键盘为例: (1)判断是否有键按下:判断是否有键按下:使列线D0D3都输出0,检测行线D4D7的电平。如果D4D7上的电平全为高,则表示没有键被按下。如果D4D7上的电平不全为高,则表示有键被按下。 (2)扫面按键键值:扫面按键键值:如果没有键闭合,就返回扫描。如果有键闭合,在进行逐列扫描,找出闭合键的键号。先使D0=0,D1D3=1,检测D4D7上的电平,如果D4=0,表示K1键被按下;同理,如果D5D7=0,分别表示K5、K9、K13键被按下;如果D4D7=1,则表示这一列没有键被按下。再使D1=0,D0、D2、D3为1,对第二列进行扫描,这样依次进行下去,直到把闭合的键找到为止。 矩阵式键盘的工作原理 Copyright http:/www.myvtc.edu.cn 2006矩阵式键盘与单片机接口 Copyright http:/www.myvtc.edu.cn 2006按键及相关说明按键按键按键数据输入码(按键数据输入码(CPU输出)输出)按键数据输出信号(按键数据输出信号(CPU读入)读入)键值键值P1.3P1.2P1.1P1.0P1.7P1.6P1.5P1.4S111101110EEHS511101101DEHS911101011BEHS13111001117EHS211011110EDHS611011101DDHS1011011011BDHS14110101117DHS310111110EBHS710111101DBHS1110111011BBHS15101101117BHS401111110E7HS801111101D7HS1201111011B7HS160111011177H Copyright http:/www.myvtc.edu.cn 2006一、程序扫描方式三个步骤:判断有无键按下;软件延时10ms去抖动;求键的位置(行、列)。有键闭合吗?开 始软件延时10ms有键闭合吗?键释放了吗?逐列逐行扫描确定键的位置调键值处理程序返 回YYYNNN图5.8 程序键盘扫描程序框图矩阵式键盘与单片机接口 Copyright http:/www.myvtc.edu.cn 2006程序清单:程序清单:KSCAN: ACALL KEYS1 ;调用判键闭合子程序调用判键闭合子程序JNZKEY1;(;(A)0有键闭合则转至去抖动有键闭合则转至去抖动AJMPRETURN;无键闭合则返回无键闭合则返回KEY1: ACALL D10MS;调用调用10ms延时程序延时程序ACALL KEYS1 ;再次调用判键闭合子程序再次调用判键闭合子程序JNZKEY2;确认有键闭合,开始扫描确认有键闭合,开始扫描AJMPRETURN;无键闭合则返回无键闭合则返回KEY2:MOVR2,#0FEH;送首列扫描字送首列扫描字MOVR4,#00H;送首列号送首列号KEY0: MOVA,R2MOVP1,AMOVA,P1;扫描字从扫描字从P1口送出口送出JBACC.4,LINE1;第第1行无键闭合,转第行无键闭合,转第2行行MOVA,#00H;第第1行首键号送行首键号送AAJMPKPV;转键值计算程序转键值计算程序矩阵式键盘与单片机接口 Copyright http:/www.myvtc.edu.cn 2006LINE1:JBACC.5,LINE2;第第2行无键闭合,转第行无键闭合,转第3行行MOVA,#04H;第第2行首键号送行首键号送AAJMPKPV;转键值计算程序转键值计算程序LINE2:JBACC.6,LINE3;第第3行无键闭合,转第行无键闭合,转第4行行MOVA,#08H;第第3行首键号送行首键号送AAJMPKPV;转键值计算程序转键值计算程序LINE3:JBACC.7,NEXT;第第4行无键闭合,转下行无键闭合,转下1列列MOVA,#0CH;第第4行首键号送行首键号送AKPV:ADDA,R4;计算键值计算键值PUSHACCKEY3: ACALL KEYS1;等待键释放等待键释放JNZKEYS1POPACCSETBFLAG;置有键按下标志置有键按下标志SJMPKEY4RETURN:CLR FLAG;清有键按下标志清有键按下标志KEY4: RETNEXT: INCR4;列号加列号加1矩阵式键盘与单片机接口 Copyright http:/www.myvtc.edu.cn 2006MOVA,R2CJNEA,#0F7H,RETURN;判断判断4行是否都已扫描完,行是否都已扫描完,;完则返回;完则返回RLA;为扫描下为扫描下1行做准备行做准备MOVR2,AAJMPKEY0;开始扫描下开始扫描下1列列KEYS1:MOV P1,#0F0H;判键闭合子程序判键闭合子程序MOVA,P1CPLAANLA,#0F0HRETD10MS:MOV R7,#14H;10ms延时子程序延时子程序DLY: MOVR6,#0F8HDLY1:DJNZR6,DLY1DJNZR7,DLYRET矩阵式键盘与单片机接口 Copyright http:/www.myvtc.edu.cn 2006二、定时中断扫描方式定时中断扫描方式 该方式利用定该方式利用定时器时器1010msms产生一次产生一次中断,设置两个标中断,设置两个标志(志(FLAG1FLAG1、FLAG2FLAG2),),FLAG1FLAG1用于去抖动标志,用于去抖动标志,FLAG2FLAG2用于键处理用于键处理标志。标志。FLAG1=1FLAG1=0,FLAG2=0有键闭合吗?开 始FLAG1=1吗?FLAG2=1吗?逐列逐行扫描得键值,FLAG2=1返 回YYYNNN图5.9 定时键盘扫描程序框图矩阵式键盘与单片机接口 Copyright http:/www.myvtc.edu.cn 2006程序清单程序清单: :FLAG1 BIT20H.0;定义抖动标志定义抖动标志FLAG2 BIT20H.1;定义处理标志定义处理标志KEYVEQU30H;定义键值单元定义键值单元ORG0000HAJMPMAINORG000BHAJMPINTT0MAIN:MOVTMOD,#01H;T0为方式为方式1,定时,定时10msMOVTL0,#0F0HMOVTH0,#0D8HMOVIE,#82HSETBTR0HERE:SJMPHERE;主程序踏步主程序踏步矩阵式键盘与单片机接口 Copyright http:/www.myvtc.edu.cn 2006INTT0: MOVTL0,#0F0H;中断服务,重新给定时器赋初值中断服务,重新给定时器赋初值MOVTH0,#0D8HACALL KEYS1;判断键是否按下判断键是否按下JNZKB1;有键按下则转至有键按下则转至KB1CLRFLAG1;清除抖动标志清除抖动标志CLRFLAG2;清除处理标志清除处理标志AJMPKB2;中断返回中断返回KB1:JBFLAG1,KB3;判抖动标志是否有效判抖动标志是否有效SETBFLAG1;无效则设置成有效无效则设置成有效AJMPKB2;返回返回KB3:JBFLAG2,KB2MOVR2,#0FEH;送首列扫描字送首列扫描字MOVR4,#00H;送首列号送首列号KEY0: MOVA,R2MOVP1,AMOVA,P1;扫描字从扫描字从P1口送出口送出JBACC.4,LINE1;第第1行无键闭合,转第行无键闭合,转第2行行MOVA,#00H;第第1行首键号送行首键号送AAJMPKPV;转键值计算程序转键值计算程序矩阵式键盘与单片机接口 Copyright http:/www.myvtc.edu.cn 2006LINE1:JBACC.5,LINE2;第第2行无键闭合,转第行无键闭合,转第3行行MOVA,#04H;第第2行首键号送行首键号送AAJMPKPV;转键值计算程序转键值计算程序LINE2:JBACC.6,LINE3;第第3行无键闭合,转第行无键闭合,转第4行行MOVA,#08H;第第3行首键号送行首键号送AAJMPKPV;转键值计算程序转键值计算程序LINE3:JBACC.7,NEXT;第第4行无键闭合,转下行无键闭合,转下1列列MOVA,#0CH;第第4行首键号送行首键号送AKPV:ADDA,R4;计算键值计算键值MOVKEYV,A;存放键值存放键值SETBFLAG2;设置处理标志设置处理标志AJMPKB2NEXT: INCR4;列号加列号加1MOVA,R2CJNEA,#0F7H,KB2 ;判断判断4行是否都已扫描完,完则返回行是否都已扫描完,完则返回RLA;为扫描下为扫描下1行做准备行做准备MOVR2,AAJMPKEY0;开始扫描下开始扫描下1列列KB2:RETIEND矩阵式键盘与单片机接口 Copyright http:/www.myvtc.edu.cn 2006扩展单片机输入键的另一种方法扫描原理: 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.2p1.1p1.0上例中上例中8根口线只能扩展根口线只能扩展16个按键,现介绍另一种方法:同样用个按键,现介绍另一种方法:同样用8根口线,根口线,可使按键增加到可使按键增加到28个,最多到个,最多到36个。个。 Copyright http:/www.myvtc.edu.cn 2006begin初始化扫描值送P1读P1送A奇偶位=1?A送B暂存取抖动延时读P1送AA=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 ;延时取抖延时取抖 mov a,P1 ;再读端口数据至再读端口数据至A cjne a,b,main2 ;键值是否与第一次相等键值是否与第一次相等 ajmp look1 ;相等,确实有键按下相等,确实有键按下 main2: mov a,r5 ;当前扫描值送当前扫描值送A rl a ;左移一位左移一位 mov P1,a ;送回扫描值寄存器送回扫描值寄存器 ajmp main1 ;转主程序入口转主程序入口 程序清单yNyN Copyright http:/www.myvtc.edu.cn 2006 look1: cjne a,#11111100b,look2 lcall Q1 ;1键按下,转键按下,转Q1处理处理 ajmp main2 ; . look2: cjne a,#11111010b,look3 lcall Q2 ;2键按下,转键按下,转Q2处理处理 ajmp main2look3: ;. look26: cjne a,#10011111b,look27 lcall Q26 ;26键按下,转键按下,转Q26处理处理 ajmp main2look27: cjne a,#01011111b,look28 lcall Q27 ;27键按下,转键按下,转Q27处理处理 ajmp main2look28:程序清单 Copyright http:/www.myvtc.edu.cn 2006cjne a,#10011111b,look29 lcall Q28 ;28键按下,转键按下,转Q28处理处理 ajmp main2look29: ajmp main2 delay: mov r6,#1fh ;延时处理延时处理 delay1: mov r7,#1fh djnz r7,$ djnz r6,delay1 retend 程序清单
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号