| 
 
| 本帖最后由 opp1234 于 2012-2-29 22:26 编辑 
 最近用ADC0809采样50Hz的正弦波信号(0~4V),面包板搭好电路后,信号发生器输入经过精密整流给AD采样,采样方式为定时采样(见以下C程序),均方根值计算后送串口显示。现在问题来了:直流信号时显示正常,交流输入时收到的数值不正确,而且不稳定。调了两天,还是不行。不知是AD问题,还是程序问题。MCU为51
 采样部分程序如下:
 unsigned long getdata()
 {
 uchar adval=0;
 unsigned long sum=0;
 for(i=0;i<100;i++)            //预算是一个周期采样100点
 {   P1=0xff;
 ST=0;
 ST=1;
 ST=0;           //启动AD转换
 ALE=0;
 ALE=1;           //地址锁存
 delayms();      //这里“大概”延时189μs(用Keil看的),用作转换
 //0809转换时间最慢 128μs,CLK外接ALE二分频后的方波
 OE=1;
 adval=P1;              //读P1口AD数据
 OE=0;
 sum=sum+adval*adval;
 
 }
 return sum;
 }
 
 ………………
 ………………
 usigned long a;
 float t_rms  ;
 a=getdata()*5/255/100;
 t_rms=sqtr(a);                   //转换为0~5V,并进行均方根算法
 烦请各路大侠指点出问题啊,本人只是入门者。还有,一般这样的交流采样都采用什么AD,算法?查过论坛中的帖,有说滤波的,过零的,那么具体程序应该怎样啊?
 | 
 |