"DAC数模转换实验-M3"关于检测电压值奇怪的现象

2019-07-21 03:58发布

我在写“第48讲 DAC数模转换实验-M3”程序的时候,用的串口输出数据,其中DAC为DAC输出值,DAC VAL为计算电压值, ADC VAL为ADC检测电压值。
但是在DAC等于2600和3800的时候出现了奇怪的数据,2600的时候电压达到2.9V,3800的时候达到3.6V。最高不是3.3V吗?怎么会出现这种情况呢?
另外发现好像 没作用?求助各位大佬解答~

下面是main函数里while循环的代码:
u8 KEY=0;
         u16 vol=0;
         u8 t=0;
         u16 adcx,n,m;
         float tmp;

while(1)
         {
                t++;
                KEY=KEY_Scan(0);
                if(KEY==KEY0_P)
                {
                        if(vol<4000)
                        {
                                vol+=200;                                               
                        }       
                        DAC_SetChannel1Data(DAC_Align_12b_R, vol);
                                       
                }
                if(KEY==KEY1_P)
                {
                        if(vol>=200)
                        {
                                vol-=200;                                               
                        }       
                        DAC_SetChannel1Data(DAC_Align_12b_R, vol);
                                       
                }
                if(t==100||(KEY==KEY0_P)||(KEY==KEY1_P))
                {
                        printf("1111 ");
                        adcx=DAC_GetDataOutputValue(DAC_Channel_1);
                        printf("DAC    : %d ",adcx);
                        tmp=(float)adcx*(3.3/4096);                       
                        n=tmp;
                        tmp-=n;
                        tmp*=1000;
                        printf("DAC VAL: %d.%d ",n,(int)tmp);
                       
                        adcx=Get_Average();
                        tmp=(float)adcx*(3.3/4096);
                        n=tmp;
                        m=(tmp-n)*1000;
                        printf("ADC VAL: %d.%d ",n,m);
                        t=0;
                        LED0=!LED0;
                }
                delay_ms(100);
         }


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。