MS1100甲醛浓度传感器读取数值偏小

2019-07-14 22:53发布

我用STC单片机读取MS1100读取甲醛浓度转换成电压值,转换出来的电压值一直偏小!这是为什么?我使用的是P1.4,请教一下大家~~~

/*----------------------------
Get ADC result
----------------------------*/
GetADCResult(int ch)
{
      ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
      _nop_();                            //Must wait before inquiry
      _nop_();
      _nop_();
      _nop_();
      while (!(ADC_CONTR & ADC_FLAG));  //Wait complete flag
      ADC_CONTR &= ~ADC_FLAG;           //Close ADC
          return (ADC_RES*4+ADC_RESL);     //Return ADC result
}
/*----------------------------
Initial ADC sfr
----------------------------*/
void InitADC()
{
       
       P1ASF = 0xff;                       //Open 8 channels ADC function
          ADC_RES = 0;
          ADC_RESL = 0;                       //Clear previous result
      ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
//      delay(2);           

}


void ADC()
{
         INT16U Shishu=0,shiwei=0,ya=0;
   double c;       
   INT16U cdisplay;
       
         shiwei=GetADCResult(4);
           /*lcd_pos(0x40);                //ÉèÖÃÏÔʾλÖÃΪµÚÒ»ÐеĵÚ1¸ö×Ö·û
           lcd_wdat('A');
           lcd_pos(0x41);               
           lcd_wdat('=');          
           lcd_pos(0x42);               
           lcd_wdat(shiwei/1000+0x30);          
           lcd_pos(0x43);               
           lcd_wdat((shiwei%1000)/100+0x30);
           lcd_pos(0x44);               
           lcd_wdat((shiwei%100)/10+0x30);
           lcd_pos(0x45);               
           lcd_wdat((shiwei%10)+0x30);*/
           c = ((double)shiwei*(5.50/1024))*100;
           cdisplay = (INT16U) c;
           GraphicDispNum(0, 0,DISPLAY_NORMAL, cdisplay/100);
           GraphicDispNum(0, 5,DISPLAY_NORMAL, cdisplay%100);
           GraphicDispNum(0, 12,DISPLAY_NORMAL, shiwei%100);


0条回答

一周热门 更多>