在VB中,用Timer控件,怎样实现以下功能:编一个程序,模拟产生PWM波,采样周期是2秒

在VB中,用Timer控件,怎样实现以下功能:编一个程序,模拟产生PWM波,采样周期是20秒如果采样时间间隔是2毫秒,产生50%的占空比的波形,怎样来编程。也就是说2s/... 在VB中,用Timer控件,怎样实现以下功能:编一个程序,模拟产生PWM波,采样周期是20秒
如果采样时间间隔是2毫秒,产生50%的占空比的波形,怎样来编程。也就是说2s/20ms=100次,50次采样高电平,50次采样低电平。怎么来实现啊,初学VB,感觉很困难,有哪位这方面的才人之士,在闲余中,用自己的才学帮帮处于困难中的我。
我自己试着编了一个,可以么?如果不是,怎么改正呢?此问题,我急需帮助,谢谢。
sub delay(delaytime as long) ???????这样可以延时1秒么?????
for i=1 to delaytime
DoEvents
next i
end sub
private sub timer1_timer()
dim start as Boolean
for i= 1 to 50
start=1
delaytime 20
start=0
delaytime 20
next i
if (i=50) then
pwm=0.5
end if
end sub
这样编写程序可以么?
采样周期是2秒,不是20秒。
展开
 我来答
威威202
2011-10-24 · TA获得超过1306个赞
知道大有可为答主
回答量:1644
采纳率:68%
帮助的人:1035万
展开全部
timer控件有定时触发的特性,在这里你不需要用延时程序,直接将timer的interval属性设置为20(ms),然后在触发事件里写入产生高电平,低电平程序(因为占空比为50%,所有可以用一个布尔变量来表示电平,为真表示高电平,为假表示低电平),定义一个常数值N,表示高低电平总数,这里为100,定义一个全局布尔变量,表示高低电平,再定义一个高低电平数目变量,程序如下:
private const N=100
dim b as boolean
dim c as integer
private sub timer1_timer()
c=c+1 '当前产生高低电平总数
b= not b ’高低电平转换
text1.text=iif(b,1,0)
if c=N then
pwm=0.5
timer1.enabled=false ‘ 关闭定时器
end if
end sub
以上程序表示连续每隔20ms交叉产生高低电,占空比为50%。为了方便,你还可以添加一个textbox控件,显示当前的电平.
希望我理解你的意思了,呵呵
leiyangbdwk
2011-10-24 · TA获得超过3295个赞
知道大有可为答主
回答量:4975
采纳率:12%
帮助的人:4400万
展开全部
我不是电子专业的,实在懂不了你的意思。
你能把你的需求转换成vb语言吗?
比如说:需要每2毫秒产生一个变量,变量的值范围和时间变化规律是。。
检测这个变量的函数是sub xx()
之类,
那才好给你想办法。
更多追问追答
追问
如果只看我的要求,不看我写的程序(因为我写的程序有可能是错误的),你能按照你的思路给我写个程序么,此问题困惑我好久了,你能帮帮我么,谢谢你。
追答
你的要求我不懂呀?而且你说得有点乱。
能详细点么?6*seven*5*six*8*six*0*six*6
可以加
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e3c7525
2011-10-26 · 超过17用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:32.3万
展开全部
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Public Function Delay(DT As Long)
For i = 0 To DT Step 2
DoEvents '操作权交给系统 否则程序会暂时无响应
Sleep 1
Next i
End Function

DELAY 1000 就是延时1秒
你说的20毫秒可以用delay 20
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式