1.求msp430单片机基于max262的滤波程序
#include"msp430fg4618.h"#define a0 BIT0#define a1 BIT1#define a2 BIT2#define a3 BIT3#define d0 BIT4#define d1 BIT5#define wr BIT6#define ctrlport P5OUT//addr的取值范围0-15,dat的取值范围0-3void max262writedat(uchar addr,uchar dat){ ctrlport=addr+dat*16; delay_us(5); ctrlport|=wr; delay_us(10);}//mode=M1M0,q=Q6Q5Q4Q3Q2Q1Q0,ratio=F5F4F3F2F1F0void max262setA(uchar mode,uchar q,uchar ratio){ max262writedat(0,mode-1); max262writedat(4,q&0x03);//Q1Q0 max262writedat(5,(q>>2)&0x03);//Q3Q2 max262writedat(6,(q>>4)&0x03);//Q5Q4 max262writedat(7,(q>>6)&0x03);//Q6 max262writedat(1,ratio&0x03);//F1F0 max262writedat(2,(ratio>>2)&0x03);//F3F2 max262writedat(3,(ratio>>4)&0x03);//F5F4}void max262setB(uchar mode,uchar q,uchar ratio){ max262writedat(8,mode-1); max262writedat(12,q&0x03);//Q1Q0 max262writedat(13,(q>>2)&0x03);//Q3Q2 max262writedat(14,(q>>4)&0x03);//Q5Q4 max262writedat(15,(q>>6)&0x03);//Q6 max262writedat(9,ratio&0x03);//F1F0 max262writedat(10,(ratio>>2)&0x03);//F3F2 max262writedat(11,(ratio>>4)&0x03);//F5F4}//初始化后滤波器A和B的参数:mode3(LP,BP,HP),Q=1,fclk/f0=40.84void max262init(){ P5DIR=0xff; ctrlport=0x00; max262setA(3,64,0); max262setB(3,64,0);}。
2.谁能给个低通滤波的程序
unsigned char temp[293][316];
for(int a=0;a <294;a++)
{
for(int b=0;b <317;b++)
{
if(a==0||a==293||b==0||b==316)
temp[a][b]=0;
else
temp[a][b]=(int)data11[(a-1)*315+(b-1)];
//cout < <(int)temp[a][b] < < " ";
}
}
double tem[2][2];
tem[0][0]=0.1;
tem[0][1]=0.1;
tem[0][2]=0.1;
tem[1][0]=0.1;
tem[1][1]=0.2;
tem[1][2]=0.1;
tem[2][0]=0.1;
tem[2][1]=0.1;
tem[2][2]=0.1;
for(a=0;a <292;a++)
{
for(int c=0;c <315;c++)
{
double quezhi=(int)temp[a][c]*tem[0][0]+(int)temp[a][c+1]*tem[0][1]+(int)temp[a][c+2]*tem[0][2]+(int)temp[a+1][c]*tem[1][0]+(int)temp[a+1][c+1]*tem[1][1]+(int)temp[a+1][c+2]*tem[1][2]+(int)temp[a+2][c]*tem[2][0]+(int)temp[a+2][c+1]*tem[2][1]+(int)temp[a+2][c+2]*tem[2][2];
if (quezhi <100)
data11[a*315+c]=0;
else
data11[a*315+c]=255;
}
}
我自己写的256色图象的低通滤波,可能有些乱,自己凑合看,我给出的只是滤波部分
3.基于msp430测量电容程序怎么写
测量电容不需要这么麻烦,可以使用SLOPE AD方式,TI有这样的例程,电容指触这个应用就是典型的例子,可以去/msp430里边找应用文档,会找到的,叫Capacitor Sence Touch什么的这类名字。
原理是,先将被测电容正极接在比较器的输入端上,负极接地,另外再占用一个IO,用一个容量比较大的电阻从这个IO接到电容正极上。
测量时,先将IO置高,用比较器判断是否达到一个指定的电压,比如Vref/2,然后就把IO置为低,并启动TA定时器,计量电放光所耗费的时间,就可以知道电容的容量是多少了,基于的公式就是t=0.7rc,那么已经得到了放电时间t还有所串电阻R,所以倒一下公式就可以算出C来了。至于不同档位,只是电阻的阻值不同。注意较大容量的电容测量时可能需要改成用两个IO,两个三极管或MOS管分别负责充电和放电,原理相同,只是控制逻辑有点区别。
转载请注明出处育才学习网 » msp430单片机低通滤波程序怎么写