打印
[匠人手记]

蜂呜器驱动程序应该放在那?匠人望请教

[复制链接]
2090|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
maiweitang|  楼主 | 2008-10-29 22:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
程序匠人| | 2008-10-29 22:41 | 只看该作者

写程序时我将LED数码管扫描放在中断程序中,而蜂呜器驱动程序放到main()中出现了发声变质,
——蜂鸣器是有源还是无源的?

如果将放到中断程序中,LED数码管就出现发声时闪动;
——蜂鸣器与LED是共用电源吗?有没有电解电容稳压?另外,程序中有没有相互干扰的可能?

使用特权

评论回复
板凳
maiweitang|  楼主 | 2008-10-29 22:57 | 只看该作者

回匠人

/********************************************/
写程序时我将LED数码管扫描放在中断程序中,而蜂呜器驱动程序放到main()中出现了发声变质,
——蜂鸣器是有源还是无源的?

如果将放到中断程序中,LED数码管就出现发声时闪动;
——蜂鸣器与LED是共用电源吗?有没有电解电容稳压?另外,程序中有没有相互干扰的可能? 
/******************************************/
回复:
我用的蜂鸣器是无源的,蜂呜器与LED是共用电源的,因为频率高通去蜂呜器中起电感阻抗,刚才按你所说的放了电容上去也一样,我是用FOR延时产生驱动频率的,这个是不是或都是你所说的相互干扰了,应该如何解决?

使用特权

评论回复
地板
程序匠人| | 2008-10-30 09:28 | 只看该作者

无源蜂鸣器一般的驱动频率=2~4khz,一般建议开一个定时中断,中断频率与驱动频率相一致。每次进中断后判一下“鸣叫使能标志”,如果标志=1,则把蜂鸣器输出口取反;如果标志=0,则把蜂鸣器输出口=0(关闭蜂鸣器)。

“鸣叫使能标志”需要自己设立,是一个位变量,就是控制该蜂鸣器的一个开关。在你程序中的其它地方,设置或清除该标志即可。

如果有必要,还可以设立一个“鸣叫时间”变量。用于控制鸣叫时间长度。

这样,蜂鸣器的控制就可以独立于其它程序了。

至于你说的“用FOR延时产生驱动频率”,势必会与其它程序抢夺系统控制权。如果你的显示扫描时间也是用指令延时方法实现的话,二者将发生竞争。此乃下策。

使用特权

评论回复
5
maiweitang|  楼主 | 2008-10-30 14:32 | 只看该作者

谢谢

好,我试试,谢谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

6

帖子

0

粉丝