基于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)
|