|
旋钮电路图 (原文件名:QQ截图未命名.png)
我用MSP430F2132接一个旋钮进行AD转换 .想得到的结果是,如果旋到第一档,亮P3.0这个LED灯,第二档,亮P3.1.从第六档开始,亮P3.5的LED灯.
出现的问题是:第一档亮第二个灯,,第二档亮第三个灯,第三档亮第4个灯 ,第4,第5档都亮第5个灯,其他亮第6个灯..
旋钮上电,不接AD转换引脚时,电压分别是 0.237 0.460 0.678 0.881 1.10 1.30 1.52 1.72 1.97 2.24 2.49 2.77/V
旋钮是电,芯片上电,接上AD转换引脚时,电压分别是 0.665 0.962 1.16 1.36 1.45 1.55 1.74 1.83 1.94 2.04 2.224 2.52
我的程序 是
#include "msp430f2132.h"
int flag=0;
unsigned int adc_value=0;
unsigned int index=0;
unsigned int temp1=0;
unsigned int temp2=0;
unsigned int temp3=0;
unsigned int Results[32];
unsigned int Average=0;
#define T0_Start() TACTL|=MC_1
#define adc_start() ADC10CTL0|=ADC10SC
void timer_init(void)
{
TACTL |= MC_0; //stop
TACTL|=TASSEL_1;//设定ACLK为时钟源
CCTL0|=CCIE; //开启比较中断
CCR0 = 5000;
_NOP();
_BIS_SR(GIE);
}
void adc_init(void)
{
ADC10AE0=0x80; //使能通道7
ADC10CTL0&=~(ENC); //disable adc
ADC10CTL0|= SREF_0; //+REFONVR+ = VREF+ and VR- = AVSS , Reference on
ADC10CTL0|= MSC +ADC10ON + ADC10IE+ADC10SHT_3; //ADC10 Multiple SampleConversion,打开ADC,允许中断
ADC10CTL1|=CONSEQ_2; //选择单通道重复模式
ADC10CTL1|=INCH_7; //选择通道7
_NOP();
_BIS_SR(GIE);
}
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
P3SEL |= 0x80;
P3DIR=0X3F; //////是p2.0~p2.7为输出,接led
P3OUT=0x3f; //////p2.0~p2.7输出低电平,led熄灭
// P3OUT=0xef;
// flag=3;
adc_init();
timer_init();
T0_Start();
ADC10CTL0|=ENC;////使能adc
ADC10CTL0|=ADC10SC; ////adc开始转换
while(1)
{
}
#pragma vector=ADC10_VECTOR
__interrupt void adc_isr(void)
{
Results[index++]=ADC10MEM;
if(index == 2)
{
int i;
Average = 0;
for(i = 0; i < 2; i++)
{
Average += Results;
}
Average=Average/2; //除以2求平均值
index = 0;
temp1=(unsigned char)(Average/88);
if(temp1<6)
{
flag=temp1;
}
else
{
flag=6;
}
}
else
adc_start();
}
#pragma vector=TIMER0_A0_VECTOR
__interrupt void timer2_ovf_isr(void)
{
switch(flag)
{
case 1:
P3OUT=0xfe; ///p3.0输出低电平,
break;
case 2:
P3OUT=0xfd; ///p3.1输出低电平,
break;
case 3:
P3OUT=0xfb; ///p3.2输出低电平,
break;
case 4:
P3OUT=0xf7; ///p3.3输出低电平,
break;
case 5:
P3OUT=0xef; ///p3.4输出低电平,
break;
case 6:
P3OUT=0xdf; ///p3.5输出低电平,
break;
default:
break;
}
}
刚刚开始学习430 ,求教各位高手. |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|