⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 温度.c

📁 是基于MSP430F449的温度报警的c程序
💻 C
字号:
#include "msp430x44x.h" // 包含头文件 
#include <math.h> //包含数学运算头文件 
#define Trt 25 //预先测量到的室温 
#define Th 50 //高温告警温度 
#define Tl 0 //低温告警温度 
int i=0, k=0,Vrt; //定义全局变量 
int ADC_Result[16]; 
float T; //测量到的温度 
void init(void); //初始化函数 
void ADC12(void); //A/D转换函数 
void Alarm(float t); //告警处理函数 
void init(void) 
{ 
TACTL=TASSEL1+TACLR+MC_0+TACLR; //定时器初始化,工作在"up"模式 
CCTL0|=CCIE; //使能CCR0中断 
CCR0=0x0FF; //设定定时值 
_EINT(); //打开中断 
P2DIR|=BIT0+BIT1; //P2.0和P2.1为告警输出; 
} 
void ADC12(void) 
{ 
ADC12CTL0 &=~ ENC; //在进行设置时首先复位ADC的转换使能 
ADC12CTL0 = ADC12ON+REF2_5V+SHT0_8+REFON; //采用内部2.5V参考,打开通道10REFON自动打开 
ADC12CTL1 = SHP+ADC12SSEL_2; //上升沿采样,主时钟,MEM0 
ADC12MCTL0 = EOS + INCH_10+SREF_1; //选择通道10,Vref+为参考电压,进行温度测量 
ADC12CTL0 |= ENC; 
ADC12CTL0 |= ADC12SC; // 开始转换 
if ((ADC12IFG & BIT0)==1) //如果转换完毕,读走数据 
ADC_Result[i]=ADC12MEM0; 
} 
void Alarm(float t) 
{ 
if(t>=Th) 
P2OUT|=BIT1; //高温告警 
else if(t<=Tl) 
P2OUT|=BIT0; //低温告警 
else 
P2OUT&=~(BIT0+BIT1); //无告警 
} 
interrupt[TIMERA0_VECTOR] void Timer_A (void) //中断处理子程序// 
{ 
int ADC_Sum=0; 
float Vst; 
for (i=0;i<16;i++) //连续进行16次转换,提高精度 
{ 
ADC12(); 
ADC_Sum +=ADC_Result[i]; //求和 
} 
ADC_Sum>>=4; //将ADC_Sum右移4位,相当于除以16.得到平均的结果; 
Vst=( ADC_Sum /4095.0)*2500; //完成转换,得到电压值 
k++; 
#ifndef Trt 
T=(Vst-986)/3.35; //测出用0度作基准的温度 
#else 
if (k==1) Vrt=Vst; //如果定义Trt,则将第一次的转换结果作为室温下的Vrt 
T=(Vst-Vrt)/3.35+Trt; //测出用室温作基准时的温度 
#endif 
Alarm(T); //告警处理 
} 
void main (void) 
{ 
init(); //初始化 
LPM1; //进入低功耗模式1; 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -