怎么用c语言编写,使蜂鸣器发出不同频率的声音(51单片机).

怎么用c语言编写,使蜂鸣器发出不同频率的声音(51单片机).,第1张

1、无源蜂鸣器,需要外部提供脉冲信号才会发声,且声音会随脉冲频率变化而变化。而有源蜂鸣器内部有振荡器,所以只需要提供电压(高电平)就能发声,它们的原理不同。

2、例如定义 一个IO连接蜂鸣器。比如,sbit fmq=P1^0; 再来个500US延时函数。

void beep()    //所以会产生1KHZ频率声音

{

     fmq=0;

    delay500us();

    fmq=1;

    delay500us();    

}

1,STC89C52推动8050的I/O必须配置为推挽输出(配置方法详见数据手册)再2K电阻连接;

2,无源蜂鸣器需要音频脉冲驱动;

3,8050各极的电压:静态且驱动I/O为0时,基极0V,发射极0V,集电极 = VCC;

动态电压与音频脉冲的占空比有关,假定占空比为50%,那么:基极约035V,发射极电压0V,

集电极电压与蜂鸣器的阻抗有关,8欧?16欧?32欧?64欧?与8050的hFE有关,只能给个大概,约1/2VCC。

#include<reg52h>sbit buzzer=P2^0;sbit D1=P1^0;

delay() // 让P10口延时1秒

{ unsigned int i,j;

for (i=0;i<500;i++)

for (j=0;j<358;j++);

}fasheng() //发声子程序

{ unsigned int a,x;

for (a=0;a<2700;a++) //for循环让蜂鸣器发声1秒

{

buzzer=!buzzer;

for (x=0;x<45;x++); //45为蜂鸣器发声频率,可调

}}

void main()

{

while (1)

{

D1=0; //P10口LED点亮

fasheng(); //P20发声1S

D1=1; //P10口LED熄灭

delay(); //延时1秒

}

}

I/O 口定时翻转电平驱动蜂鸣器方式

使用I/O 口定时翻转电平驱动蜂鸣器方式的设置比较简单,只需要对波形分析一下。由于驱动的信号刚好为周期500μs,占空比为1/2duty 的方波,只需要每250μs 进行一次电平翻转,就可以得到驱动蜂鸣器的方波信号。在程序上,可以使用TIMER0 来定时,将TIMER0 的预分频设置为/1,选择TIMER0 的始终为系统时钟(主振荡器时钟/4),在TIMER0 的载入/计数寄存器的高4 位和低4 位分别写入00H 和06H,就能将TIMER0 的中断设置为250μs。当需要I/O 口驱动的蜂鸣器鸣叫时,只需要在进入TIMER0 中断的时候对该 I/O 口的电平进行翻转一次,直到蜂鸣器不需要鸣叫的时候,将I/O 口的电平设置为低电平即可。不鸣叫时将I/O 口的输出电平设置为低电平是为了防止漏电。

估计是你的延时太长了

51单片机驱动蜂鸣器(蜂鸣器分有源与无源两种,有源指加电压就会响的,无源需要以一定频率的交变脉冲电压驱动),如果只响05S,只要用一个定时05S开关信号驱动、或者用05S的一定频率的脉动信号驱动就可以了。

1 你的P0看不出作用,每次EX0中断都取反,可能会影响与P0有关的电路部分

2 main()中,while(1)后没有语句,编译不了。可能你是省略了后面的程序

3 for(j=0;j<57;j++);延时是否够,不够时改为for(j=0;j<57;j++) _nop();或for(j=0;j<57;j++) { _nop();_nop(); }

4 BEEP(bit i)中while(1)没有跳出的语句,在需要出来时用break;跳出while(1)循环

这得看你的蜂鸣器是有源还是无源,如果是无源的蜂鸣器需要经过变频控制才会发声,对于有源的蜂鸣器则直接输出高低电平就可以。

注意,这里的“源”不是指电源。而是指震荡源。 也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。

而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K~5K的方波去驱动它。

两种蜂鸣器好像一样,但仔细看,两者的高度略有区别,有源蜂鸣器a,高度为9mm,而无源蜂鸣器b的高度为8mm。如将两种蜂鸣器的引脚郡朝上放置时,可以看出有绿色电路板的一种是无源蜂鸣器,没有电路板而用黑胶封闭的一种是有源蜂鸣器。

迸一步判断有源蜂鸣器和无源蜂鸣器,还可以用万用表电阻档Rxl档测试:用黑表笔接蜂鸣器 "+"引脚,红表笔在另一引脚上来回碰触,如果触发出咔、咔声的且电阻只有8Ω(或16Ω)的是无源蜂鸣器;如果能发出持续声音的,且电阻在几百欧以上的,是有源蜂鸣器。

以上就是关于怎么用c语言编写,使蜂鸣器发出不同频率的声音(51单片机).全部的内容,包括:怎么用c语言编写,使蜂鸣器发出不同频率的声音(51单片机).、(无源)蜂鸣器,stc89c52单片机,npn8050,求分析,有图、单片机同时驱动LED和无源蜂鸣器等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9286695.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存