ad.c

来自「基于MSP430的长度测量 包括16*2液晶程序」· C语言 代码 · 共 73 行

C
73
字号
#include "AD.h"
#include "KEY.h"
#include "LCD.h"
#include "stdio.h"
int ad(void)
{
      P6SEL|=0X02;
      ADC12CTL0=ADC12ON+SHT0_2+MSC;
      ADC12CTL1=SHP+CSTARTADD_1;  
      ADC12MCTL1=SREF_2+INCH_1;
      ADC12CTL0|=ENC;
      ADC12CTL0|=ADC12SC;
      while((ADC12IFG&(ADC12BUSY<<1))==0); 
      return ADC12MEM1;
 }
void measure()
{ 
      
   double res=0;
   char buf[20],i;
   unsigned int data=0;
   data=averg();
      
  for(i=0;i<45;i++)
  {
    if( Data_Ram[i]<=data && data<=Data_Ram[i+1])   
    {res= ((2.0/(Data_Ram[i+1]-Data_Ram[i])*(data-Data_Ram[i])+2.0*i));
      break;}
    else if(data>Data_Ram[45]) 
    { lcd_moveto(20);
      lcd_string("error           ");
    }
  }

      /*sprintf(buf,"%s%d","result is:",data);
      lcd_moveto(0);
      lcd_string(buf);*/
      sprintf(buf, "Length:%0.2f mm", res);
      lcd_moveto(0);
      lcd_string(buf);
      
}


int averg()
{   unsigned char flag=1,i;
    long int sum=0,test_value[20]={0},buf=0;
    for(i=0;i<20;i++)
    {
        test_value[i]=ad();
    }
    for(unsigned char i=0;i<20;i++)
    {
      if(flag==0)break;
      flag=0;
      for(unsigned char j=0;j<(19-i);j++)
      {
        if (test_value[j]>test_value[j+1])
        {
          buf=test_value[j];
          test_value[j]=test_value[j+1];
          test_value[j+1]=buf;
          flag=1;
        }
      }
    }
    for(i=6;i<16;i++)
    {
     sum+=test_value[i]; 
    }
     sum=sum/10;  
    return sum;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?