//下面是我为了防止它一直响,写了有关蜂鸣器的代码,但是它还是会一通电就响一下
#include <reg52.h>
sbit beep = P2^4; //P2^4是蜂鸣器的端口
void delay(int j)
{
int n;
for(n=0;n<j;n++);
}
void main()
{
int i;
beep = ~beep; //防止一直响
while(1)
{
for(i=0;i<8;i++)
{
P1=~(0x01<<i); //0x01=0000 0001
delay(10000);
}
} //实现流水灯
}
单片机通电后,运行代码至[beep = ~beep;]是需要时间的,这个时间,管脚是不定态,因此出现了你说的上电响一声的问题。
解决办法是:
1、检查蜂鸣器驱动电路,是pnp还是npn,即低电平响,还是高电平响;
2、跟进高低电平驱动形式,增加上拉或下拉电阻,确保通电瞬间,三极管或mos管处于关断状态。