📄 adc12.c
字号:
/*************************************************************
* 文件名称:adc12.c
* 文件说明:adc12操作
*
*************************************************************/
#ifndef MSP430F449_H
#include <msp430x44x.h>
#endif
#ifndef LCD_IN_USE
#include "lcd.c"
#endif
#define REFVOL 2.5 //vcc参考设为2.5
unsigned char adc_Flag;
/************************************************************
* 初始化ADC12
************************************************************/
void init_ADC12(void)
{
ADC12CTL0 = ADC12ON + REFON + REF2_5V + SHT0_6;// 设置ADC12 的内部参考电压2.5伏
ADC12CTL1 = SHP; // 设置使用采样时钟
ADC12MCTL0 = INCH_10 + SREF_1; // 选择通道A10,即片内温度传感器输出
ADC12IE |= 0x01; // 使能中断
ADC12CTL0 |= ENC; // 使能转换
}
/***********************************************************
* 启动 ADC12
************************************************************/
void start_ADC12()
{
ADC12CTL0 |= ADC12SC;
adc_Flag = 0;
}
/***********************************************************
* 把数据编程要显示的格式,然后写到lcd_Buf中去
***********************************************************/
void format_Data()
{
int result;
unsigned char tmp;
result = ADC12MEM0;
result = ( int)(((REFVOL * result )/ 4096 - 0.986) /0.0000355); //得到对应的温度值*10,以包括小数两位 ;
for(tmp=0;tmp<7;tmp++)
{
lcd_Buf[tmp] = result % 10; //把结果转换成十进制,并存放在LCD缓冲区中
result = result /10; //
}
}
/***********************************************************
* 中断向量
************************************************************/
#pragma vector = ADC_VECTOR
__interrupt void ADC_Interrupt(void)
{
format_Data(); //格式化数据并显示到LCD
adc_Flag = 1; //指示有数据要显示
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -