数据采集和处理的部分
程序如下:
uintad 2543( uchar port)
{
Uint ad;
uint i ;
uchar al = 0 ,ah= 0 ;
CLOCK =0 ;
¬_CS= 0; /片选
nop(10) ;
for (i =0 ;i< 8;i+ +); /把通道号打入2543
{
ADDRESS=(bit)(port&0x80); //取最高位输出
nop(5 );
CLOCK =1 ; //高电平,产生一个上升沿,此时输入一位地址
nop(5 );
CLOCK =0 ;
nop(5);
port = port<<l; //左移一位,使下一位地址至最高位
}
for(i=O;i<4;i++); /填充4个CLOCK,此时正在进行AD转换
{
CLOCK =1;
nop(5 );
CLOCK = 0;
nop(5 );
}
_CS=1;
nop(10);
_CS=0: //等待AD转换
nop(10);
for (i=0;i<4;i++); 1/取D9,D8
{
CLOCK = l ;
nop(5 );
ah = ah << 1;
if( D_OUT)
ah = ah \0x01;
CLOCK = 0;
nop(5 );
}
for (i=0;i<8;i++); 取D7—D0
{
CLOCK = l ;
nop(5 );
a1= a l<< 1 ;
if( D_ OUT)
al =al\0x01;
CLOCK = 0 ;
nop(5 );
}
_CS=1;
nop(10);
/得到AD值
ad=(uint)ah;
ad = ad<<8;
ad = ad \(uint)al;
return ad;
}
算术平均滤波方法的部分程序为:
#define N 10
char filter()
{
int sum=0;
for ( count=O;count<N;count++)
{
Sum+ = get_ad ();
Delay();
}
return( char)(sum/N);
}