功能是:幅度是2--4的正弦波通过AD0832连接到单片机,要求读这个正弦波的峰值。
做法是:每5ms进行AD采样时读五次,去掉最大值和最小值剩下的三个取平均值,作为这一次的采样值;
采三次,如果第二次大于第一次和第三次,第二次就是峰值。
关键的是取平均值是这步,如果用下面这个算法proteus仿真就能读出峰值是 4。
sum=((pluse[0]+pluse[1]+pluse[2]+pluse[3]+pluse[4]-max-min)/3);
如果用下面分开写,峰值读出来是一点多,就不正确。
sum=(pluse[0]+pluse[1]+pluse[2]+pluse[3]+pluse[4]);
sum=sum-max-min;
sum=sum/3;
功能应该是一样的,为什么结果 会不一样呢 |