#include <msp430f5529.h>
#include"HAL_Dogs102x6.h"
#include<stdio.h>
long temp;
volatile long IntDegF;
volatile long IntDegC;
char buff1[];
char buff2[];
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗定时器
REFCTL0 &= ~REFMSTR; // 复位REFMSTR控制位以控制ADC12参考电压控制寄存器
ADC12CTL0 = ADC12SHT0_8 + ADC12REFON + ADC12ON;
// 打开ADC12,设置采样间隔,打开内部参考电压产生器,参考电压设置为1.5V
ADC12CTL1 = ADC12SHP; // 采样保持触发信号选择采样定时器
ADC12MCTL0 = ADC12SREF_1 + ADC12INCH_10; // A10通道作为输入,采样温度
ADC12IE = 0x001; // 使能ADC12IFG0中断
__delay_cycles(75); // 延时75us以使参考电压稳定
ADC12CTL0 |= ADC12ENC; // 使能转换
Dogs102x6_init();
Dogs102x6_backlightInit();
Dogs102x6_setBacklight(50);
//Dogs102x6_clearAllPixelsOn();
Dogs102x6_clearScreen();
while(1)
{
ADC12CTL0 |= ADC12SC; // 开始采样转换
__bis_SR_register(LPM4_bits + GIE); // 进入LPM4,并使能全局中断
IntDegC = ((temp - 1855) * 667) / 4096; // 采样结果转化为摄氏温度
IntDegF = ((temp - 1748) * 1200) / 4096;// 采样结果转化为华氏温度
sprintf(buff1,"temp=%d",IntDegC);
Dogs102x6_stringDraw(3,10,buff1,0);
__delay_cycles(1000000);
Dogs102x6_clearScreen();
__no_operation(); // 可在此处设置端点查看变量
}
}
#pragma vector=ADC12_VECTOR
__interrupt void ADC12ISR (void)
{
switch(__even_in_range(ADC12IV,34))
{
case 6: // Vector 6: ADC12IFG0
temp = ADC12MEM0; // 读取采样存储结果,自动清除中断标志位
__bic_SR_register_on_exit(LPM4_bits); // 退出低功耗模式
break;
default: break;
}
}
#include"HAL_Dogs102x6.h"
#include<stdio.h>
long temp;
volatile long IntDegF;
volatile long IntDegC;
char buff1[];
char buff2[];
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗定时器
REFCTL0 &= ~REFMSTR; // 复位REFMSTR控制位以控制ADC12参考电压控制寄存器
ADC12CTL0 = ADC12SHT0_8 + ADC12REFON + ADC12ON;
// 打开ADC12,设置采样间隔,打开内部参考电压产生器,参考电压设置为1.5V
ADC12CTL1 = ADC12SHP; // 采样保持触发信号选择采样定时器
ADC12MCTL0 = ADC12SREF_1 + ADC12INCH_10; // A10通道作为输入,采样温度
ADC12IE = 0x001; // 使能ADC12IFG0中断
__delay_cycles(75); // 延时75us以使参考电压稳定
ADC12CTL0 |= ADC12ENC; // 使能转换
Dogs102x6_init();
Dogs102x6_backlightInit();
Dogs102x6_setBacklight(50);
//Dogs102x6_clearAllPixelsOn();
Dogs102x6_clearScreen();
while(1)
{
ADC12CTL0 |= ADC12SC; // 开始采样转换
__bis_SR_register(LPM4_bits + GIE); // 进入LPM4,并使能全局中断
IntDegC = ((temp - 1855) * 667) / 4096; // 采样结果转化为摄氏温度
IntDegF = ((temp - 1748) * 1200) / 4096;// 采样结果转化为华氏温度
sprintf(buff1,"temp=%d",IntDegC);
Dogs102x6_stringDraw(3,10,buff1,0);
__delay_cycles(1000000);
Dogs102x6_clearScreen();
__no_operation(); // 可在此处设置端点查看变量
}
}
#pragma vector=ADC12_VECTOR
__interrupt void ADC12ISR (void)
{
switch(__even_in_range(ADC12IV,34))
{
case 6: // Vector 6: ADC12IFG0
temp = ADC12MEM0; // 读取采样存储结果,自动清除中断标志位
__bic_SR_register_on_exit(LPM4_bits); // 退出低功耗模式
break;
default: break;
}
}