本帖最后由 shifanghui 于 2015-1-18 11:01 编辑
请教大家一些关于计算机控制技术方面的一些问题:
1、一阶RC低通滤波
把幅值为1V的1HZ交流干扰信号衰减为1/100,已知R14=10K,那么C怎么取?那么截止频率是不是<=0.1,再根据截止频率算出电容C的一个最小值?
2、滤波电路前面的两个放大电路怎么理解?为什么要对信号这么处理?
3、DAC0808输出为什么又有放大电路?
这个是程序(功能是,数码管前三位显示滤波前电压,后三位显示滤波后电压):
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit START=P2^1;
sbit EOC=P2^3;
sbit OE=P2^2;
sbit ADDA=P2^4;
sbit ADDB=P2^5;
sbit ADDC=P2^6;
uchar code dulatab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x80};//共阴码
uchar code welatab[]={0x3e,0x3d,0x3b,0x37,0x2f,0x1f};
uchar buff[6];
void delay(uchar time)//延时
{
uchar i,j;
for(i=0;i<time;i++)
{
for(j=0;j<110;j++)
;
}
}
void init()//初始化
{
P3=0xff;
START=0;
OE=0;
EOC=0;
}
void write1(uchar num)//0x转实际电压值
{
uint vol;
vol=(long)500*num/255;
buff[0]=vol/100;
buff[1]=vol%100/10;
buff[2]=vol%10;
}
void write2(uchar num)//0x转实际电压值
{
uint vol;
vol=(long)500*num/255;
buff[3]=vol/100;
buff[4]=vol%100/10;
buff[5]=vol%10;
}
void disp(void)
{
P3=welatab[0];
P0=dulatab[buff[0]];
delay(4);
P0=dulatab[10];
delay(4);
P3=welatab[1];
P0=dulatab[buff[1]];
delay(4);
P3=welatab[2];
P0=dulatab[buff[2]];
delay(4);
P3=welatab[3];
P0=dulatab[buff[3]];
delay(4);
P0=dulatab[10];
delay(4);
P3=welatab[4];
P0=dulatab[buff[4]];
delay(4);
P3=welatab[5];
P0=dulatab[buff[5]];
delay(4);
}
uchar adin(void)//读取adc转换结果
{
uchar value;
OE=0;
EOC=1;
START=0;
START=1;
START=0;
while(!EOC)
;
// delay(10);
OE=1;
// delay(1);
value=P1;
OE=0;
return value;
}
void main()
{
uchar in;
init();
while(1)
{
ADDA=0;
ADDB=0;
ADDC=0;
in=adin();
write1(in);
ADDA=1;
ADDB=1;
ADDC=1;
in=adin();
write2(in);
disp();
}
}
|