MSP430F149的AD采样问题!!!!

2019-03-24 09:57发布

    你们谁知道msp430F149用多通道采样时为什么两个通道的采集电压会互相影响呢?




void ADC12(void)

{

  P6SEL |=0X03;  //使能ADC通道

  ADC12CTL0=ADC12ON+SHT0_15+MSC+REFON + REF2_5V;//打开ADC,设置采样时间,多次转换

  ADC12CTL1=SHP+CONSEQ_3;//使用采样定时器;多通道转换

  ADC12MCTL0 |=SREF_1+INCH_0;//通道选择

  ADC12MCTL1 |=SREF_1+INCH_1+EOS; //以EOS结束此次转换

  ADC12IE=0X03;//使能ADC中断

  ADC12CTL0 |=ENC+ADC12SC;//使能转换;开始转换



  _EINT();

}



/*ADC中断服务函数,各个通道转换值的存储*/

#pragma vector=ADC_VECTOR

__interrupt void ADC12ISR(void)

{

    k++;

    if(k==100) {k=0;}

    caltmp[k]=ADC12MEM0;

    caltmpp[k]=ADC12MEM1;

}



void xian_shi(void)

{

    int i,j ;

    ulong AVR0,AVR1;

    ulong sum0=0,sum1=0;

    for(i=0;i<100;i=i+2)

      sum0 += caltmp[i];

    AVR0 = sum0/50;

    //sum0=0;

    Temp=(AVR0*25000)/4096;          //计算十进制的电压值

    ptr[0]=(int)Temp/10000;            

    ptr[1]=(int)Temp%10000/1000;

    ptr[3]=(int)Temp%1000/100;

    ptr[4]=(int)Temp%100/10;

    ptr[5]=(int)Temp%10/1;

    ptr[6]=11;

    ptr[2]=10;

    LCD_write_com(0x88);

    DisplayCgrom(0x88,"电压:   ");

    for(i=0;i<7;i++)

    {

      delay_ms(100);

      LCD_write_data(shuzi[ptr[i]]);

     }



    for(j=1;j<100;j=j+2)

      sum1 += caltmpp[j];

    AVR1 = sum1/50;

    Temp=(AVR1*25000.0)/4096.0;

    ptr[0]=(int)Temp/10000;            

    ptr[1]=(int)Temp%10000/1000;

    ptr[3]=(int)Temp%1000/100;

    ptr[4]=(int)Temp%100/10;

    ptr[5]=(int)Temp%10/1;

    ptr[6]=11;

    ptr[2]=10;

    LCD_write_com(0x98);

    DisplayCgrom(0x98,"电压:   ");

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

    {

      delay_ms(10);

      LCD_write_data(shuzi[ptr[j]]);

     }

}

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

//      主程序

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

void main(void)

{

   WDT_Init();                 //看门狗设置

   Clock_Init();               //系统时钟设置

   Port_init();                //系统初始化,设置IO口属性

   delay_ms(100);              //延时100ms

   LCD_init();                 //液晶参数初始化设置

   LCD_clear();                //清屏

   ADC12();                    //ADC初始化

   delay_ms(100);

   DisplayCgrom(0X80,"傻人 有 傻福");

   DisplayCgrom(0x90,"神啊!救救我吧");

   while(1)

   {

     delay_ms(10);

     xian_shi();

   }



}



此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
heor小孩
2019-03-25 13:40
你为天涯 发表于 2015-7-30 13:44
我想用msp430测量外部电压   也就是当做万用表的功能   把测试的结果显示在1602的显示屏上  我应该怎么做啊 ...

  这个你直接把例程的就可以撒...................

一周热门 更多>

相关问题

    相关文章