怎么使用单片机控制蜂鸣器发声

怎么使用单片机控制蜂鸣器发声,第1张

蜂鸣器有两种,一种是无源的,另一种为有源的,确认的方法为:1)看封装,如果引脚端为PCB板的,一般为无源的,引脚端为树脂灌封的,一般为有源的。2)加电实验,用5V电压点击接触引脚时,只有“哒哒”声的为无源的,发出一个单音响的为有源的。

两种蜂鸣器用单片机的控制方法是一样的,对于无源的,要求单片机送出一组断续的音频信号,使蜂鸣器按要求发声,对于有源蜂鸣器,要求单片机送出一组断续的电脉冲信号,用于分断蜂鸣器的通断状态,而使有源蜂鸣器发出“嘀嘀”,“嘀嘀嘀”等希望的声音。

无源蜂鸣器举例:

//

//声响驱动程序 BELL--整点报时(闹钟音两短一长)

//

void Beep(void)

{

uint a;//定义变量用于发声的长度设置

uchar b;

for(b=2;b>0;b--){

for(a=200;a>0;a--){//第一个声音的长度

beep = ~beep;//取反扬声器驱动口,以产生音频

Delay_1us(500);//音调设置延时

}

DelayM(1000);

}

for(a=1000;a>0;a--){//第一个声音的长度

beep = ~beep;//取反扬声器驱动口,以产生音频

Delay_1us(500);//音调设置延时

}

beep = 1;//音乐结束后扬声器关闭

}

有源蜂鸣器举例:

void main(void)

{

NB=0;//有源蜂鸣器初始不送电

while(1)

{

NB=0;//有源蜂鸣器断电

delay(300);//停一段时间

NB=1;//有源蜂鸣器送电

delay(1000);//响一段时间

}

}

没写过。基本原理应该是修改定时器的定时时间来完成的。实际发声频率是蜂鸣器本身频率及给定方波频率的和频和差频。需要调试实现。

铃声假设为“嘀铃铃铃”。能否找到2个频率点‘嘀’音和‘铃’音来模拟。

模拟音为DXLXLXLXLX。D音为频率D,时长dmS;X为静音,时长为xmS;L音为频率L,时长为lmS。

将D、X、L组合音做一个定时时间初值数组。每次中断后,翻转,计数,并重置下一初值。

贴上一个报警音程序,仅供参考。

#include <reg51h>

sbit SPK = P2^5;

unsigned char frq;

void delayms(unsigned char ms);

main()

{

TMOD = 0x01;

frq = 0x00;

TH0 = 0x00;

TL0 = 0xff;

TR0 = 1;

IE = 0x82;

while(1)

{

frq++;

delayms(1);

}

}

void timer0() interrupt 1 using 1

{

TH0 = 0xfe;

TL0 = frq;

SPK = ~SPK;

}

void delayms(unsigned char ms)

{

unsigned char i;

while(ms--)

{

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

}

}

以上就是关于怎么使用单片机控制蜂鸣器发声全部的内容,包括:怎么使用单片机控制蜂鸣器发声、求高手:用51单片机一个口驱动蜂鸣器模仿出电话响铃的C程序如何写,好的我多加分!、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/9517971.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存