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

标题: 再热血放送ADC中关于小数的处理 [打印本页]

作者: winnie    时间: 2009-3-7 23:20
标题: 再热血放送ADC中关于小数的处理
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




欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://enroobbs.com/) Powered by Discuz! X3.2