const uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void PutString0(unsigned char *p); void delay(uint i){ uint x,y;
for(x=i;x>0;x--) for(y=110;y>0;y--); }
void display(uchar XRT) {
uint DisBuffer[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); }
void InitADC12 (void) {
ADC12CTL0&=~ENC; //ENC复位,才能设置CTL0的4~15位
ADC12CTL0= ADC12ON + REFON + REF2_5V + SHT0_15; //开ADC,内部参考源
ADC12CTL1=SHP +CONSEQ_0;
//选择采样定时器为输入信号上升沿触发,采样信号源自采样定时器
ADC12MCTL0= INCH_0; //在ENC=0
时,才能修改寄存器各位,默认情况下为通道0
ADC12IE |= 0x01; //开中断,转换完成后触发中断 _EINT();
ADC12CTL0|= ENC; //ENC=1时,ADC12SC才能开始转换 _NOP(); }
void main (void) {
WDTCTL=0x5A80; //关看门狗 P4DIR=0xff;P4OUT=0xff; P5DIR=0xff;P5OUT=0xff;
P6SEL|=0x01; //使能P6.0即A0通道 InitADC12 (); while(1) {
PutString0(\"The Current voltage is: \"); //发送字符串”当前电压“
ADC12CTL0|= ENC + ADC12SC;
// PutString(buffer); //发送AD采集的电压 } }
/******************************************* 函数名称:InitUART
功 能:初始化UART端口 参 数:无 返回值 :无
********************************************/ void UartInit(void){
ME1 = URXE0 + UTXE0 ; UCTL0|= SWRST ; UCTL0|= CHAR ; UTCTL0|=SSEL0 ;
UBR00=0x03 ; //设置波特率 UBR10=0x00 ; UMCTL0=0x4A;
UCTL0&=~SWRST ;
IE1|=URXIE0 ; //使能接收中断 }
/******************************************* 函数名称: Send1Char
功 能: 向PC机发送一个字符 参 数: sendchar--要发送的字符 返回值 : 无
********************************************/ void Send1Char(uchar sendchar) {
while (!(IFG1 & UTXIFG0)); //等待发送寄存器为空 TXBUF0 = sendchar; }
/******************************************* 函数名称:PutSting
功 能:向PC机发送字符串并换行指令 参 数:ptr--指向发送字符串的指针 返回值 :无
********************************************/ void PutString(uchar *ptr) {
while(*ptr != '\\0') {
Send1Char(*ptr++); // 发送数据 }
while (!(IFG1 & UTXIFG0));
TXBUF0 = '\\n'; //发送换行指令 }
/******************************************* 函数名称:PutSting0
功 能:向PC机发送字符串,无换行 参 数:ptr--指向发送字符串的指针 返回值 :无
********************************************/ void PutString0(uchar *ptr) {
while(*ptr != '\\0') {
Send1Char(*ptr++); // 发送数据 } }
#pragma vector = ADC_VECTOR __interrupt void ADC12_ISR(void) {
uint Result,RT;
Result = ADC12MEM0; _NOP();
RT=(int)(100*(float)Result*2.50/4095.0); _NOP();
PutString0(\"The Current voltage is: \"); display(RT); }
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- howto234.com 版权所有 湘ICP备2022005869号-3
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务