基于单片机在LCD屏上画幅频特性曲线的方法

      上一次博文中研究,在LCD上画实时曲线已经实现了,现在想改成幅频特性曲线,经过查资料实现思路如下

幅频特性曲线是以横轴为频率,纵轴为幅度,这里可认为是电压值。如果是实时曲线,1MS采集一个值将它显示在屏幕上,实际上它的频率已固定就是1000HZ,也就是1s中采集1000次,然后计算出1000次数据的平均值这是他在频率为1000HZ时的幅度值。

        如果我们通过更改变量实现在每1S内采集的次数不相等,不就实现频率值的变化了吗。

首先,我们定义个变量u8 FRE_NUM;FRE_NUM=100,然后我们编写一个函数,GET_ADC_VALUE(u8 channel,u8 times,u8 delayalue);该函数中channel代表ADC采集的通道,times代表采集的次数,delay代表1/times的延时单位为毫秒。举个例子 1s中采集20次 调用GET_ADC_VALUE(u8 channel,20,50);及频率为20HZ,

制作一个表格分别显示10HZ,20HZ,50HZ,100HZ,500HZ下的幅度值。

value=GET_ADC_VALUE(0,10,100);

draw_point(100,value,color);

value=GET_ADC_VALUE(0,20,100);

draw_point(120,value,color);

value=GET_ADC_VALUE(0,50,100);

draw_point(140,value,color);

value=GET_ADC_VALUE(0,100,100);

draw_point(160,value,color);

value=GET_ADC_VALUE(0,500,100);

draw_point(180,value,color);

这样便可以实现幅频特性曲线的画法了。

sitemap