51单片机,我想用蜂鸣器响一下停一下,这样写不对呀,小白一枚,求大神指教,谢谢

如题所述

第1个回答  2019-02-19
蜂鸣器是一种一体化结构的电子讯响器,本文介绍如何用单片机驱动蜂鸣器,他广泛应用于计算机、打印机、复印机、报警器、电话机等电子产品中作发声器件。
蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。
第2个回答  2019-02-19
不是太对,稍微改一下,给你写一个较为合适的吧:
#include<reg51.h>
sbit fm=P2^0;
void delay(int a)

{
int i;

while(a--)for(i=0;i<110;i++);

}
main()
{
while(1)
{
fm=0;

delay(1000);

fm=1;

delay(1000);

}

}追问

我的是无源蜂鸣器,换成你的程序,间隔时间可以,但是声音特别小,不是我要的那样,那个频率怎么写

第3个回答  2019-02-19
fm=1和fm=0之间的延时太短了追问

是无源蜂鸣器怎么写

第4个回答  2019-02-19
眼延时时间太短了,改长就行了追问

这是无源蜂鸣器,改长就没声音了

追答

需要方波驱动吗

追问

是的,一秒种一下,求程序

追答

void delay_1s(void )
{
uchar i,j=250;
while(j--)
{
for(i=0;i<250;i++);
}
}
main()
。。。//初始化
{
fm=~fm;
delay_1s();
}

追问

这个是延时函数我会,求无源蜂鸣器函数

追答

只要有正确的三极管驱动电路,给电平信号蜂鸣器不就可以响了吗
电路是怎么样的呢

相似回答