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

📄 test26.c

📁 MSP430 F149的单片机 AD转换 便于相应计时器的操作
💻 C
字号:
/*这是一个简单的单通道多次转换程序的源代码,转换的精度
 *是小数点一位(很差,但是毕竟是开始)*/
#include<msp430x14x.h>

const unsigned char Seg[]={
	0x84,	//0
	0xbd,	//1
	0xe0,	//2
	0xb0,	//3
	0x99,	//4
	0x92,	//5
	0x82,	//6
	0xbc,	//7
	0x80,	//8
	0x90,	//9
	};
                      
void Delay(void);
	
void main(void)
{
	WDTCTL = WDTPW + WDTHOLD;
	P4DIR=0xff;
	P5DIR=0x0f;
	
	P6SEL = 0x01;	//P6引脚可以作8个模拟信号的输入引脚
	
	ADC12CTL0=ADC12ON+SHT0_2+REFON+REF2_5V;	//启用内部的参考电压2.5V
	ADC12CTL1=SHP+CONSEQ_2;	//SHP表示由采样信号触发采样定时器,CONSEQ_2采用单通道多次转换
	
	ADC12MCTL0=SREF_0;	//0-3.3V的范围 Vcc-Vss
   	ADC12MCTL0=INCH_0;	//选择模拟输入通道
   	ADC12IE|=BIT0;		//允许转换中断
   	
   	_EINT();
   	ADC12CTL0|=ENC+ADC12SC;	//开始转换
   	
   	for(;;);
}

#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR(void)
{
	char h,l,m,n;
	ADC12CTL0&=~ENC;	//关闭转换
	
	float result=(ADC12MEM0*3.3)/4096;
	h = (int)result;
	l = (int)(result*10)%10;
	m = (int)(result*100)%100;
	n = (int)(result*1000)%1000;
	
	/*本来下面的语句是想用循环来做的,其实也没有必要*/
	P5OUT = BIT0;
	P4OUT = Seg[h]&(~BIT7);
	Delay();
	
	P5OUT = BIT1;
	P4OUT = Seg[l];
	Delay();
	
	P5OUT = BIT2;
	P4OUT = Seg[m];
	Delay();
	
	P5OUT = BIT3;
	P4OUT = Seg[n];
	Delay();
	
	ADC12CTL0|=ENC+ADC12SC;//使能再次转换
}

void Delay(void)
{
	int i = 700;		//自己调出最适合的值
	while(i--);	
}

⌨️ 快捷键说明

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