版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机按键去抖动程序设计思路单片机按键去抖动程序设计思路单片机按键去抖动程序设计思路xxx公司单片机按键去抖动程序设计思路文件编号:文件日期:修订次数:第1.0次更改批准审核制定方案设计,管理制度
单片机按键去抖动程序设计思路
徐丽红
王佰营
在单片机应用系统设计中,人机界面部分的友好程度,很大一部
分取决于键盘处理程序。在按键时按得快了没有反应,按慢了一连响
应几次,总给人紧迫感或迟钝感,不能使人满意。
用以下思路设计的键处理程序取得了满意效果。
判断有没有键值:
1.若有键值:
判断是否为首次按下:
A:若首次按下:判断是否与上次按下的键值相同
a.若相同再判断:是否已经按下了300ms?
1).若已经按下300ms则将此键做为连键处理。
2).若不是连键则判断:是否按下20ms?
1>.若确认按下20ms,得到有效键值等待弹起
2>.
若不是按下20ms直接结束处理(ret)。
b.若不相同则将标志清零结束处理(ret)。
B:若不是首次按下:将键值暂存起来,标志置位结束处理。
2.若无键值:
判断是否有键值已被确认
A.若有键已被确认:判断按键是否首次抬起
a.若首次抬起:判断抬起延时时间(20ms)是否到达
1>.若延时到则将标志处理结束处理。
2>.若延时未到直接结束处理(ret)。
b.若非首次抬起:直接结束处理(ret)。
B.若没有键被确认:直接结束处理(ret)。
具体程序实现流程图如下:(所有延时均为非阻塞式延时)
Lcllscan_key----为调用键扫描程序;
简单的按键处理程序见:简单、友好的按键处理程序设计简单、友好的按键处理程序设计
王佰营
徐丽红 在嵌入程序设计中,键处理程序在一定程度上决定着人机对话界面的友好程度。WINDOWS是公认的界面友好的典范,我们就借鉴WINDOWS的键处理的思想:1.当击键时WINDOWS立即作出响应;2.当按住键不放时,WINDOWS延迟一定时间来判断是否为连键;其间不作响应;3.当认为是连键时,会间隔一定时间重复作出响应;(可以打开记事本,敲个‘h’键试验:瞬时敲击,即可出现‘h’,再按着键不放,无‘h’出现,当延迟一定时间‘h’,就以较快速度出现;)在C8051F020和DSP编程中运用上述的思想所编的键处理程序非常简捷、高效和友好,以下为该程序的流程图:根据该流程的51系列单片机程序和DSP程序:1、C8051F020单片机程序如下:;=================================================================
;
function:
key_filter
;键盘去抖程序--徐丽红
;
input:
a
;
output:
;
usage:
a,b
;=================================================================
key_filter:
;键盘去抖程序
lcall
scan_key
jz
kf_no
;a=0?
jb
bfirst,
kf_1th
;firstdown?
mov
b,
a
mov
a,
k_dly
jnz
kf_ret
;20ms到了吗?
mov
a,
b
;20ms到
cjne
a,
key_tmp,kf_no
;a==k_tmp?
mov
k_dly,
#10
;a==k_tmp
dec
dly_k
jnb
bfast,
kf_nofast
;是连键吗?
kf_is0:
mov
a,
dly_k
;是连键
jnz
kf_ret
;300ms/160ms?
mov
dly_k,
#12
;fastOK!
sjmp
kf_ftokkf_nofast:
mov
a,
dly_k
;不是连键
cjne
a,
#24,
kf_is0
;延时了1次吗?
kf_ftok:
mov
key,
key_tmp
;firstOK!
setb
bkey_do
setb
bfast
kf_ret:
retkf_1th:
mov
k_dly,
#10
;firstdown
mov
key_tmp,
a
mov
dly_k,
#25
clr
bfirst
clr
bfast
ret2、LF2407型DSP程序如下:;----------------------------------------------------------; function: judge_key 键值判断; input: ---; output: ---; usege: ACC;----------------------------------------------------------judge_key: ;键值判断 ldp #PEDATDIR>>7 lacl PEDATDIR cmpl and #00110110b
ldp #DP_B01 sacl key_tmp
bcnd k_down, NEQ ;CATCHKEY ldp #DP_B01 splk #00h, bknot1 retk_down: lacl bknot1 bcnd not_first, NEQ ;first
lacl key_tmp sacl key_ok splk #04, key_clk splk #50, key_dly splk #11h, bknot1 splk #00h, bksure splk #00h, bcontinue ret
not_first: lacl key_clk ;Ntimes bcnd T_over, EQ ;12ms retT_over: lacl key_ok ;12ms xor key_tmp bcnd Is_same, EQ ;samekey splk #00h, bknot1 retIs_same: splk #4, key_clk lacl bcontinue bcnd Is_fast, NEQ ;continueOK_key: splk #11h, bcontinue splk #11h, bksure retIs_fast: lacl key_dly ;key_dly-- sub #01h sacl key_dly bcnd tuch_set,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全排查工作总结
- 冀教版二年级下册混合计算题200道及答案
- 医患治疗合同范本
- 公开招聘高层次专业技术人员报名登记表
- 2024年事业单位公开招聘专业技术人员报名表
- 感恩作文之感恩生命演讲稿2篇斑马线生命线演讲稿
- 2024年公开招聘编外聘用人员报名表
- 西安工业展厅服务合同范本
- 货架拆除合同
- 河南省漯河市个人房屋租赁合同
- 社区戒毒(康复)人员档案
- (建筑工程标准法规)内墙饰面砖粘贴工程施工工艺标准精编
- 出纳绩效薪酬方案
- 水准点、导线点复测记录自动公式表
- 限制被执行人驾驶令申请书
- (完整word版)留学人员学历认证授权声明模板
- 舟山市定嵊泗县2022-2023学年五年级数学第二学期期末检测模拟试题含答案
- 中医优势病种中风诊疗方案
- 初中校本课程-海水的性质教学课件设计
- 抖音短视频数据分析表
- 男孩和苹果树的故事
评论
0/150
提交评论