版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、键盘工作原理键盘工作原理1. 按键输入的特点按键输入的特点 键盘实质上是一组按键开关的组合。通常使用的是触键盘实质上是一组按键开关的组合。通常使用的是触点式的机械弹性开关。利用机械触点的通断,实现点式的机械弹性开关。利用机械触点的通断,实现按下按下时开关导通,释放时开关断开时开关导通,释放时开关断开的功能。的功能。 按键触点的一端和单片机的按键触点的一端和单片机的I/OI/O端口引脚连接,另一端口引脚连接,另一端与电压信号相连,触点的通断即可引起端口引脚上的端与电压信号相连,触点的通断即可引起端口引脚上的电压变化,单片机通过程序读入电压变化,单片机通过程序读入I/OI/O端口引脚电平信号端口引
2、脚电平信号便可判断按键的状态。如下图所示。便可判断按键的状态。如下图所示。当按键未按下压时,当按键未按下压时,Px.nPx.n端口为高电平端口为高电平; ;按压按键后为按压按键后为低电平。低电平。按键在闭合和断开时,触点会存在抖动现象:按键在闭合和断开时,触点会存在抖动现象: 图为键闭合时列线电压波形。键闭合和断开过程中存在抖图为键闭合时列线电压波形。键闭合和断开过程中存在抖动期动期( (呈现一串负脉冲呈现一串负脉冲) ),抖动时间长短与开关的机械特性有关,抖动时间长短与开关的机械特性有关,一般为一般为5 51010msms之间之间;稳定闭合期由操作员的按键动作所确定,;稳定闭合期由操作员的按
3、键动作所确定,一般为数百毫秒到几秒。为了保证一般为数百毫秒到几秒。为了保证CPUCPU对键的闭合做一次处理对键的闭合做一次处理,必须去除抖动必须去除抖动,在键的稳定闭合或断开时,读键的状态。,在键的稳定闭合或断开时,读键的状态。软件消抖方法:当判别到键盘上有键闭合后,延时一段时间再软件消抖方法:当判别到键盘上有键闭合后,延时一段时间再 判别键盘的状态,若仍有键闭合,则认为键盘判别键盘的状态,若仍有键闭合,则认为键盘 上有一个键处于稳定的闭合状态,否则认为键上有一个键处于稳定的闭合状态,否则认为键 抖动。抖动。 键盘有两种结构:独立式按键和矩阵式按键。键盘有两种结构:独立式按键和矩阵式按键。 1
4、.1.独立式按键独立式按键 独立式键盘中每个按键都单独连接到单片机的一个独立式键盘中每个按键都单独连接到单片机的一个I/OI/O端口引脚上。端口引脚上。特点是电路简单,但占用特点是电路简单,但占用I/OI/O口线较多。口线较多。例:按下按键,对应的例:按下按键,对应的LED灯亮灯亮#includevoid delay(unsigned int z)unsigned int x,y;for(x=z;x0;x-) for(y=125;y0;y-);void main() unsigned char key; P2=0 x00; P0=0 x01; while(1) key=P0; if(key!=
5、0 x01) delay(10); if(key!=0 x01) P2=key; 实例实例 独立按键识别独立按键识别【要求要求】采用独立按键方式实现下述功能:开机时采用独立按键方式实现下述功能:开机时LEDLED全熄,全熄,然后根据按键动作使相应灯亮,并将亮灯保持到按压其它键然后根据按键动作使相应灯亮,并将亮灯保持到按压其它键时为止。时为止。做输入,做输入,先写先写1 1 按键的闭合电平为按键的闭合电平为0, 0, 但但LEDLED的驱动电平为的驱动电平为1 1,故不能直接将,故不能直接将P0P0口的状态送到口的状态送到P2P2口,而应使口,而应使其先取反再送出;其先取反再送出; 使按键按下使
6、按键按下LEDLED点亮,松开点亮,松开时保持不变。时保持不变。【分析分析】#includevoid delay(unsigned int z)unsigned int x,y;for(x=z;x0;x-) for(y=125;y0;y-);void main() unsigned char key; P2=0 x00; P0=0 x0f; while(1) key=P0; if(key!=0 x0f) delay(10); if(key!=0 x0f) P2=key; 实例实例 键控流水灯键控流水灯 【要求要求】 K1 K1为为“启动键启动键”,按压,按压K1K1可产生可产生“自下向上自下向
7、上” 的流水灯运动的流水灯运动; ; K2 K2 为为“方向键方向键”,按压,按压K2K2可产生可产生“自下向上自下向上”运动。运动。启动启动停止停止run(=1)(=0)dir(=1)(=0)获取按下键值(键值函数)流程获取按下键值(键值函数)流程键值:键值:按压按压K1K1xxxx xx10 xxxx xx10(0 x020 x02)按压按压K2K2xxxx xx01xxxx xx01(0 x010 x01)无按键无按键0000 xx110000 xx11(0 x030 x03)按键动作判断按键动作判断(P0 & 0 x03P0 & 0 x03)是否等于)是否等于 0 x0
8、30 x03若是,则无按键动作,反之则有按键动作若是,则无按键动作,反之则有按键动作则由得到的键值对应确定则由得到的键值对应确定dun、dir的值,用的值,用switch语句实现。语句实现。 temp=P0&0 x03;switch(temp)case 0 x02:run=1; dir=1; break;case 0 x01:dir=0;break;亮灯亮灯P2P2输出输出:xxxx 0001xxxx 0001xxxx 0010 xxxx 0010 xxxx 0100 xxxx 0100 xxxx 1000 xxxx 1000LEDLED循环流程循环流程LEDLED状态码数组状态码数组
9、 = 0 x01= 0 x01,0 x020 x02,0 x040 x04,0 x080 x08分析分析搞清全部逻辑关系搞清全部逻辑关系总体关系(主函数)流程总体关系(主函数)流程( (键值函数键值函数) ) 参考程序:参考程序: #includeunsigned char led=0 x01,0 x02,0 x04,0 x08; /从上到下的流水灯bit run,dir;unsigned char temp,i;void delay(unsigned int z)unsigned int x,y;for(x=z;x0;x-) for(y=125;y0;y-); void main() whi
10、le(1) temp=P0&0 x03; switch(temp) case 0 x02: run=1;dir=1; /启动,自上往下 break; case 0 x01:dir=0; /自下往上 break; if(run=1) if(dir=1) for(i=0;i=1;i-) P2=ledi-1; delay(200); else P2=0;实例实例 采用共阴极的数码管采用共阴极的数码管实现功能要求:当按键按下时显示实现功能要求:当按键按下时显示“ “ L2L2”,松开时显示,松开时显示“H3H3”独立按键独立按键+ +数码管综合数码管综合算出算出L2H3L2H3的段码分别为:的
11、段码分别为:0 x38,0 x5b,0 x76,0 x4f0 x38,0 x5b,0 x76,0 x4f位选信号构成位码:位选信号构成位码:0 xfe,0 xfd0 xfe,0 xfd参考程序参考程序 #include#define uint unsigned int#define uchar unsigned charuchar duan=0 x38,0 x5b,0 x76,0 x4f; /共阴L2H3uchar wei=0 xfe,0 xfd;sbit button=P16;void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=125;y0;y-);
12、void main() uchar i; while(1) if(button=0) delay(10); if(button=0) for(i=0;i2;i+)P3=weii;P2=duani;delay(10);elsefor(i=0;i2;i+)P3=weii; P2=duani+2;delay(10); 运行运行效果效果2 2、 行列式键盘原理与编程行列式键盘原理与编程 独立式键盘的电路简单,易于编程,但占用的独立式键盘的电路简单,易于编程,但占用的IOIO口线较多,口线较多,当需要较多按键时可能产生当需要较多按键时可能产生IOIO资源紧张问题。资源紧张问题。独立式键盘独立式键盘 P1
13、.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 +5V 10k 10k 10k 10k 89S51 当键盘上没有键闭合时,所有的行线和列线断开,列线都呈当键盘上没有键闭合时,所有的行线和列线断开,列线都呈高电平。当键盘上某一个键闭合时,则该键所对应的列线与行线高电平。当键盘上某一个键闭合时,则该键所对应的列线与行线短路。此时列线的电平由相应的行线的电位所决定。短路。此时列线的电平由相应的行线的电位所决定。行列式键盘行列式键盘将将IOIO口分为行线和列线,按键跨接在行线口分为行线和列线,按键跨接在行线和列线上,列线通过上拉电阻接正电源。和列线上,列线通过上拉电阻接正电
14、源。 和行线连接的单片机和行线连接的单片机端口,作为端口,作为输出输出和列线连接的单片机端和列线连接的单片机端口,作为口,作为输入输入键盘扫描原理键盘扫描原理(以(以P3P3口接口接4 44 4键盘为例)键盘为例)判断是否有键压下判断是否有键压下 写写P3P3端口端口0 xf00 xf0(行线电平(行线电平=0=0,列线电平,列线电平=1=1) 读读P3P3端口:若端口:若P3 = 0 xf0P3 = 0 xf0无按键压下无按键压下, ,不必后续判断不必后续判断; ; 若若P3 P3 0 xf0 0 xf0 有键压下有键压下键盘扫描原理键盘扫描原理(以(以P3P3口接口接4 44 4键盘为例)
15、键盘为例)去除键的机械抖动去除键的机械抖动 其方法为:当判别到键盘上有键闭合后,延时一段时其方法为:当判别到键盘上有键闭合后,延时一段时间再判别键盘的状态,若仍有键闭合,则认为键盘上有一间再判别键盘的状态,若仍有键闭合,则认为键盘上有一个键处于稳定的闭合状态,否则认为键抖动。个键处于稳定的闭合状态,否则认为键抖动。判别闭合键的键值判别闭合键的键值 其方法为:对键盘的行线进行扫描,其方法为:对键盘的行线进行扫描,P3P3口依次循环输口依次循环输出出0 xfe0 xfe、0 xfd0 xfd、0 xfb0 xfb和和0 xf70 xf7,相应地读,相应地读P3P3口,若高口,若高4 4位位P3.7
16、P3.7P3.4P3.4全为全为“1 1”,则说明该行上没有键闭合;否则,则说明该行上没有键闭合;否则,这一行上有键闭合,而且就是行线为这一行上有键闭合,而且就是行线为0 0,列线为,列线为0 0的交叉键。的交叉键。高高4 4位和低四位合并即得到键模。位和低四位合并即得到键模。键模键模按键压下时形成的电平编码值按键压下时形成的电平编码值 键值键值按键的人为定义值按键的人为定义值整个整个4x44x4键盘的键模:键盘的键模:0 xee0 xee、0 xde0 xde、0 xbe0 xbe、0 x7e0 x7e0 xed0 xed、0 xdd0 xdd、0 xbd0 xbd、0 x7d0 x7d0
17、xeb0 xeb、0 xdb0 xdb、0 xbb0 xbb、0 x7b0 x7b0 xe70 xe7、0 xd70 xd7、0 xb70 xb7、0 x770 x77第一行的键模:第一行的键模:1110111011101110、1101111011011110、1011111010111110、0111111001111110 形成压下键的键模形成压下键的键模将各键的键模依次存放在一个数组中,其顺序号就是键值。将各键的键模依次存放在一个数组中,其顺序号就是键值。 利用循环变量利用循环变量i i控制控制比对过程比对过程,两者相等时的,两者相等时的i i就是闭合键的键值就是闭合键的键值。行列式键
18、盘的特点行列式键盘的特点:占用:占用IOIO口线少,但软件过程复杂。口线少,但软件过程复杂。Unsigned char key_val=0 xee,0 xde,0 xbe,0 x7e,0 xed,0 xdd,0 xbd,0 x7d, 0 xeb,0 xdb,0 xbb,0 x7b,0 xe7,0 xd7,0 xb7,0 x77for(i=0;i16;i+)if(key_vali=P3)return i;实例实例 行列式键盘行列式键盘 要求按下任意按键后,数码管上显示该键的键值(要求按下任意按键后,数码管上显示该键的键值(0 0F F) 参考程序参考程序 #includeunsigned char duan=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f, 0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;unsigned char key_val=0 xee,0 xde,0 xbe,0 x7e,0 xed,0 xdd,0 xbd,0 x7d,0 xeb, 0 xdb,0 xbb,0 x7b,0 xe7,0 xd7,0 xb7,0 x77;unsi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年足疗店区域代理协议:拓展市场3篇
- 2024年绿色建筑项目代建及节能减排合同3篇
- 2024年版旅游度假代理销售合同范本(旅游度假市场)3篇
- 2024年物业租赁合同标的明细
- 2024年电线电缆购销协议书范本
- 二零二五年度先进制造业工厂承包管理合同范本3篇
- 2025年度水电设施维护保养合同协议书范本3篇
- 2025年学生违纪行为矫正服务协议3篇
- 二零二五年全自动咖啡机进出口贸易合同3篇
- 2025年度白糖现货电子交易平台技术服务合同3篇
- 消化内科交班本PDCA
- 【语文】广东省深圳市罗湖区翠竹小学四年级上册期末复习试卷(含答案)
- 环卫清扫保洁、垃圾清运及绿化服务投标方案(技术标 )
- 13-4管道(设备)冲洗消毒试验记录
- 农田临水临电施工方案范本
- 千字文毛笔楷书描红字帖-米字格A4版
- 重金属矿山生态治理与环境修复技术进展
- HR主题分享9-绘制学习地图
- 成长需要挫折演讲稿(20篇)
- 职工学历教育补贴申请书
- GB/T 42915-2023铜精矿及主要含铜物料鉴别规范
评论
0/150
提交评论