s5-4键盘管理组织与程序设计.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《s5-4键盘管理组织与程序设计.ppt》由会员分享,可在线阅读,更多相关《s5-4键盘管理组织与程序设计.ppt(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、键盘管理与程序设计,按键的分类,按结构和使用方法的不同,可将按键分为两大类:独立按键和矩阵键盘。,目 录,独立按键的常用接法,80C51单片机的两种常见的独立按键接法:,I/O口为开漏结构时,需外接上拉电阻,如51的P0口,I/O内部自带弱上拉电阻时,可直接相连,如51的P1、P2、P3口,未按下时 为高电平,刚释放时 出现抖动,刚按下时 出现抖动,按下稳定 后为低电平,实际效果,刚释放时 出现抖动,按键的“抖动”现象,按键的结构:和电路图中的符号极为相似,它是靠镀银的铜合金簧片在按键柄的挤压下接触而导通,松开后簧片恢复原状而脱离接触断开。,理想效果,按键的抖动:按键在人手指按压/释放簧片的瞬
2、间,因接触不良而产生的反复跳动现象。,“抖动”的脉冲宽度一般在几十到几百微秒,也可能达到毫秒级,若加在运行速度很快的数字电路中将会产生很大的影响。比如将发生“抖动”现象的按键作为数字电路的时钟输入,则每按一次键都会产生一串极不稳定的脉冲。,按键的“抖动”测试原理,编程思路:用按键模拟计数输入信号,用4位LED数码管显示计数值。 实验现象:在理想效果下,每按一次键,I/O口仅检测到1次高/低电平转换,计数加1;在实际效果中,由于“抖动”存在,每按一次键, I/O口检测到多次电平转换,计数好几次。,理想效果:,实际效果:,按键的“抖动”测试程序,存放4位计数值,0 x7A,0 x7B,地址 数据,
3、存放将计数值转换成数码管显示的字符码,ORG 0000H Start:MOV0 x7A,#0 x00;计数器高2位寄存器0 x7A清0 MOV0 x7B,#0 x00;计数器低2位寄存器0 x7B清0 LD_Data:MOVR0,#0 x7C;取显示缓冲区首地址到指针R0 MOVA,0 x7A;取计数器高2位数据 ACALL Split_Display_Byte;将数据字符送显示缓冲区前2个单元 MOVA,0 x7B;取计数器低2位数据 ACALL Split_Display_Byte;将数据字符送显示缓冲区后2个单元,0 x00,0 x00,高4位转换的字符码,低4位转换的字符码,0 xC0
4、,0 xC0,0 xC0,0 xC0,Display_Loop: ACALLScan_Display_Value;调用显示扫描子程序 JBP3.4, Display_Loop ;P3.4是否为0?键未按下,转Display_Loop MOV A, #0 x01 ;A取加数1 ADDA, 0 x7B;计数器+1 DAA;10进制修正指令 MOV 0 x7B,A;回存低2位的运算结果到0 x7B CLRA ;清0累加器A ADDC A,0 x7A;带进位加法加计数器高2位数据 DAA MOV0 x7A,A;回存高2位的运算结果到0 x7A JNBP3.4, $;检查按键是否松开,P3.4=1 本地
5、循环 AJMP LD_Data;按键松开,转LD_Data,数码管显示:,0 x01,按键的“抖动”测试程序流程图,Y,启动延时,停止延时,消除“抖动”的方法,消除“抖动”的方法:硬件消抖和软件消抖两大类。 常见的硬件消抖方法是:低通滤波施密特整形以及RS触发器,而软件消抖方法就是插入适当的延时。,软件消抖: 在按键按下的瞬间启动定时器开始延时,延时td时间后再判断按键是否仍然按下,若仍按下,则本次按键有效;否则本次按键无效。,思考题: 如何增加延时消除“抖动”,请尝试修改前面的程序。 如果认真观察实验,一定会发现前面的程序有一个小小的不足,就是在按键按下的瞬间显示器会熄灭,请分析原因。,目
6、录,矩阵键盘工作原理,行 线,列 线,按键的两端分别接在行线和列线上,矩阵键盘:用尽可能少的I/O口去管理较多的按键。 最大的优点是组合灵活,假如有16个I/O可用作键盘电路,可以将它接成610、511或88等许多种接法。当然,使用效率最高的是88的接法,最多可以接64个按键。 矩阵连接法要区分和判断按键动作的方法比较复杂,所以这种接法一般只用在计算机技术中。,目 录,逐行扫描实验电路,TinyView的2 4 矩阵键盘,行 线,列 线,I/O口复用,TinyView的2 4 矩阵键盘,行 线,列 线,I/O口复用:将同一个(或组)I/O口用于2种不同作用的2个器件上。 能够复用的原因:因为计
7、算机是一种“串行”执行程序的机器,是一条接一条的执行指令,而不是全部指令一起上。利用这种在时间上的可区分性使其在不同的时间管理不同的部件。,这种复用是有条件的,对于需要保持确定状态的控制口(如控制一个继电器开关的端口)是没办法复用的。,逐行逐列扫描法,逐行扫描键盘的方法 选择KR1和KR2为输入,它们的常态是电平“1”。当没有按键按下时,KR1和KR2保持常态。当KY1按下时,KR1在KC1输出“0”电平时得到“0”信号,而KR2在不受影响仍然保持常态。,2 4 矩阵键盘,行 线,列 线,利用这种必须配合KC1KC4的输出情况才能使KR1或KR2得到“0”信号的特点,人们发明出键盘的逐行扫描法
8、。 即每次只有一根列线输出“0”,然后逐行扫描读入行信号,通过行信号来判断键盘所有按键的状态。,1,1 1 1 1,0 1 1 1,1,0,逐列扫描键盘的方法:把行和列的输入输出颠倒,其原理和操作方法与逐行扫描键盘的方法一致。 逐个扫描键盘的方法:,逐行扫描读键子程序代码,Scan_Key:MOV P1, #0 xFF;关闭所有段选,阻止扫描键盘对显示的影响 MOV R6, #0 x04;设定键盘计数器为4,即循环4次 MOV R5, #0 xFB 取第一位扫描控制数据 Scan_KLP:MOV P3, R5;送位选数据到位选口 SETB P3.6;设置采样口P3.6进入采样状态 SETB P
9、3.7;设置采样口P3.7进入采样状态 JNBP3.6, Scan_KBK1;检查KR1为0否,是,转Scan_KBK1 JNBP3.7, Scan_KBK2 ;检查KR2为0否,是,转Scan_KBK2 MOV A, R5;位选暂存器到A RLA;A循环左移使下一只位选输出0电平 MOV R5, A;A返存回位选暂存器 DJNZR6, Scan_KLP;键盘计数器减1,非0,返回Scan_KLP Scan_KBK1:MOVA, R6;A取位选计数器数值 RET Scan_KBK2:MOVA, R6;A取位选计数器数值 ADDA, #4 RET,P1:数码管段选控制端,因数码管位选与键盘列控制
10、线复用,故在此先关闭所有段选,阻止扫描键盘对显示的影响。 R6:键盘计数器,4:4列,单次逐行扫描到所有按键循环的次数。 R5:位选/列线控制数据,控制每次只有一根列线为“0”。,实现功能:单次逐行扫描8个按键。当有键按下时,程序立即跳出循环,输出参数A不为0;当无键按下时,R6被减为0并退出循环,输出参数A=0。,按键扫描顺序:先判断KY1是否按下?如果是,R6为4传给A并退出子程序;如果不是,接着判断KY5是否按下;如果是,R6为4传给A,A加4后退出子程序;如果不是,则接着判断KY2是否按下依此类推,KY1KY5 KY2 KY6 KY3 KY7 KY4 KY8 输出参数:无键按下,A=0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- s5 键盘 管理 组织 程序设计
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内