找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4334|回复: 3
收起左侧

一个利用4个按键快速进行参数设置的方法

[复制链接]
ID:63113 发表于 2019-10-19 09:01 | 显示全部楼层 |阅读模式
在设计人机交互界面的时候,假设我们要对一个多位数进行设置,最简单的办法就是准备一个含有0-9十个按键数字的键盘,根据需要将对应的键按几下,如要设置参数为1234,那就依次按下1234这几个键就可以快速地设置参数。
但是呢?有时处理器的IO口不够了,操作界面只有那么大放不下那么多按键,而且我们又想节约成本少一些按键的开支,这个该怎么办呢?本文就介绍一种利用更少的四个按键快速调整多位数的方法。
1.PNG
这个方法在设置界面安排了 “左”“右”“加”“减”四个按键,其中的“左”“右”键用于数字的位选择,“加”“减”按键对正在设置的这位上数字进行加减设置。假设我们要对一个四位数进行设置,设计的思路就是先选中某一位,再分别地对每一位进行加减设置:例如可以先选择个位,进行加减操作,个位设置好后,然后再十位,百位,最后千位依次地每位进行设置。就像电脑的光标一样,在这里按一下“左”键,就左移一下选中的待设置的位,按一下“右”键,选中的待设置的位右移一位。如图 1中显示的待设置数值1234,假设我们正在设置个位数4,我们按一下“左”键,那么选中的设置位变成十位数3。假如我们正在设置十位数3,按一下“加”键,3加1变成4,按一下“减”键,由4减1变成3,每位数字的变化范围为0到9,以此类推。
2.PNG
在程序设计的时候,对一个四位数的调整的结果可以这样计算:设待设置的数值为x,正在设置的位为wei,那么有:
当wei=个位的时候,按加键时,x=x+1,按减键时,x=x-1;
当wei=十位的时候,按加键时,x=x+10,按减键时,x=x-10;
当wei=百位的时候,按加键时,x=x+100,按减键时,x=x-100;
当wei=千位的时候,按加键时,x=x+1000,按减键时,x=x-1000;
其余位数的计算方法类似,另外在设计的时候注意不要让x超出限制范围,实现这个功能的一段参考C语言例程如下:
Include <math.h>
unsigned char wei=0;  //全局变量,用于位的控制: wei=0表示正在设置个位,wei=1表示正在设置十位,wei=2表示正在设置百位,wei=3表示正在设置千位。在进行新的数值设置前建议清零,从个位开始设置。
unsigned int add_dec_fun(unsigned int x)   //加减设置函数,设置x中的wei位上的数字,参数x为输入的待设置的数值
{if (x>9999) x=9999;            //防止x超出范围
if (按了加键)
       {x=x+pow(10,wei);         //对应的位加运算。pow是幂函数,pow(10,wei)的功能是求解10的wei次方
       }
else
       {if(按了减键)
              {x=x-pow(10,wei);     //对应的位减运算。
              }
       }
return x;                    //返回设置后的结果
}
在使用这段程序进行快速设置参数的时候,用“左”“右”键改变wei的值来选择控制待设置的位,在“加”“减”键的按键操作程序段里调用add_dec_fun函数来改变待设置的数值即可。
谢谢阅读,更多精彩,欢迎关注公-号:yonkotech
沙鸥-成都
51hei随意打赏-小.png

回复

使用道具 举报

ID:976070 发表于 2022-2-3 21:00 | 显示全部楼层
能不能用一个按键加 减?
回复

使用道具 举报

ID:161164 发表于 2022-2-4 12:03 | 显示全部楼层
dhbt2021 发表于 2022-2-3 21:00
能不能用一个按键加 减?

当然可以
可以短按当加,长按当减
或按一下当加,连按两下当减
回复

使用道具 举报

ID:976070 发表于 2022-2-4 20:56 | 显示全部楼层
lkc8210 发表于 2022-2-4 12:03
当然可以
可以短按当加,长按当减
或按一下当加,连按两下当减

谢谢回复!!!!!!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表