小数点末位无法加到3以上为什么-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 599|回复: 3

[未解决] 小数点末位无法加到3以上为什么

[复制链接]
发表于 2021-12-26 14:37 | 显示全部楼层 |阅读模式
10金币
本帖最后由 mcu51c51 于 2021-12-26 21:05 编辑

数码管显示0时,显示76.12时,按加按键,小数点末位无法加到3以上为什么,通过串口监视观察数据,

#define KEY_Position   A1   
#define KEY_UP  A3
#define KEY_DW  A2  
//++++++++++++++++++++++++++++++++++++++++++++++
int b,x, y, z, h;
double setpoint = 76.12;
int key_mode = 2;
int set_Setpoint;
//++++++++++++++++++++++++++++++++++++++++++++++++
void setup()
{ Serial.begin(9600);
  pinMode(KEY_Position, INPUT);   
  pinMode(KEY_UP, INPUT);
  pinMode(KEY_DW, INPUT);

  digitalWrite(KEY_Position, HIGH);  
  digitalWrite(KEY_UP, HIGH);  
  digitalWrite(KEY_DW, HIGH);  
  delay(500);
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void loop()
{ if (digitalRead(KEY_Position) == LOW)   //移动选位按键
  {
    key_mode ++;
    if (key_mode >= 7) //数码管选位显示位置
    {
      key_mode = 2;
    }
  }

      set_Setpoint = setpoint * 100; //设定值显示,小数点乘以10,变成整数

         h = (set_Setpoint % 10) ;      //提取set_Setpoint变量值最低位个位
         z = (set_Setpoint / 10 ) % 10 ; //提取set_Setpoint变量值最低位十位
         y = (set_Setpoint / 100 ) % 10 ; //提取set_Setpoint变量值最低位百位
         x = (set_Setpoint / 1000 ) % 10 ; //提取set_Setpoint变量值最低位千位
         b = (set_Setpoint / 10000 ) % 10 ; //提取set_Setpoint变量值最低位千位


              if (!digitalRead(KEY_UP) and key_mode == 2) h += 1; //小时数码管十位数加一
         else if (!digitalRead(KEY_DW) and key_mode == 2) h -= 1; //小时数码管十位数减一
         else if (!digitalRead(KEY_UP) and key_mode == 3) z += 1; //小时数码管十位数加一
         else if (!digitalRead(KEY_DW) and key_mode == 3) z -= 1; //小时数码管十位数减一
         else if (!digitalRead(KEY_UP) and key_mode == 4) y += 1; //小时数码管个位数加一
         else if (!digitalRead(KEY_DW) and key_mode == 4) y -= 1; //小时数码管个位数减一
         else if (!digitalRead(KEY_UP) and key_mode == 5) x += 1; //分钟数码管十位数加一
         else if (!digitalRead(KEY_DW) and key_mode == 5) x -= 1; //分钟数码管十位数减一
         else if (!digitalRead(KEY_UP) and key_mode == 6) b += 1; //分钟数码管十位数加一
         else if (!digitalRead(KEY_DW) and key_mode == 6) b -= 1; //分钟数码管十位数减一

         int  ttt = (b * 10000) +(x * 1000) + (y * 100)  + (z * 10) + h; //将拆分的变量值Z,Y,Z,h重新组合成变量
         setpoint = ttt;  
         setpoint = setpoint / 100;  

         switch(key_mode)
         {
         case 2:{Serial.print(" ");Serial.print("个位调节: ");}break;
         case 3:{Serial.print(" ");Serial.print("十位调节: ");}break;
         case 4:{Serial.print(" ");Serial.print("百位调节: ");}break;
         case 5:{Serial.print(" ");Serial.print("千位调节: ");}break;
         case 6:{Serial.print(" ");Serial.print("万位调节: ");}break;
         }
         Serial.println(setpoint);
         delay(500);
}
proteus 仿真文件

1.jpg

PROTEUS.rar (28.9 KB, 下载次数: 0)





发表于 2021-12-26 17:06 | 显示全部楼层
抢沙发!
发表于 2021-12-27 09:11 | 显示全部楼层
按键没做消抖处理吧
 楼主| 发表于 2021-12-27 12:00 | 显示全部楼层
找到原因结贴,原因是语法出错
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 18:01 , Processed in 0.310982 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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