目录
资料下载地址:基于MSP430的数字电压表设计(源码+仿真)
1、仿真图
运行时
2、代码
void RefreshDis(uint Data)
{
Disbuf[0]=Led1[Data/100%10];
Disbuf[1]=Led1[Data/10%10];
Disbuf[2]=Led1[Data%10];
}
/****转换数据处理及显示****/
void display(void)
{
P5OUT=Disbuf[0];//x/100%10];
L1_NO;
delay();
L1_OFF;
P5OUT=Disbuf[1];//x/10%10];
L2_NO;
delay();
L2_OFF;
P5OUT=Disbuf[2];//x%10];
L3_NO;
delay();
L3_OFF;
}
void delay(void)
{
uint m;
for(m=1000;m>0;m--);
}
void main()
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
P4DIR=0xE0;//p4.6 .7输出
P4SEL=0;
P5DIR=0XFF;//P5段选编码输出
P5SEL=0;
P4OUT=0xFF;
P5OUT=0x00;
/****设置AD寄存器****/
ADC12CTL0=ADC12ON+SHT0_2;//打开AD转换内核,参考电压3.3V
ADC12CTL1=SHP;
//ADC12MCTL0=SREF_1;//分频
ADC12IE=0X01;//使能中断允许
ADC12CTL0|=ENC;
P6SEL|=1;//P6.0电压输入
P6DIR = 0xFE;
flag=0;
ADC12CTL0|=ADC12SC;//启动ADC转换器
_BIS_SR(LPM0_bits+ GIE);//进入低功耗睡眠模式
while(1)
{
display();
if(flag)
{
ADC12CTL0|=ADC12SC;//启动ADC转换器
flag=0;
}
//_EINT();//进入中断
// LPM3;
// _BIS_SR(CPUOFF+GIE);
}
}
/****ADC12中断服务****/
#pragma vector=ADC12_VECTOR
__interrupt void ADC12_ISR(void)
{
RefreshDis(ADC12MEM0/16);
//display();//中断处理
// _DINT();//清除中断
flag=1;
LPM0_EXIT;
//_BIS_SR_IRQ(CPUOFF);
}