ADC:
ADC理论有8个转换器,可同步转换;每个转换8个通道,精度为8/10/12位。
ADC端口AN可以作为输入口,不可作为输出口,与ARM单片机不同!
ADC初始化:
/*
* 参数说明:channel ADC通道
* 参数说明:Freq_Hz ADC通道采样频率 注意 ADC有三个模块 通道0-13 16-25 35-49分别属于这三个通道 这里使用扫描采样方式,因此如果一个ADC模块同时初始化了N个通道,则ADC实际采用率 = Freq_Hz / N
* 函数返回:无
*/
void ADC_InitConfig(ADC_Channel_t channel, unsigned long Freq_Hz)
{
}
初始化后在使用读ADC_Read就可以读取ADC的值
unsigned short ADC_Read(ADC_Channel_t chn)
{
}
例程:
void Test_ADC_7mic(void)
{
char txt[200];
unsigned int MICVmin[8];
ADC_InitConfig(ADC0, 80000); //初始化
ADC_InitConfig(ADC1, 80000); //初始化
ADC_InitConfig(ADC2, 80000); //初始化
ADC_InitConfig(ADC3, 80000); //初始化
ADC_InitConfig(ADC4, 80000); //初始化
ADC_InitConfig(ADC5, 80000); //初始化
ADC_InitConfig(ADC6, 80000); //初始化
ADC_InitConfig(ADC7, 80000); //初始化
delayms(500); //延时等待
UART_PutStr(UART0,"\n-------------------------------------------------\n");//分界线
while(1)
{
MICVmin[0]=ADC_Read(ADC0);
MICVmin[1]=ADC_Read(ADC1);
MICVmin[2]=ADC_Read(ADC2);
MICVmin[3]=ADC_Read(ADC3);
MICVmin[4]=ADC_Read(ADC4);
MICVmin[5]=ADC_Read(ADC5);
MICVmin[6]=ADC_Read(ADC6);
MICVmin[7]=ADC_Read(ADC7);
//转换结果为字符串,串口发送或者屏幕显示
sprintf(txt,"[0]:%05d [1]:%05d [2]:%05d [3]:%05d [4]:%05d [5]:%05d [6]:%05d [7]:%05d \r\n",MICVmin[0],MICVmin[1],MICVmin[2],MICVmin[3],MICVmin[4],MICVmin[5],MICVmin[6],MICVmin[7]);
//串口发送到上位机
UART_PutStr(UART0,txt);//AN0--AN7十进制数据输出到上位机
LED_Ctrl(LED0,RVS); //电平翻转,LED闪烁
delayms(500); //延时等待
}
}
先初始化ADC,采样频率是80000,初始化完后在while里一直读取ADC的数值,然后再通过串口发送给上位机。