版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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
3、 in1=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、 矩阵键盘(1
4、)矩阵连接式键盘在单片机系统中键盘中按钮数量较多时,为了减少 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 所示:.主程序开始系 初始化 描程序 示 描程序 示函数开始开始p2= 0xf0s
7、witch否有 按下 ?按 返回 是延 消抖否有 按下 ?是case 0xee;case 0xed; p0口送 0p0口送 1存 当前 p2的状 1段 段 p2= 0x0fbreak存 当前 p2的状 2 束返回(状 1|状 2)返回 0xff.case 0x77;p0口送 f段 程序示例程序流程图编写 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 main()uchar
9、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:p0=led_val8;break;cas
10、e 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 种,即程序控制扫描、 定时扫描和中断扫描方式。通常,按键的开关为机械弹性触点开关,它是利用机械触点接触和分离实现电路的通、断。由于机械触点的弹性作用,加上人们按键时的力度、方向的不同, 按键开关从按下到接触稳定要经过数毫秒的弹跳抖动,既在按下的几十毫秒时间里会连续产生多个脉冲。释放按键时,电路也不会一下断开,同样会产生抖动。这两次抖动的时间分别为10.20ms左右,而按键的稳定闭合期通常大于0.3.0.5秒。因此,为了确保 mcu 对一次按键动作只确认一次,在确认按键是否闭合时,
12、必须要进行消抖处理。否则,由于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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年初级会计职称全套模拟试题及答案解析
- 食堂燃气隐患排查考试题库及答案
- 2026年创业项目投融资咨询师职业技能等级认定题库
- 2026年西安理工大附中小升初摸底英语试卷含答案解析
- 危化项目三同时核查解读
- 英语(五年级上册)课件 -U4 L4 u-e
- 2025-2026年海洋生态系统功能测试卷
- 2025-2026年经济学考研微观经济学模拟试卷
- 2025-2026年洪水防御知识综合试卷
- 重庆青年职业技术学院招聘笔试真题及答案
- 部编版道法新教材四年级年级上册第一课第二课时《与班集体共成长、维护我们的班集体》教案
- 2026交投集团所属辽宁省高速公路运营管理有限责任公司操作岗招聘30人考试备考试题及答案详解
- 尼得科电机(大连)扩建项目环境影响评价报告表
- 《一个豆荚里的五粒豆》课件(第一课时)
- 感恩教师节主题班会
- 中国骨关节炎诊疗指南2024版下载
- 被执行人财产申报表(官方标准完整版)
- (2026秋新版)苏教版五年级数学上册全册教案
- 2026年新教材沪教版九年级上册英语期中复习:Unit 1~4共4套单元培优测试卷汇编(含答案)
- 国网:2026电力现货市场交易机制详解
- 华为知识管理平台研究
评论
0/150
提交评论