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、按电流的不同,可分为:直流蜂鸣器和交流蜂鸣器,其中,以直流最为常见压电式蜂鸣器,用的是压电腔团庆材料,即当受到外力导致压电材料发生形变时压电材料会产生电荷。同样,当通电时压电材料会发生形变或丛。

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

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

蜂鸣器电路的工作原理

蜂鸣器 电路原理图使用SH69P43 为控制芯片,使用4MHz 晶振作为主振荡器。

PORTC.3/T0 作为I/O 口通过三极管Q2 来驱动蜂鸣器LS1,而PORTC.2/PWM0 则作为PWM 输出口通过三极管Q1 来驱动蜂鸣器LS2。另外在PORTA.3 和PORTA.2 分别接了两个按键,一个是PWM 按键,是用来控制PWM 输出口驱动蜂鸣器使用的另一个是PORT 按键,是用来控制I/O 口驱动蜂鸣器使用的。连接按键的I/O 口开内部上拉电阻。

先分析一下蜂鸣器。所使用的蜂鸣器的工作频率是2000Hz,也就是说蜂鸣器的驱动信号波形周期是500μs,由于是1/2duty 的信号,所以一个周期内的高电平和低电平的时间宽度都为250μs。软件设计上,将根据两种驱动方式来进行说明。

a) 蜂鸣器工作原理:PWM 输出口直接驱动蜂鸣器方式

由于PWM 只控制固定频率的蜂鸣器,所以可以在程序的系统初始化时就对PWM 的输出波形进行设置。

首先根据SH69P43 的PWM 输出的周期宽度是10 位数据来选择PWM 时钟。系统使用4MHz 的晶振作为主振荡器,一个tosc 的时间就是0.25μs,若是将PWM 的时钟设置为tosc 的话, 则蜂鸣器要求的波形周期500μs 的计数值为500μs/0.25μs=(2000)10=(7D0)16,7D0H 为11 位的数据,而SH69P43 的PWM

输出周期宽度只是10 位数据,所以选择PWM 的时钟为tosc 是不能实现蜂鸣器所要的驱动波形的。

这里将PWM 的时钟设置为4tosc,这样一个PWM 的时钟周期就是1μs 了,由此可以算出500μs 对应的计数值为500μs/1μs=(500)10=(1F4)16,即分别在周期寄存器的高2 位、中4 位和低4 位三个寄存器中填入1、F 和4,就完成了对输出周期的设置。再来设置占空比寄存器,在PWM 输出中占空比的实现是

通过设定一个周期内电平的宽度来实现的。当输出模式选择为普通模式时,占空比寄存器是用来设置高电平的宽度。250μs 的宽度计数值为250μs/1μs=(250)10=(0FA)16。只需要在占空比寄存器的高2 位、中4 位和低4 位中分别填入0、F 和A 就可以完成对占空比的设置了,设置占空比为1/2duty。

以后只需要打开PWM 输出,PWM 输出口自然就能输出频率为2000Hz、占空比为1/2duty 的方波。

b) 蜂鸣棚虚器工作原理:I/O 口定时翻转电平驱动蜂鸣器方式

使用I/O 口定时翻转电平驱动蜂鸣器方式的设置比较简单,只需要对波形分析一下。由于驱动的信号刚好为周期500μs,占空比为1/2duty 的方波,只需要每250μs 进行一次电平翻转,就可以得到驱动蜂鸣器的方波信号。在程序上,链茄燃可以使用TIMER0 来定时,将TIMER0 的预分频设置为/1,选择TIMER0 的始终为系统时钟(主振荡器时钟/4),在TIMER0 的载入/计数寄存器纳颂的高4 位和低4 位分别写入00H 和06H,就能将TIMER0 的中断设置为250μs。当需要I/O 口驱动的蜂鸣器鸣叫时,只需要在进入TIMER0 中断的时候对该I/O 口的电平进行翻转一次,直到蜂鸣器不需要鸣叫的时候,将I/O 口的电平设置为低电平即可。不鸣叫时将I/O 口的输出电平设置为低电平是为了防止漏电。

电路,把音乐分解成音阶和散做棚音阶的时长的组合存在芯胡肢片中,无源蜂鸣器另一端接电源.baidu.com/view/b3921b22192e45361066f5b3用单片机任意端口按音阶频率输出方波信号,就是把晶振12m和震荡电容22p接上,vcc和vss接上电源,一个产生音阶频率。

你说的东西://wenku,外接上拉电阻4k7。

程序上用两个定时器,任意找一个io口,通过三极管驱动无源蜂鸣器,ea接电源,就可以实现音乐的输出,rst接上冲则拉电容10u和下拉电阻10k.html"

target="_blank">http,再通过一个限流电阻100欧姆接到三极管8050的基极.com/view/b3921b22192e45361066f5b3,发射极接地,集电极接无源蜂鸣器,就这么简单即可实现~~~

这里可以下载到音阶频率表

提问者评价

谢谢.

评论

|


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存