按键多功能程序_第1页
按键多功能程序_第2页
按键多功能程序_第3页
按键多功能程序_第4页
按键多功能程序_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

题目 多功能按键设计 利用一个 I O 口 接一个按键 实现 3 功能操作 单击 双击 长按 用户基本操作定义 1 短按操作 按键按下 按下时间1s 属于一次长按操作 在正常 0 5s 内无按键操作为启始按键扫描条件下 扫描按键将产生以下 3 种按键事件 1 长按事件 任何 1 次出现的长按操作都属于长按事件 2 单击事件 1 次短按操作后 间隔 0 5 内没有短按操作 3 双击事件 2 次短按操作间隔时间 0 5s 则 2 次短按操作为 1 次双击事件 且 2 次 短按都取消 特别操作情况定义 1 短按操作和长按操作间隔 0 5s 以及 长按操作和短按操作间隔 0 5s 均不产生 双击事件 2 连续 n 次 n 为奇数 短按操作 且间隔均 0 5s 产生 n 1 2 次双击事件 1 次单 击事件 3 连续 n 次 n 为偶数 短按操作 且间隔均 100 继续按下 计时加 10ms 10ms 为本函数循环 执行间隔 key return L key 按下时间 1000ms 此按键为长按操作 返回 长键事件 key state key state 3 转换到等待按键释放状态 break case key state 3 等待按键释放状态 此状态只返回无按键事 件 if key press key state key state 0 按键已释放 转换到按键初始态 break return key return 中间层按键处理函数 调用低层函数一次 处理双击事件的判断 返回上层正确的无键 单键 双键 长键 4 个按键事件 本函数由上层循环调用 间隔 10ms unsigned char key read void static unsigned char key m key state 0 key time 1 0 unsigned char key return N key key temp key temp key driver switch key m case key state 0 if key temp S key key time 1 0 第 1 次单击 不返回 到下个状态 判断后面是否出现双击 key m key state 1 else key return key temp 对于无键 长键 返回原事件 break case key state 1 if key temp S key 又一次单击 间隔肯定1000ms 在 1s 前低层返回的都是无键 if key time 1 50 key return S key 500ms 内没有再次出现单键事件 返 回上一次的单键事件 key m key state 0 返回初始状态 break return key return 下面 根据程序分析按键事件的反映时间 1 对于长键 按下超过 1s 马上响应 反映最快 2 对于双键 第 2 次按键释放后马上得到反映 3 对于单键 释放后延时拖后 500ms 才能响应 反映最慢 这个与需要判断后面是否有 双击操作有关 只能这样 实际应用中 可以调整两次单击间隔时间定义 比如为 300ms 这样单击的响应回快一点 单按键操作人员需要加快按键的操作过程 如果产品 是针对老年人的 这个时间不易太短 因为年纪大的人 反映和动作都比较慢 当然 上面两段可以合在一起 我这样做的目的 是为了可以方便的扩展为 N 击 当 然 需要做修改 可是最底层的就是最基本的操作处理短按和长按 不用改动的 至于双 击 还是 N 击 在中间层处理 这就是程序设计中分层结构的优点 测试代码环境如下 interrupt TIM0 COMP void timer0 comp isr void 定时器 10ms 中断服务 time 10ms ok 1 main viod while if time 10ms ok 每 10ms 执行一次 time 10ms ok 0 key key read 10ms 一次调用按键中间层函数 根据 返回键值 点亮不同的 LED 灯 全面测试按键操作是否正常 if key L key 点亮 A LED 关闭 B LED 和 C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论