历史上的今天
返回首页

历史上的今天

今天是:2025年05月07日(星期三)

正在发生

2019年05月07日 | MSP430的ADC转化+均值滤波

2019-05-07 来源:eefocus

由于各种干扰,MSP430在进行ADC转化时总会出现波动,为了提高数据的可靠性,可以进行软件滤波,其中均值滤波操作简单,效果良好:


//******************************************************************************

//  MSP-FET430P140 Demo - ADC12, Using the Internal Reference

//

//  Description: 

//

//

//                MSP430F149

//             ---------------

//            |               |

//     Vin -->|P6.0/A0        |

//            |               |

//

//

//  M. Mitchell

//  Texas Instruments Inc.

//  Feb 2005

//  Built with IAR Embedded Workbench Version: 3.21A

//******************************************************************************

 

#include 

#include"lcd.h"

#include"adc.h"

int meanValueFilter(void);

void DelayXms(unsigned int i);      //delay about x ms

void int2charsLcdshow1(int value);   //LCD show a value from 0 to 9999

void int2charsLcdshow2(int value);   //LCD show a value from 0 to 9999

 

    

 

void main(void)

{

  

   int adcValue1,adcValue2;

   WDTCTL = WDTPW+WDTHOLD;                   // Stop watchdog timer

   LcdReset();                               //initialize the lac1602

   while (1)

   {

   

    adcValue1 = meanValueFilter();

    

    adcValue2 = GetAdcValue2();

    int2charsLcdshow1(adcValue1);

    int2charsLcdshow2(adcValue2);

   

    DelayXms(500);

    

   }

}

void DelayXms(unsigned int i){

    unsigned int j;

    for( ; i>0; i--){

      for(j=0;j<200;j++); 

    }

  

}

/****************************************************************************

*函数名: int2charsLcdshow1(void)                                               /

*作用  :将AD转化的结果,在LCD1602上进行显示                                   /

*返回值:无                                                                    /

*参数  :int                                                                   /

*作者  :Zhenhua Liu                                                           / 

*时间  :2017.12.08                                                            / 

*******************************************************************************/

void int2charsLcdshow1(int value){

   int bits=0,ten = 0,hundred = 0,thousand = 0;   

   thousand = value/1000;

   hundred  = value%1000/100;

   ten = value%100/10;

   bits = value%10;

   Disp1Char(0,0,thousand+'0');

   Disp1Char(1,0,hundred+'0');

   Disp1Char(2,0,ten+'0');

   Disp1Char(3,0,bits+'0');

}

void int2charsLcdshow2(int value){

   int bits=0,ten = 0,hundred = 0,thousand = 0;   

   thousand = value/1000;

   hundred  = value%1000/100;

   ten = value%100/10;

   bits = value%10;

   Disp1Char(0,1,thousand+'0');

   Disp1Char(1,1,hundred+'0');

   Disp1Char(2,1,ten+'0');

   Disp1Char(3,1,bits+'0');

}

/****************************************************************************

*函数名: meanValueFilter(void)                                                /

*作用  :启动ADC转化之后,将采集到的10次AD数据进行求和平均,均值滤波          /

*返回值:int型                                                                /

*参数  :无                                                                   /

*作者  :Zhenhua Liu                                                          / 

*时间  :2017.12.08                                                           / 

*****************************************************************************/

int meanValueFilter(void){

    unsigned int i;

    float sum=0;

    int meanvalue=0;

    for(i=0;i<10;i++){

       sum+=GetAdcValue1();

    }

    meanvalue = sum/10.0;           //隐式类型转化,flozt->int                             

    return meanvalue;

}

推荐阅读

史海拾趣

CINTERION公司的发展小趣事

CINTERION的前身可追溯到西门子于1995年创建的无线模块业务。在成立之初,该公司便专注于工业用机器对机器(M2M)无线通信模块的研发与生产。随着技术的不断进步,CINTERION逐渐在行业内崭露头角,其产品在智能电网、汽车、公用事业等领域得到了广泛应用。1996年,CINTERION成功推出了全球第一款蜂窝模组,这一创新为公司在无线通信模组市场打下了坚实的基础。

