新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > MSP430內(nèi)部溫度傳感器測試程序

        MSP430內(nèi)部溫度傳感器測試程序

        作者: 時間:2016-11-22 來源:網(wǎng)絡 收藏
        ////ADC12, Sample A10 Temperature and Convert to C and F

        //MSP430基礎實驗開發(fā)組件 - ADC12內(nèi)部模塊演示程序之內(nèi)部溫度傳感器
        //時鐘設置:
        ////ACLK = n/a, MCLK = SMCLK = default DCO ~ 800kHz, ADC12CLK = ADC12OSC
        //當前演示程序功能描述:
        ////利用MSP430F14X內(nèi)部的溫度傳感器,通過ADC12的通道10進行AD轉(zhuǎn)換
        ////計算取得攝氏溫度和華氏溫度,通過斷點在View->Watch中觀察溫度值
        ////由于定標問題, 可能會存在溫度的誤差


        #include <msp430x14x.h>

        unsigned int long temp;
        unsigned int long TemperF; //華氏溫度
        unsigned int long TemperC; //攝氏溫度
        void main(void) {
        WDTCTL = WDTPW + WDTHOLD; //關閉系統(tǒng)看門狗
        ADC12CTL0 = SHT0_8 + REFON + ADC12ON; //內(nèi)部1.5V參考電壓,打開ADC12模塊,設置采樣保持定時器
        ADC12CTL1 = SHP; //采使用采樣定時器
        ADC12MCTL0 = SREF_1 + INCH_10; //參考電壓和通道選擇
        ADC12IE = BIT0; //ADC12MEM0
        ADC12CTL0 |= ENC; //允許轉(zhuǎn)換

        _BIS_SR(GIE); //開啟系統(tǒng)中斷

        while(1) {
        ADC12CTL0 |= ADC12SC; //開始采樣并AD轉(zhuǎn)換

        //oF = ((x/4096)*1500mV)-923mV)*1/1.97mV = x*761/4096 - 468
        //IntDegF = (ADC12MEM0 - 2519)* 761/4096
        TemperF = (temp - 2519) * 761;
        TemperF = TemperF / 4096; //簡化的華氏溫度轉(zhuǎn)換公式

        //oC = ((x/4096)*1500mV)-986mV)*1/3.55mV = x*423/4096 - 278
        //IntDegC = (ADC12MEM0 - 2692)* 423/4096
        TemperC = (temp - 2692) * 423;
        TemperC = TemperC / 4096; //簡化的攝氏溫度轉(zhuǎn)換公式

        _NOP(); //加入斷點可用來觀察IntDegF和IntDegC結果
        }
        }

        #pragma vector=ADC_VECTOR
        __interrupt void ADC12ISR(void) {
        temp = ADC12MEM0; //保存轉(zhuǎn)換結果
        }


        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 吉安县| 河东区| 瑞丽市| 林芝县| 什邡市| 临潭县| 双桥区| 郯城县| 富宁县| 闸北区| 西充县| 渝北区| 宝兴县| 汕尾市| 叶城县| 广东省| 安乡县| 南投市| 黔南| 吉木乃县| 清新县| 大悟县| 钦州市| 临沧市| 中超| 富平县| 土默特左旗| 绥棱县| 左云县| 南投县| 汕尾市| 稻城县| 乐清市| 江山市| 宁海县| 西安市| 乳源| 耿马| 安平县| 乌兰察布市| 无棣县|