找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2595|回复: 8
收起左侧

单片机按键值怎么转换为数据?

[复制链接]
ID:419842 发表于 2020-4-14 22:43 | 显示全部楼层 |阅读模式
50黑币
比如从矩阵键盘值输入1,2,3 要把它转换为123(一百二十三),然后用这个输入值来比较 b=200(比较大小)                                 就像   double dat1=0.0,dat2=230.0;

                                                               if(dat1>dat2)
                                                                {   xxx  }
                                                               else
                                                                      {      xxx  }

这里的比较 如果输入 1 2 0 就判断 dat1<dat2 ,但是输入 1 4 0 就  dat1>dat2, 也就是它比较的不是一个整体,而是 一个数一个数的比较,1 4 0 就大于 2 3 0 中 第二位 3 的大小
所以我想问问怎么样把输入的按键值转换为一个整体的数据,先谢谢大佬们解答了,最好能附上程序,空口讲的话我这初学小白太难了

最佳答案

查看完整内容

思路我都写在程序里了
回复

使用道具 举报

ID:658665 发表于 2020-4-14 22:43 | 显示全部楼层
思路我都写在程序里了
1.jpg

矩阵键盘模块(显示空键值).rar

20.6 KB, 下载次数: 6

回复

使用道具 举报

ID:213173 发表于 2020-4-15 07:35 | 显示全部楼层
可以定义一个数组,按最大输入位确定长度,初始数据全为大于9,如0x0f,键盘输入的数按序保存,当键盘输入运算符时按序判断数组中不大于9即为有效数据,按位和倍率求和并另存。数组全部复位待用。

回复

使用道具 举报

ID:406231 发表于 2020-4-15 08:22 | 显示全部楼层
这个问题也困扰了我很久,后来我想用算式能解决。key=key1*100+key2*10+key3*1
回复

使用道具 举报

ID:450849 发表于 2020-4-15 08:31 | 显示全部楼层
你用个变量 算出你现在输入的值再做比较。比如你输入1,2,3,定义value = 1*100+2*10+3;
回复

使用道具 举报

ID:332444 发表于 2020-4-15 08:51 | 显示全部楼层
回复

使用道具 举报

ID:592807 发表于 2020-4-15 08:55 | 显示全部楼层
  1. void bijiao(uint8_t n,int b)//n位数比较,
  2. {
  3. double data1,data2;
  4. uint8_t times = 0;
  5. data2 = b;
  6. data1 =0;
  7. while(1)
  8. {
  9. data1 = data1 * 10 + KEY;
  10. times++;
  11. if(times >= n)
  12. {break;}

  13. }
  14. if(data1>data2)
  15. {}
  16. else{}


  17. }
复制代码


b就是你要比较的数,n是你要输入的位数,比如3位数。如果你的按键矩阵有除了0-9外的按键可以将其中一个按键做成确认建

回复

使用道具 举报

ID:452950 发表于 2020-4-15 09:47 | 显示全部楼层

uchar number[3];   
uint num;
uchar j=0;
while(j<3)//输入三个数字后跳出
           {
             Key=Keycan();//扫描键值赋值给Key
             KeyDeal(Key);//键值映射键号,矩阵键盘设置0-9,剩余的键号大于十均可                                                     
             if(Key==0)K=10;//无键按下不输入
             if((K>=0)&&(K<=9))//有键按下且键号为0-9则输入
             {
                 number[j]=K;//将此键号放进数组
                  WriteCommand(0x88+j);                //指显示位置,显示在显示屏
                  WriteData(0x0f);
                  ++j;                                                                                          
             }  
        }
num=number[0]*100+number[1]*10+number[2];/将数组中的元素组合为一个数

回复

使用道具 举报

ID:584814 发表于 2020-4-15 11:37 | 显示全部楼层
坛内自行搜索一下“计算器”,你会找到你比想象的更复杂的解决之道。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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