您当前的位置:五五电子网电子知识单片机-工控设备MSP430单片机msp430温度测量(已调试OK) 正文
msp430温度测量(已调试OK)

msp430温度测量(已调试OK)

点击数:7942 次   录入时间:03-04 11:42:55   整理:http://www.55dianzi.com   MSP430单片机

#include <MSP430x12x2.h>
#define TEM_ADC_CHL 0x0a
void InitSys(void);
void Read_ADC(unsigned int INCH_channel);
void ADC_TO_TEM(void);
unsigned int ADC_sample_val;
unsigned int long temp1,temp2;
unsigned int long IntDegC;
unsigned int long IntDegF;
void main(void)
{
    InitSys();
        while(1)
    {
        Read_ADC(TEM_ADC_CHL);
        ADC_TO_TEM();
    }          
}
void InitSys(void)
{
    // INIT SYSTEM CLKS(ACLK AND DCO/MCLK)
    WDTCTL  = WDTPW+WDTHOLD;         //关闭看门狗 
   
    BCSCTL1 = 0x87;                  //ACLK 分频系数是1,内部电阻选7
    DCOCTL = 0xe0;                     //设置DCO输出时钟频率5MHz
    BCSCTL2 = SELM_0;                //选择MCLK为DCOCLK,内部电阻
    ADC10CTL1 |= 0x08;               // 转换时钟为ACLK
    ADC10CTL0 = SREF_1 + ADC10SHT_0 + REFOUT + REFON + ADC10ON;
                                       //选择内部电压1.5V,采样时间4XADC10CLKS
}
void Read_ADC(unsigned int INCH_channel)
{
    unsigned int tmp;
    ADC10CTL0 &= ~ENC;               
    tmp = ADC10CTL1;
    tmp &= 0x0fff;
    tmp |= (INCH_channel<<12);
    ADC10CTL1 = tmp;
    ADC10CTL0 |= ENC + ADC10SC;
  
    while(ADC10CTL1 & ADC10BUSY)
    {}
    ADC_sample_val = ADC10MEM;
    ADC10CTL0 &= ~ENC;               
}
void ADC_TO_TEM(void)
{
     
    //oC = ((A10/1024)*1500mV)-986mV)*1/3.55mV = A10*423/1024 - 278
    temp1 = ADC10MEM;
    IntDegC = ((temp1 - 673) * 423) / 1024;
    
    // oF = ((A10/1024)*1500mV)-923mV)*1/1.97mV = x*761/1024 - 468 
    temp2 = ADC10MEM; 
    IntDegF = ((temp2 - 630) * 761) / 1024; 
}





本文关键字:测量  MSP430单片机单片机-工控设备 - MSP430单片机