ysk 发表于 2019-5-6 14:45:44

f103开发板试验28LCD_PWM_DAC例子PB6输出的是PWM波,还是滤波后的连续信号?谢谢

/*******************************************************************************
*               
*                              普中科技
--------------------------------------------------------------------------------
* 实 验 名         : LCD-PWM-DAC实验
* 实验说明       : 通过将程序下载进去后点击复位,利用端口PB6内的TIM4产生一个PWM信号,
                  将此信号接入到管脚PB0上,进行AD转换,彩屏上面显示TIM4输出的PWM值
                  和PB0端口AD检测的电压,LED指示灯闪烁效果,
                  按下复位开关重新运行,其他子函数注释
                  可以参考之前的函数注释
* 连接方式       :   将一根导线将PB6和PB0接在一起即可看到AD的电压变化。
* 注    意         :   所用函数在头文件.c文件内
*******************************************************************************/

使用一根导线将管脚PB6和PB0连接即可看到AD电压值变化。



#include "public.h"
#include "pwm_dac.h"
#include "systick.h"
#include "gui.h"
#include "led.h"
#include "adc.h"
#include "printf.h"


/****************************************************************************
* Function Name: main
* Description    : Main program.
* Input          : None
* Output         : None
* Return         : None
****************************************************************************/
int main()            
{   
    u16 value,value1,value2;
    float ad;
    u8 i=0,j,dat,dat1;
    pwm_dac_init();
    adc_init();      
    TFT_Init();   //TFT²ÊÆÁ³õʼ»¯
    LED_Init();      //¶Ë¿Ú³õʼ»¯
    printf_init();    //printf³õʼ»¯
    TFT_ClearScreen(BLACK);       //ÇåÆÁ
    GUI_Show12ASCII(10,10,"This is a PWM-DAC Check!",YELLOW,BLACK);
    GUI_Show12ASCII(10,27,"Connect the PB6 PB0!",YELLOW,BLACK);
    GUI_Show12ASCII(10,100,"The DA Value is:",YELLOW,BLACK);
    GUI_Show12ASCII(10,117,"The AD Volage is:",YELLOW,RED);
    while(1)
    {
      value=0;
      for(i=0;i<=10;i++)
      {
            value=25*i;
            TIM_SetCompare1(TIM4, value);//ÉèÖÃTIMx²¶»ñ±È½Ï1¼Ä´æÆ÷Öµ
            delay_ms(1);
            value1=TIM_GetCapture1(TIM4);

            dat=value1/100+0x30;
            dat=value1%100/10+0x30;
            dat=value1%100%10+0x30;
            dat='\0';
            ADC_SoftwareStartConvCmd(ADC1, ENABLE);    //ʹÄÜ»òÕßʧÄÜÖ¸¶¨µÄADCµÄÈí¼þת»»Æô¶¯¹¦ÄÜ
            while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));//ת»»½áÊø±ê־λ
            value2=ADC_GetConversionValue(ADC1);
            ad=value2*3.3/4096;
            value2=ad*100;
            dat1=value2/100+0x30;
            dat1='.';
            dat1=value2%100/10+0x30;
            dat1=value2%100%10+0x30;
            dat1='V';
            dat1='\0';
            GUI_Show12ASCII(160,100,dat,YELLOW,BLACK);
            GUI_Show12ASCII(160,117,dat1,YELLOW,BLACK);
            delay_ms(500);

            if(j>1)
            {
                j=0;
                GPIO_SetBits(GPIOC,GPIO_Pin_0);
            }
            else
            {
                j++;
                GPIO_ResetBits(GPIOC,GPIO_Pin_0);
            }
      }                              
    }            
}





YXUN 发表于 2019-5-7 08:56:58

应该是pwm波
页: [1]
查看完整版本: f103开发板试验28LCD_PWM_DAC例子PB6输出的是PWM波,还是滤波后的连续信号?谢谢