把2个蜂鸣器的频率各写成一个函数。
然后主函数里这样写
if (key1 == 0)
"执行1蜂鸣器频率"
else if (key2 == 0)
"执行2蜂鸣器频率"
蜂鸣器有两种,一种是无源的,另一种为有源的,确认的方法为: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);//响一段时间
}
}
S7-400程序设置蜂鸣器用延时子程序。
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、电子玩具、定时器等电子产品中作为发声器件。蜂鸣器分为有源蜂鸣器和无源蜂鸣器两种,在电路中用字母“H”或“HA”(旧标准用“FM”、“ZZG”、“LB”、“JD”等)表示。那么,怎么区分有源蜂鸣器和无源蜂鸣器呢?有源蜂鸣器内部带震荡源,所以只要一通电就会叫;而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K-5K的方波去驱动它,有源蜂鸣器往往比无源的贵,就是因为里面多个震荡电路。
无源蜂鸣器的优点是:
1 便宜;
2 声音频率可控,可以做出“多来米发索拉西”的效果;
3 在一些特例中,可以和LED复用一个控制口
假设蜂鸣器接在P10;假设是12M晶振;
用for循环:
P1^0=1; //输出高电平让蜂鸣器响
for(a=0;a<100;a++) //高电平保持时间延时函数
for(b=0;b<100;b++)
for(c=0;c<10;c++); //三级for嵌套循环定时10010010微秒即100毫秒
P1^0=0; //输出低电平让蜂鸣器关闭
for(a=0;a<100;a++) //关闭保持时间延时函数
for(b=0;b<100;b++)
for(c=0;c<50;c++); //三级for嵌套循环定时10010050微秒即500毫秒
还有不懂的补充提问
通过中断的方式,使用定时器0来提供1KHz的方波,蜂鸣器引脚定义为P10。代码如下:
#include
<reg51h>
#define
u8
unsigned
char
sbit
BEEP=P1^0;
void
main
{
EA=1;//开总中断
IT0=1;//打开定时器0源中断允许开关
TMOD=0x01;//选择定时器0工作在方式0
TR0=1;//启动定时器0
TH1=(65536-1000)/256;//赋值,定时1ms
TL1=(65536-1000)%256;
while(1)
{;}
}
void
TIM()
interrupt
1
{
TH1=(65536-1000)/256;
TL1=(65536-1000)%256;
BEEP=~BEEP;//蜂鸣器引脚输出1KHz方波
}
P17 接按键 ,P35接speaker 。发声最好不要用延时循环的,要用定时器作,不然你在哪里循环,进不了按键判断。
ORG 00H
AJMP MAIN
ORG 1BH
AJMP T1INT
ORG 30H
MAIN:
MOV TMOD,#10H
MOV TH1,#0FEH
MOV TL1,#0CH
SETB EA
SETB ET1
K1:
JB P17,K1
ACALL D10MS
JNB P17,$-2
CPL TR1
AJMP K1
T1INT:
MOV TH1,#0FEH
MOV TL1,#0CH
CPL P35
RETI
D10MS:
MOV R7,#20
MOV R6,#250
DJNZ R6,$
DJNZ R7,$-4
RET
END
以上就是关于C51 单片机控制蜂鸣器程序全部的内容,包括:C51 单片机控制蜂鸣器程序、怎么使用单片机控制蜂鸣器发声、S7-400程序设置蜂鸣器用什么指令等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)