您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于MSP430的AD检测转换程序v1.0
#includemsp430x14x.h#defineuintunsignedint#defineucharunsignedcharconstuchartable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};voidPutString0(unsignedchar*p);voiddelay(uinti){uintx,y;for(x=i;x0;x--)for(y=110;y0;y--);}voiddisplay(ucharXRT){uintDisBuffer[3];DisBuffer[2]=XRT/100;DisBuffer[1]=(XRT%100)/10;DisBuffer[0]=XRT%10;P5OUT=table[DisBuffer[2]]&0x7f;P4OUT=0xef;delay(10);P5OUT=table[DisBuffer[1]];P4OUT=0xdf;delay(10);P5OUT=table[DisBuffer[0]];P4OUT=0xbf;delay(10);}voidInitADC12(void){ADC12CTL0&=~ENC;//ENC复位,才能设置CTL0的4~15位ADC12CTL0=ADC12ON+REFON+REF2_5V+SHT0_15;//开ADC,内部参考源ADC12CTL1=SHP+CONSEQ_0;//选择采样定时器为输入信号上升沿触发,采样信号源自采样定时器ADC12MCTL0=INCH_0;//在ENC=0时,才能修改寄存器各位,默认情况下为通道0ADC12IE|=0x01;//开中断,转换完成后触发中断_EINT();ADC12CTL0|=ENC;//ENC=1时,ADC12SC才能开始转换_NOP();}voidmain(void){WDTCTL=0x5A80;//关看门狗P4DIR=0xff;P4OUT=0xff;P5DIR=0xff;P5OUT=0xff;P6SEL|=0x01;//使能P6.0即A0通道InitADC12();while(1){PutString0(TheCurrentvoltageis:);//发送字符串”当前电压“ADC12CTL0|=ENC+ADC12SC;//PutString(buffer);//发送AD采集的电压}}/*******************************************函数名称:InitUART功能:初始化UART端口参数:无返回值:无********************************************/voidUartInit(void){ME1=URXE0+UTXE0;UCTL0|=SWRST;UCTL0|=CHAR;UTCTL0|=SSEL0;UBR00=0x03;//设置波特率UBR10=0x00;UMCTL0=0x4A;UCTL0&=~SWRST;IE1|=URXIE0;//使能接收中断}/*******************************************函数名称:Send1Char功能:向PC机发送一个字符参数:sendchar--要发送的字符返回值:无********************************************/voidSend1Char(ucharsendchar){while(!(IFG1&UTXIFG0));//等待发送寄存器为空TXBUF0=sendchar;}/*******************************************函数名称:PutSting功能:向PC机发送字符串并换行指令参数:ptr--指向发送字符串的指针返回值:无********************************************/voidPutString(uchar*ptr){while(*ptr!='\0'){Send1Char(*ptr++);//发送数据}while(!(IFG1&UTXIFG0));TXBUF0='\n';//发送换行指令}/*******************************************函数名称:PutSting0功能:向PC机发送字符串,无换行参数:ptr--指向发送字符串的指针返回值:无********************************************/voidPutString0(uchar*ptr){while(*ptr!='\0'){Send1Char(*ptr++);//发送数据}}#pragmavector=ADC_VECTOR__interruptvoidADC12_ISR(void){uintResult,RT;Result=ADC12MEM0;_NOP();RT=(int)(100*(float)Result*2.50/4095.0);_NOP();PutString0(TheCurrentvoltageis:);display(RT);}
本文标题:基于MSP430的AD检测转换程序v1.0
链接地址:https://www.777doc.com/doc-2534606 .html