C51 单片机控制蜂鸣器程序

C51 单片机控制蜂鸣器程序,第1张

把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程序设置蜂鸣器用什么指令等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存