手持示波仪软件初稿,请相关软件编写人员认领任务,谢谢
今天晚上将我自己先前实验写的代码按照我在这个帖子发出的模块、流程进行了整理,写出了如下的框架代码。http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3278713&bbs_page_no=1&bbs_id=3040
目前,按键驱动、LCD驱动、主程序流程、按键处理、ADC中断代码等都已基本完成,剩下的工作主要集中在
波形显示、波形数据处理、硬件触发、ADC采样程控部分等部分代码。请ghost2 dvhome myworkmail认领部分内容,我们一起尽快完成基本的功能。
点击此处下载 ourdev_435578.zip(文件大小:1.35M) (原文件名:STMDSO_0411.zip) 帮顶一下 如何画栅格?
我们用的LCD垂直方向有64个点,本来正好分为4个栅格,每个栅格16点。但用这样的方法画线:
for(i = 0; i <= 4; i++)
LCD_BufferDrawXDotLine(0, i*16, 160, LCD_SET);
只能画出4条线,Y坐标分别为0,16,32,48;Y坐标为64的那条线超过范围(0~63)了,这样看起来就不好看了,怎么解决呢? 波形数据处理,硬件触发、ADC采样程控这些任务你能解释一下吗?比如波形数据处理是要求平均值还是什么?硬件触发是什么意思?外中断吗? 一般都是要画一个框吧?
如果画框,就好处理了,界面也比较好看
但是就是显示区域变小了 我做硬件触发、ADC采样好了。 192*64的液晶很难处理好
分成5条线吧,坐标分别为 1、16、31(基线)、46、61 3楼,硬件触发是外部比较电路给的中断信号。数据处理部分具体怎么做你可以自己考虑,我们一起讨论,只需给其他模块提供计算峰峰值、有效值、频率等信息即可。
4楼,栅格画出来了,就不要再画框了吧,毕竟空间太少了。
6楼,分成5条线吧,坐标分别为 1、16、31(基线)、46、61,
这样就是15个点一个垂直栅格了,可能也只好这么办了。
我做波形显示部分吧。 还剩下的就是数据处理了,是吧?
没人要就我来吧 那我呢?要不ghost2你把硬件触发让给我吧,一人做一样吧,也快点 硬件触发、ADC采样程控还需要详细讨论一下,不过估计代码量已经不大了。 屏太小了,可以用大一点的,贵不了多少 针对STM8S的运算速度,有效值要怎么来做才合适???如果要算很精准(譬如输入非正弦波),好像不太现实
或者是直接取峰峰值*1.41?? 均方根,如果可以 自己写开方算法,不用浮点运算。
这个功能选择启动,就不会总是太慢了。 自己写的二分法开方 不怎么好。坛子上有另外一种开方程序,只是看不懂。
unsigned int sqrti(unsigned long Val)
{
unsigned long Vax;
unsigned int Vmax,Vmin=0,Vmid;
unsigned char i=16;
if(Val>0xffff)
Vmax=0xffff;
else
Vmax=(int)Val;
while(i)
{i--;
Vax=((unsigned long)Vmax+(unsigned long)Vmin+1)>>1;
Vmid=(unsigned int)Vax;
if(Vmin==Vmid) break;
Vax=Vax*Vax;
if(Val<Vax)
Vmax=Vmid;
else if(Val>Vax)
Vmin=Vmid;
else break;}
return Vmid;
} 直接取峰峰值*1.41,我觉得可行。 有谁会用示波器只测正弦波?
用这个方法出有效值,不如只出平均值和峰峰值好了。 而且峰值/1.414才是 也可以做假有效值,就是把负的变成正的加上去,取平均值。 【17楼】 ZealotNH 发仔
-_-!!!!!我犯低级错误了 那个均方根算法是否要求采样数据必须是刚好一个周期的数据呢? 不太可能,因为硬件触发也是需要时间的,如果是顶点采样,频率飘一点,就会出错,而且你的第一个采样点就正好落在一个周期开始的位置吗?
页:
[1]