51单片机蜂鸣器程序是什么?

51单片机蜂鸣器程序是什么?,第1张

51单片机蜂鸣器程序为:

#include"reg52.h"

typedef unsigned char u8

typedef unsigned int u16

sbit beep=P1^5

void delay(u16 i)

{

while(i--)

}

void main()

{

while(1)

{

beep=~beep

delay(1000)//控制音调频率

beep=~beep/控制声音大小

delay(10)

}

}

扩展资料:

BUZZER蜂鸣器的分类:

1、按其驱动方式的原理分,可分为:有源蜂鸣器(内含驱动线路,也叫自激式蜂鸣器)和无源蜂鸣器(外部驱动,也叫他激式蜂鸣器)。

2、按构造方式的不同,可分为:电磁式蜂鸣器和压电式蜂鸣器。

3、按封装的不同,可分为:DIP BUZZER(插针蜂鸣器)和SMD BUZZER(贴片式蜂鸣器)。

4、按电流的不同,可分为:直流蜂鸣器和交流蜂鸣器,其中,以直流最为常见压电式蜂鸣器,用的是压电材料,即当受到外力导致压电材料发生形变时压电材料会产生电荷。同样,当通电时压电材料会发生形变。

电磁式蜂鸣器,主要是利用通电导体会产生磁场的特性,用一个固定的永久磁铁与通电导体产生磁力推动固定在线圈上的鼓膜。

由于两种蜂鸣器发音原理不同,压电式结构简单耐用但音调单一音色差,适用于报警器等设备。而电磁式由于音色好,所以多用于语音、音乐等设备。

让蜂鸣器发出两种不同的声调很容易,只要给蜂鸣器的控制信号发送不同频率的脉冲就可以实现了,以下以延时方式来做。

#include<reg51.h>

#define

uchar

unsigned

char

#define

uint

unsigned

int

sbit

SPK=P1^0

sbit

K1=P1^7

//发声函数

void

Alarm(uchar

t)

{

uchari,j

for(i=0i<200i++)

{

SPK=~SPK

for(j=0j<tj++)

//由参数t行成不同的频率

}

}

voidmain()

{

SPK=0

while(1)

{

if(K1==1)

{

Alarm(90)

Alarm(120)

}

}

}

通过中断的方式,使用定时器0来提供1KHz的方波,蜂鸣器引脚定义为P1.0。代码如下:

#include

<reg51.h>

#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方波

}


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

原文地址: http://outofmemory.cn/yw/8119109.html

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

发表评论

登录后才能评论

评论列表(0条)

保存