标题:
基于STM32F4的简易示波器源码
[打印本页]
作者:
kali20gakki
时间:
2018-4-29 19:52
标题:
基于STM32F4的简易示波器源码
基于STM3F4的简易示波器 TFT屏幕显示
源码如下
#include "sys.h"
#include "math.h"
#include "arm_math.h"
float fft_inputbuf[FFT_LENGTH*2]; //FFT输入数组
float fft_outputbuf[FFT_LENGTH]; //FFT输出数组
float point_x;
float point_y;
//u32 pinlv[3]; // FPGA 频率 2
float x_o=xx0;
float y_o=yy0;
u16 updata;
int main()
{
u16 trigger=1000;
u32 temp=0;
u32 temp1=0;
u16 i;
arm_cfft_radix4_instance_f32 scfft;
u8 gate;
u16 adc1;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
delay_init(168); //初始化延时函数
uart_init(115200);
printf("asad");
LCD_Init();
// Dac1_Init(); //DAC通道1初始化
// Dac2_Init();
// Key_Init();
// I2C_INIT();
// Adc_Init();
// Dac1_Set_Vol(1500);
POINT_COLOR=BLUE;//设置字体为蓝色
//LCD_ShowString(0,line3,110,16,16,"mea frequency:");
// LCD_ShowString(0,line4,80,16,16,"mea Amp:");
My_Spi_Init();
arm_cfft_radix4_init_f32(&scfft,FFT_LENGTH,0,1);//初始化scfft结构体,设定FFT相关参数
// LCD_DrawLine(xx0,zhongjian,xx1,zhongjian); //横轴
// LCD_DrawLine(xx0,yy0,xx0,yy1); //纵轴
// LCD_ShowString(row,zhongjian+(float)(yy0-zhongjian)/(1.0-0)*0,24,16,16,"0.0");//纵轴
// LCD_ShowString(row,zhongjian+(float)(yy0-zhongjian)/(1.0-0)*0.5,27,16,12,"-1.5");//纵轴
// LCD_ShowString(row,zhongjian+(float)(yy0-zhongjian)/(1.0-0)*1.0,27,16,12,"-3.0");//纵轴
// LCD_ShowString(row,zhongjian-(float)(yy0-zhongjian)/(1.0-0)*0.5,24,16,12,"1.5");//纵轴
// LCD_ShowString(row,zhongjian-(float)(yy0-zhongjian)/(1.0-0)*1.0,24,16,12,"3.0");//纵轴
// LCD_ShowString(row,yy1-16,24,16,16,"V");//纵轴
// LCD_DrawLine(xx0+(float)(xx1-xx0)/10*2,zhongjian,xx0+(float)(xx1-xx0)/10*2,zhongjian-4); //横轴-2
// LCD_DrawLine(xx0+(float)(xx1-xx0)/10*4,zhongjian,xx0+(float)(xx1-xx0)/10*4,zhongjian-4); //横轴-4
// LCD_DrawLine(xx0+(float)(xx1-xx0)/10*6,zhongjian,xx0+(float)(xx1-xx0)/10*6,zhongjian-4); //横轴-6
// LCD_DrawLine(xx0+(float)(xx1-xx0)/10*8,zhongjian,xx0+(float)(xx1-xx0)/10*8,zhongjian-4); //横轴-8
// LCD_DrawLine(xx0+(float)(xx1-xx0)/10*10,zhongjian,xx0+(float)(xx1-xx0)/10*10,zhongjian-4); //横轴-10
// LCD_DrawLine(xx0,zhongjian+(float)(yy0-zhongjian)/(1.0-0)*1.0,xx0+4,zhongjian+(float)(yy0-zhongjian)/(1.0-0)*1.0); //纵轴-1.0
// LCD_DrawLine(xx0,zhongjian+(float)(yy0-zhongjian)/(1.0-0)*0.5,xx0+4,zhongjian+(float)(yy0-zhongjian)/(1.0-0)*0.5); //纵轴-0.8
// LCD_DrawLine(xx0,zhongjian-(float)(yy0-zhongjian)/(1.0-0)*0.5,xx0+4,zhongjian-(float)(yy0-zhongjian)/(1.0-0)*0.5); //纵轴-0.6
// LCD_DrawLine(xx0,zhongjian-(float)(yy0-zhongjian)/(1.0-0)*1.0,xx0+4,zhongjian-(float)(yy0-zhongjian)/(1.0-0)*1.0); //纵轴-0
while(1)
{
for(i=0;i<FFT_LENGTH;i++)//生成信号序列
{
save[i]=SPI_ReadByte(0);
}
LCD_floatNUM(row0,line1,save[i],4,4,16);
for(i=0;i<FFT_LENGTH;i++)//生成信号序列
{
if(save[i]>2048)
save[i]=(save[i]-4096);
fft_inputbuf[2*i]=(float)save[i]*(5.0/2048.0);
fft_inputbuf[2*i+1]=0;//虚部全部为0
}
arm_cfft_radix4_f32(&scfft,fft_inputbuf); //FFT计算(基4)
arm_cmplx_mag_f32(fft_inputbuf,fft_outputbuf,FFT_LENGTH); //把运算结果复数求模得幅值
if(temp==0)
for(i=0;i<FFT_LENGTH;i++)
{
// printf("fft_inputbuf[%d]:%f\r\n",i,fft_outputbuf[i]);
printf("%f\r\n",fft_outputbuf[i]);
temp++;
}
//
}
}
复制代码
全部资料51hei下载地址:
示波器.rar
(1.11 MB, 下载次数: 108)
2018-4-30 01:41 上传
点击文件名下载附件
基于STM3F4的简易示波器
下载积分: 黑币 -5
作者:
1311565821
时间:
2019-2-21 20:17
楼主有原理图嘛??
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1