打印

msp430用ADC10求平均值

[复制链接]
1998|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
waitingf|  楼主 | 2012-9-30 11:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "msp430f2122.h"

unsigned char key_value();
void main( void )
{   
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;

  while(1)
  {
    P1DIR |=0X80;
    key_value();
   }

}

unsigned char key_value()
{ unsigned char i,ad_value=0;
  ADC10CTL0 = SREF_1+REFON+REF2_5V+ADC10SHT_2 + ADC10ON;
  ADC10CTL1 = INCH_7+CONSEQ_2;
  ADC10AE0 |= 0x80;                    
  P1DIR |= 0x01;                     
  ADC10CTL0 |= ENC+ADC10SC;
  if (ADC10MEM*2.5/1023<2)
  {   
    P1OUT |=0X80;
    for(i=0;i<4;i++)
    {
     ADC10CTL0 |= ENC+ADC10SC;
     while (ADC10CTL1 & ADC10BUSY);
     ad_value=ad_value+ADC10MEM;
    }
    ad_value=ad_value/4;
  if(ad_value*2.5/1023>0.2)
    P1OUT |=0X01;
  else
    P1OUT &=~0X01;
  }
return ad_value;
}

相关帖子

沙发
waitingf|  楼主 | 2012-9-30 11:23 | 只看该作者
各位帮忙看下,主要是想按键检测,我这程序直接读取ADC10MEM能得到准确的电压值,但是转换4次求平均值,值就不正确,帮忙指点下

使用特权

评论回复
板凳
waitingf|  楼主 | 2012-9-30 11:23 | 只看该作者
不胜感激

使用特权

评论回复
地板
zhl100| | 2012-10-6 19:19 | 只看该作者
你试试先把转换值读出来,再操作

使用特权

评论回复
5
figo20042005| | 2012-10-6 21:10 | 只看该作者
转换后的值对不对

使用特权

评论回复
6
51xlf| | 2012-10-7 22:59 | 只看该作者
不太清楚,帮顶一下

使用特权

评论回复
7
smilingangel| | 2012-10-8 19:20 | 只看该作者
先读出ADC10MEM中的值到一数组中,然后求平均值就可以啦

使用特权

评论回复
8
happy啦啦啦| | 2012-10-8 19:55 | 只看该作者
就是把值先读出来试试看对不对,有可能前面就错了呢

使用特权

评论回复
9
xiemengqi| | 2012-10-8 20:25 | 只看该作者
4个10位的int型求平均,求和后再用>>2就行了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

104

主题

1138

帖子

3

粉丝