蜂鸣器从结构区分分为压电式蜂鸣器和电磁式蜂鸣器。压电式为压电陶瓷片发音,电流比较小一些,电磁式蜂鸣器为线圈通电震动发音,体积比较小。按照驱动方式分为有源蜂鸣器和无源蜂鸣器。这里的有源和无源不是指电源,而是振荡源。有源蜂鸣器内部带了振荡源,如图1中所示,给了 BUZZ 引脚一个低电平,蜂鸣器就会直接响。而无源蜂鸣器内部是不带振荡源的,要让他响必须给 500Hz~4.5KHz 之间的脉冲频率信号来驱动它才会响。有源蜂鸣器往往比无源蜂鸣器贵一些,因为里边多了振荡电路,驱动发音也简单,靠电平就可以驱动,而无源蜂鸣器价格比较便宜,此外无源蜂鸣器声音频率可以控制,而音阶与频率又有确定的对应关系,因此就可以做出来“do re mi fa sol la si”的效果,可以用它制作出简单的音乐曲目,比如生日歌、两只老虎等等。

来看一下图1的电路,蜂鸣器电流依然相对较大,因此需要用三极管驱动,并且加了一个 100 欧的电阻作为限流电阻。此外还加了一个 D4 二极管,这个二极管叫做续流二极管。我们的蜂鸣器是感性器件,当三极管导通给蜂鸣器供电时,就会有导通电流流过蜂鸣器。而我们知道,电感的一个特点就是电流不能突变,导通时电流是逐渐加大的,这点没有问题,但当关断时,经“电源-三极管-蜂鸣器-地”这条回路就截断了,过不了任何电流了,那么储存的电流往哪儿去呢,就是经过这个 D4 和蜂鸣器自身的环路来消耗掉了,从而就避免了关断时由于电感电流造成的反向冲击。接续关断时的电流,这就是续流二极管名称的由来。蜂鸣器经常用于电脑、打印机、万用表这些设备上做提示音,提示音一般也很简单,就是简单发出个声音就行,我们用程序简单做了个 4KHZ 频率下的发声和 1KHZ 频率下的发声程序,同学们可以自己研究下程序,比较下实际效果。

#<reg52.h>sbit BUZZ = P1^6; //蜂引脚unsigned char T0RH = 0; //T0 重载值的高字节 unsigned char T0RL = 0; //T0 重载值的低字节 OpenBuzz(unsigned int fr); void StopBuzz(); void main(){ unsigned int i; TMOD = 0x01; //配置 T0 工作在模式 1,但先不启动 EA = 1; (1){ //使能全局中断 OpenBuzz(4000); //以 4KHz 的频率启动蜂鸣器 for (i=0; i<40000; i++); StopBuzz(); //停止蜂鸣器 for (i=0; i<40000; i++); OpenBuzz(1000); //以 1KHz 的频率启动蜂鸣器 for (i=0; i<40000; i++); StopBuzz(); //停止蜂鸣器 for (i=0; i<40000; i++); } } /* 蜂鸣器启动函数,frequ-工作频率 */ void OpenBuzz(unsigned int frequ){ unsigned int reload;//计算所需的重载值 reload = 65536 - (11059200/12)/(frequ*2); //由给定算定时器重载值 T0RH = (unsigned char)(reload >> 8); //16 位重载值分解为高低两个字节 T0RL = (unsigned char)reload; TH0 = 0xFF; //设定一个接近溢出的初值,以使定时器马上投入工作 TL0 = 0xFE; ET0 = 1; //使能 T0 中断 TR0 = 1; //启动 T0 } /* 蜂鸣器停止函数 */ void StopBuzz(){ ET0 = 0; //禁用 T0 中断 TR0 = 0; //停止 T0 } /* T0 中断服务函数,用于控制蜂鸣器发声 */ void InterruptTimer0() 1{ TH0 = T0RH; //重新加载重载值 TL0 = T0RL; BUZZ = ~BUZZ; //反转蜂鸣器控制电平 }

另外用蜂鸣器来输出音乐,仅仅是好玩而已,应用很少,里边包含了音阶、乐谱的相关内容,程序也有一点复杂,所以就不详细给大家去讲解了。仅提供一个可以播放《两只老虎》的程序,大家可以下载到板子上玩玩,满足一下好奇心。

#include <reg52.h>sbit BUZZ = P1^6; //蜂鸣器控制引脚 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 = 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<40000; i++); //停止一段时间 } } /* 两支老虎乐曲播放函数 */ void PlayTwoTiger(){ unsigned char beat; //当前节拍索引 unsigned char note; //当前节拍对应的音符 unsigned int e = 0; //当前节拍计时 unsigned int beatTime = 0; //当前节拍总时间 unsigned int soundTime = 0; //当前节拍需发声时间 //两只老虎音符表 unsigned char code TwoTigerNote[] = { 1, 2, 3, 1, 1, 2, 3, 1, 3, 4, 5, 3, 4, 5, 5,6, 5,4, 3, 1, 5,6, 5,4, 3, 1, 1, 5, 1, 1, 5, 1, }; //两只老虎节拍表,4 表示一拍,1 就是 1/4 拍,8 就是 2 拍 unsigned char code TwoTigerBeat[] = { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 4, 4, 8, 3,1, 3,1, 4, 4, 3,1, 3,1, 4, 4, 4, 4, 8, 4, 4, 8, }; //用节拍索引作为循环变量 for (beat=0; beat<sizeof(TwoTigerNote); ){ while (!tmrflag); //每次定时器中断完成后,检测并处理节拍 tmrflag = 0; if (time == 0){ //当前节拍播完则启动一个新节拍 note = TwoTigerNote[beat] - 

