ifree64 发表于 2009-4-12 00:05:17

手持示波仪软件初稿,请相关软件编写人员认领任务,谢谢

今天晚上将我自己先前实验写的代码按照我在这个帖子发出的模块、流程进行了整理,写出了如下的框架代码。
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)

my_avr 发表于 2009-4-12 11:12:41

帮顶一下

ifree64 发表于 2009-4-12 13:26:33

如何画栅格?
我们用的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)了,这样看起来就不好看了,怎么解决呢?

myworkmail 发表于 2009-4-13 10:19:33

波形数据处理,硬件触发、ADC采样程控这些任务你能解释一下吗?比如波形数据处理是要求平均值还是什么?硬件触发是什么意思?外中断吗?

dvhome 发表于 2009-4-13 10:36:32

一般都是要画一个框吧?

如果画框,就好处理了,界面也比较好看

但是就是显示区域变小了

ghost2 发表于 2009-4-13 11:00:46

我做硬件触发、ADC采样好了。

makesoft 发表于 2009-4-13 11:12:21

192*64的液晶很难处理好
分成5条线吧,坐标分别为 1、16、31(基线)、46、61

ifree64 发表于 2009-4-13 11:27:46

3楼,硬件触发是外部比较电路给的中断信号。数据处理部分具体怎么做你可以自己考虑,我们一起讨论,只需给其他模块提供计算峰峰值、有效值、频率等信息即可。

4楼,栅格画出来了,就不要再画框了吧,毕竟空间太少了。

6楼,分成5条线吧,坐标分别为 1、16、31(基线)、46、61,
这样就是15个点一个垂直栅格了,可能也只好这么办了。

我做波形显示部分吧。

dvhome 发表于 2009-4-13 17:46:57

还剩下的就是数据处理了,是吧?

没人要就我来吧

myworkmail 发表于 2009-4-14 09:30:34

那我呢?要不ghost2你把硬件触发让给我吧,一人做一样吧,也快点

ghost2 发表于 2009-4-14 17:37:52

硬件触发、ADC采样程控还需要详细讨论一下,不过估计代码量已经不大了。

wy2000 发表于 2009-4-14 20:37:03

屏太小了,可以用大一点的,贵不了多少

dvhome 发表于 2009-4-15 10:49:20

针对STM8S的运算速度,有效值要怎么来做才合适???如果要算很精准(譬如输入非正弦波),好像不太现实


或者是直接取峰峰值*1.41??

ZealotNH 发表于 2009-4-15 11:56:39

均方根,如果可以 自己写开方算法,不用浮点运算。
这个功能选择启动,就不会总是太慢了。

ZealotNH 发表于 2009-4-15 12:36:24

自己写的二分法开方 不怎么好。坛子上有另外一种开方程序,只是看不懂。
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;
}

ifree64 发表于 2009-4-15 12:44:36

直接取峰峰值*1.41,我觉得可行。

ZealotNH 发表于 2009-4-15 12:56:53

有谁会用示波器只测正弦波?
用这个方法出有效值,不如只出平均值和峰峰值好了。

ZealotNH 发表于 2009-4-15 12:57:51

而且峰值/1.414才是

ZealotNH 发表于 2009-4-15 13:07:26

也可以做假有效值,就是把负的变成正的加上去,取平均值。

dvhome 发表于 2009-4-15 13:16:50

【17楼】 ZealotNH 发仔


-_-!!!!!我犯低级错误了

xingliu 发表于 2009-4-16 23:41:46

那个均方根算法是否要求采样数据必须是刚好一个周期的数据呢?

myworkmail 发表于 2009-4-17 17:18:30

不太可能,因为硬件触发也是需要时间的,如果是顶点采样,频率飘一点,就会出错,而且你的第一个采样点就正好落在一个周期开始的位置吗?
页: [1]
查看完整版本: 手持示波仪软件初稿,请相关软件编写人员认领任务,谢谢