近参加牛卧堂的比赛 用m451做了个示波器 采用的是spi 屏幕 SPI刷新波形很慢(ili9341屏幕驱动不起,马上要交作品了) 最后使用软件触发加只清除前一次波形(不清屏)的方式显示波形 画出来的波形十分稳定 20khz的三角波 配置ADC的采样率1msps
触发使用的是软件实现的 就是先定义一个 1000个数据 ADC123_Buff[1000] 然后设定触发的位置
AD_Trg = 2048 ;
然后 - for(i=0;i<1000;i++)//找触发位置
- {
- if(ADC123_Buff[i+1]<AD_Trg && ADC123_Buff[i+1]>AD_Trg)
- {
- Trg_p =i;
- break;
- }
- }
复制代码
然后在到触发位置后面取320个点 其他数据都丢弃
最后是画波形而实现方法
先定义两个数组
一个数组是现在要画点的数据data2[320]画点的颜色是黄色
另一个数组是data1[320]是前一次画的波形的数据目的是清除上一次的波形 点的颜色是背景颜色黑色
- for(i=0;i<320;i++)
- {
- POINT_COLOR = BLACK;//黑色的和背景颜色一样
- LCD_DrawPoint(i,data1);//这样就把前一次的点清除了
- POINT_COLOR = YELLOW;//黄色是波形的颜色
- LCD_DrawPoint(i,data2);//这样就把前一次的点清除了
- }
复制代码
因为有触发所以波形十分稳定
简单的频率的计算(周期信号): 先算出320个点有多少个周期一个周期多少个点组成(周期信号) 因为ADC的采样率固定可以知道ADC一秒钟可以采集多少个点就可以算出一个波形的周期 周期的倒数就是频率 (简单的计算)还是用定时器 计数器来计算频率好。
幅度值简单计算; 求出320个点中有多少个周期然后单独算出每个周期的最大值然后求平均值
|