Chemtronics公司的发展小趣事

1999年,Chemtronics迎来了一个重要的转折点,成为Illinois Tool Works Inc的全资子公司。这一变化为Chemtronics带来了更多的资源和支持,使其能够进一步扩大生产规模、提升研发能力,并在全球范围内拓展业务。

Deutron Electronics Corp公司的发展小趣事

Deutron Electronics Corp的创立之初,就致力于通过技术创新在电子行业中立足。公司创始人是一位资深的电子工程师,他带领研发团队开发出了当时市场上领先的半导体芯片。这一技术突破不仅为公司赢得了第一笔大额订单,也为后续的产品线扩展奠定了坚实的基础。随着技术的不断进步,Deutron Electronics Corp逐渐在半导体领域树立了技术领先的形象。

CWIND公司的发展小趣事

CWIND公司非常重视人才培养和团队建设。公司建立了完善的培训体系,为新员工提供全面的职业技能培训;同时,公司还鼓励员工参与各种技术交流和培训活动,提升自身的技术水平。在团队建设方面,CWIND注重营造积极向上的工作氛围和团队合作精神。通过定期举办团队建设活动和员工表彰大会等方式,公司成功打造了一支高效、协作、创新的团队。

Astron Wireless Technologies Inc公司的发展小趣事

Astron Wireless Technologies Inc公司在成立初期,面临着激烈的市场竞争和技术瓶颈。然而,公司的研发团队通过不懈努力,成功开发出一款具有创新性的无线通信协议,大大提高了数据传输的效率和稳定性。这一技术突破迅速赢得了市场的认可,公司开始获得大量的订单,实现了初步的市场突破。

Greenconn Corp公司的发展小趣事
如果以上方法均无法解决问题,可能是断电保护器本身损坏,需要更换与冰箱型号匹配的新保护器。

问答坊 | AI 解惑

挖芯币活动每次最多能挖到多少芯币?

挖芯币活动每次最多能挖到多少芯币?…

查看全部问答>

三角形接法的电机在运行中开路。瞬间开路电压上多少

我单位发生一起越级跳闸。低压和高压都跳了,检查结果现场发现是一台75KW的电机角形开路所至。控制该电机电子开关发现进线空开有大量弧光烧黑。可控硅电源和阻容吸收电路炸断。电路绝缘全部破坏。请教一下各位同仁。是否是电机在运行过程中。外控没 ...…

查看全部问答>

求购开发板

需要嵌入式Linux与VxWorks开发板各一块,最好CPU频率400MHz以上, 必须带BSP支持。最好带完整的嵌入式Linux系统。VxWorks开发板支持WindML. 有意者请联系:010-51615759 邮箱:ancring.hk@163.com …

查看全部问答>

请高手帮忙: 在C代码中嵌入读ARM CPU ID 问题

当本人把以下代码嵌入到C文件中         __asm        {                 MRC p15,0,r10,c0,c0,0;         } 编译出错的信息为: War ...…

查看全部问答>

高手请进,如何获取 ALT 组合键 ?

我的代码如下: if(uVirKey == VK_NUMPAD0 ) { int i = GetKeyState(VK_MENU) ; if( i < 0 ) dosomething(); } 为什么不能截取组合键?谢谢!…

查看全部问答>

jtaq 超级郁闷 求助啊。。。。

我想问一下 我做了一个430的板子 5跟线 连到14管脚的插针上 但是计算机不能识别 是什么问题呢?…

查看全部问答>

菜鸟求解。。请问msp430g2231的工作电压只要是1.8到3.6v都行吗?

如题,就是vcc应该接多少v呢? 另外io口的输出电压又是多少啊。。。。入门级菜鸟望指教…

查看全部问答>

如果把单片机C51学好了,再应该去学什么啊

如果把单片机C51学好了,再应该去学什么啊…

查看全部问答>