MSP430内部温度传感器测试程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MSP430内部温度传感器测试程序
//MSP430基础实验开发组件 - ADC12内部模块演示程序之内部温度传感器
//时钟设置:
////ACLK = n/a, MCLK = SMCLK = default DCO ~ 800kHz, ADC12CLK = ADC12OSC //当前演示程序功能描述:
////利用MSP430F14X内部的温度传感器,通过ADC12的通道10进行AD转换
////计算取得摄氏温度和华氏温度,通过断点在View->Watch中观察温度值
////由于定标问题, 可能会存在温度的误差
#include
unsigned int long temp;
unsigned int long
TemperF;
//华氏温度
unsigned int long
TemperC;
//摄氏温度
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; //简化的摄氏温度转换公式
_NOP();
//加入断点可用来观察IntDegF和IntDegC结果
}
}
#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR(void) {
temp =
ADC12MEM0;
//保存转换结果
}