jhjkdz 发表于 2014-2-5 10:16:54

请教m48驱动蜂鸣器的问题

电路图如图:现在要求是:当检测到故障信号(低电平有效),蜂鸣器响,故障信号为高电平,蜂鸣器不响。当蜂鸣器响时,按一次键,蜂鸣器不响。这个都可以做到。
if((故障 == 0)&& (按键没按标志位))
{
    蜂鸣器响;
}
else
{
   蜂鸣器不响;
}
if(按键按下)
delay(10);
if(按键按下)
{
    按键按下标志位;//可以解除声音
}

现在的问题是:按键按下,声音可以消除,但是下一次故障来的时候,(故障输入信号低-----高--------低),蜂鸣器就不响了。这个如何解决,要求是会响。也就是按键单次有效?

xl1736 发表于 2014-2-5 13:03:41

建议驱动蜂鸣器改用共集电极放大电路,不然U11电流不够

jhjkdz 发表于 2014-2-5 13:22:21

多谢回复!现在主要是软件问题!

wrmike 发表于 2014-2-5 23:27:57

jhjkdz 发表于 2014-2-5 13:22
多谢回复!现在主要是软件问题!

改为边沿检测可能好点
if(故障从1变为0)
        蜂鸣器响;
if(按键从0变为1)
        蜂鸣器不想;       
这样好处是故障只要发生了,不按键蜂鸣器会一直想。但是要加延时去抖,你的延时去抖有问题,第二个if应该改为else if 。

fzkqi 发表于 2014-2-5 23:41:20

故障信号消除时,清除按键标志就行了

jhjkdz 发表于 2014-2-6 10:04:47

wrmike 发表于 2014-2-5 23:27
改为边沿检测可能好点
if(故障从1变为0)
        蜂鸣器响;


多谢!我试试

jhjkdz 发表于 2014-2-6 10:05:12

fzkqi 发表于 2014-2-5 23:41
故障信号消除时,清除按键标志就行了

多谢!我试试
页: [1]
查看完整版本: 请教m48驱动蜂鸣器的问题