4438|4

61

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

【求助】请问msp430芯片是否有温度传感器 [复制链接]

请问msp430芯片是否有温度传感器

最新回复

给你个例子程序参考参考吧,呵呵。 //****************************************************************************** //  MSP-FET430P120 Demo - ADC10 Sample A10 Temp and Convert to oC and oF   // //  Description; A single sample is made on A10 with reference to internal //  1.5V Vref. Software sets ADC10SC to start sample and conversion - ADC10SC //  automatically cleared at EOC. ADC10 internal oscillator/4 times sample //  (64x) and conversion. In Mainloop MSP430 waits in LPM0 to s××e power until //  ADC10 conversion complete, ADC10_ISR will force exit from any LPMx in //  Mainloop on reti. Temperaure in oC stored in IntDegC, oF in IntDegF. // //  Uncalibrated temperature measured from device to device will vary with //  slope and offset - please see datasheet. //  //*MSP430F1232 or MSP430F1132 Device Required*// // //                MSP430F1232 //             ----------------- //         /|\|              XIN|-   //          | |                 | //          --|RST          XOUT|- //            |                 | //            |A10              | // //  M.Buccini //  Texas Instruments, Inc //  January 2004 //  Updated for IAR Embedded Workbench Version: 2.21B //****************************************************************************** #include  <msp430x12x2.h> int long temp; int long IntDegF; int long IntDegC; void main(void) {   WDTCTL = WDTPW + WDTHOLD;             // Stop WDT   ADC10CTL1 = INCH_10+ADC10DIV_3;       // Temp Sensor ADC10CLK/4      ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE;      while(1)   {     ADC10CTL0 |= ENC + ADC10SC;         // Sampling and conversion start     _BIS_SR(CPUOFF + GIE);              // LPM0 with interrupts ena××ed    //  oF = ((A10/1024)*1500mV)-923mV)*1/1.97mV = A10*761/1024 - 468     temp = ADC10MEM;     IntDegF = ((temp - 630) * 761) / 1024;          //  oC = ((A10/1024)*1500mV)-986mV)*1/3.55mV = A10*423/1024 - 278     temp = ADC10MEM;     IntDegC = ((temp - 673) * 423) / 1024;              _NOP();                             // SET BREAKPOINT HERE   } } // ADC10 interrupt service routine #pragma vector=ADC10_VECTOR __interrupt void ADC10_ISR (void) {     _BIC_SR_IRQ(CPUOFF);                // Clear CPUOFF bit from 0(SR) }  详情 回复 发表于 2006-1-23 14:36
 
点赞 关注

回复
举报

50

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
有吧
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
MSP430FX14X可以采集温度,但是我觉得精度不怎么样,受场合限制。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

4
 
n多芯片都有,不过都不是十分精确的那种,毛估估的还可以
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

5
 
给你个例子程序参考参考吧,呵呵。
//******************************************************************************
// MSP-FET430P120 Demo - ADC10 Sample A10 Temp and Convert to oC and oF
//
// Description; A single sample is made on A10 with reference to internal
// 1.5V Vref. Software sets ADC10SC to start sample and conversion - ADC10SC
// automatically cleared at EOC. ADC10 internal oscillator/4 times sample
// (64x) and conversion. In Mainloop MSP430 waits in LPM0 to s××e power until
// ADC10 conversion complete, ADC10_ISR will force exit from any LPMx in
// Mainloop on reti. Temperaure in oC stored in IntDegC, oF in IntDegF.
//
// Uncalibrated temperature measured from device to device will vary with
// slope and offset - please see datasheet.
// //*MSP430F1232 or MSP430F1132 Device Required*//
//
// MSP430F1232
// -----------------
// /|\| XIN|-
// | | |
// --|RST XOUT|-
// | |
// |A10 |
//
// M.Buccini
// Texas Instruments, Inc
// January 2004
// Updated for IAR Embedded Workbench Version: 2.21B
//******************************************************************************

#include <msp430x12x2.h>
int long temp;
int long IntDegF;
int long IntDegC;

void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
ADC10CTL1 = INCH_10+ADC10DIV_3; // Temp Sensor ADC10CLK/4
ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE;

while(1)
{
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
_BIS_SR(CPUOFF + GIE); // LPM0 with interrupts ena××ed

// oF = ((A10/1024)*1500mV)-923mV)*1/1.97mV = A10*761/1024 - 468
temp = ADC10MEM;
IntDegF = ((temp - 630) * 761) / 1024;

// oC = ((A10/1024)*1500mV)-986mV)*1/3.55mV = A10*423/1024 - 278
temp = ADC10MEM;
IntDegC = ((temp - 673) * 423) / 1024;

_NOP(); // SET BREAKPOINT HERE
}
}

// ADC10 interrupt service routine
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR (void)
{
_BIC_SR_IRQ(CPUOFF); // Clear CPUOFF bit from 0(SR)
}
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表