找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1376|回复: 5
打印 上一主题 下一主题
收起左侧

萌新求助Arduino数字提取和显示程序

[复制链接]
跳转到指定楼层
楼主
ID:1092555 发表于 2023-9-3 19:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用8位数码管依次显示输入的数字,写的代码如下(没有包含驱动代码):void showNumber(long int shu,int wei)
{
  //创建一个数组,用于存放求出来的各位上面的数字
  int Num[wei];

  //获取各位的数字,并显示,间隔1s
  for(int i=wei;i>0;i--)
  {
    Num[i-1]=shu/pow(10,i-1);
    display(Num[i-1]);
    delay(1000);
    shu-=Num[i-1]*pow(10,i-1);
    Serial.println(shu);
  }
}

void loop() {
  // put your main code here, to run repeatedly:
  showNumber(12345678,8);
}




但是打印出来的数字显示有问题,后两位一直不对,不知道为什么
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:88256 发表于 2023-9-4 00:02 | 只看该作者
你比我厉害,至少我还是第一次看到POW的函数,然后去百度了一下,关于POW函数有这么一条“返回类型:double型,int,float会给与警告!”,那么,是不是因为Num是int而出错的呢?
不要用循环,改成分别取余数试试(适用于位数固定的程序)

回复

使用道具 举报

板凳
ID:161164 发表于 2023-9-4 09:36 | 只看该作者
一是把Num改为long int,或计算时强转一下
shu-=(long int)Num[i-1]*pow(10,i-1);
回复

使用道具 举报

地板
ID:1092555 发表于 2023-9-5 19:33 | 只看该作者
hhdsdy 发表于 2023-9-4 00:02
你比我厉害,至少我还是第一次看到POW的函数,然后去百度了一下,关于POW函数有这么一条“返回类型:double ...

多谢提醒,我回去看看,希望有效
回复

使用道具 举报

5#
ID:1092555 发表于 2023-9-5 19:33 | 只看该作者
lkc8210 发表于 2023-9-4 09:36
一是把Num改为long int,或计算时强转一下
shu-=(long int)Num*pow(10,i-1);

多谢提醒,我回去改一下
回复

使用道具 举报

6#
ID:1092555 发表于 2023-9-5 22:14 | 只看该作者
hhdsdy 发表于 2023-9-4 00:02
你比我厉害,至少我还是第一次看到POW的函数,然后去百度了一下,关于POW函数有这么一条“返回类型:double ...

试了一下,还是不行,这个在6位及以下的数字时得出的结果是正确的,但是大于6位之后,末尾的2位显示结果就不对了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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