📄 test26.c
字号:
/*这是一个简单的单通道多次转换程序的源代码,转换的精度
*是小数点一位(很差,但是毕竟是开始)*/
#include<msp430x14x.h>
const unsigned char Seg[]={
0x84, //0
0xbd, //1
0xe0, //2
0xb0, //3
0x99, //4
0x92, //5
0x82, //6
0xbc, //7
0x80, //8
0x90, //9
};
void Delay(void);
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
P4DIR=0xff;
P5DIR=0x0f;
P6SEL = 0x01; //P6引脚可以作8个模拟信号的输入引脚
ADC12CTL0=ADC12ON+SHT0_2+REFON+REF2_5V; //启用内部的参考电压2.5V
ADC12CTL1=SHP+CONSEQ_2; //SHP表示由采样信号触发采样定时器,CONSEQ_2采用单通道多次转换
ADC12MCTL0=SREF_0; //0-3.3V的范围 Vcc-Vss
ADC12MCTL0=INCH_0; //选择模拟输入通道
ADC12IE|=BIT0; //允许转换中断
_EINT();
ADC12CTL0|=ENC+ADC12SC; //开始转换
for(;;);
}
#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR(void)
{
char h,l,m,n;
ADC12CTL0&=~ENC; //关闭转换
float result=(ADC12MEM0*3.3)/4096;
h = (int)result;
l = (int)(result*10)%10;
m = (int)(result*100)%100;
n = (int)(result*1000)%1000;
/*本来下面的语句是想用循环来做的,其实也没有必要*/
P5OUT = BIT0;
P4OUT = Seg[h]&(~BIT7);
Delay();
P5OUT = BIT1;
P4OUT = Seg[l];
Delay();
P5OUT = BIT2;
P4OUT = Seg[m];
Delay();
P5OUT = BIT3;
P4OUT = Seg[n];
Delay();
ADC12CTL0|=ENC+ADC12SC;//使能再次转换
}
void Delay(void)
{
int i = 700; //自己调出最适合的值
while(i--);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -