DA输出问题,关于Dac1_Set_Vol值

2019-07-20 03:04发布

[mw_shl_code=applescript,true]#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "adc.h"
#include "dac.h"
#include "key.h"


//ALIENTEK ì½Ë÷ÕßSTM32F407¿a·¢°å êμÑé21
//DACêμÑé-¿aoˉêy°æ±¾
//¼¼êõÖ§3Ö£owww.openedv.com
//ìÔ±|μêÆì£ohttp://eboard.taobao.com  
//1ãÖYêDDÇòíμç×ó¿Æ¼¼óDÏT1«Ë¾  
//×÷ÕߣoÕyμãÔ-×ó @ALIENTEK


int main(void)
{
        u16 adcx;
        float temp;
        u8 t=0;         
        u16 dacval=0;
        u8 key;       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//éèÖÃÏμí3ÖD¶ÏóÅÏ輶·Ö×é2
        delay_init(168);      //3õê¼»ˉÑóê±oˉêy
        uart_init(115200);                //3õê¼»ˉ′®¿ú2¨ìØÂêÎa115200
       
        LED_Init();                                        //3õê¼»ˉLED
        LCD_Init();                                        //LCD3õê¼»ˉ
        Adc_Init();                                 //adc3õê¼»ˉ
        KEY_Init();                                 //°′¼ü3õê¼»ˉ
        Dac1_Init();                                 //DACí¨μà13õê¼»ˉ       
        POINT_COLOR=RED;
        LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");       
        LCD_ShowString(30,70,200,16,16,"DAC TEST");       
        LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
        LCD_ShowString(30,110,200,16,16,"2014/5/6");         
        LCD_ShowString(30,130,200,16,16,"WK_UP:+  KEY1:-");         
        POINT_COLOR=BLUE;//éèÖÃ×ÖìåÎaà¶é«               
        LCD_ShowString(30,150,200,16,16,"DAC VAL:");             
        LCD_ShowString(30,170,200,16,16,"DAC VOL:0.000V");             
        LCD_ShowString(30,190,200,16,16,"ADC VOL:0.000V");
  Dac1_Set_Vol(3300);
// DAC_SetChannel1Data(DAC_Align_12b_R,2500);//3õê¼ÖμÎa0       
//                                while(1)
//                                {
//                                        t++;
//                                        key=KEY_Scan(0);
//                                        if(key==WKUP_PRES)
//                                        {
//                                                if(dacval<4000)dacval+=200;
//                                                DAC_SetChannel1Data(DAC_Align_12b_R, dacval);//éè&#214;&#195;DAC&#214;μ
//                                        }else if(key==2)
//                                        {
//                                                if(dacval>200)dacval-=200;
//                                                else dacval=0;
//                                                DAC_SetChannel1Data(DAC_Align_12b_R, dacval);//éè&#214;&#195;DAC&#214;μ
//                                        }
//                                        if(t==10||key==KEY1_PRES||key==WKUP_PRES)         //WKUP/KEY1°′&#207;&#194;á&#203;,&#187;ò&#213;&#223;&#182;¨ê±ê±&#188;&#228;μ&#189;á&#203;
//                                        {
//                                                adcx=DAC_GetDataOutputValue(DAC_Channel_1);//&#182;áè&#161;&#199;°&#195;&#230;éè&#214;&#195;DACμ&#196;&#214;μ
//                                                LCD_ShowxNum(94,150,adcx,4,16,0);                                  //&#207;&#212;ê&#190;DAC&#188;&#196;′&#230;&#198;÷&#214;μ
//                                                temp=(float)adcx*(3.3/4096);                                                         //μ&#195;μ&#189;DACμ&#231;&#209;1&#214;μ
//                                                adcx=temp;
//                                                LCD_ShowxNum(94,170,temp,1,16,0);                                  //&#207;&#212;ê&#190;μ&#231;&#209;1&#214;μ&#213;&#251;êy2&#191;·&#214;
//                                                temp-=adcx;
//                                                temp*=1000;
//                                                LCD_ShowxNum(110,170,temp,3,16,0X80);                  //&#207;&#212;ê&#190;μ&#231;&#209;1&#214;μμ&#196;D&#161;êy2&#191;·&#214;
//                                                adcx=Get_Adc_Average(ADC_Channel_5,10);                //μ&#195;μ&#189;ADC×a&#187;&#187;&#214;μ
//                                                temp=(float)adcx*(3.3/4096);                                                        //μ&#195;μ&#189;ADCμ&#231;&#209;1&#214;μ
//                                                adcx=temp;
//                                                LCD_ShowxNum(94,190,temp,1,16,0);                                 //&#207;&#212;ê&#190;μ&#231;&#209;1&#214;μ&#213;&#251;êy2&#191;·&#214;
//                                                temp-=adcx;
//                                                temp*=1000;
//                                                LCD_ShowxNum(110,190,temp,3,16,0X80);                 //&#207;&#212;ê&#190;μ&#231;&#209;1&#214;μμ&#196;D&#161;êy2&#191;·&#214;
//                                                LED0=!LED0;
//                                                t=0;
//                                        }
//                delay_ms(10);         
//        }       
}
[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
春夜喜小雨
1楼-- · 2019-07-20 03:23
 精彩回答 2  元偷偷看……
春夜喜小雨
2楼-- · 2019-07-20 07:45
为什么呢?我觉得没问题啊~
xuande
3楼-- · 2019-07-20 10:37
 精彩回答 2  元偷偷看……
春夜喜小雨
4楼-- · 2019-07-20 16:18
 精彩回答 2  元偷偷看……
STM32基础篇
5楼-- · 2019-07-20 19:51
xuande 发表于 2016-6-25 11:09
对比两个函数的内容。

DAC实验:用USMART在串口调试助手中输入的Dac1_Set_Vol()值与LCD上DAC VAL的显示值存在偏差    这是什么原因?
xuande
6楼-- · 2019-07-20 22:52
STM32基础篇 发表于 2016-10-28 17:08
DAC实验:用USMART在串口调试助手中输入的Dac1_Set_Vol()值与LCD上DAC VAL的显示值存在偏差    这是什 ...


不知道你说的软硬件条件是什么样,
目测是用DA输出,然后再AD采集?
如果是,有偏差就很正常,关键是差多差少的问题。

一周热门 更多>