




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
键盘接口 键盘是单片机应用系统中使用最广泛的一种数据输入设备 键盘是一组按键的组合 键通常是一种常开型按钮开关 常态下键的两个触点处于断开状态 按下键时它们才闭合 短路 非编码键盘按组成结构又可分为独立式键盘和矩阵式键盘 独立式键盘的工作过程与矩阵式键盘类似 无论是硬件结构还是软件设计都比较简单 通常 键盘有编码和非编码两种 编码键盘通过硬件电路产生被按按键的键码和一个选通脉冲 选通脉冲可作为CPU的中断请求信号 这种键盘使用方便 所需程序简单 但硬件电路复杂 常不被单片机采用 特点 每个按键占用一条I O线 当按键数量较多时 I O口利用率不高 但程序编制简单 适用于所需按键较少的场合 特点 电路连接复杂 但提高了I O口利用率 软件编程较复杂 适用于需使用大量按键的场合 扫描法和线反转法 0123eedebe7e4567edddbd7d89ABebdbbb7bCDEFe7d7b777 键盘接口的消抖1 消除键抖动 if语句if语句是C51中的一个基本条件选择语句 它通常有三种格式 1 if 表达式 语句 2 if 表达式 语句1 else 语句2 3 if 表达式1 语句1 elseif 表达式2 语句2 elseif 表达式3 语句3 elseif 表达式n 1 语句n 1 else 语句n 例 if语句的用法 1 if x y printf x d y d n x y 执行上面语句时 如果x不等于y 则输出x的值和y的值 2 if x y max x elsemax y 执行上面语句时 如x大于y成立 则把x送给最大值变量max 如x大于y不成立 则把y送给最大值变量max 使max变量得到x y中的大数 3 if score 90 printf YourresultisanA n elseif score 80 printf YourresultisanB n elseif score 70 printf YourresultisanC n elseif score 60 printf YourresultisanD n elseprintf YourresultisanE n 执行上面语句后 能够根据分数score分别打出A B C D E五个等级 switch case语句 if语句通过嵌套可以实现多分支结构 但结构复杂 switch是C51中提供的专门处理多分支结构的多分支选择语句 它的格式如下 switch 表达式 case常量表达式1 语句1 break case常量表达式2 语句2 break case常量表达式n 语句n break default 语句n 1 说明如下 1 switch后面括号内的表达式 可以是整型或字符型表达式 2 当该表达式的值与某一 case 后面的常量表达式的值相等时 就执行该 case 后面的语句 然后遇到break语句退出switch语句 若表达式的值与所有case后的常量表达式的值都不相同 则执行default后面的语句 然后退出switch结构 3 每一个case常量表达式的值必须不同否则会出现自相矛盾的现象 4 case语句和default语句的出现次序对执行过程没有影响 5 每个case语句后面可以有 break 也可以没有 有break语句 执行到break则退出switch结构 若没有 则会顺次执行后面的语句 直到遇到break或结束 例 switch case语句的用法 对学生成绩划分为A D 对应不同的百分制分数 要求根据不同的等级打印出它的对应百分数 可以通过下面的switch case语句实现 switch grade case A printf 90 100 n break case B printf 80 90 n break case C printf 70 80 n break case D printf 60 70 n break case E printf 60 n break default printf error n 键盘控制流程 单片机对矩阵式键盘接口处理的一般过程如图8 3所示 键扫描 消抖 求键码 等待释放 按键处理 图8 3键盘处理流程框图 1 键扫描 键扫描就是要判断有无键按下 当扫描到有键按下时再进行下一步处理 否则退出键盘处理程序 独立式键盘扫描只需读取IO口状态 而矩阵式键盘描通常有两种实现方法 逐行扫描法和线反转法 1 逐行扫描法 依次从第一至最末行线上发出低电平信号 如果该行线所连接的键没有按下的话 则列线所接的端口得到的是全 1 信号 如果有键按下的话 则得到非全 1 信号 0111 1111 1011 1110 1101 1111 1110 1111 设第2行第4列键按下 行线输出 列线输入 0111 1111 1011 1110 1101 1111 1110 1111 2 线反转法 线反转法也是识别闭合键的一种常用方法 该法比行扫描速度快 但在硬件上要求行线与列线外接上拉电阻 先将行线作为输出线 列线作为输入线 行线输出全 0 信号 读入列线的值 那么在闭合键所在的列线上的值必为0 然后从列线输出全 0 信号 再读取行线的输入值 闭合键所在的行线值必为0 这样 当一个键被按下时 必定可读到一对唯一的行列值 再由这一对行列值可以求出闭合键所在的位置 0000 1110 0000 1011 设第2行第4列键按下 列值 1110 行值 1011 由于按键按下时的机械动作 在按键被按下或松开的瞬间 其输出电压会产生波动 称为键的抖动 2 消抖 为确保每按一次键单片机只进行一次处理 使键盘可靠地工作 必须消除按键抖动 消抖方法有硬件消抖和软件延时两种 图8 5键闭合及断开时的抖动 1 硬件消抖法 就是在键盘中附加去抖动电路 从根上消除抖动产生的可能性 右图所示电路实际上是由R S触发器构成的单脉冲电路 当按钮开关按下时Q端输出低电平 当开关松开时Q端恢复高电平 即输出一个负脉冲 以此消除抖动 图8 6硬件去抖动电路 2 软件消抖法 键按下的时间与操作者的按键动作有关 约为十分之几到几秒不等 而键抖动时间与按键的机械特性有关 一般为5 10ms不等 软件消抖法即是采用延时 一般延时10 20ms 的方法 以避开按键的抖动 即在按键已稳定地闭合或断开时才读出其状态 图8 7软件消抖法延时区间示意图 3 计算键码 键码是每个按键的标识 被按键确定下来之后 接下来的工作是计算闭合键的键码 然后才能根据键码进行对应的操作 为编程方便 键码通常都是以键的排列顺序安排 按照从左到右 从上向下的顺序编排 键码可根据行号列号以查表求得 也可通过计算得到 我们将结合实例加以介绍 4 等待释放 等待释放是为了保证键的一次闭合仅进行一次处理 求得键码后 然后通过不断进行键扫描 如有键按下 则继续扫描 否则认为键已释放 5 按键处理 根据系统功能要求 利用单片机控制完成特定操作 8 1 2键盘接口的控制方式 在单片机的运行过程中 何时进行键盘扫描和处理 可有下列三种情况 1 查询方式 单片机通过调用键盘扫描子程序 查询有无键按下 2 定时扫描方式 每隔一定时间执行一次键盘扫描子程序 3 中断方式 每当有键闭合时才向CPU发出中断请求 中断服务时进行键盘扫描和处理 5 1 2键盘接口和键输入软件中应解决的几个问题1 消除键抖动 if语句if语句是C51中的一个基本条件选择语句 它通常有三种格式 1 if 表达式 语句 2 if 表达式 语句1 else 语句2 3 if 表达式1 语句1 elseif 表达式2 语句2 elseif 表达式3 语句3 elseif 表达式n 1 语句n 1 else 语句n 例 if语句的用法 1 if x y printf x d y d n x y 执行上面语句时 如果x不等于y 则输出x的值和y的值 2 if x y max x elsemax y 执行上面语句时 如x大于y成立 则把x送给最大值变量max 如x大于y不成立 则把y送给最大值变量max 使max变量得到x y中的大数 3 if score 90 printf YourresultisanA n elseif score 80 printf YourresultisanB n elseif score 70 printf YourresultisanC n elseif score 60 printf YourresultisanD n elseprintf YourresultisanE n 执行上面语句后 能够根据分数score分别打出A B C D E五个等级 switch case语句 if语句通过嵌套可以实现多分支结构 但结构复杂 switch是C51中提供的专门处理多分支结构的多分支选择语句 它的格式如下 switch 表达式 case常量表达式1 语句1 break case常量表达式2 语句2 break case常量表达式n 语句n break default 语句n 1 说明如下 1 switch后面括号内的表达式 可以是整型或字符型表达式 2 当该表达式的值与某一 case 后面的常量表达式的值相等时 就执行该 case 后面的语句 然后遇到break语句退出switch语句 若表达式的值与所有case后的常量表达式的值都不相同 则执行default后面的语句 然后退出switch结构 3 每一个case常量表达式的值必须不同否则会出现自相矛盾的现象 4 case语句和default语句的出现次序对执行过程没有影响 5 每个case语句后面可以有 break 也可以没有 有break语句 执行到break则退出switch结构 若没有 则会顺次执行后面的语句 直到遇到break或结束 6 每一个case语句后面可以带一个语句 也可以带多个语句 还可以不带 语句可以用花括号括起 也可以不括 7 多个case可以共用一组执行语句 例 switch case语句的用法 对学生成绩划分为A D 对应不同的百分制分数 要求根据不同的等级打印出它的对应百分数 可以通过下面的switch ca
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025福建省华兴集团有限责任公司招聘模拟试卷及一套参考答案详解
- 2025广东韶关市乳源瑶族自治县工业和化局招聘办公室文职人员1人模拟试卷及答案详解一套
- 2025云南普洱市景迈山投资开发管理有限公司市场化选聘管理人员4人笔试历年参考题库附带答案详解
- 浙江国企招聘2025杭州高新科创集团有限公司及下属子公司第一批公开招聘笔试笔试历年参考题库附带答案详解
- 四川盐晟国有资本投资集团有限公司公开招聘财务部副部长笔试历年参考题库附带答案详解
- 中国能建西北院2025届秋季校园招聘笔试历年参考题库附带答案详解
- 2025年福建省柘荣法院招聘1人模拟试卷及答案详解参考
- 2025辽宁沈阳市铁法能源公司招聘54人笔试历年参考题库附带答案详解
- 2025广东惠州市惠城区招聘公办义务教育学校硕博教育人才65人(第二批)考前自测高频考点模拟试题及答案详解一套
- 2025贵州六盘水市六枝特区城政建设(集团)有限责任公司招聘笔试历年参考题库附带答案详解
- 多格列艾汀使用指南2024课件
- 居民电费户名更改委托书
- (2024年)面神经炎课件完整版
- 机动车交通事故责任纠纷民事起诉状(模板)
- 铝锭质检报告
- 《群英会蒋干中计》课件38张 2023-2024学年高教版(2023)中职语文基础模块下册
- 保密监督与检查方法培训
- 宁夏差旅费报销标准
- 2022版义务教育语文课程标准小学语文学习任务群解读的七个维度
- 妊娠合并先心病指南解读专家讲座
- 第7课+李さんは+每日+コーヒーを+飲みます+知识点课件【知识精讲+拓展提升+迁移训练】 高中日语新版标准日本语初级上册
评论
0/150
提交评论