




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、按键控制键盘检测原理与应用一、任务目标 :认知目标1、掌握按键分类及工作原理2、掌握 IF 条件选择结构和使用方法3、掌握循环结构和使用原理4、掌握独立按键子函数的编写原理及方法1、 独立键盘 在简单的单片机应用系统中, 往往只需要几个功能键就能满足要求, 此时, 可采用独立 式按键结构。独立式按键是直接用 I/O 口线构成的单个按键电路,其特点是每个按键单独占用一根 I/O 口线,每个按键的工作不会影响其它 I/O 口线的状态。独立式按键的典型应用如图1.2.1所示。独立式按键示意图 独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根 I/O 口线,因此, 在按键较多时, I/O
2、口线浪费较大,不宜采用。程序开始,检测按键是否被按下,若按下,则移动机器人启动,未被按下,继续检测。 这里将程序分成三个部分,分别是延时子函数、按键子函数、主函数。延时子函数,通过参数 t 设置延时时间;按键模块子函数需用到延时函数,对按键进行 消抖;主函数主要调用按键检测程序,实现对移动机器人的控制。程序流程图如图 1.2.2 所 示开始延时消抖状态取反程序流程图程序示例:在编写程序开始的部分,将系统头文件“ STC89C52RC.H ”包含进来,对常用的变量类 型进行宏定义, 规划各函数和变量, 对变量进行定义和初始化, 对自定义子函数进行声明并 添加相应标注,程序开始部分如下sbit I
3、N1=P10;sbit IN2=P11;Void key() ;编写主函数,在主函数中就是调用按键检测函数。Void main()key();编写 key() 按键检测函数, 按键按下, 输出低电平, 通过 if 语句检测低电平, 延时 10ms 后,再次检测,若检测为高电平,则表示为机械抖动,若检测到低电平表示按键按下。Void key()if(IN1=0)delay_ms(10);if(IN1=0) while(IN1=0);IN2=IN2 ;在上面的程序中,就只有一个检查按键扫描的函数key() ,key()函数是检查有没有按键按下编写的。当有按键下的时候 P2 口取反。2、 矩阵键盘(
4、1)矩阵连接式键盘在单片机系统中键盘中按钮数量较多时, 为了减少 I/O 口的占用, 常常将按钮排列成矩阵 形式,如下图所示:矩阵键盘形式 矩阵按键实物图 矩阵连接式键盘键按矩阵排列 ,各键处于矩阵行 /列的结点处 ,CPU 通过对连在行 (列)的 I/O 线送已知电平的信号 ,然后读取列 (行)线的状态信息。 逐线扫描 ,得出键码。 其特点是 键多时占用 I/O 口线少 , 硬件资源利用合理,但判断按键速度慢。多用于设置数字键,适用 于键数多的场合。(2)按键识别方法 扫描法第 1 步,识别键盘有无键按下;第 2 步,如有键被按下,识别出具体的键位。其工作过 程为先把所有列线均置为 0,然后
5、检查各行线电平是否都为高,如果不全为高,说明有键按 下,否则无键被按下。再采用逐列扫描法,在某一时刻只让 1 条列线处于低电平, 其余所有 列线处于高电平,识别出按键具体位置。综上所述, 扫描法的思想是,先把某一列置为低电平,其余各列置为高电平,检查各行 线电平的变化,如果某行线电平为低电平,则可确定此行此列交叉点处的按键被按下。 线反转法线反转法的具体步骤为让行线编程为输入线, 列线编程为输出线, 并使输出线输出为全 低电平, 则行线中电平由高变低的所在行为按键所在行。 再把行线编程为输出线, 列线编程 为输入线,并使输出线输出为全低电平,则列线中电平由高变低所在列为按键所在列。程序编写 矩
6、阵式键盘最主要的是按键识别, 按键识别是采用线翻转的方法。 线翻转法是先让 P2= 0xf0; 当有按键按下时 P2口的状态就会改变不在是 0xf0,当按键按下时, P2 的状态改变了, 此时 存储当前 P2 口的状态 1,然后让 P2=0xf0 因为程序执行时间很短,此时按键还没抬起来, 由于按键按下的原因 P2 状态不再是 0xf0 ,存储此时 P2 口的状态 2,把状态 1 与状态 2 的值 相或,因为每个按键按下的值都是不一样的,根据按键返回的值给数码管赋不同的断码值, 从而达到显示 0F 的目的。利用线反转法编写程序流程如图 1.2.4 所示:主程序键盘扫描程序键值显示函数开始开始开
7、始系统初始化键盘扫描程序显示键值P2= 0XF0否有键按下 ?是延时消抖否是返回(状态 1|状态 2)有键按下 ?Case 0xee;P0口送 0 段码switch按键返回值Case 0xed;P0口送 1 段码Case 0x77;P0口送 F 段码Break结束返回 0xff程序流程图程序示例编写 keyscan 函数注释,定义 keyscan 函数并编写框架。 keyscan 函数主要负责扫描矩 阵键盘是否被按下,并且根据按下的按键返回不同的值,所以应该为无参、有返回值函数。 因为有按键按下时返回值是将两次 P2=0xf0 和 P2=0x0f 的结果相或, 无按键按下时返回值为 0xff
8、,所以将函数返回值定义为 uchar 型即可。uchar keyscan(void)uchar cord_h=0;uchar cord_l=0;P2=0xf0;if(P2!=0xf0) Delay_ms(10);if(P2!=0xf0)cord_h=P2;P2=0x0f;cord_l=P2;return(cord_h|cord_l); return(0xff);编写主函数,系统从主函数开始执行,首先点亮数码管,将数字“0”的段码赋值给P0 口,然后进入 while 无限循环,在 while 循环里,调用 keyscan 函数,并将返回值赋值 给变量 key ,同时要定义变量可以。void ma
9、in()uchar key;P0=0XC0;while(1) key=keyscan(); switch(key) case 0xee:P0=LED_Val0;break; case 0xed:P0=LED_Val1;break; case 0xeb:P0=LED_Val2;break; case 0xe7:P0=LED_Val3;break; case 0xde:P0=LED_Val4;break; case 0xdd:P0=LED_Val5;break; case 0xdb:P0=LED_Val6;break; case 0xd7:P0=LED_Val7;break; case 0xbe:
10、P0=LED_Val8;break; case 0xbd:P0=LED_Val9;break; case 0xbb:P0=LED_Val10;break; case 0xb7:P0=LED_Val11;break; case 0x7e:P0=LED_Val12;break; case 0x7d:P0=LED_Val13;break; case 0x7b:P0=LED_Val14;break; case 0x77:P0=LED_Val15;break; 1、 实物调试1)、电路连接电路连接2)、上电调试上电测试五、背景知识:在控制系统中, 通常需利用按键进行系统参数的设置。 按键时单片机应用系统
11、中常用的 输入设备之一,线性键盘分为独立按键、矩阵键盘两种。键盘是由一组规则排列的按键组成, 一个按键实际上是一个开关元件, 也就是说键盘是 一组规则排列的开关。 键盘的工作方式有 3 种,即程序控制扫描、 定时扫描和中断扫描方式。通常,按键的开关为机械弹性触点开关,它是利用机械触点接触和分离实现电路的通、 断。由于机械触点的弹性作用, 加上人们按键时的力度、 方向的不同, 按键开关从按下到接MCU 软件执行的速度很快,非常可触稳定要经过数毫秒的弹跳抖动, 既在按下的几 十毫秒时间里会连续产生多个脉冲。释放按 键 时,电路也不会一下断开, 同样会产生抖动。 这 两次抖动的时间分别为 10.20
12、ms 左右,而按键 的稳定闭合期通常大于 0.3.0.5 秒。因此,为 了确保 MCU 对一次按键动作只确认一次,在确 认按键是否闭合时,必须要进行消抖处理。否则,由于 能将抖动产生的多个脉冲误认为多次的按键。消除按键的抖动既可采用硬件方法, 也可采用软件的方法。 使用硬件消抖的方式, 需要 在按键连接的硬件设计上增加硬件消抖电路,如采用 R.S 触发器或 RC 积分电路等。采用 硬件消抖方式增加了系统的成本, 而利用软件方式消抖则是比较经济的做法, 但增加了软件 设计的复杂性。软件方式消抖的基本原理是在软件中对按键进行两次测试确认, 既在第一次检测到按键 按下后, 间隔 10ms 左右再次检
13、测该按键是否按下, 只有在两次都测到按键按下时才最终确 认有键按下,从而消除了抖动的影响。在按键接口软件中,除了要考虑按键消抖外,一般还 要判别按键的释放,只有检测到按键释放以后,才能确定为一次完整的按键动作完成。按键识别方法分为三种 , 分别是程序控制扫描方式、定时扫描方式和中断扫描方式。程序控制扫描方式 程序控制扫描方式是指单片机在空闲时,才调用键盘扫描子程序,并反复地扫描键盘, 直到用户从键盘上输入命令或数据,而在执行键入命令或处理键入数据过程中,CPU将不再响应键入要求,直到 CPU重新扫描键盘为止。过程如下:判断有无键按下;延时后判断是否确实有键按下。如果有,确认有键按下,如果没有, 那么确认为键抖 动;判断是哪个键被按下(键扫描获得闭合键的行、列值) ; 等待按键被释放。 如果没有释放, 继续等待;如果释放,转到相应的处理程序进行处 理。定时扫描方式 定时扫描方式就是每隔一定时间对键盘扫描一次, 它利用单片机内部的定时器产生一定 的时间的定时,当定时时间到就产生定时器溢出中断,CPU响应中断后对键盘进行扫描,并在有键按下时识别出该键执行响应的键功能程序。 中断扫描方式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 乐器行装修预定金合同
- 健身房装修租赁协议模板
- 电力工程服务居间合同范例
- 航海心理学课件
- 油漆店面的安全
- 社区组织安全教育
- 2024沈阳职业技术学院附属中等职业学校工作人员招聘考试及答案
- 2024洛阳绿业信息中等专业学校工作人员招聘考试及答案
- 2024甘南藏族自治州中等职业学校工作人员招聘考试及答案
- 2024沧县职业技术教育中心工作人员招聘考试及答案
- 中外航海文化知到课后答案智慧树章节测试答案2025年春中国人民解放军海军大连舰艇学院
- 见证取样送检计划方案
- 2025年华润燃气投资中国有限公司招聘笔试参考题库含答案解析
- 妊娠剧吐诊断以及临床处理专家共识
- 第6章工厂布局设计课件
- 叉车定期检验研究分析报告
- 雷达生命探测仪培训-PPT课件
- 光缆和管道的施工规范标准
- (高清版)建筑工程裂缝防治技术规程JGJ_T 317-2014
- 陕西沉积钒矿勘查规范(1)
- 医院安全生产大检查自查记录文本表
评论
0/150
提交评论