子程序入口参数Adcaddres通过设置控制寄存器来修改采样通道进行数字滤波
#define LEN 18
//采样数组的长度
#define SHIFT 4
//LEN = 2^SHIFT+2
unsigned int szlb(unsigned char Adcaddres) {
unsigned char pdat;
//移动指针
unsigned char pmax,pmin;
//记录数据表中最大值和最小值的位置,在一般的数据采集系
unsigned char i;
//统中,数据的长度>=8,
unsigned int datas[LEN];
//因此用指针记录而不是直接记录最大值和最小值
unsigned int average=0;
//清零,用来计算平均值
pmax=0;
pmin=0;
for ( pdat=0;pdat<LEN;pdat++)
//采样所得数据存入数据表中
{
datas[pdat] = get_ad(Adcaddres);
DelayMs(0×06);
}
for(i=0;i<LEN;i++)
average+=datas[i];
//求所有数据总和
/******去除被认为是脉冲的数据*******/
for ( i=LEN;i>0;i--)
{
if(datas[i-1]>datas[pmax])
//记录数组中最大值的下标
pmax=i-1;
if(datas[i-1]<datas[pmin])
//记录数组中最小值的下标
pmin=i-1;
}
average=average-datas[pmax]-datas[pmin];
//减去脉冲
return (average>>SHIFT);
//求算术平均值
}
设计中需要注意的问题
单片机连接多个外围芯片时需要注意几个问题,首先要保证这几个外设的使能有效信号绝对区分开来,通过CPLD译码产生片选来激活不同的外设,否则多个外设的数据就会同时出现在数据总线上,造成数据冲突,接受错误,其次要从地址上区分开对外部设备寄存器的读写操作,同一时刻不能对多个外设进行读或写操作。
由于AD7888是高分辨率的ADC,因而电源的耦合电路尤为重要。因此在印制电路板设计时,应对所有的模拟电源输入加一级去耦电路,即用10μF钽电容和0.1μF陶瓷电容并联到地。这些去耦电路的元件应尽可能靠近芯片的电源引脚,这样才能获得更好的去耦效果,并消除引线过长带来的干扰。
本系统介绍的技术已在高稳定度激光器多路监测中得到了应用,它不但提高了系统抗干扰性和数据的测量精度,而且由于结构简单也给维护带来了便利。
本文关键字:激光器 激光技术,电子知识资料 - 激光技术
上一篇:数字激光告警系统探测接收前端设计