当前位置: 首页 > news >正文

51单片机-第八节-蜂鸣器

一、什么是蜂鸣器?

蜂鸣器是一种将电信号转换为声音信号的器件,常用来产生设备的按键音、报警音等提示信号。

蜂鸣器按驱动方式可分为有源蜂鸣器无源蜂鸣器

有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定。
无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,可发出不同频率的声音。

二、51蜂鸣器原理:

同理,一种单片机一个样,本篇只讲51。

蜂鸣器原理图:很简单,BZ接通即响,BZ则接通到五线四相步进电机上。

五线四相步进电机:BZ由P1_5控制,给1则蜂鸣器响。

内部原理图:(扩展)

三、音高:控制频率:

方法:定时器中断:

sbit Buzzer = P1 ^ 5;//蜂鸣器//低音L,中音M,高音H,后面为数组FreqTable的对应位置
#define P   0
#define L1  1     //低音1
#define L1_ 2     //1#,右边'_'标明#
#define L2  3
#define L2_ 4
#define L3  5
#define L4  6
#define L4_ 7
#define L5  8
#define L5_ 9
#define L6  10
#define L6_ 11
#define L7  12
#define M1  13     //中音1
#define M1_ 14     //1#
#define M2  15
#define M2_ 16
#define M3  17
#define M4  18
#define M4_ 19
#define M5  20
#define M5_ 21
#define M6  22
#define M6_ 23
#define M7  24
#define H1  25     //高音1
#define H1_ 26     //1#
#define H2  27
#define H2_ 28
#define H3  29
#define H4  30
#define H4_ 31
#define H5  32
#define H5_ 33
#define H6  34
#define H6_ 35
#define H7  36//前面0的目的是休止,后面是,音高所对应的,定时器起始时长
unsigned int FreqTable[] = { 0,63628,63731,63835,63928,64021,64103,64185,64260,64331,64400
,64463,64528,64580,64633, 64684, 64732,64777, 64820, 64860, 64898, 64934,64968,65000,
65030,65058, 65085,65110, 65134, 65157, 65178, 65198, 65217,65235,65252,65268, 65283, };void Timer0_Routine() interrupt 1
{if (FreqTable[FreqSelect]){TH0 = FreqTable[FreqSelect] / 256;TL0 = FreqTable[FreqSelect] % 256 + 1;Buzzer = !Buzzer;}
}

三、实战:蜂鸣器播放音乐:小星星

//低音L,中音M,高音H,后面为数组FreqTable的对应位置
#define P   0
#define L1  1     //低音1
#define L1_ 2     //1#,右边'_'标明#
#define L2  3
#define L2_ 4
#define L3  5
#define L4  6
#define L4_ 7
#define L5  8
#define L5_ 9
#define L6  10
#define L6_ 11
#define L7  12
#define M1  13     //中音1
#define M1_ 14     //1#
#define M2  15
#define M2_ 16
#define M3  17
#define M4  18
#define M4_ 19
#define M5  20
#define M5_ 21
#define M6  22
#define M6_ 23
#define M7  24
#define H1  25     //高音1
#define H1_ 26     //1#
#define H2  27
#define H2_ 28
#define H3  29
#define H4  30
#define H4_ 31
#define H5  32
#define H5_ 33
#define H6  34
#define H6_ 35
#define H7  36//前面0的目的是休止,后面是,音高所对应的,定时器起始时长
unsigned int FreqTable[] = { 0,63628,63731,63835,63928,64021,64103,64185,64260,64331,64400
,64463,64528,64580,64633, 64684, 64732,64777, 64820, 64860, 64898, 64934,64968,65000,
65030,65058, 65085,65110, 65134, 65157, 65178, 65198, 65217,65235,65252,65268, 65283, };unsigned char Music_LittleStar[] = { 13,1,13,1,20,1,20,1,22,1,22,1,20,2,18,1,18,1,17,1,17,1,15,1,15,1,13,2,0xFF };
unsigned char FreqSelect, MusicSelect;void main()
{Time0_Init();while (1){if (Music[MusicSelect] != 0xFF){FreqSelect = Music[MusicSelect];MusicSelect++;Delay(500 * Music[++MusicSelect]);//停顿,让同一音符分开TR0 = 0;Buzzer = 0;Delay(50);TR0 = 1;} else{//播放结束TR0 = 0;Buzzer = 0;while (1);}}
}void Timer0_Routine() interrupt 1
{if (FreqTable[FreqSelect]){TH0 = FreqTable[FreqSelect] / 256;TL0 = FreqTable[FreqSelect] % 256 + 1;Buzzer = !Buzzer;}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 破解PyCharm插件更新难题:让IDE焕发新生
  • Java如何使用 HTTP 请求下载图片
  • 如何通过淘口令链接获取该商品的详情数据?(电商API接口)
  • 2024河南省萌新联赛第四场I
  • 数据结构复杂度
  • 几款免费的时序数据库对比
  • 2024【大模型的实战应用深入解析】(非常详细)零基础入门到精通,收藏这一篇就够了
  • cad文字转arcgis注记
  • 常见中间件漏洞(二、WebLogin合集)
  • 下载mmcv或者mmcv-full第三方库失败(已解决)
  • 恶意软件研究之静态检测
  • 数据结构:带索引的双链表IDL
  • STM32-门电路-储存器-寄存器-STM32f1-MCU-GPIO-总线-keil5-点led
  • 惠普澄清供应链转移传闻:中国在全球布局中扮演核心角色
  • Vuforia AR篇(九)— AR塔防下篇
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 【node学习】协程
  • Apache Spark Streaming 使用实例
  • AWS实战 - 利用IAM对S3做访问控制
  • C++11: atomic 头文件
  • cookie和session
  • ECS应用管理最佳实践
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Mac转Windows的拯救指南
  • Map集合、散列表、红黑树介绍
  • Spring Boot MyBatis配置多种数据库
  • Vue.js源码(2):初探List Rendering
  • 百度地图API标注+时间轴组件
  • 番外篇1:在Windows环境下安装JDK
  • 仿天猫超市收藏抛物线动画工具库
  • 浮现式设计
  • 前端存储 - localStorage
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 自制字幕遮挡器
  • ​ssh免密码登录设置及问题总结
  • #《AI中文版》V3 第 1 章 概述
  • #NOIP 2014# day.2 T2 寻找道路
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (强烈推荐)移动端音视频从零到上手(下)
  • (转) ns2/nam与nam实现相关的文件
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .aanva
  • .gitignore文件使用
  • .Net 代码性能 - (1)
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .net快速开发框架源码分享
  • .NET连接MongoDB数据库实例教程
  • .net知识和学习方法系列(二十一)CLR-枚举
  • .NET中GET与SET的用法
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • :class的用法及应用
  • @开发者,一文搞懂什么是 C# 计时器!
  • [ IO.File ] FileSystemWatcher