单片机蜂鸣器的控制程序与驱动电路图相关推荐

  1. jqc3ff继电器引脚图_单片机控制继电器驱动电路图原理分析

    首先看看继电器的驱动 这是典型的继电器驱动电路图,这样的图在网络上随处可以搜到,并且标准教科书上一般也是这样的电路图 为什么要明白这个图的原理? 单片机是一个弱电器件,一般情况下它们大都工作在5V甚至 ...

  2. 万年历设计单片机c语言,基于单片机的电子万年历设计(含电路图,Proteus仿真程序)...

    基于单片机的电子万年历设计(含电路图,Proteus仿真程序)(论文11000字,Proteus仿真程序) 摘    要 万年历作为日常生活中重要的时间显示设备,在人们的外出旅游和日常生活中都发挥了重 ...

  3. c51单片机蜂鸣器程序C语言响,单片机蜂鸣器响生日快乐编程程序

    单片机蜂鸣器响生日快乐编程程序 #include #define   uint   unsigned int #define   uchar  unsigned char sbit      spea ...

  4. 51单片机蜂鸣器的使用

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.有源蜂鸣器和无源蜂鸣器的区别 二.代码编写 总结 前言 本文旨在介绍如何使用51单片机驱动蜂鸣器. 一.有源蜂鸣器 ...

  5. MCU-51:单片机蜂鸣器播放孤勇者

    目录 一.蜂鸣器介绍 二.驱动电路 2.1 三极管驱动 2.2 集成电路驱动 三.蜂鸣器播放音乐 3.1 键盘与音符对照 3.2 音符与频率对照 四.孤勇者乐谱 五.代码演示 前面学习了 MCU-51 ...

  6. 有源蜂鸣器和无源蜂鸣器的区别_电磁式蜂鸣器和压电式蜂鸣器的区别以及驱动方法...

    蜂鸣器是设计电子产品时比较常用的发声元器件,根据工作原理的不同,可以分为电磁式蜂鸣器和压电式蜂鸣器.在开发板.实验板上常用的蜂鸣器为电磁式蜂鸣器.这两者最大的区别在于工作原理.下面详细介绍其工作原理. ...

  7. 20w7珠led驱动电源电路图_LED串联驱动电路图

    正向压降(VF)和正向电流的(IF)关系曲线,由曲线可知,当正向电压超过某个阈值(约2V),即通常所说的导通电压之后,可近似认为,IF与VF成正比.见表是当前主要超高亮LED的电气特性.由表可知,当前 ...

  8. 基于Proteus学习单片机系列(二)——驱动数码管

    获取更多资源,请关注微信公众号:嵌入式基地 获取项目资源:公众号后台回复:单片机仿真 基于Proteus学习单片机系列(一)--点亮LED 基于Proteus学习单片机系列(二)--驱动数码管 基于P ...

  9. 单片机I/O常用的驱动与隔离电路设计

    关注+星标公众号,不错过精彩内容 编排 | strongerHuang 微信公众号 | 嵌入式专栏 随着微电子技术和计算机技术的发展,原来以强电和电器为主.功能简单的电气设备发展成为强.弱电结合,具有 ...

  10. 51单片机蜂鸣器播放天空之城

    51单片机蜂鸣器播放天空之城 附:天空之城乐谱 第三张图片中65行46968改为64968,希望凉解.(由于本人对乐谱知之甚少,上述有关音符代码由网络提供.如有错误,敬请雅正.)

最新文章

  1. 阿里云 apt-get update 403
  2. 找出数组中两个只出现一次的数字
  3. 搜索引擎原理和简单过程【转】
  4. C#线程的使用和测试
  5. html表单中阴影,html5中input表单加边框,阴影效果.doc
  6. html盒子阴影只设置左右,只在容器一边或两边显示盒子阴影
  7. 虚拟机Ubuntu蓝屏闪屏解决方法
  8. js 数字序号 转 字母序号
  9. 运用“异或”对原文加密,并解密
  10. 怎么查江苏省计算机一级成绩,江苏省计算机一级查询成绩在哪里查-江苏省计算机一级查询成绩查询网址-常州宝...
  11. 【openjudge 计算概论(A)】[函数递归练习(3)]
  12. Atitit 数据出入管理法v3 目录 1.1. 边界检查:web边界和sql边界 1 2. 检查条目 1 2.1. 数据种类检查 整数 小数 字符串(带长度,字符白名单校验) 1 2.2. 字符黑
  13. 爱普生xp245手动清零_仍在Windows XP上吗? 手动更新或感到烦恼
  14. ai可以滚轮缩放吗_Illustrator CC for MAC按住alt键滑动鼠标无法缩放?
  15. matlab解方java_Java:调用window的matlab遇到的问题和解决方案
  16. java 模板类 mock_mockj: 生成mock数据的利器,按照规则模板生成 mock 数据,mockjs的java实现。同时内置随机 random 一个对象的功能...
  17. Windows10下安装Gromacs2020
  18. 【笔记本电脑连接真无线 jbl flash x耳机】pin 是 000000
  19. 一起走过的日子.大学本科和同学拍的DV,还有全家福~
  20. debian宝塔界面安装php失败,debian-live-8.7.1 安装失败求助

热门文章

  1. Mixly编程使用Arduino ESP32实现ESP-NOW组网
  2. 计算机扫描服务开启,扫描系统(window怎么开启扫描服务)
  3. jsp调用getParameterValues获取表单信息
  4. 【C语言】使用Qt5学习C语言编写Hello World
  5. 学习C语言的必备书籍-从入门到精通
  6. JavaScript设计模式----装饰者模式
  7. 高等数学-空间解析几何与向量代数
  8. 北邮 网络安全 期末复习 知识点总结之防火墙
  9. 网络安全·网络入侵检测系统
  10. 新概念英语第三册 阅读