我用的MSP430F235编的AD转换程序,得到的转换结果很不稳定。希望各位大虾帮帮忙。

2019-03-24 15:59发布

程序如下,主要用来调试新焊的板子上430的ad转换功能。 #include"MSP430x23x.h"
int AD_TEMP = 0;

/************************A/D转换初始化*********************/
void Init_Adc(void)
{
   P6SEL |= 0x08;                 //选择P6.3选择第二功能A3
   ADC12CTL0 |= ADC12ON + SHT0_2; //采样保持时间为16个ADC12CLK,采样时间4*t*4;
   ADC12CTL0 |= REF2_5V+REFON;    //给DAC用内部2.5V参考源

   ADC12CTL1 |= SHS_0 + SHP;              //SAMPCON信号选择为采样时序电路产生的信号
   ADC12CTL1 |= CSTARTADD_0;      //转换存储器地址位,选择单次转换的地址

  ADC12MCTL0 |= INCH_3+SREF_0;          //选择转换通道为A3

   ADC12CTL0 |= ENC;              //ADC转换允许
   ADC12CTL0 |= ADC12SC;
}

void main(void)
{
  float VD = 0.0;
 
  WDTCTL=WDTPW+WDTHOLD; //停止看门狗

  Init_Adc();

  while(1)
  {   
   P5OUT |= BIT1; P5OUT |= BIT2;
  
   ADC12CTL0 |= ADC12SC;
   while((ADC12IFG & BIT0)==0); //等待转换完成ADC12IFG.0
   for(int i = 1; i<500;i++)  {}   //加的小延时
 
   AD_TEMP = ADC12MEM0;        //读取存储器里的值
  
   VD= (float)(AD_TEMP)*2.5/4095;  //还原成模拟量
  
   if(VD>=0.5){P5OUT = 0x00;}    //无关紧要的部分,以前程序里的用于点亮指示灯的
   
  }
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
结果是模拟输入电压是1v时,AD_TEMP(即ADC12MEM0)的值为1294,1196,1365,1151,1138,1277.这好像根本不对。补充下,模拟输入量是直接与单片机管脚相连的,中间无其他部分。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
hfmutou
1楼-- · 2019-03-25 00:33
< 各位大神帮帮忙啊,拜谢
水货老手
2楼-- · 2019-03-25 01:18
< :TI_MSP430_内容页_SA7 --> 去耦电容接下
hfmutou
3楼-- · 2019-03-25 02:34
 精彩回答 2  元偷偷看……
jkhu
4楼-- · 2019-03-25 04:06
用示波器先看下,这个值应该是多少?还有您的信号是恒定值吗?还是个曲线?

一周热门 更多>

相关问题

    相关文章