|
/*******************************************************************************
*
* 普中科技
--------------------------------------------------------------------------------
* 实 验 名 : 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[7],dat1[7];
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[0]=value1/100+0x30;
dat[1]=value1%100/10+0x30;
dat[2]=value1%100%10+0x30;
dat[3]='\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[0]=value2/100+0x30;
dat1[1]='.';
dat1[2]=value2%100/10+0x30;
dat1[3]=value2%100%10+0x30;
dat1[4]='V';
dat1[5]='\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);
}
}
}
}
|
|