采用的是STC12C5A60S2单片机,用的是进中断采集AD,在串口上的温度总是不稳定,然后采用多取几个温度求均值,但是还是有1到2度的跳动,大神们看看这样取均值有没有什么错误。
- void main()
- {
- unsigned char i,j,Te;
- int T[30],sum=0;
- InitUart();
- InitADC();
- IE=0xa0;
- while(1)
- {
- Delay(10);
- Rt=2*ADC_RES/(256-ADC_RES);
- // SendData(ch);
- for(i=0;i<131;i++)
- {
- if(Rt<RtData[i]&&Rt>RtData[i+1])
- {
- T[j]=temp[i];
- j++;
- }
- }
- // SendData(j);
- // SendData(T[j-1]);
- sum=sum+T[j-1];
- // SendData(sum);
- if(j==30)
- {
- SendData(sum);
- j=0;
- Te=sum/30;
- sum=0;
- Msb= Te/10;
- Lsb= Te%10;
- Msb<<=4;
- Msb|=Lsb;
- SendData(Te);
- SendData(Msb); //bin_bcd
- SendData(Rt);
- SendData(ADC_RES);
- }
- void adc_isr() interrupt 5 using 1
- {
- ADC_CONTR&=!ADC_FLAG; //clear ADC interrupt flag
- ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ADC_START|ch;
- }