单通道采集至能采集一根引脚上面的模拟信号。
多通道能够采集多路的模拟信号。
一个ADC模块就是1个电路,多通道虽然能够采集多路数据,但本质是通过将电路切换到不同的通道来完成采集的,采集效率相比单通道更低。程序更为繁琐。
FFT算法,需要你自己做了,网上有现成的例子。
你要做的是:配置好ADC采用通道;
再根据需要配置一个定时器触发ADC采样通道,读取数据存到缓存中;
根据缓存中的数据做FFT算法;
主要问题是:这个定时器设置的周期需要你自己决定,因为多久做一次FFT,需要多少采样数据都是你来决定的
#include<at89X52h>
#include<absacch>
#define uchar unsigned char
#define uint unsigned int
#define adress XBYTE[0x7ff8+chnn]
void Disp(uint disp_value);
void Bcd(uint bcd_value);
void Delay_ms(uint delay);
void System_Init();
uchar adc_0809(uchar chn);
uchar code LED_Val[]={0xc0,0xf9,0xa4,0x0b0,0x99,0x92,0x82,0x0f8,0x80,0x98};//0-9
uchar code LEDdp_Val[]={0xc0-0x80,0xf9-0x80,0xa4-0x80,0x0b0-0x80,0x99-0x80,0x92-0x80,0x82-0x80,0x0f8-0x80,0x80-0x80,0x98-0x80};//0-9
uchar data num[4];
uchar data led_point[4]={0xfe,0xfd,0xfb,0xf7};//三极管控制数码管的信号
float adc_data;
sbit eoc=P3^2;
uchar chnn;
uchar count;
////////////////////////////////////
void System_Init()
{
EA=1;
EX1=1;
IT1=1;
}
void Init1_Srv(void) interrupt 2 using 1
{
count++;
if(count==8)
{count=0;}
}
//////////////////////////////
uchar adc_0809(uchar chn)
{
uchar numdata;
chnn=chn;
adress=1;
while(eoc==0);
numdata=adress;
return numdata;
}
////////////////////////
void main()
{
uint temp;
uchar key;
System_Init();
while(1)
{
switch (count)
{
case 0:key=adc_0809(0);break;
case 1:key=adc_0809(1);break;
case 2:key=adc_0809(2);break;
case 3:key=adc_0809(3);break;
case 4:key=adc_0809(4);break;
case 5:key=adc_0809(5);break;
case 6:key=adc_0809(6);break;
case 7:key=adc_0809(7);break;
default:key=adc_0809(0);break;
}
adc_data=(key/2550)50;
temp=(uint)(adc_data100);
Disp(temp);
}
}
////////////////
//////////////////////////动态
void Disp(uint disp_value)
{
uchar i;
Bcd(disp_value);
for(i=0;i<4;i++)
{
P1=0;
P2=LED_Val[num[i]];
P1=led_point[i];
Delay_ms(2);
}
}
////////////
void Delay_ms(uint delay)
{
uchar j;
while(delay--)
{
for(j=125;j>0;j--)
{;}
}
}
void Bcd(uint bcd_value) //把四位数分离成4个元素由数组NUM保存
{
num[0]=count;
num[1]=bcd_value/100;
num[2]=(bcd_value%100)/10;
num[3]=(bcd_value%100)%10;
}
////////////////////////
以上就是关于学习STM32,在ADC转换采集这一章,采用多通道采集和单通道采集,它们各自的优点和缺点是什么全部的内容,包括:学习STM32,在ADC转换采集这一章,采用多通道采集和单通道采集,它们各自的优点和缺点是什么、STM32F407怎么对ADC采集的12位数据进行FFT、运用adc0809和8255a完成对一路数据的采集和显示,使用中断方式编程。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)