[Atmel] ADC采集数据问题求指导

[复制链接]
790|2
 楼主| qazq123 发表于 2015-10-23 15:56 | 显示全部楼层 |阅读模式
  1. void adc_isr(void)
  2. {
  3. ADMUX =0x46;//选择内部AVCC为基准
  4. temp_single=ADC&0x3ff;//temp_single数据类型unsigned int
  5. temp_single=(unsigned long)((unsigned long)(temp_single*50/0x3ff)-24);//VREF定义为50,参考电压为5V,直流偏置为2.4V。

  6. temp_sum = temp_sum + temp_single*temp_single;//temp_sum数据类型unsigned long。
  7. if(flag==64)
  8. {
  9.    adc_rel=(unsigned int)((unsigned long)(sqrt((temp_sum)/64))*750);
  10.    flag = 0;
  11.    temp_sum = 0;
  12. }

  13. }
电路图如左边,功能是实现实时显示市电的电压。 问题:数码管一直显示225.0V不会动,用万用表测限流电阻端电压为0.299~0.302之间变换,我感觉是数据处理temp_single=(unsigned long)((unsigned long)(temp_single*50/0x3ff)-24);这句的问题。我感觉是只能采集3的整型数据,怎么才能处理成2.99~3.02这样的小数点后面两位,求大神指导。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ddllxxrr 发表于 2015-10-23 21:30 | 显示全部楼层
用float型就可以了
 楼主| qazq123 发表于 2015-10-24 08:45 | 显示全部楼层
ddllxxrr 发表于 2015-10-23 21:30
用float型就可以了

temp_single=(float)((float)((float)temp_single*Vref/0x3ff)-24);我改成这样了,然后temp_sum用float型,但是显示数据波动在5V之间跳动,而且准确度差了10V左右。跟万用表测的相差的数据
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

163

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部