英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 3100|回复: 0
打印 上一主题 下一主题

再热血放送ADC中关于小数的处理

[复制链接]
跳转到指定楼层
1#
发表于 2009-3-7 23:20:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void
main(void){

  int HEX_ADCValue;
  int BCD_ADCValue;
  int volt;
  int int_temp;
  double temp;
  double double_temp;

        PowerInitial();                                                                           //上电初始化

        while(1){
                NOP;                                                                        //便于设置断点观察
                HEX_ADCValue = ReadADC();                                      //读取AD数据
                NOP;
                temp              = (double)HEX_ADCValue;                     //double可以提高运算精度
                double_temp   = temp*VREF/1023;                             //VREF表示参考电压
                NOP;
                int_temp         = (int)(double_temp*PRECISION);        //两位精度(PRECISION)就是 * 100
                volt                = HEX2BCD(int_temp);                          //转换为BCD码,用于显示
                NOP;
        }        
}

在这条语句中,对小数点后的个数进行了定义

(PRECISION若等于10,则表示一位小数位;100则是二位小数位;1000是三位小数位)
先将所要的数,包括小数位移到整数位(也就是乘以10的倍数), 然后再取整.便可得到所需数据!

                int_temp                   = (int)(double_temp*PRECISION);        //两位精度(PRECISION)就是 * 100
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-11-27 23:16 , Processed in 0.052970 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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