[MSP430]实战 ADC使用, 内部测温使用

首先说说问题, 感觉这个Code Compose Studio 比较奇怪

#include "TFT\TFT_Driver.h"

找不到文件, 无法打开

没有include 仅在同一工程下就可以使用函数

每次运行程序结果不同

下面给出一个使用ADC的实例:

ADC初始化函数:

void ConfigureAdcTempSensor(void)
{
  /* Configure ADC Temp Sensor Channel */
	  ADC10CTL1 = INCH_10 + ADC10DIV_0 + CONSEQ_2;         // Temp Sensor ADC10CLK/4

	ADC10CTL0 = SREF_1 + ADC10SHT_3 + MSC + REFON + ADC10ON + ADC10IE;
 // __delay_cycles(1000);                     // Wait for ADC Ref to settle
  ADC10DTC1=0xfe;

  ADC10CTL0&=~ENC;
  while(ADC10CTL1&BUSY);
  ADC10SA=0x0200; //(unsigned int)tempMeasured;
  //data buffer start

  ADC10CTL0 |= ENC + ADC10SC;               // Sampling and conversion start
  __bis_SR_register(CPUOFF + GIE);          // LPM0 with interrupts enabled
  tempAverage = tempMeasured[0];
  tempCalibrated= tempAverage;
}

对于ADC10CTL1的配置,  如果你只采集一个那么就是CONSEQ_2,  使用内部测温就是INCH_10

想要知道更多的操作寄存器的DEFINE 你需要在 MSP430G25XX.h 里面 以及 User Guide 中进行对照

DTC 某种程度上可以控制采样速度

ADC10SA 是start Address , 我使用0x0200 是因为我知道我采集数据的起始地址是它,

在你的loop中需要加入这两行代码使得模拟值持续更新

    ADC10CTL0 |= ENC + ADC10SC;             // Sampling and conversion start
    __bis_SR_register(CPUOFF + GIE);        // LPM0 with interrupts enabled

第二句话是指, 让系统进入休眠状态, 降低功耗,  这时候我们的CPU是停止工作的,  进入中断

中断函数:

// ADC10 interrupt service routine
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR (void)
{
  __bic_SR_register_on_exit(CPUOFF);        // Return to active mode
}

这里面只有一句话,  它的意思是结束休眠状态,  进入工作

时间: 2024-10-11 22:19:12

[MSP430]实战 ADC使用, 内部测温使用的相关文章

DS18B20测温原理及逻辑时序

DS18B20测温原理: 图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入, DS18B20内部的低温度系数振荡器是一个振荡频率随温度变化很小的振荡器,为计数器1提供一频率稳定的计数脉冲. 高温度系数振荡器是一个振荡频率对温度很敏感的振荡器,为计数器2提供一个频率随温度变化的计数脉冲. 初始时,温度寄存器被预置成-55℃,每当计数器1从预置数开始减计数到0时,温度寄存器中寄

利用单片机实现极简单的测温电路(转)

源:http://www.sinochip.net/TechSheet/67.htm 参考:http://www.docin.com/p-281643435.html 利用单片机实现极简单的测温电路 单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测和温度控制,但那些温度检测与控制电路通常较复杂,成本也高,本文提供了一种低成本的利用单片机多余I/O口实现的温度检测电路,该电路非常简单,且易于实现,并且适用于几乎所有类型的单片机.其电路如下图所示: 图中: P1.0.P1.

MSP430之ADC采集滤波

占位符 1 /* 加权平均滤波 */ 2 static unsigned char coe[13] = {1,2,3,4,5,6,7,8,9,10,11,12,13}; 3 static unsigned int coeSum= 1+2+3+4+5+6+7+8+9+10+11+12+13; 4 unsigned long temp = 0; 5 6 for (i = 0; i<ADCN; i++) 7 { 8 temp += arr[i]*coe[i]; 9 } 10 temp = (unsig

燃太TN901红外测温模块LCD1602显示

山远的博客 学以致用 首页 旧版 首页 标签 留言本 单片机 文学 趣闻 美图 C#编程 燃太TN901红外测温模块LCD1602显示 燃太TN901红外测温模块LCD1602显示,可设置高温低温报警. 手工焊接电路板,使用STC89C52RC 单片机控制,红外测温模块非接触式测温. 可以设置高温和低温报警. 测量温度超出范围,蜂鸣器发出声音报警,两个指示灯分别表示高温和低温. Tags: TN901 红外测温模块 LCD1602 温度报警

Arduino 负温度系数热敏电阻(NTC)测温

一直都用NTC作为温度传感器来测温,采用Arduino没有现成的例子用NTC测温的,LM35D温度传感器,这款传感器能够测量0-100摄氏度的温度,并以电压的数值输出.从0度开始温度每升高1度输出电压就会提高10mv.而NTC则不然,NTC根据温度变化产生电阻阻值变化,而且是非线性的变化,这就需要用上拉电阻或下拉电阻来选择分辨率较好的区间. #define Pot A2 //电位器引脚命名 int PotBuffer = 0; //AD读取数据缓存变量 void setup() { Serial

千万别相信鲁大师的硬件测温和CPU测温功能!!

很多人本来随手安装的一个软件, 相信也信任得过它 , 这下让我测试对它失望了,没想到鲁大师这个测温功能实在太搓了!! 白白浪费了我一晚上,  搞来了硅胶 ,弄了几遍  , 还是一样, 还以为买了水货 !!就差点换风扇了 . 后来才发现是鲁某的问题 ! ψ(╰_╯) 不多说 直接上专业软件 AIDA64 和 Real Temp 与 鲁大屎 的真相对比图 ! 鲁某已经上90度报警 , 而身边两个软件还是50度左右. 这个是最新版的, 另外我换了一个老版本也同样有这个问题 . 搞了一晚上,  以后再也

测温补偿测试程序

#include<stdio.h>#include<math.h>#define uchar unsigned char#define R1 10000 // the value of standard resistor is 10000#define c 0.0001// theroy current#define Vref 2.5//refrence voltage#define PGA 2//gain char *Hex="0123456789ABCDEF"

基于51单片机的无线测温系统

本51项目基于STC89C52MCU,温度传感器为DS18B20,显示模块用的是LCD1602,无线模块用的是Nodemcu. 项目用到的编程语言:C,C++,Lua. 实现思路是这样,DS18B20测温,然后数据串行传送给51单片机,然后51通过串口将数据传送给Nodemcu,Nodemcu通过其WIFI模块将数据发送给上位机,上位机上的程序是用Qt编写的GUI.(这里无线传输采用的是无连接的UDP协议) 1.DS18B20温度测量模块 DS18B20是单总线器件,所以时序要求非常严格,程序编

基于51单片机DS18B20测温LCD1602显示可设时设温调时的项目

一.前言 1.基于51单片机DS18B20测温LCD1602显示可设时设温调时的项目包括用Keil软件编写单片机C语言程序和用Proteus软件仿真单片机外围电路 2.基于51单片机DS18B20测温LCD1602显示可设时设温调时的项目构思 (1).声明程序变量思维导图 (2).程序子函数思维导图 (3).程序主函数思维导图 二.基于51单片机DS18B20测温LCD1602显示可设时设温调时的项目的Keil软件编写的单片机C语言程序 1 #include<reg52.h>//声明51单片机