|
#在這里快速回復##include "public.h" #include "printf.h" #include "adc.h" #include "systick.h" int main() { u16 ad; u8 i; float adc; //電壓 float Distance; //距離 adc_init(); //ADC初始化 printf_init(); //printf初始化 while(1) { //ad = ad>>2;//12位AD轉換成10位 for(i=0;i<50;i++)//讀取50次的AD數值取其平均數較為準確 { ADC_SoftwareStartConvCmd(ADC1, ENABLE); while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));//轉換結束標志位 ad=ad+ADC_GetConversionValue(ADC1);//返回最近一次ADCx規則組的轉換結果 } ad=ad/50; //取平均值 adc =(float)ad*(3.3/4096); Distance = (1/(ad*(0.0000954)+0.000502))-4; printf(" 電壓值= %f V \n",adc); printf(" 測量距離= %f cm \n",Distance ); delay_ms(10000); } } |