OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6541|回复: 14

AD采集,模拟值的小数部分显示出现问题

[复制链接]

54

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
341
金钱
341
注册时间
2014-10-30
在线时间
0 小时
发表于 2014-12-21 09:28:11 | 显示全部楼层 |阅读模式
5金钱
 AD读取公式:
for(i=0;i<8;i++)
{
ADC_ConvertedValueLocal=(float)ADC_ConvertedValue*(3.3/4096);   //读取 AD的值
}

模拟值整数部分:
for(i=0;i<8;i++)
{
           ge=(uint32_t)ADC_ConvertedValueLocal;
}

模拟值小数部分:
for(i=0;i<8;i++)
{
 dian0=ADC_ConvertedValueLocal-ge;
 dian=(uint32_t)(dian0*1000000);
}
我的想法是:ADC_ConvertedValueLocal得到的应该是浮点值2.111之类的,然后ge被转换成2,之后再乘以1000,就应该可以显示模拟值了。可是模拟值的部分为0.这是什么原因?

最佳答案

查看完整内容[请看2#楼]

其实在原子的例程里有一个很牛逼的作法。    大概是这样 float abc;  int integer; 假如abc=2.11; 那么 integer=abc; abc-=inter; abc*=100; 于是就把整数与小数给搞出来了,integer=2,abc=11;
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2014-8-3
在线时间
0 小时
发表于 2014-12-21 09:28:12 | 显示全部楼层
其实在原子的例程里有一个很牛逼的作法。   
大概是这样
float abc; 
int integer;
假如abc=2.11;
那么
integer=abc;
abc-=inter;
abc*=100;
于是就把整数与小数给搞出来了,integer=2,abc=11;
电子技能就是我行走江湖时手中的利剑。
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11560
金钱
11560
注册时间
2014-4-1
在线时间
1318 小时
发表于 2014-12-21 10:37:36 | 显示全部楼层
先查原始值对不对;

用手工转换成你的格式,和程序每一步的结果进行对比,就会找出问题。
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5782
金钱
5782
注册时间
2013-11-22
在线时间
1212 小时
发表于 2014-12-21 14:03:15 | 显示全部楼层
LZ 你的数组ADC_ConvertedValueLocal定义的什么类型
回复

使用道具 举报

54

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
341
金钱
341
注册时间
2014-10-30
在线时间
0 小时
 楼主| 发表于 2014-12-21 22:02:52 | 显示全部楼层
回复【4楼】lycreturn:
---------------------------------
float的
回复

使用道具 举报

54

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
341
金钱
341
注册时间
2014-10-30
在线时间
0 小时
 楼主| 发表于 2014-12-21 22:40:37 | 显示全部楼层
回复【3楼】腾飞:
---------------------------------
for(i=0;i<8;i++){

ADC_ConvertedValue=ADC_ConvertedValueLocal;
ADC_ConvertedValueLocal-=ADC_ConvertedValue;
ADC_ConvertedValueLocal*=1000000;
}


for(i=0;i<8;i++)
{
      printf("\r\n ge = %d\r\n",ADC_ConvertedValue);
  printf("\r\n dian = %d\r\n",ADC_ConvertedValueLocal);
}
我用你的方法进行了测试,可是得到的结果:小数部分仍为0。我的程序也错了吗?还是其它的原因?
回复

使用道具 举报

54

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
341
金钱
341
注册时间
2014-10-30
在线时间
0 小时
 楼主| 发表于 2014-12-21 22:42:01 | 显示全部楼层
回复【2楼】xuande:
---------------------------------
dian0=ADC_ConvertedValueLocal-(float)ge;
那样转换了,可是得到的结果仍是0.不太明白你的意思。
回复

使用道具 举报

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1292
金钱
1292
注册时间
2014-12-20
在线时间
534 小时
发表于 2014-12-22 11:44:44 | 显示全部楼层
dian0这个数组要是浮点型的。不知道楼主是不是?
回复

使用道具 举报

54

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
341
金钱
341
注册时间
2014-10-30
在线时间
0 小时
 楼主| 发表于 2014-12-22 13:28:38 | 显示全部楼层
回复【8楼】BMN李:
---------------------------------
float ADC_ConvertedValueLocal[8],dian0[8];是啊,定义了浮点型
回复

使用道具 举报

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1292
金钱
1292
注册时间
2014-12-20
在线时间
534 小时
发表于 2014-12-22 13:37:42 | 显示全部楼层
回复【9楼】秋枫暮霞惋红曲:
---------------------------------
你怎么显示的?用%ld呢?
回复

使用道具 举报

28

主题

1489

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1656
金钱
1656
注册时间
2013-7-24
在线时间
1 小时
发表于 2014-12-22 14:12:54 | 显示全部楼层
我通常用sprintf()
于20150522停用该账号:http://www.microstar.club
回复

使用道具 举报

54

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
341
金钱
341
注册时间
2014-10-30
在线时间
0 小时
 楼主| 发表于 2014-12-22 20:26:50 | 显示全部楼层
回复【11楼】styleno1:
---------------------------------
printf,是串口显示吧?我的串口显示正常,只是LCD显示不正常
回复

使用道具 举报

54

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
341
金钱
341
注册时间
2014-10-30
在线时间
0 小时
 楼主| 发表于 2014-12-22 20:27:10 | 显示全部楼层
回复【12楼】秋枫暮霞惋红曲:
---------------------------------
小数部分显示为0
回复

使用道具 举报

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1292
金钱
1292
注册时间
2014-12-20
在线时间
534 小时
发表于 2014-12-23 09:13:07 | 显示全部楼层
回复【13楼】秋枫暮霞惋红曲:
---------------------------------
那就是你显示的问题嘛。。。你贴这段代码有何用。。。方向就没搞对。
回复

使用道具 举报

54

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
341
金钱
341
注册时间
2014-10-30
在线时间
0 小时
 楼主| 发表于 2014-12-23 12:43:08 | 显示全部楼层
回复【14楼】BMN李:
---------------------------------
是啊,就是LCD显示的问题 。我的代码只能显示整数部分,不能显示小数部分
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-27 14:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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