打开MCC,在Device Resources一栏找到你要使用的ADC模块点击加号添加,使用ADC模块的前提是你的系统时钟必须配置正确,否则会影响采样频率得到结果有偏差
芯片引脚图中配置右键找到ADC单击即可
或者在此处配置
最后点击生成
关闭MCC返回代码界面,编写代码,实现串口输出
#include "mcc_generated_files/mcc.h" #define u8 uint8_t #define u16 uint16_t #define u32 uint32_t u16 guiVinAd=0; void get_vin(void) { static u8 cnt=0; static u32 sum=0; cnt++; sum+=ADC_GetConversion(channel_ANC1);//累加AD转换值 if(cnt>=16)// { guiVinAd = sum / cnt/200;//求平均值后除以两百刚好能在串口上显示整数 sum = 0; cnt = 0; } } void main(void) { // initialize the device SYSTEM_Initialize(); //使能串口发送中断 EUSART_SetTxInterruptHandler(TxIsr); //使能全局中断 INTERRUPT_GlobalInterruptEnable(); //使能外设中断 INTERRUPT_PeripheralInterruptEnable(); while (1) { //获取AD值并进行数据处理 get_vin(); //使能串口发送 PIE1bits.TXIE = 1; //使能看门狗 CLRWDT(); } }
电位器的使用
中间脚连接AD测量引脚,其他脚一个连电源一个连GND即可
验证实验方法
使用万用表测量中间引脚和GND之间的电压,若单片机对串口发送的信息与万用表一致,则成功
电位器连接Vcc端连接5v,调节电位器的旋钮查看现象
得到实验现象
从5v变化到3v当然也可以到0v
不足之处是看不到小数部分,后面看看如何发送小数点再改进