#申请原创#
本次实验的是ADC的基本模式的单次转换,启用的是RA0引脚为ADC信号输入,MCC配置如下:
其他设置按照默认,未作修改:
生成代码后,在adcc.c文件中查找相应的函数,并在主循环里每秒转换一次,每次转换读取5组数据,然后取平均值,代码如下:
ADC_Val = 0;
ADCC_StartConversion(channel_ANA0); //开启ADC转换
for(i=0; i<5; i++){
while(!ADCC_IsConversionDone()); //等待转换完成
// ADC_Buff[i] = ADCC_GetConversionResult(); //获得转换结果
ADC_Buff[i] = ADCC_GetSingleConversion(channel_ANA0); //获得指定通道的转换结果
ADC_Val += ADC_Buff[i];
}
ADC_Val = ADC_Val/5;
LCD_write_value(0,2,5,0,0,ADC_Val);
printf("ADC= %d \r\n",ADC_Val);
由于我只启用了RA0一个通道,所以使用ADCC_GetConversionResult()函数和使用ADCC_GetSingleConversion(channel_ANA0)函数的结果是一样的。
这是测试过程的照片:
通过调节电位器,在屏幕上可以显示出ADC转换的结果:
同时在串口调试助手上也可以看到相应的内容:
本次并未进行多通道的实验。
|