为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

单片机独立式按键、矩形按键的应用

2011-09-29 17页 ppt 729KB 61阅读

用户头像

is_603733

暂无简介

举报
单片机独立式按键、矩形按键的应用null第八章 常规按键的应用第八章 常规按键的应用硅谷芯微 技术贡献 网址:www.threeway.cc键盘的分类键盘的分类 键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用硬件编码器实现,并产生键编码号或键值的称为编码键盘,如BCD码键盘、ASCLL码键盘等;而靠软件来识别的称为非编码键盘;在单片机组成的测控系统及智能化仪器中,用的最多的是非编码键盘。 非编码键盘有分为:独立式非编码键盘和行列式非编码键盘(矩阵键盘)。无论是何种按键,其功能实现都是分为三个步骤: 8.1. ...
单片机独立式按键、矩形按键的应用
null第八章 常规按键的应用第八章 常规按键的应用硅谷芯微 技术贡献 网址:www.threeway.cc键盘的分类键盘的分类 键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用硬件编码器实现,并产生键编码号或键值的称为编码键盘,如BCD码键盘、ASCLL码键盘等;而靠软件来识别的称为非编码键盘;在单片机组成的测控系统及智能化仪器中,用的最多的是非编码键盘。 非编码键盘有分为:独立式非编码键盘和行列式非编码键盘(矩阵键盘)。无论是何种按键,其功能实现都是分为三个步骤: 8.1. 独立按键 8.1.1.独立按键原理8.1. 独立按键 8.1.1.独立按键原理 单片机中除了P0接口,其它I/O接口内部都有上拉电阻。上图所示P1.0-P1.2接了4个按键,当没有按下按键时对应的I/O接口为高电平。当按下按键时,对应管脚会变为低电平。因此只要检测到对应管脚是否为低电平就知道此按键是否被按下。 8.1.2.按键消抖8.1.2.按键消抖 当某个按键被按下,由于其触点的机械特性,会抖动约20mS,才会稳定下来,如图所示的波形。如果在此期间去检测,很可能产生误判,所以检测到有键被按下并延时20ms避开抖动期,然后才去检测是哪个被按下。另外手松开也有抖动,所以很有可能在刚才判断时,有按键,等延时20ms之后,就没有按键了。为了提高效率,应在延时20ms后再次判断一下,是否有键被按下。 扫描按键式独立按键 中断式独立按键 扫描按键式独立按键 中断式独立按键 扫描式独立按键,这种接法只是将每个按键连接在了I/O口上,在编写程序时只需要不断的扫描I/O口电平的变化就可以了,如果I/O口有电平变化,说明有按键按下,则此时只需要按按键判别的顺序进行判断,这种方法的缺点是,CPU要不断的扫描I/O的电平,占用CPU的时间,较为好的方法是上图所示的中断,在这种连接中,当有按键按下时,7408就会在P3.2口产生一个低电平,触发中断,所以此时,单片机不需要不断的扫描I/O口上是否有电平的变化,只需要在产生中断后进行按键处理就可以了,这种方案的缺点是要多占用一个单片机的中断,且要在硬件连接上较为复杂。 ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV P1,#0FFH MOV A,P1 CJNE A,#0FFH,L_PRESS LJMP MAIN L_PRESS: LCALL DELAY20MS ;消抖 MOV P1,#0FFH MOV A,P1 CJNE A,#0FFH,L_TUREPRESS LJMP MAIN L_TUREPRESS: CJNE A,#11111110B LCALL KEY0 ;KEY0服务程序 LJMP L_EXIT CJNE A,#11111101B LCALL KEY1 ;KEY1服务程序 LJMP L_EXIT ……….. CJNE A,#11111110B LCALL KEY7 ;KEY7服务程序 L_EXIT: LJMP MAIN ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV P1,#0FFH MOV A,P1 CJNE A,#0FFH,L_PRESS LJMP MAIN L_PRESS: LCALL DELAY20MS ;消抖 MOV P1,#0FFH MOV A,P1 CJNE A,#0FFH,L_TUREPRESS LJMP MAIN L_TUREPRESS: CJNE A,#11111110B LCALL KEY0 ;KEY0服务程序 LJMP L_EXIT CJNE A,#11111101B LCALL KEY1 ;KEY1服务程序 LJMP L_EXIT ……….. CJNE A,#11111110B LCALL KEY7 ;KEY7服务程序 L_EXIT: LJMP MAIN8.1.3.独立按键图与软件实现8.2 矩阵按键8.2 矩阵按键 8.2.1.矩阵按键的原理 在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。矩阵式结构的键盘显然比独立键盘要复杂一些。 8.2.2. 矩阵按键检测8.2.2. 矩阵按键检测 硬件电路如上图单片机的P1口用作键盘I/O口,键盘的行线接到P1口的低4位,键盘的列线接到P1口的高4位。4根行线和4根列线形成16个相交点。每个交点为一个按键,每个按键赋一个键值,从左到右从上到下依次为0-15。 检测当前是否有键被按下。检测的方法是P1.4-P1.7输出全“0”,P1.0-P1.3设置为1读取P1.0-P1.3的状态,若P1.0-P1.3为全“1”,则无键闭合,否则有键闭合。或者将列设为输入,行设为输出。 8.2.3.计算键值8.2.3.计算键值 若有键被按下,判断是哪一个键闭合。方法是对键盘的行线进行扫描。然后进行列线扫描。 在列输出行输入时(即列P1.4-P1.7全为0,行P1.0-P1.3全为1)读取P1.0-P1.3,若全为“1”,则示没有键闭合,否则有键闭合。由此得到闭合键的行值,然后行输出列输入时(即列P1.4-P1.7全为1,行P1.0-P1.3全为0)读取P1.4-P1.7,由此得到闭合键的列值。 最后可采用计算法或查表法将闭合键的行值和列值转换成所定义的键值。按照上面所赋的键值标示,键值= 行*4+列。如果键值标示有所改变那么此就要相应的发生改变。 计算行: 行全部输出高电平,列全部输出低电平,读回数据,如果P1.0-P1.3某行变为低电平就知道该行上面有按键。代码如左下:计算行: 行全部输出高电平,列全部输出低电平,读回数据,如果P1.0-P1.3某行变为低电平就知道该行上面有按键。代码如左下:计算列: 行全部输出低电平,列全部输出高电平,然后读回来判断。如果P1.4-P1.7某列变为低电平就知道该列上面有按键。代码如右下: 计算行 计算列键值计算:R键 = 4R2+R38.2.4.按键服务8.2.4.按键服务 根据上一步计算出来的键值,执行相应的服务程序,这个功能在此用两种方法实现试对比优缺点: 方法一:查询法(同独立按键) F_KeyService: CJNE R键, #0,L_1 MOV P2,#0C0H ;KEY0按键服务程序 RET L_1: CJNE R键, #1,L_2 MOV P2,#0F9H ;KEY1按键服务程序 RET ………...…… L_15: CJNE R键, #15,L_16 MOV P2,#08EH ;KEY1按键服务程序 L_16: RET方法二:查表法方法二:查表法 MOV DPTR,#T_KeyLable MOV A,R键 ADD A,R键 ;双字节查表,键值*2 MOV R2,A MOVC A,@A+DPTR MOV R3,A MOV A,R2 INC A MOVC A,@A+DPTR MOV DPL,A MOV DPH,R3 CLR A JMP @A+DPTR KEY00: MOV P2,#0C0H ;KEY0按键服务程序 LJMP L_Exit KEY01: MOV P2,#0F9H ; KEY2按键服务程序 LJMP L_Exit ;………………………… KEY15: MOV P2,#8EH ; KEY15按键服务程序 L_Exit: RET T_KeyLable: DW KEY00,KEY01,KEY02,KEY03 DW KEY04,KEY05,KEY06,KEY07 DW KEY08,KEY09,KEY10,KEY11 DW KEY12,KEY13,KEY14,KEY15 null代码分析: 以上两种方法,第一种思路清晰,效率低,比较直观,容易理解。第二种方法比较复杂,难点在于双字节表里面的数据为何值。前面我们了解到标号是不生成机器码的,也就是说自己没有地址,它代表的是别的地址,在这里表里面所写的标号代表的是标号相邻的下个语句生成的第一个机器码的地址。明白这个原理这种方法就不难理解了。对于查表法要重点掌握。 上面我们介绍了单个按键的检测,对于多个按键同时按下,也就是组合按键的检测方法和电脑键盘一样,(如ctrl+Alt+del)我们也可以做一个组合按键,当然,不是所有按键都去组合,这样不方便于单键的判断,上面学的4*4键盘,我们可以把最后一个按键(15号键)当做组合键的起始键,类似是电脑键盘的CTRL键。 这次扫描利用的是逐次扫描行的方法。一般按键的分析下面三个步骤:按键扫描,按键状态分析,按键功能处理,在这里不在对按键扫描做过多的介绍,判断有无按键和按键扫描方法不再做讲解,可参考矩阵按键。这里主要是对组合按键状态进行分析。 上面我们介绍了单个按键的检测,对于多个按键同时按下,也就是组合按键的检测方法和电脑键盘一样,(如ctrl+Alt+del)我们也可以做一个组合按键,当然,不是所有按键都去组合,这样不方便于单键的判断,上面学的4*4键盘,我们可以把最后一个按键(15号键)当做组合键的起始键,类似是电脑键盘的CTRL键。 这次扫描利用的是逐次扫描行的方法。一般按键的分析下面三个步骤:按键扫描,按键状态分析,按键功能处理,在这里不在对按键扫描做过多的介绍,判断有无按键和按键扫描方法不再做讲解,可参考矩阵按键。这里主要是对组合按键状态进行分析。8.3 组合按键 组合按键流程图如下:组合按键流程图如下:8.4 课后练习 8.4 课后练习 利用按键和单片机做一个可调的电子钟,4个按键(可 选择独立按键,也可选择矩阵按键)配合前面定时器所做的 时间表: 按键1:设置键,按一次时间停止,再按一次,时间继续一 秒加一。 按键2:切换键,按下此键,将会切换至时间的秒位,分 位,时位。 按键3:根据切换键所切换的具体位置,对该位进行加一。 按键4:根据切换键所切换的具体位置,对该位进行减一。 当无按键按下时电子钟每秒加一。只有当设置键按下时后面 三个按键才会有效。 谢谢大家谢谢大家 硅谷芯微 技术贡献
/
本文档为【单片机独立式按键、矩形按键的应用】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索