通过 SHARP 2Y0A21 红外测距模块 进行 测距 , 要使用 ADC
源程序 如下:
/*******************************************************************************
*
* 普中科技
--------------------------------------------------------------------------------
* 实 验 名 : ADC转换实验
* 实验说明 : 通过printf打印AD检测数据 ,调节AD模块旁边的电位器 在串口助手上即可输出电压,
见文件内截图
* 连接方式 :
* 注 意 : 所用函数在头文件.c文件内
*******************************************************************************/
#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);
}
}
全部资料51hei下载地址:
红外测距.7z
(1.4 MB, 下载次数: 283)
|