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

怎么使用单片机控制蜂鸣器发声,第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);//响一段时间

}

}

单片机80c51汇编语言控制蜂鸣器‘嘟’一长三短程序。

你这是实物开发板上的蜂鸣器吧,是有源的蜂鸣器程序很好写。蜂鸣器所接的单片机引脚输出有效控制电平,让蜂鸣器发声。那声音长短就调用延时子程序来控制,延时到,声音停,过一会再响,延时长,声音长,延时短,声音短。

//假设晶振12MHZ,P17控制蜂鸣器

#include "reg51h"

sbit FMQ=P1^7;

void main(void)

{

TMOD |= 0X10; //定时器1工作于方式1,16位定时器

TH1 = 0XFE; //定时器1定时时间=500uS

TL1 = 0X0C;

ET1 = 1; //使能定时器1中断

EA =1; //开总中断

while(1)

{

}

}

void TIMER1(void) interrupt 3 //定时器1中断函数使用默认寄存器组

{

TH1 = 0XFE; //定时器1定时时间=500us

TL1 = 0X0C;

FMQ=!FMQ;

}

图 启动和停止控制程序的梯形图

启动和停止控制程序的设计。启动信号为X1,当碰到SQ时,X1常开触点闭合,利用脉冲微分指令PLS产生一个脉冲信号,使输出继电器Y1线圈得电并自锁,Y1产生的输出信号,使蜂鸣器呜叫。停止信号是计数器的常闭触点。当报警灯闪烁16次后,计数器的常闭触点断开,使Y1线圈失电,Y1的触点复位,报警电路停止报警。启动和停止控制程序的梯形图电路如图所示。

你这是实物开发板上的蜂鸣器吧,是有源的蜂鸣器程序很好写。蜂鸣器所接的单片机引脚输出有效控制电平,让蜂鸣器发声。那声音长短就调用延时子程序来控制,延时到,声音停,过一会再响,延时长,声音长,延时短,声音短。

这里修改:

sbit key1=P1^0;

sbit key2=P1^1;

void Play_Song(unsigned char i)

{

unsigned char Temp1,Temp2;

unsigned int Addr;

Count = 0; //中断计数器清0

Addr = i  217;

while(1)

{

if(key2==0)break;           //插入这一句

Temp1 = SONG[Addr++];

if ( Temp1 == 0xFF ) //休止符

{

TR0 = 0;

Delay_xMs(100);

}

else if ( Temp1 == 0x00 ) //歌曲结束符

{

return;

}

else

{

Temp2 = SONG[Addr++];

TR0 = 1;

while(1)

{

_Speak = ~_Speak;

Delay_xMs(Temp1);

if ( Temp2 == Count )

{

Count = 0;

break;

}

}

}

}

}

PlaySong2(

{

whlie(1)

    {

    if(key1==0)break;   //插入这一句

    

    }

}

void main()

{

Time0_Init(); //定时器0中断初始化

while(1)

    {

    Play_Song(0); //播放1

    Play_Song2(0); //播放2

    }

}

让蜂鸣器发出两种不同的声调很容易,只要给蜂鸣器的控制信号发送不同频率的脉冲就可以实现了,以下以延时方式来做。#include#defineucharunsignedchar#defineuintunsignedintsbitSPK=P1^0;sbitK1=P1^7;//发声函数voidAlarm(uchart){uchari,j;for(i=0;i<200;i++){SPK=~SPK;for(j=0;j

以上就是关于怎么使用单片机控制蜂鸣器发声全部的内容,包括:怎么使用单片机控制蜂鸣器发声、单片机80c51汇编语言控制蜂鸣器‘嘟’一长三短程序、51单片机蜂鸣器发出1KHz的信号的c语言程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存