导语
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于各类等电子产品中作发声器件,相对于扬声器控制简单,方便使用。
台式电脑的主机开机会滴一声、洗衣机按下按键及洗衣完成都会有声响,以上这些声音都是通过蜂鸣器来发出的,通过这些可与用户形成一定的交互。
蜂鸣器
分为压电式蜂鸣器和电磁式蜂鸣器两种,压电式蜂鸣器通过压电材料和金属片两端施加上一个电压后,由于压电效应,蜂鸣片就会产生机械变形而发出声响。
电磁式蜂鸣器按照其内部是否集成了震荡源可分为有源蜂鸣器,和无源蜂鸣器,利用电磁线圈对蜂鸣片的作用来发声的电子响讯器。
其有源蜂鸣器由于内部集成了震荡源,在蜂鸣器上电后就会以一定的频率发出响声。而无源蜂鸣器则需要使用方波去驱动它。其有源蜂鸣器价格高于无源蜂鸣器。
但无源蜂鸣器可控声音频率,达到一定程度的音乐盒效果。
我们经常使用的为有源式蜂鸣器,蜂鸣器作为电磁感性器件,其驱动需要较大的电流,而io的输出电流能力有限,因此需要搭配外围电路对其进行控制,常见的方式有三极管。
通过三极管的使得蜂鸣器工作,同时在蜂鸣器两端并联二极管,以保证在关断感性原件蜂鸣器时减小对电路的冲击。
无源代码
元器件是电路良好运行的基本保证,找元器件现货上唯样商城,原厂授权 正品保障,品类齐全。
无源驱动
#include //此文件中定义了单片机的一些特殊功能寄存器
sbit beep = p1^5; //定义蜂鸣器的引脚
void delay_10us(unsigned int time)
{
while(time--);
}
void simulate_pwm(unsigned char period, unsigned char duty)
{
unsigned char low = period / 100 * duty; //低电平延时时间
unsigned char high = period - low; //高电平延时时间
beep = 0; //蜂鸣器io电平置低
delay_10us(low); //低电平延时时间
beep = 1; //蜂鸣器io电平置高
delay_10us(high);//高电平延时时间
}
void main()
{
while(1)
{
//使用模拟pwm控制蜂鸣器
simulate_pwm(100, 50); //周期100*10us,占空比50%——频率:1khz
}
}
元器件是电路良好运行的基本保证,找元器件现货上唯样商城,原厂授权 正品保障,品类齐全。
两只老虎
#include
sbit buzz = p1^5 ; //蜂鸣器控制引脚
unsigned int code notefrequ[] = { //中音 1-7 和高音 1-7 对应频率列表
523, 587, 659, 698, 784, 880, 988, //中音 1-7
1047, 1175, 1319, 1397, 1568, 1760, 1976 //高音 1-7
} ;
unsigned int code notereload[] = { //中音 1-7 和高音 1-7 对应的定时器重载值
65536 - (11059200/12) / (523*2), //中音 1
65536 - (11059200/12) / (587*2), //2
65536 - (11059200/12) / (659*2), //3
65536 - (11059200/12) / (698*2), //4
65536 - (11059200/12) / (784*2), //5
65536 - (11059200/12) / (880*2), //6
65536 - (11059200/12) / (988*2), //7
65536 - (11059200/12) / (1047*2), //高音 1
65536 - (11059200/12) / (1175*2), //2
65536 - (11059200/12) / (1319*2), //3
65536 - (11059200/12) / (1397*2), //4
65536 - (11059200/12) / (1568*2), //5
65536 - (11059200/12) / (1760*2), //6
65536 - (11059200/12) / (1976*2), //7
} ;
bit enable = 1; //蜂鸣器发声使能标志
bit tmrflag = 0; //定时器中断完成标志
unsigned char t0rh = 0xff; //t0 重载值的高字节
unsigned char t0rl = 0x00; //t0 重载值的低字节
void playtwotiger();
void main()
{
unsigned int i;
ea = 1; //使能全局中断
tmod = 0x01; //配置 t0 工作在模式 1
th0 = t0rh;
tl0 = t0rl;
et0 = 1; //使能 t0 中断
tr0 = 1; //启动 t0
while (1)
{
playtwotiger(); //播放乐曲--两支老虎
for (i=0; i> 8;
t0rl = notereload[note];
//计算节拍总时间,右移 2 位相当于除 4,移位代替除法可以加快执行速度
beattime = (twotigerbeat[beat] * notefrequ[note]) >> 2;
//计算发声时间,为总时间的 0.75,移位原理同上
soundtime = beattime - (beattime >> 2);
enable = 1; //指示蜂鸣器开始发声
time++;
}
else //当前节拍未播完则处理当前节拍
{
if (time >= beattime) //当前持续时间到达节拍总时间时归零,
{ //并递增节拍索引,以准备启动新节拍
time = 0;
beat++;
}
else //当前持续时间未达到总时间时,
{
time++; //累加时间计数
if (time == soundtime) //到达发声时间后,指示关闭蜂鸣器,
{ //插入 0.25*总时间的静音间隔,
enable = 0; //用以区分连续的两个节拍
}
}
}
}
}
/* t0 中断服务函数,用于控制蜂鸣器发声 */
void interrupttimer0() interrupt 1
{
th0 = t0rh; //重新加载重载值
tl0 = t0rl;
tmrflag = 1;
if (enable) //使能时反转蜂鸣器控制电平
buzz = ~buzz;
else //未使能时关闭蜂鸣器
buzz = 1;
}(twotigernote); )
元器件是电路良好运行的基本保证,找元器件现货上唯样商城,原厂授权 正品保障,品类齐全。
//《世上只有妈妈好》数据表 元器件是电路良好运行的基本保证,找元器件现货上唯样商城,原厂授权 正品保障,品类齐全。
code unsigned char sszymmh[] = {
6, 2, 3, 5, 2, 1, 3, 2, 2, 5, 2, 2, 1, 3, 2, 6, 2, 1, 5, 2, 1,
//一个音符有三个数字。前为第几个音、中为第几个八度、后为时长(以半拍为单位)。
//6, 2, 3 分别代表:6, 中音, 3个半拍;
//5, 2, 1 分别代表:5, 中音, 1个半拍;
//3, 2, 2 分别代表:3, 中音, 2个半拍;
//5, 2, 2 分别代表:5, 中音, 2个半拍;
//1, 3, 2 分别代表:1, 高音, 2个半拍;
//
6, 2, 4, 3, 2, 2, 5, 2, 1, 6, 2, 1, 5, 2, 2, 3, 2, 2, 1, 2, 1,
6, 1, 1, 5, 2, 1, 3, 2, 1, 2, 2, 4, 2, 2, 3, 3, 2, 1, 5, 2, 2,
5, 2, 1, 6, 2, 1, 3, 2, 2, 2, 2, 2, 1, 2, 4, 5, 2, 3, 3, 2, 1,
2, 2, 1, 1, 2, 1, 6, 1, 1, 1, 2, 1, 5, 1, 6, 0, 0, 0};
//《烟花易冷》
unsigned char code song1[]={
5,2,1, 3,2,1, 2,2,2, 2,2,4, 3,2,1, 1,2,1, 2,2,1, 3,2,4,
5,2,1, 3,2,1, 2,2,2, 2,2,2, 5,1,1, 3,2,1, 4,2,1, 3,2,4,
3,2,1, 3,2,1, 7,2,1, 3,2,1, 2,2,2, 1,2,1, 7,1,1, 1,2,1,
2,2,1, 3,2,1, 6,2,3, 6,1,1, 1,2,1, 3,2,1, 2,2,1, 6,1,1,
1,2,1, 7,1,1, 5,1,1, 6,1,6, 5,2,1, 3,2,1, 2,2,2, 2,2,1,
2,2,1, 3,2,1, 1,2,1, 2,2,1, 3,2,4, 5,2,1, 3,2,1, 2,2,2,
2,2,1, 2,2,1, 5,1,1, 3,2,1, 4,2,1, 3,2,4, 3,2,1, 3,2,1,
7,2,3, 3,2,1, 2,2,2, 1,2,1, 7,1,1, 1,2,1, 2,2,1, 3,2,1,
6,2,3, 6,1,1, 1,2,1, 3,2,1, 2,2,1, 6,1,1, 1,2,1, 7,1,2,
5,1,2, 6,1,6, 0,0,0 };
有源的也可以试试!
港口电气自动化PLC如何进行数据采集和远程监控
广西电信联合华为开通了全国首个5G SA独立组网的200MHz示范站
一加6T发布 采用了号称解锁速度全球最快的屏幕指纹
腾讯重磅推出“腾讯视频+”计划
应用笔记 | 使用STM32CubeMX生成配置代码的文件结构
基于51单片机的蜂鸣器设计
罗德与施瓦茨的ATC语音质量保证系统增强安全性、可靠性和效率
ICT在线测试机
一位电气工程师的十大忠告
2016年可穿戴行业年终盘点 未来走向何方
星空家园通过四步建设计划实现社区生态系统的搭建
Vishay无源元件在OBC设计中的应用
可以实现的JTAG调试器的嵌入式系统
关于MPS电源EMI分析与优化介绍
微软带你了解,AI 加持下的未来产业新形态
笔记本如何野外手机上网
未来铁路应用的安全解决方案
嵌入式linux启动时运行的inittab文件
顺势而谋!龙磁科技金属磁粉芯进入快车道
华为Mate10什么时候上市?最新消息:紧跟时代潮流!华为Mate10全面屏手机十月就来!坐等发布会揭晓!