
MSP430單片機(jī)溫度測量源程序
介紹:源程序代碼主要包含初始化子程序InitSys()、ADC數(shù)據(jù)讀取子程序Read_ADC()、ADC數(shù)據(jù)轉(zhuǎn)換為溫度子程序ADC_TO_TEM()。
源程序調(diào)試OK
--------------------------------------------*/
#include
#defineTEM_ADC_CHL0x0a
voidInitSys(void);
voidRead_ADC(unsignedintINCH_channel);
voidADC_TO_TEM(void);
unsignedintADC_sample_val;
unsignedintlongtemp1,temp2;
unsignedintlongIntDegC;
unsignedintlongIntDegF;
voidmain(void)
{
InitSys();
while(1)
{
Read_ADC(TEM_ADC_CHL);
ADC_TO_TEM();
}
}
voidInitSys(void)
{
//INITSYSTEMCLKS(ACLKANDDCO/MCLK)
WDTCTL=WDTPW+WDTHOLD;//關(guān)閉看門狗
BCSCTL1=0x87;//ACLK分頻系數(shù)是1,內(nèi)部電阻選7
DCOCTL=0xe0;//設(shè)置DCO輸出時鐘頻率5MHz
BCSCTL2=SELM_0;//選擇MCLK為DCOCLK,內(nèi)部電阻
ADC10CTL1|=0x08;//轉(zhuǎn)換時鐘為ACLK
ADC10CTL0=SREF_1+ADC10SHT_0+REFOUT+REFON+ADC10ON;
//選擇內(nèi)部電壓1.5V,采樣時間4XADC10CLKS
}
voidRead_ADC(unsignedintINCH_channel)
{
unsignedinttmp;
ADC10CTL0&=~ENC;
tmp=ADC10CTL1;
tmp&=0x0fff;
tmp|=(INCH_channel<<12);
ADC10CTL1=tmp;
ADC10CTL0|=ENC+ADC10SC;
while(ADC10CTL1&ADC10BUSY)
{}
ADC_sample_val=ADC10MEM;
ADC10CTL0&=~ENC;
}
voidADC_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;
}


為了方便大家更好的學(xué)習(xí),您還可以關(guān)注暢學(xué)電子和EDA的公眾號,每天推送相關(guān)知識,希望能對你的學(xué)習(xí)有所幫助!

