int main()
{
u32 value;
float ad;
u8 i,j,dat[7];
adc_init(); //ADC 配置内部温度初始化
LED_Init(); //端口初始化
TFT_Init(); //TFT 彩屏初始化
printf_init(); //printf 初始化
TFT_ClearScreen(BLACK); //清屏
GUI_Show12ASCII(10,10,"This is a ADC1-Channel16-Temp Check!",YELLOW,BLACK);
GUI_Show12ASCII(10,100,"The Temp Value is:",YELLOW,BLACK);
while(1)
{
value=0;
if(j>1)
{
j=0;
GPIO_SetBits(GPIOC,GPIO_Pin_0);
}
else
{
j++;
GPIO_ResetBits(GPIOC,GPIO_Pin_0);
}
delay_ms(100); //LED 闪烁
for(i=0;i<50;i++) //读取 50 此 AD 检测速度后求其平均值
{
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));//转换结束标志位
value=value+ADC_GetConversionValue(ADC1);//返回最近一次 ADCx 规则组的转
换结果
}
value/=50;
ad=(1.43-value*3.3/4096)/0.0043+25;
value=ad*100;
dat[0]=value/1000+0x30;
dat[1]=value%1000/100+0x30;
dat[2]='.';
dat[3]=value%1000%100/10+0x30;
dat[4]=value%1000%100%10+0x30;
dat[5]='C';
dat[6]='\0';
GUI_Show12ASCII(160,100,dat,YELLOW,BLACK);
}
}
|