搜索
您的当前位置:首页正文

单按键值的单次增加和连续增加的软件实现

2024-09-09 来源:好走旅游网
第28卷第2期 湖北民族学院学报(自然科学版) Vo1.28 No.2 2010年6月 Journal of Hubei Univemity for NationaUtie ̄(Natural Science Edition) Jun.2010 单按键值的单次增加和连续增加的软件实现 杨永明 (湖北民族学院理学院,湖北恩施445000) 摘要:介绍了一种通过一个按键完成参数值的单次增加和连续增加的软件实现方法.变量key_keep—timer用来 记录按键按下的保持时间,变量auto_value_change_f用来标记当前参数的增加方式.通过两个参数的巧妙组合实现 了参数值的单次增加和连续增加. 关键词:按键;参数值;单次增加;连续增加 中图分类号:TP312 文献标识码:A 文章编号:1008-8423(2010)02—0181—03 Software Realization of Value One—.time Increase and Continuous Increase with One Button YANG Yong—ming (School of Science,Hubei University for Nationalities,Enshi 445000,China) Abstract:A way to realize value one—time increase and continuous increase with one button iS intro・ duced.,I1le keeping time that button pushed is recorded by variable keykeep—timer,and the increasing —mode of parameter is recorded by variable autovalue_changef.Ingenious combination of the two param— __eters achieved one-time increase and continuous increase of parameter value. Key words:button;parameter value;one—time increase;continuous increase 在仪器仪表中,经常需要设置一些参数.在硬件设计方案上,很多仪表采用三按键的硬件方案,如图1所 示,即一个功能键,一个上调键,一个下调键.功能键用来选择要设置的参数,上调和下调键分别用来使参数 增加和减少.在软件设计方案上,常常采用两种方案(以增加参数值为例):一种方案是功能键按下并抬起一 次,选择一个要设置的参数,然后按下并抬起上调键,被设置的参数增加某一 值.当被设置的参数值范围比较大时,这种方案就显得费时费力.另一种方案 是功能键按下并抬起一次,选择一个要设置的参数,按下上调键时,参数值开 始以某一速度不断增加.若增加的速度慢,则当被设置的参数值范围比较大 时,这种方案费时;若增加的速度快,则这种方案很难准确地将参数设置成某 图1三按键硬件电路 Fig.1 Thine key hardware 一特定值 卜引. 针对上述问题,少数仪表厂家的解决方法是:设置两个上调键,其中一个按键作为单次增加按键,即按下 并抬起该键,被设置的参数增加某一值;另一个按键作为连续增加按键,即按下该键,被设置的参数连续增 加,抬起时停止增加.这种方案解决了上述参数设置费时费力的问题,但当前很多仪表在功能上和体积上都 有很高要求,CPU的IO口显得紧缺,所以这种方案受到仪表硬件资源和体积的限制. 本文提出了一种方案,在不多占用CPU的IO口的情况下解决了上述问题.当按下并在规定时间(可在 程序中修改)内抬起上调键,被设置的参数增加某一值,当按下上调键超过规定时间后,参数值开始连续快 速增加(增加速度可在程序中可修改),此过程中若抬起该键,参数值则停止增加.当要将参数设置为某一特 收稿日期:2010—03—21. 作者简介:杨永明(1983一),男,硕士,主要从事单片机应用技术、计算机通信的研究 182 湖北民族学院学报(自然科学版) 第28卷 定值时,可以先按下上调键让参数连续增加,当参数接近该值时抬起按键,然后单次反复按上调键,直到参数 值变为这一特定值. 1 设计思路 实现一个按键使值既能单次增加又能连续增加的基本思路是:设置一个时间阀门,当按下键的保持时间 未超过时间阀值时,程序执行单次增加动作;当按下键的保持时间超过时间阀值时,程序执行连续增加动作 直到按键抬起.此过程可用图2表示 ,引. 2设计过程 完成该功能最核心的部分在于对按键按下后的保持时间进行计时,根据保 持时间的不同来决定执行值的单次增加或连续增加.因此,我们可以定义一个 变量key—keep—timer,用来记录按键按下的保持时间.另外需要定义一个参数增 加方式的标志auto—value—change_f,用来记录当前参数增加的方式是单次增加 (auto_value_change_f为0时)还是连续增加(auto—value—change_f为1时),默 认为单次增加.程序每次检测到按键为松开状态时,会对key—keep—timer进行 初始化,执行判断按键的程序时,若按键状态为按下,则key—keep—timer不断减 图2设计思路 1,当key_keep_timer减到零后置位auto—value—change_f,即按键按下后的保持 Fig.2 Design ideas 时间已经达到时间阀值,参数增加方式变为连续增加.此后程序只要检测到auto— value—change_f为l,则参数值就加l 6’7_. 在参数连续增加的过程中若检测到按键松开,则复位auto—value—change_f将 参数增加方式变为单次增加.需要注意的是在参数连续增加模式下,需要定义一个 lOms延时 I 参数增加快慢的计时变量(连续增加间隔计数器),用它来决定参数增加的快慢. 在对按键按下保持时间进行计时的过程中,若按键松开,则停止计时并直接使 参数加l,完成单次参数的增加. 程序流程图如图3,其中up—key为上调按键输入引脚,10 ms延时用来去抖动. 3程序代码 一 ◇ I按键保持计数器减一 完成该功能的程序代码如下,代码采用C语言编写,代码中对按键按下后的 保持时间计时用了3个变量,key—keep—time、key—keep—timel以及key—keep— time2Is]. if(up—k==0) //加按钮按下 auto_value_change一 { f=1; delayl0ms();//防抖动 } l复位自动增加标志并初 while(up_k==0&&auto—value—change—f==0)//当按钮按 } l始化按键保持计数器 下并且加减状态不是自动状态时,开始计时,计时到时开始 } I连续增加问隔计数器减一I.一 自动加减 } / /连续增加间隔\ { if(key_keep_time1一::O)//按键连续按下3s计时 f(up_k:=1)//在自动加 l 减过程中,松开按钮后,恢复 自动增加标志、 keytime1:20; 正常状态 </_keep_if(key—keep_time2一一::O) { / l keykeep_time=key_keep—_一J仞始化连续增加问隔汁 l 数器、参数加 keykeeptime2=20: tun _con。t; __广_ if(key_keep time一::O)//自动加减计时到时, key_keep_tim 1=20; 把自动加减标志置1 k。y_k。。p_time2=2O; 图3程序流程 Fig.3 Programflow l auto_value_change f 0; 第2期 杨永明:单按键值的单次增加和连续增加的软件实现 tondclaytime; buttondclay=but___l83 s1+=1: if(一一burton—delay==Ol I auto—value—change—f==0)//自动 加减状态时,两次加减之间会有延迟,延迟时间到后加1 { //参数加1 4运行效果对比 本程序的验证过程在89c51单片机上进行,单片机系统外围器件有4位LED显示及两个按键,LED用 来实时显示参数值,两个按键分别用来调节参数增加和参数减少.需要修改的参数为sl,修改范围为1~ 1000.在实验前编写了3段程序,第一段程序中按键只有单次增加和减少功能;第二段程序中按键只有连续 增加和减少功能,为了能精确设置某一具体参数,将参数增加一次的时间设置为0.3 s;第三段程序按本文所 提出的方法进行设计,连续增加时,参数增加一次的时间为0.03 S.分别用三段程序进行实验,将sl从1调整 到499。得出的实验结果如表1. 表1实验结果 Tab.1 Experimental results 从实验结果可以看出,若参数变化范围较大、按键同时具备单次增加和连续增加功能时,将大大节省参 数设置时间. 参考文献: [1]周燕玲,王羡欠.工业控制中通用型智能仪表系统设计[J].微计算机信息,2008,31(24):154—155,160. [2] 刘红然.高炉系统的仪表设计[J].自动化与仪器仪表,2oo9(5):71-72,93. [3]彭照辉,苏娟,扶忠权.基于TDK71M6513的智能仪表设计[J].计算机系统应用,2009,18(7):206—209. [4]刘海俊.新型数字化称重仪表设计[J].科技信息,2009(12):69-70. [5]王雁平,张永春.基于CAN总线的现场总线仪表设计[J].常州工学院学报,2009,22(1):27—30. [6]梁东凯,张发存.SOCDMMU中核心部件的软件实现方法[J].计算机工程,2009,35(22):253—255. [7]许新山,汪汉良.CRC算法的软件实现研究[J].高等函授学报:自然科学版,2002,15(2):48—50,53. [8]吴泽民,王俊,王景.利用单片机产生PWM信号的软件实现方法[J].机电技术,2008,31(1):20—21. (上接第180页) 参考文献: [1]EladM,FeureA.Super—resolution reconstruction ofimage ̄luences[J].IEEETransPatternAnalysis andMachineIntelligence,1999,21(9):817 -834. [2]马金福,薛弘晔.基于Fourier—MeUin变换的图像配准算法与性能研究[J].计算机与数学工程,2008,36(11):134-136. [3]许录平,姚静.一种图像快速超分辨率复原方法[J].西安电子科技大学学报:自然科学版,2007,6(3):382-385. [4]朱利成,姚明海.基于si 算法的目标匹配和识别[J].机电工程,2009,12(12):73-81. [5]邓传斌,郭雷,李维.基于sift的遥感图像配准方法[J].传感技术学报,2009,12(12):l742一l 747. [6]Tom B C,Bamard A K,Galasanoos N P.Reconstruction ofa ih#resolution image from registration nd alow resolution images[C]//Proceedings fo the IEEE International Conference on Image processing,TX,1994,553—557. [7]方壮.一种基于SUSAN算子和相位相关实现图像配准的算法[J].湖北民族学院学报:tl然科学版,2010,28(1):49—52. 

因篇幅问题不能全部显示,请点此查看更多更全内容

Top