用proteus仿真蜂鸣器,蜂鸣器一直想,能帮去找找原因吗?

#include<reg51.h>
#define uchar unsigned char
sbit sounder=P1^7;

void delay(uchar z)
{
uchar j,i;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{ sounder=1;
while(1)
{
sounder=~sounder;
delay(500);
}

可能的原因有如下:
1、第一个原因肯定是了,那个电阻你用得太大了,把它改为1k!
2、如果改了电阻就行的的话就算了,如果还一直响,你在仿真时能否看到P1.7的颜色红、蓝变化?如果有,说明程序没错,是仿真的问题,你直接把那个蜂鸣器一脚接到1.7,一脚接地,去掉三极管
3、频率设置不对,就是说你的延时时间不对(太长太短都不行!),你可把延时时间设置大约在100us-1ms左右,因为人能听到的声波的频率大约在k级。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-01
延时太短了,耳朵听到的就是一直在响,多加几个delay()在sounder=~sounder;
后效果就不同了。
相似回答