新人求罩!!MSP430内部的温度传感器温度无法显示到LCD上

2019-07-15 16:36发布

程序是MSP430F149的,现在想用在MSP430F437上,然后把内部温度传感器的温度显示在LCD上,不知道怎么做,求大神笼罩
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
Arubaaa
1楼-- · 2019-07-15 18:39
奉上代码
#include <msp430x43x.h>

unsigned int long temp;
unsigned int long TemperF;                                        //华氏温度
unsigned int long TemperC;                                        //摄氏温度
char digit[10]={0X5F,0X50,0X3D,0X79,0X72,0X6B,0X6F,0X51,0X7F,0X7B};
void main(void) {
    WDTCTL = WDTPW + WDTHOLD;                          //关闭系统看门狗
    ADC12CTL0 = SHT0_8 + REFON + ADC12ON;           //内部1.5V参考电压,打开ADC12模块,设置采样保持定时器
    ADC12CTL1 = SHP;                                               //采使用采样定时器
    ADC12MCTL0 = SREF_1 + INCH_10;                        //参考电压和通道选择
    ADC12IE = BIT0;                                                  //ADC12MEM0
    ADC12CTL0 |= ENC;                                              //允许转换

    _BIS_SR(GIE);                                                     //开启系统中断

    while(1) {
        ADC12CTL0 |= ADC12SC;                                  //开始采样并AD转换

        //oF = ((x/4096)*1500mV)-923mV)*1/1.97mV = x*761/4096 - 468
        //IntDegF = (ADC12MEM0 - 2519)* 761/4096
        TemperF = (temp - 2519) * 761;
        TemperF = TemperF / 4096;                            //简化的华氏温度转换公式

        //oC = ((x/4096)*1500mV)-986mV)*1/3.55mV = x*423/4096 - 278
        //IntDegC = (ADC12MEM0 - 2692)* 423/4096
        TemperC = (temp - 2692) * 423;
        TemperC = TemperC / 4096;                           //简化的摄氏温度转换公式
        //LCDMEM[0]=digit[temp/1000];
        //LCDMEM[1]=digit[(temp%1000)/100];
        //LCDMEM[2]=digit[(temp%100)/10];
        //LCDMEM[3]=digit[temp%10];
        _NOP();                                                         //加入断点可用来观察IntDegF和IntDegC结果
    }
}

#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR(void) {
    temp = ADC12MEM0;                                          //保存转换结果
}
aerwa
2楼-- · 2019-07-15 18:47
我的工程文件在公司里, 暂时帮不了你, 看到你中断里面没有打开 ADC采样内部温度电阻的 采样步骤啊。

一周热门 更多>