资源描述:
《ADC转换电压转化成温度》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include"msp430x14x.h"#defineuintunsignedint#defineucharunsignedchar#defineulongunsignedlong//共阳数码管编码表ucharCode[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段选ucharseg[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//ucharBit[4]={0x01,0x02,
2、0x04,0x08};//位选ucharBitCode=0x80;//数码管位码初值uintADCBuf[20]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};//保存采集到的数据ulongSum=0;//20个数据的和doubleTBuf=0;ucharCount=0;inta=0,b=0,c=0,d=0;//时钟初始化函数voidInitClock(void){BCSCTL1=RSEL2+RSEL1+RSEL0;//XT2开启LFXT1工作在低频模式ACLK不分频最高的标称频率
3、DCOCTL=DCO2+DCO1+DCO0;//DCO为最高频率do{IFG1&=~OFIFG;//清除振荡器失效标志for(uinti=255;i>0;i--);}while(IFG1&OFIFG);//判断XT2是否起振BCSCTL2=SELM1+SELS;//MCLKSMCLK时钟源为TX2CLK不分频}//ms级延时子程序voidDelayMs(uintms){while(ms--){for(uinti=0;i<800;i++);}}//数码管扫描显示程序voidDisplay(void){P4OUT=Code
4、[a];P5OUT=Bit[0];for(uinti=0;i<100;i++);P4OUT=seg[b];P5OUT=Bit[1];for(uinti=0;i<100;i++);P4OUT=Code[c];P5OUT=Bit[2];for(uinti=0;i<100;i++);P4OUT=Code[d];P5OUT=Bit[3];for(uinti=0;i<100;i++);}//ADC12初始化voidInitADC12(void){/*P6SEL
5、=0x01;ADC12CTL0&=~ENC;//ENC设置为0从而修
6、改ADC12寄存器ADC12MCTL0=INCH_0+SREF_0;//参考电压为VREF+和AVss输入温度传感器ADC12CTL1=CSTARTADD_0+SHP+CONSEQ_2+ADC12SSEL_1+ADC12DIV_0;//起始地址ADCMEM0,采样脉冲由采样定时器产生,单通道多次转换,内部时钟源不分频ADC12CTL0=MSC+ADC12ON+REFON;//采样信号由SHI仅首次触发,打开ADC12模块VREF打开1.5V//ADC12CTL0=ENC;*/ADC12CTL0=SHT0_2+ADC12
7、ON;//Setsamplingtime,turnonADC12ADC12CTL1=SHP;//Usesamplingtimer//ADC12IE=0x01;//EnableinterruptADC12CTL0
8、=ENC;//ConversionenabledP6SEL
9、=0x01;//P6.0ADCoptionselect}//计算电压值voidGetT(void){for(uchari=0;i<20;i++)Sum+=ADCBuf[i];TBuf=(Sum*3.3)/(20*4095)*18.64;//计算电压1.
10、5为外部参考电压Sum=0;//计算数码管各位要显示的数值a=(int)TBuf%100/10;b=(int)TBuf%10;TBuf=TBuf-(int)TBuf;TBuf=TBuf*100;c=(int)TBuf/10;d=(int)TBuf%10;}//定时器A初始化voidInitTimerA(void){TACTL=TASSEL1+ID1+ID0+MC0+TACLR;//选择1/8SMCLK增计数清除TARCCTL0=CCIE;//CCR0中断允许比较模式CCR0=20000;//时间间隔20ms}voidb
11、aojing(){if(a>=4){P2OUT
12、=0x01;P2OUT
13、=0x02;}}voidmain(){unsignedchari;WDTCTL=WDTPW+WDTHOLD;//关闭看门狗P4DIR
14、=0xFF;P5DIR
15、=0xFF;P2DIR
16、=0xFF;InitClock();//时钟初始化函数InitTimerA()