学习STM32,在ADC转换采集这一章,采用多通道采集和单通道采集,它们各自的优点和缺点是什么

学习STM32,在ADC转换采集这一章,采用多通道采集和单通道采集,它们各自的优点和缺点是什么,第1张

通道采集至能采集一根引脚上面的模拟信号。

多通道能够采集多路的模拟信号。

一个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完成对一路数据的采集和显示,使用中断方式编程。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9824315.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存