波形判断的vb程序,求代码

波形判断的vb程序,求代码,第1张

1 波形渐变的过程是正常的; 则采用移动平均值来计算即可

2 波形上升沿和下降沿要求过滤,即要识别出上升沿和下降沿并对其不作为不良处理;可以在 移动平均值中因为突变而给过滤掉了.

3 波形中间的尖峰波谷是不良位置;也在移动平均值中能够区分出来了

4 整个程序处理时间不到1s,整个波形采集的数据大概为60000个,即64K,对于电脑来说,数据量不算很多,足够时间来做复杂处理.

5.如果能识别出有不良存在,并且能有办法在图上做出标示的最佳; 判断到不良值时候,改用其它颜色画移动平均值即可.

移动平均值计算公式:

dim i=30 '平均值个数,可以随意更改

dim j=3 '波动范围

dim k=0

dim pv=0 平均值

dim data(i) '前若干个基础数据

for k=0 to i

pv+=data(k)

next

pv=pv/i+1

dim data2 '新数据

if data2>pv+j or data2<pv-j

'不良数据

else

pv=pv/i+data2

endif

'接受新数据,重新上面的判断

1、用普通I/O口采用软件定时器中断可以模拟SPWM输出。"/**/"里面的内用是对程序的标注,解析。

2、/*采用6MHz晶振,在P1.0脚上输出周期为2.5s,占空比为20%的脉冲信号*/

/*定时100ms,周期2.5s需25次中断,高电平0.5s需5次中断*/

#include <reg51.h>

typedef unsigned char uchar

sbit P1_0=P1^0

uchar time=0

uchar period=25

uchar high=5

void timer0() interrupt 1 using 1

{

TH0=0x3c/*定时器初值重装载*/

TL0=0xb0

time++

if(time==high) /*高电平持续时间结束,变低*/

{ P1_0=0}

else if(time==period) /*周期时间到,变高*/

{ time=0

P1_0=1

}

}

void main()

{

TMOD=0x01/*定时器0方式1*/

TH0=0x3c/*定时器装载初值*/

TL0=0xb0

EA=1/*开CPU中断*/

ET0=1/*开定时器0中断*/

TR0=1/*启动定时器0*/

while(1) /*等待中断*/

{}

}

3、说明:本程序主要采用了51单片机(具体型号STC89C52RC)的定时器,工作在方式3,来产生规定时间内的方波,制造SPWM.


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11269645.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-14
下一篇2023-05-14

发表评论

登录后才能评论

评论列表(0条)

    保存