




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理与应用 段永霞基础部实验中心 6 6 1按键结构及其电压波形在单片机控制系统中广泛使用的机械键盘的工作原理是 按下键帽时 按键内的复位弹簧被压缩 动片触点与静片触点相连 按键两个引脚连通 接触电阻大小与按键触点面积及材料有关 一般在数十欧姆以下 松手后 复位弹簧将动片弹开 使动片触点与静片触点脱离接触 两引脚返回断开状态 可见 机械键盘或按钮的基本工作原理就是利用动片触点和静片触点的接触和断开来实现键盘或按钮两引脚的通 断 6 6键盘电路 图6 28键盘按键的电气符号及简单的键盘电路 a 键盘按键电气符号 b 简单键盘电路 即机械按键在按下和释放瞬间存在抖动现象 抖动时间的长短与按键的机械特性有关 一般在5 10ms之间 而按键稳定闭合期的长短与按键时间有关 从数百毫秒到数秒不等 必须在硬件或软件上采取去抖动措施 避免一次按键输入一串数码 硬件上 可利用单稳态电路或RS触发器消除按键抖动现象 常用软件来消除按键抖动 基本思想 检测到有键按下 键对应的行线为低 软件延时10ms后 行线如仍为低 则确认该行有键按下 当键松开时 行线变高 软件延时10ms后 行线仍为高 说明按键已松开 6 6 2键盘电路形式根据所需按键个数 I O引脚输出级电路结构以及可利用的I O引脚数目 确定键盘电路形式 对于仅需要少量按键的控制系统 可采用直接编码输入方式 其特点是键盘接口电路简单 例如 在空调控制系统中 往往仅需要 开 关 工作模式转换 自动 冷 暖 除湿 送风 强 弱 等按钮 对于按键较多的控制系统 可选择矩阵键盘形式 下面分别介绍这两种键盘接口电路的组成及监控程序编写规则 1 直接编码输入键盘通过检测单片机I O引脚电平状态来判别有无按键输入就构成了直接编码输入键盘 直接编码输入键盘的优点是键盘接口电路简单 但占用I O引脚多 仅用于需少量按键的场合 芯片内有上拉电阻芯片内无上拉电阻 随机扫描程序 也可以用定时扫描或中断扫描 如下 SMKEY ORLP1 0FFH 置P1口为输入方式MOVA P1 读P1口信息JNBACC 0 P0F 0号键按下 转0号键处理JNBACC 1 P1F 1号键按下 转1号键处理 JNBACC 7 P7F 7号键按下 转7号键处理LJMPSMKEYP0F LJMPPROG0P1F LJMPPROG1 P7F LJMPPROG7PROG0 LJMPSMKEYPROG1 LJMPSMKEYPROG7 LJMPSMKEY 程序框图 程序清单 ORG0030HKB MOVP1 0FFH 置P1口为输入口MOVA P1 读键状态CPLAANLA 0FH 屏蔽高4位JZKB 无键闭合则返回ACALLD10MS 延时去抖动MOVA P1 再读键状态CPLAANLA 0FHJZKB 无键闭合则返回CJNEA 01H KB01INC20H K1键闭合 20H单元加1SJMPKB KB01 CJNEA 02H KB02DEC20H K2键闭合 20单元减1SJMPKBKB02 CJNEA 04H KB03MOV21H 00H K3键闭合 21H单元清0SJMPKBKB03 CJNEA 08H KBMOV21H 0FFH K4键闭合 21H单元置FFSJMPKB 若有两键以上闭合则返回END 2 矩阵键盘当系统所需按键个数较多时 为减少键盘电路占用的I O引脚数目 一般采用矩阵键盘形式 如图6 30所示 在矩阵键盘电路中 行线是输入引脚 列线是输出引脚 当然也可以将行线作为输出引脚 而列线作为输入引脚 图6 30 a 使用了MCS 51CPU的P1口作矩阵键盘的行 列线 其中P1 3 P1 0作为行线 输入 P1 7 P1 4作为列线 输出 由于P1 3 P1 0引脚内置了上拉电阻 因此无需外接上拉电阻 为了便于理解 在图6 30 b 中给出了行 列交叉点的等效电路 根据MCS 51I O输出级电路结构 作输入引脚使用前 应向I O口锁存器写入 1 使输出管V1截止 图6 30矩阵键盘接口电路 6 6 3键盘按键编码在键盘电路中 按键的个数不止一个 即存在键盘按键编码 键值 问题 按键编码与按键功能 即键名 有关联 但又是两个不同的概念 键盘电路结构不同 确定键值的方式也不同 例如对于图6 28这样的简单键盘接口电路 可将S0对应的按键值定义为 0 S1对应的按键值定义为 1 依此类推 S3对应的按键值定义为 3 对于图6 30所示的矩阵键盘接口电路 确定键值的方法很多 如可用行 列对应的二进制值作为键值 例如当列线P1 7 P1 4输出的扫描信号为1110 如果P1 4与P1 0交叉点对应按键 即第一个按键被按下时 从P1 3 P1 0口读入的信息必然为1110 因此P1 0与P1 4交叉点对应的按键值为1110 1110B 即0EEH 同理 P1 0与P1 5交叉点对应的按键值为1101 1110B 即0BEH P1 0与P1 7交叉点对应的按键值为0111 1110B 即7EH 但通过这种编码方式获得的键值分散性大 且不等距 因此 一般均按顺序对键盘按键进行编码 即将按键行列对应的二进制码作为扫描码 通过查表转换为键值 例如 可按如下顺序对图6 31所示矩阵键盘的按键进行编码 将PC0引脚对应行线的行号定义为0 PC1引脚对应行线的行号定义为1 PC2引脚对应行线的行号定义为2 PC3引脚对应行线的行号定义为3 PB0引脚对应列线的列号定义为0 PB1引脚对应列线的列号定义为1 依此类推 PB4引脚对应列线的列号定义为4 则键盘任意按键的扫描码为5 行号 列号 因为一行为5列 或4 列号 行号 因为一列为4行 即 键号 所在行号 键盘列数 所在列号 图6 31键盘按键扫描码 扫描原理 首先确定是否有键闭合然后逐一扫描以进一步确定是哪一键闭合以4 4键盘为例 1 判断是否有键按下 使列线D0 D3都输出0 检测行线D4 D7的电平 如果D4 D7上的电平全为高 则表示没有键被按下 如果D4 D7上的电平不全为高 则表示有键被按下 2 扫面按键键值 如果没有键闭合 就返回扫描 如果有键闭合 在进行逐列扫描 找出闭合键的键号 先使D0 0 D1 D3 1 检测D4 D7上的电平 如果D4 0 表示K1键被按下 同理 如果D5 D7 0 分别表示K5 K9 K13键被按下 如果D4 D7 1 则表示这一列没有键被按下 再使D1 0 D0 D2 D3为1 对第二列进行扫描 这样依次进行下去 直到把闭合的键找到为止 按键及相关说明 一 程序扫描方式三个步骤 判断有无键按下 软件延时10ms去抖动 求键的位置 行 列 矩阵式键盘与单片机接口 程序清单 KSCAN ACALLKEYS1 调用判键闭合子程序JNZKEY1 A 0有键闭合则转至去抖动AJMPRETURN 无键闭合则返回KEY1 ACALLD10MS 调用10ms延时程序ACALLKEYS1 再次调用判键闭合子程序JNZKEY2 确认有键闭合 开始扫描AJMPRETURN 无键闭合则返回KEY2 MOVR2 0FEH 送首列扫描字MOVR4 00H 送首列号KEY0 MOVA R2MOVP1 AMOVA P1 扫描字从P1口送出JBACC 4 LINE1 第1行无键闭合 转第2行MOVA 00H 第1行首键号送AAJMPKPV 转键值计算程序 LINE1 JBACC 5 LINE2 第2行无键闭合 转第3行MOVA 04H 第2行首键号送AAJMPKPV 转键值计算程序LINE2 JBACC 6 LINE3 第3行无键闭合 转第4行MOVA 08H 第3行首键号送AAJMPKPV 转键值计算程序LINE3 JBACC 7 NEXT 第4行无键闭合 转下1列MOVA 0CH 第4行首键号送AKPV ADDA R4 计算键值PUSHACCKEY3 ACALLKEYS1 等待键释放JNZKEYS1POPACCSETBFLAG 置有键按下标志SJMPKEY4RETURN CLRFLAG 清有键按下标志KEY4 RETNEXT INCR4 列号加1 MOVA R2CJNEA 0F7H RETURN 判断4行是否都已扫描完 完则返回RLA 为扫描下1行做准备MOVR2 AAJMPKEY0 开始扫描下1列KEYS1 MOVP1 0F0H 判键闭合子程序MOVA P1CPLAANLA 0F0HRETD10MS MOVR7 14H 10ms延时子程序DLY MOVR6 0F8HDLY1 DJNZR6 DLY1DJNZR7 DLYRET 二 定时中断扫描方式该方式利用定时器10ms产生一次中断 设置两个标志 FLAG1 FLAG2 FLAG1用于去抖动标志 FLAG2用于键处理标志 FLAG1 1 程序清单 FLAG1BIT20H 0 定义抖动标志FLAG2BIT20H 1 定义处理标志KEYVEQU30H 定义键值单元ORG0000HAJMPMAINORG000BHAJMPINTT0MAIN MOVTMOD 01H T0为方式1 定时10msMOVTL0 0F0HMOVTH0 0D8HMOVIE 82HSETBTR0HERE SJMPHERE 主程序踏步 INTT0 MOVTL0 0F0H 中断服务 重新给定时器赋初值MOVTH0 0D8HACALLKEYS1 判断键是否按下JNZKB1 有键按下则转至KB1CLRFLAG1 清除抖动标志CLRFLAG2 清除处理标志AJMPKB2 中断返回KB1 JBFLAG1 KB3 判抖动标志是否有效SETBFLAG1 无效则设置成有效AJMPKB2 返回KB3 JBFLAG2 KB2MOVR2 0FEH 送首列扫描字MOVR4 00H 送首列号KEY0 MOVA R2MOVP1 AMOVA P1 扫描字从P1口送出JBACC 4 LINE1 第1行无键闭合 转第2行MOVA 00H 第1行首键号送AAJMPKPV 转键值计算程序 LINE1 JBACC 5 LINE2 第2行无键闭合 转第3行MOVA 04H 第2行首键号送AAJMPKPV 转键值计算程序LINE2 JBACC 6 LINE3 第3行无键闭合 转第4行MOVA 08H 第3行首键号送AAJMPKPV 转键值计算程序LINE3 JBACC 7 NEXT 第4行无键闭合 转下1列MOVA 0CH 第4行首键号送AKPV ADDA R4 计算键值MOVKEYV A 存放键值SETBFLAG2 设置处理标志AJMPKB2NEXT INCR4 列号加1MOVA R2CJNEA 0F7H KB2 判断4行是否都已扫描完 完则返回RLA 为扫描下1行做准备MOVR2 AAJMPKEY0 开始扫描下1列KB2 RETIEND 6 6 4键盘监控方式在单片机应用系统中 可采用查询方式 包括随机扫描方式和定时中断扫描方式 或硬件中断方式监控键盘有无按键输入 1 随机扫描方式在随机扫描方式中 CPU完成某一特定任务后 执行键盘扫描程序 以确定键盘有无按键被按下 然后根据按键功能执行相应的操作 但这种扫描方式因不能在执行按键规定操作中检测键盘有无输入 失去了对系统的控制 因此很少采用 2 定时扫描方式定时扫描方式与随机扫描方式基本相同 通过定时中断方式 每隔一定时间 如10 30ms 由于按键动作较慢 为提高CPU利用率 实践表明每隔30ms对键盘扫描一次较为合理 扫描键盘有无按键被按下 键盘反应速度快 在执行按键功能规定操作过程中 可通过键盘命令进行干预 如取消或暂停等 在定时扫描方式中 为提高CPU利用率 应避免通过被动延迟10 20ms方式等待按键稳定闭合 可在定时中断服务程序中 用3个位存储单元记录最近三次定时中断检测到的按键状态 可初始化为111态 如果规定没有按键被按下时为 1 有按键被按下时为 0 则按键状态含义如下 111 表示最近三次定时中断均未发现按键被按下 110 表示前两次定时中断未检测到按键被按下 只在本次定时中断检测到按键被按下 未延迟 不对按键进行扫描 100 表示最近两次定时中断检测到按键被按下 且已延迟了一次定时中断时间 可对按键进行扫描 确定哪一个按键被按下 并执行按键规定的动作 000 表示按键处于稳定闭合期 001 表示按键可能处于释放状态 011 表示按键已经释放 010 在很短时间内 小于两次中断时间间隔 检测到按键处于释放状态 视为干扰 作000态处理 101 在很短时间内 小于两次中断时间间隔 检测到按键处于按下状态 视为干扰 作111态处理 在以上按键状态中 对于没有重复输入功能的按键设定来说 只需检查100 010态 而对于具有重复输入功能的按键设定来说 只需检查并处理100 010 000三个状态 再利用一字节内部RAM单元保存按键值和按键有效标志 在单片机控制系统中 按键个数一般不超过64个 为减小内存开销 可使用该字节的b7位作为按键有效标志 这样不仅能记录最近按了哪一个按键 也能记录是否已执行了按键规定的动作 当然 对于只有16个按键的小键盘 可使用一个字节记录键盘的状态和按键值 其中b7位记录按键有效标志 b6 b4记录按键的状态 b3 b0记录按键值 定时中断键盘按键扫描流程如图6 32所示 图6 32定时中断键盘扫描流程 a 按键状态流程 b 按键扫描流程 3 中断检测方式在控制系统中 并不需要经常监控键盘有无按键输入 因此 在查询扫描方式和定时中断扫描方式中 CPU常处于空扫描状态 这在一定程度上降低了CPU的利用率 为此 也可采用中断检测方式来监控键盘有无按键输入 图6 33采用中断检测方式的键盘接口电路 扩展单片机输入键的另一种方法 扫描原理 1 读键前先向P1口写数据 即扫描值 使该端口始终有一位清0 其它位均为1 2 将P1口的数据读入ACC 如没有键按下 则读入的值和扫描值相同 此时PSW的P标志 奇偶标志 1 A中有奇数个1 程序按无键按下处理 如有键按下 则读入的数据必然有2位为0 则P标志为0 程序将按键临时存入B 延时取抖后再读P1值送A 如A B则按有键按下处理 无则按无键按下处理 3 每完成一次键盘扫描无论有无键按下 扫描值都循环左移一位再写入P1口 循环判断所有的输入键 程序流程图如下 P1 7p1 6p1 5p1 4p1 3p1 2p1 1p1 0 上例中8根口线只能扩展16个按键 现介绍另一种方法 同样用8根口线 可使按键增加到28个 最多到36个 一 8155的键盘及显示接口 KD1 MOVA 00000011B 初始化 PA PB为基本输出 PC为输入MOVDPTR 7F00HMOVX DPTR AKEY1 ACALLKS1 查有无键按下JNZLK1 有 转键扫描ACALLDIS 调显示子程序AJMPKEY1LK1 ACALLDIS 键扫描ACALLDIS 两次调显示子
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-江西-江西工程测量工五级(初级工)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-广西-广西放射技术员二级(技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-广西-广西土建施工人员四级(中级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-广东-广东防疫员一级(高级技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-广东-广东汽车驾驶与维修员三级(高级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-广东-广东地图绘制员一级(高级技师)历年参考题库典型考点含答案解析
- 2020-2025年二级建造师之二建建筑工程实务通关考试题库带答案解析
- 2025年银行金融类-金融考试-银行业专业人员中级(法规+银行管理)历年参考题库含答案解析(5套)
- 2025年职业技能鉴定-石雕工-石雕工(高级)历年参考题库含答案解析(5套)
- 2025年综合评标专家-甘肃-甘肃综合评标专家(工程造价类)历年参考题库含答案解析(5套)
- 京东集团员工手册-京东
- 2023年苏州市星海实验中学小升初分班考试数学模拟试卷及答案解析
- GB/T 37915-2019社区商业设施设置与功能要求
- GB/T 31298-2014TC4钛合金厚板
- GB/T 27746-2011低压电器用金属氧化物压敏电阻器(MOV)技术规范
- GB/T 22237-2008表面活性剂表面张力的测定
- GB/T 13667.3-2003手动密集书架技术条件
- 导轨及线槽项目投资方案报告模板
- 复旦大学<比较财政学>课程教学大纲
- 书法的章法布局(完整版)
- GB∕T 10429-2021 单级向心涡轮液力变矩器 型式和基本参数
评论
0/150
提交评论