蜂鸣器有两种,一种是无源的,另一种为有源的,确认的方法为: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语言程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)