单片机蜂鸣器控制响一下为什么是一直响??

我是那别人红外控制代码改的,想按一下红外控制器响一下蜂鸣器,现在不按还好,按了就响不停了了。。帮忙看看代码吧

extern unsigned char IRCOM[7];
extern unsigned char sum[1]={0}; //当前红外码
main()
{
IRInit();
while(1)
{
//显示红外键码
if(sum[1] != IRCOM[2]) //在下面把IRCOM[2]赋给sum[1]了为什么,再次循环时候这里还是会一直执行???
{
beep=1;
delay(500);
beep=0;
sum[1]=IRCOM[2]; //数码管却能正确显示
display(sum[1]); //把红外码送到数码管显示
}

}

}

朋友,你要先去看一下,中断的概念。你的红外接收代码应该是在中断中完成的。IRCOM的修改也是在中断函数中。
程序逻辑应该是:接收到红外信号,在中断中修改IRCOM。在主循环中,判断IRCOM是否被修改。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-31
你程序的问题是条件判断出错。
中断函数里面对IRCOM的赋值,没有,所以我也不知道IRCOM[2]的定义是什么,它存储的值有什么用?
不过你可以这样改!!

while(1)
{
//显示红外键码
if(sum[1] != IRCOM[2]) //
{
beep=1;
delay(500);
beep=0;
sum[1]=IRCOM[2]; //数码管却能正确显示
display(sum[1]); //把红外码送到数码管显示
//***********
IRCOM[2]=0; //在这里对IRCOM[2]清零。
//******************
}

}
索然不知道你程序的其他部分,你试试吧,应该能够行的!
第2个回答  2013-10-31
建议重点检查 红外相关代码,很可能是那边 按键松开后 IRCOM[2]的值改变了。

为什么我的51单片机一开机,蜂鸣器不不停的响啊,这是为什么啊
可能是接至你蜂鸣器的I\/O口内部加了上拉电阻,输出了高电平,所以会响。你用万用表测测那个I\/O口上电时输出的电平就可以知道是什么情况了

51单片机蜂鸣器一直响怎么办?
你往单片机里写入一个程序,控制这个引脚分别为高低电平各1S钟,看看是不是还一直响,如果还一直响,那有可能是蜂鸣器的和单片机相连的引脚被短路到电源上或者地上了

...使蜂鸣器只响一声的程序,试过了很多,都是一直响的...
你好!!你在蜂鸣器一直再响,是因为你的单片机程序一直在重新启动;你的程序少了while 的循环,在程序的结尾加上:while(1){}完整的代码是:include <reg51.h>sbit Beep = P1^5 ;void delay(unsigned int i) ;void main(){ unsigned int m,n=1; for(m=0;m<2000; m++) { ...

51单片机频率调高了,蜂鸣器一直响,为什么呢?
应该是你的程序中延迟时间太短了,晶振频率提高后机械周期变短,从而导致延迟时间变短,其实还是响---停--响,只是人耳无法分辨,感觉上是一直响。

d单片机程序烧录时蜂鸣器长鸣是什么意思
你用的单片机程序烧录时,控制蜂鸣器的io口默认电平正好是蜂鸣器导通,所以蜂鸣器长鸣,改变ii口电平可以关闭蜂鸣器

一个关于单片机蜂鸣器的问题,这个代码为什么会让蜂鸣器一直响,Beep=...
Beep= 1;delay(5);Beep= 0;delay(5);你把这部分循环几十次甚至几百次后,然后在后面加一个while(1),这样就不会一直响。蜂鸣器是振荡发声的,如果你一直是给置1或者一直是置0,那么就不会响的。你这里就是程序一直在执行,不停地101010变换,所以就不会停 ...

单片机蜂鸣器不会响啊,郁闷至极
这么跟你讲吧!蜂鸣器用输出01的变化来控制是为了控制发声频率,给固定控制信号也是会响的,若输出0到控制端,蜂鸣器不响,输出1就一定会响。你再试试?可能你的程序就没有执行。或者你端口控制错了,蜂鸣器没有接在p1.5。

蜂鸣器一直滴滴的响怎么回事?
有可能电路接触不良。电压达不到。 解决方法: 一个是改变硬件,使蜂鸣器在控制的IO口为低电平时响,并改动程序的相应部分。 另一个比较简单,在main主程序的BZ=0后加上一小段延时,把单片机上电复位的时间给错过去。1、 正确区分正常响声与非正常响声。汽车在工作时各机构存在的振动,会发出多种性质的...

单片机开发板上蜂鸣器一直响是怎么回事,怎么才能不响啊
查找单片机上控制蜂鸣器的引脚(在电路图上去找),根据管子类型将该引脚设置成低电平或高电平即可。

单片机蜂鸣器一插就响什么出了问题?
要看具体电路来讨论了。复位后,通常GPIO管脚为高、弱上拉。设计时如果蜂鸣器正极接管脚,复位初始化程序段一段时间都没有管理此位,始终为高,可能会响。另外考虑下上电复位电路的时间。

相似回答