我想用单片机完成AD转换后,用八个或者若干个LED灯亮的个数来表示电压的大小,比如0到0.5V,LED1亮,0.5到1V,LED2亮,以此类推。下面是我再网上找到的一个msp430f6638单片机实验程序,思路和我的差不多,我想能不能改改!
“AD 转换结束会产生中断,编写AD 中断服务程序。利用信号发生器输出信号(例如正 弦波、三角波信号)作为AD 转换的输入,根据输入电压的大小控制LED 灯的亮灭(例如随 着输入电压值的增大,LED1 到LED5 按顺序点亮;随着输入电压值减小,LED 灯按顺序熄灭”
#include <msp430f6638.h>
int main(void)
{ WDTCTL = WDTPW +WDTHOLD;
P4DIR|=BIT5+BIT6+BIT7;
P5DIR|=BIT7; P8DIR|=BIT0;
ADC12CTL0=ADC12MSC+ADC12ON+ADC12SHT1_8;
ADC12CTL1=ADC12CONSEQ1+ADC12SHP;
ADC12MCTL0=ADC12INCH_7;
ADC12CTL0|=ADC12ENC;
ADC12IE|=BIT0;
ADC12CTL0|=ADC12SC;
_EINT();
}
#pragma vector=ADC12_VECTOR
__interrupt void ADC12ISR(void)
{ if(ADC12MEM0>=3413)
{ P4OUT|=BIT5+BIT6+BIT7;
P5OUT|=BIT7;
P8OUT|=BIT0;
}
if(ADC12MEM0>=2730)
{ P4OUT&=~BIT5;
P4OUT|=BIT7+BIT6;
P5OUT|=BIT7;
P8OUT|=BIT0;
}
if(ADC12MEM0>=2048)
{ P4OUT&=~(BIT6+BIT5);
P4OUT|=BIT7;
P5OUT|=BIT7;
P8OUT|=BIT0;
}
if(ADC12MEM0>=1365)
{ P4OUT&=~(BIT5+BIT6+BIT7);
P5OUT|=BIT7;
P8OUT|=BIT0;
}
if(ADC12MEM0>=683)
{ P4OUT&=~(BIT5+BIT6+BIT7);
P5OUT&=~BIT7;
P8OUT|=BIT0;
}
if(ADC12MEM0>0)
{ P4OUT&=~(BIT5+BIT6+BIT7);
P5OUT&=~BIT7;
P8OUT&=~BIT0;
}
}