蜂鸣器和弦音发声控制
车辆蜂鸣器的声学优化与噪声控制方案研究

车辆蜂鸣器的声学优化与噪声控制方案研究随着汽车行业的不断发展,车辆的安全性和交通的顺畅性越来越重要。
而车辆蜂鸣器作为车辆的警示设备,具有重要的作用。
然而,过大的噪声对于车辆驾驶员和周围行人都会带来不适和干扰。
因此,在车辆蜂鸣器的声学设计和噪声控制方案研究方面,具有重要的意义。
首先,为了实现车辆蜂鸣器的声学优化,需要对蜂鸣器的声学特性进行深入的研究。
声学特性包括频率、声压级和声波形式等方面的参数。
通过对这些参数的深入分析,可以找出车辆蜂鸣器存在的问题并提出相应的改进方案。
例如,当车辆蜂鸣器的频率过高或过低时,可能会导致噪音不明显或不易感知,因此需要选择合适的频率范围。
此外,声压级也是一个重要的参考指标,需要在满足警示效果的前提下尽量减少噪声对驾驶员和周围环境的干扰。
其次,针对车辆蜂鸣器的噪声控制,有许多可行的方案可以采用。
其中一种常见的方法是通过声学隔离技术来减少蜂鸣器产生的噪声传导到车辆内部和周围环境的情况。
通过在蜂鸣器周围安装隔音材料或采用隔音罩等措施,可以有效地减少噪声的传播。
此外,还可以采用噪音补偿技术对车辆蜂鸣器的声音进行控制。
该技术通过麦克风和扬声器系统实时监测车内环境和周围环境的噪声变化,并根据监测到的噪声数据对车辆蜂鸣器的声音进行适当的调节,使其始终保持在一个舒适的范围内。
此外,还可以考虑采用数字信号处理技术对车辆蜂鸣器的声音进行优化和控制。
通过对声音信号的采集和分析,可以对声音进行数字滤波和均衡处理,从而改善声音的质量和减少噪声的干扰。
数字信号处理技术具有灵活性和可调性的优势,可以根据具体的需求对车辆蜂鸣器的声音进行调整,使其更加符合实际需要。
除了以上的声学优化和噪声控制方案,还可以结合车辆蜂鸣器的设计与材料选择来更好地实现噪声的控制。
例如,可以采用减振材料和吸音材料来减少蜂鸣器的机械振动和声波传播过程中的噪声损耗。
同时,在蜂鸣器的结构设计中,可以考虑采用多腔共鸣和抗相位干扰等技术来提高声音的输出效果和质量。
蜂鸣器调音原理

蜂鸣器调音原理引言蜂鸣器是一种常见的电子元件,常用于发出警报、提醒等声音。
它可以发出持续的声音,也可以发出不同频率的声音。
在本文中,我们将探讨蜂鸣器的调音原理,即如何通过改变电流的频率来改变蜂鸣器的音调。
蜂鸣器的结构蜂鸣器通常由振荡器和扬声器两部分组成。
振荡器振荡器是蜂鸣器中的关键部件,它负责产生高频信号。
振荡器通常由一个或多个振荡电路组成,这些电路可以是基于电容、电感或晶体等不同的原理。
扬声器扬声器是将电信号转换为声音的装置。
它通常由一个或多个电磁线圈和一个磁体组成。
当电流通过电磁线圈时,它会产生一个磁场,与磁体相互作用,使扬声器振动,从而产生声音。
蜂鸣器的工作原理蜂鸣器的工作原理可以分为两个阶段:振荡器产生高频信号和扬声器将信号转换为声音。
振荡器产生高频信号当电流通过振荡器中的振荡电路时,电路会产生高频信号。
振荡电路中的元件(如电容、电感、晶体等)会根据其特定的物理特性来产生振荡。
这些元件的振荡频率决定了蜂鸣器发出声音的音调。
扬声器将信号转换为声音振荡器产生的高频信号会传递给扬声器,扬声器中的电磁线圈会根据电流的变化产生磁场。
这个磁场与磁体相互作用,使扬声器的振动膜(通常是一个薄膜或一个圆锥形的振动器)振动。
振动膜的振动会产生压缩和稀疏的空气波动,从而产生声音。
调音原理蜂鸣器的音调取决于振荡器产生的高频信号的频率。
频率越高,音调越高;频率越低,音调越低。
因此,要改变蜂鸣器的音调,我们需要改变振荡器产生的高频信号的频率。
改变振荡电路中的元件一种常见的方法是通过改变振荡电路中的元件来改变振荡频率。
例如,如果振荡电路中使用的是可变电容器,我们可以通过调节电容器的电容值来改变振荡频率。
同样地,如果振荡电路中使用的是可变电感器,我们可以通过调节电感器的电感值来改变振荡频率。
改变振荡电路的电流另一种方法是通过改变振荡电路的电流来改变振荡频率。
振荡电路中的电流通常由外部电源提供,我们可以通过改变电源的电压或电流来改变振荡频率。
51单片机控制喇叭(蜂鸣器)简单发声,频率可调

/*-----------------------------------------------------------------------------------------------------------------------------------*//*--*************************功能:【喇叭发出声音,频率可调】*********************--*//*--*************************芯片:【STC12C5A60S2】******************************--*//*--*************************说明:【频率500Hz,单次发声时长1s】******************--*//*--*************************控制:【每按下P1.0一次,喇叭发声1s,长按一直发声】**--*//*------------------------------------------------------------------------------------------------------------------------------------*//*头文件*/#include <reg52.h>#include <intrins.h>sbitControl_Key = P1^0; //定义控制独立按键P1.0,按下发声。
sbitSpeaker_port = P2^7; //定义喇叭控制端口unsigned intnum = 8; //num = (4 * 1000) / Frequency(500Hz) : 决定喇叭的响应周期,从而决定不同的频率unsigned int counter0 = 0; //T0控制频率unsigned int counter1 = 0; //T1控制时长unsigned char Juge_Start; //判断发声1s是否开始。
51单片机通过按键控制蜂鸣器发生详解

单片机开发报告院系:电子工程学院专业:自动化班级:自动化1401学号:姓名:赵越指导老师:刘星光2018年01 月04 日一.系统任务按键控制蜂鸣器发声二.电路原理图三.程序设计内容“叮咚”电子门铃实验程序:常见的家用电子门铃在有客人来访时候,如果按压门铃按钮时,室内会发出“叮咚”声音,本实验程序模拟电子门铃的发音,当我们按压实验板上的K1按钮时候,蜂鸣器发出“叮咚”音乐声,是一个比较实用的程序。
使用无源蜂鸣器输出7个基本音阶声音是由物体振动所产生的。
只是由于物体的材料以及振幅、频率不同,而产生不同的声音。
声音的响度是由振幅决定的,而音调则是由频率决定的,那么我们只需要控制物体振动的频率,就可以发出固定的声调。
五.汇编程序ORG 0000HAJMP STARTORG 000BHINC 20H ;中断服务,中断计数器加1MOV TH0,#0D8HMOV TL0,#0F0H 12M晶振,形成10毫秒中断RETIORG 001BHLJMP INTT1 ;跳转到T1中断服务程序START: MOV DPTR,#00H ;初始化程序MOV A,#00HOBUF1 EQU 30HOBUF2 EQU 31HOBUF3 EQU 32HOBUF4 EQU 33HFLAGB BIT 00HSTOPB BIT 01HMOV SP,#50HMOV TH0,#0D8HMOV TL0,#0F0HMOV TMOD,#21HMOV TH1,#09HMOV TL1,#09HMOV IE,#8AHAJMP LOOPLOOP: JNB P3.2,MUSIC0JNB P3.1,MAINAJMP LOOPMAIN:JB P3.1,MAIN ;检测p3.1按钮LCALL YS10M ;延时去抖动JB P3.1,MAINSETB TR1 ;按钮有效MOV OBUF1,#00HMOV OBUF2,#00HMOV OBUF3,#00HMOV OBUF4,#00HCLR FLAGBCLR STOPBJNB STOPB,$AJMP START ;发出“叮咚”完毕,返回重新检测按钮YS10M: ;10ms延时子程序MOV R6,#20MOV R7,#100DJNZ R7,$DJNZ R6,D1RETTING: AJMP STARTINTT1: ;定时器T1中断服务程序INC OBUF3 ;中断服务程序中发出一声“叮咚”响声MOV A,OBUF3CJNE A,#100,NEXTMOV OBUF3,#00HINC OBUF4MOV A,OBUF4CJNE A,#20,NEXTMOV OBUF4,#00HJB FLAGB,PGSTPCPL FLAGBAJMP NEXTPGSTP:SETB STOPBCLR TR1LJMP INT0RETJB FLAGB,SOU2INC OBUF2MOV A,OBUF2CJNE A,#04H,INT0RETMOV OBUF2,#00HCPL P1.5LJMP INT0RETSOU2:INC OBUF1MOV A,OBUF1CJNE A,#05H,INT0RETMOV OBUF1,#00HCPL P1.5INT0RET:RETIMUSIC0: JB p3.2,MUSIC0LCALL YS10MJB p3.2,MUSIC0NOPMOV DPTR,#DAT 表头地址送DPTRMOV 20H,#00H ;中断计数器清0MOV B,#00H ;表序号清0 MAIN2: JNB P3.3,TINGCLR AMOVC A,@A+DPTR ;查表取代码JZ END0 ;是00H,则结束CJNE A,#0FFH,MUSIC5LJMP MUSIC3MUSIC5:NOPMOV R6,AINC DPTRMOV A,BMOVC A,@A+DPTR ;取节拍代码送R7MOV R7,ASETB TR0 ;启动计数MUSIC2:NOPCPL P1.5MOV A,R6MOV R3,ALCALL DELMOV A,R7CJNE A,20H,MUSIC2 ;中断计数器(20H)=R7否;不等,则继续循环MOV 20H,#00H ;等于,则取下一代码INC DPTRINC BLJMP MAIN2MUSIC3: ;休止100毫秒NOPCLR TR0MOV R2,#0DHMUSIC4:NOPMOV R3,#0FFHLCALL DELDJNZ R2,MUSIC4INC DPTRLJMP MAIN2END0:NOPMOV R2,#0FFH ;歌曲结束,延时MUSIC6:MOV R3,#00HLCALL DELDJNZ R2,MUSIC6CLR TR0LJMP LOOPDEL:NOPDEL3:MOV R4,#03HDEL4:NOPDJNZ R4,DEL4NOPDJNZ R3,DEL3RETDENG1: MOV R3,#64HDJNZ R3,$AJMP MAINDAT:DB 30h,30h,26h,26h,20h,20h,1ch,1ch,1ah,1ah,18h,18h,00hEND六、程序下载及调试步骤:1.点击translate 按钮预编译2.点击build 按钮编译3.点击rebuild 按钮编译所有目标4.打开普中烧录软件四.程序流程图。
gpio按键控制蜂鸣器响实验心得

gpio按键控制蜂鸣器响实验心得
最近,我进行了一个有关GPIO按键控制蜂鸣器响的实验,并取得了一些有趣的结果。
在此分享我的实验心得。
在实验前,我先准备了一个树莓派和一个蜂鸣器,接下来通过GPIO 引脚将它们连接起来。
然后,我使用Python编程语言编写了一个简单的代码来控制蜂鸣器的工作。
该代码使用了GPIO库来读取按键的输入状态,并根据按键的状态来控制蜂鸣器的响声。
在实验过程中,我发现了一些有趣的现象。
首先,当按下按键时,蜂鸣器会发出一声短促的响声。
这是因为按键按下时,GPIO引脚会发送一个高电平信号,导致蜂鸣器工作。
当释放按键时,蜂鸣器停止响声。
这是因为GPIO引脚发送了一个低电平信号,使蜂鸣器停止工作。
此外,我还尝试了不同的按键操作,例如长按、快速连续按等。
我发现,当我长按按键时,蜂鸣器会持续不断地发出响声。
这是因为GPIO 引脚一直发送高电平信号,使蜂鸣器保持工作状态。
而当我快速连续按下按键时,蜂鸣器会发出一系列短促的响声。
这是因为GPIO引脚在每次按下按键时都会发送高电平信号,然后在按键释放后发送低电平信号,使蜂鸣器停止工作。
通过这个实验,我不仅学习到了如何使用GPIO引脚来控制蜂鸣器的
工作,还深入了解了按键的工作原理。
我还发现,通过合理的编程方式,可以实现按键的不同操作,从而控制蜂鸣器发出不同的声音。
这对于一些交互式的项目来说,非常有用。
总的来说,这个实验让我对GPIO按键控制蜂鸣器有了更深入的了解。
我将继续探索GPIO的其他应用,并尝试更复杂的实验,以提升我的编程和电子技能。
单片机蜂鸣器发声代码

单片机蜂鸣器发声代码
单片机蜂鸣器是单片机开发中经常使用的一种输出设备,在很多作品中都发挥着很重要的作用。
本文将介绍如何通过单片机控制蜂鸣器发出不同频率的声音。
一、硬件设计
我们需要使用一个蜂鸣器和一块单片机开发板,比如STC89C52。
蜂鸣器有正负两个针脚,需要将正极接到控制单片机的GPIO端口上,负极接地即可。
1. 预处理指令
首先需要在头文件中定义单片机的型号和所要使用的GPIO端口。
```
#include <STC89C5xRC.H> //使用STC89C52
#define buzz P2 //定义蜂鸣器控制口
```
2. 主函数
接下来就是核心部分,主函数中需要实现的就是通过改变GPIO口的电平来控制蜂鸣器发出不同频率的声音。
对于控制蜂鸣器发出持久的“滴滴声”,可以采用下面的程序:
程序中先将GPIO口输出低电平,等待一段时间后再输出高电平,蜂鸣器发出持续的“滴滴声”。
如果想控制蜂鸣器发出不同频率的声音,可以修改上述程序中的DelayMs()函数来设置不同的延时时间。
因为蜂鸣器的振动频率与输入信号的高低电平时间比例有关,所以延时时间变化会使输出的声音频率发生变化。
比如,如果想让蜂鸣器发出音调为“咳咳声”,可以改变延时时间来实现。
如此,蜂鸣器就发出了“咳咳声”。
以上就是单片机蜂鸣器发声的基本方法,不同的延时时间可以产生不同的声音效果,可以根据实际需要进行调整。
单片机控制蜂鸣器

单片机控制蜂鸣器单片机这玩意儿,对于很多小伙伴来说,可能听起来有点陌生,还有点高大上。
但其实啊,它在我们生活中可是有着不少的应用,就比如说控制蜂鸣器。
我记得有一次,我带着一群小朋友做一个简单的单片机实验,就是让单片机来控制蜂鸣器发声。
小朋友们那好奇的眼神,充满了期待,就像等着魔术师变出神奇的东西一样。
我们先准备好材料,单片机板子、导线、蜂鸣器,还有一些小小的电阻啥的。
小朋友们围在桌子旁,眼睛一眨不眨地盯着。
我开始给他们讲解单片机是怎么工作的,就像一个小小的指挥官,能给各种零件下达命令。
而蜂鸣器呢,就是那个听从命令然后发声的“小兵”。
然后,我们就开始动手连接电路啦。
小朋友们小心翼翼地拿着导线,生怕一不小心就弄断了。
有个小朋友还紧张得手都有点抖,那模样真是太可爱了。
连接好电路后,就是写程序让单片机控制蜂鸣器啦。
这程序就像是给单片机下达的“作战指令”。
当我把写好的程序下载到单片机里,按下启动按钮的那一刻,“嘀嘀嘀”,蜂鸣器响起来啦!小朋友们兴奋得欢呼起来,那声音比蜂鸣器还响呢。
这就是单片机控制蜂鸣器的魅力所在,能让我们感受到科技的神奇和乐趣。
咱们说回单片机控制蜂鸣器这个事儿。
单片机到底是怎么控制蜂鸣器的呢?其实啊,原理并不复杂。
单片机通过输出不同的电信号,来控制蜂鸣器的通断,从而让它发出不同频率和时长的声音。
比如说,我们可以让单片机输出一个高电平,蜂鸣器就接通开始发声;输出一个低电平,蜂鸣器就断开停止发声。
通过快速地切换高电平和低电平,就能让蜂鸣器发出连续的声音。
如果改变高电平和低电平的持续时间,就能改变声音的频率,听起来就会有高音和低音的区别。
在实际应用中,单片机控制蜂鸣器的场景可多了去了。
像在一些报警系统里,当有异常情况发生时,单片机就会控制蜂鸣器发出急促的声音,提醒大家注意。
还有在电子玩具里,按下不同的按钮,单片机就能让蜂鸣器发出不同的声音,增加玩具的趣味性。
要实现单片机控制蜂鸣器,我们得先了解一些基本的电路知识。
蜂鸣器发声原理

蜂鸣器发声原理蜂鸣器是一种常见的电子元件,广泛应用于各种电子设备中,如手机、电脑、家电等。
它的主要作用是通过发出特定频率的声音来进行警示或提醒。
那么,蜂鸣器是如何发出声音的呢?接下来,我们将深入探讨蜂鸣器的发声原理。
蜂鸣器的基本结构包括振膜、震动片和磁铁。
当电流通过蜂鸣器时,磁铁会产生磁场,使得振膜和震动片受到吸引力,从而使得振膜和震动片产生振动。
这种振动会导致空气的振动,最终产生声音。
简而言之,蜂鸣器的发声原理就是利用电流通过磁铁产生磁场,从而使得振膜和震动片振动,进而产生声音。
蜂鸣器的发声原理可以进一步分为压电式和电磁式两种类型。
压电式蜂鸣器是利用压电效应产生声音的,当施加电压时,压电材料会产生形变,从而产生声音。
而电磁式蜂鸣器则是利用电流通过线圈产生磁场,使得振膜和震动片振动,进而产生声音。
在实际应用中,蜂鸣器可以根据需要发出不同频率的声音。
这是因为蜂鸣器的振动频率取决于其结构和工作原理,通过控制电流的频率和振动片的结构,可以实现不同频率的声音发出。
因此,蜂鸣器可以根据需要进行定制,以满足不同场合的使用要求。
除了发声原理,蜂鸣器还有一些特殊的应用。
例如,在电子钟表中,蜂鸣器可以用来发出小时报时的“滴答”声音;在汽车中,蜂鸣器可以用来发出倒车时的警示声音。
因此,蜂鸣器在生活中扮演着重要的角色,为我们的生活提供了诸多便利。
总的来说,蜂鸣器是一种利用电流和磁场产生声音的电子元件,其发声原理主要包括压电式和电磁式两种类型。
通过控制电流频率和振动片结构,可以实现不同频率的声音发出。
蜂鸣器在各种电子设备中有着广泛的应用,为我们的生活带来了诸多便利。
希望本文能够帮助大家更好地了解蜂鸣器的发声原理,进一步拓展其在各个领域的应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
蜂鸣器和弦音发声控制
前言:现在一些带按键显示控制面板的家电(比较常见的是柜式空调)在按键操作的时候会有悦耳的和弦音发出,特别是开关机或操作上下键时会有不同变调的和弦音,相比普通的嘀嘀声给人更愉悦的操作体验。
1.控制方式说明
此处以型号为SH2225T2PA的蜂鸣器(谐振频率2.6KHz)为例。
蜂鸣器模块有两个驱动引脚与MCU相连,一个是振荡信号输入引脚,由MCU提供相应频率的方波信号驱动蜂鸣器发声,一个是供电控制端,供电切断后蜂鸣器靠电解电容放电维持其发声,会有音量渐渐变小的效果。
原理图如下所示,MC9为供电控制端,MC8为振荡信号输入端。
MC9为高电平时,三极管Q4导通,然后Q2导通,蜂鸣器开始供电,同时电容CD2充电。
若MC8
有一定频率的方波信号发出,则蜂鸣器可发出鸣叫。
若此时先关掉供电,即MC9
置低电平,MC8依然发出方波信号,则蜂鸣器可依靠CD2放电发出声音,但随着电容电量减少,音量会逐渐减小,形成蜂鸣声渐隐的和弦音效果。
要实现变调的效果,则可通过短时间内切换发出几种不同频率的蜂鸣声来实现。
以下是3种比较典型的和弦音的实现细节:(符号说明:Tf:频率给定持续时间(ms)Tv:电压给定持续时间(ms)F:输出频率(KHz))
单声和弦音:短暂鸣响后音量渐隐
▪F=2.6,Tv=200,Tf=1000
开机和弦音:三升调,按音调分3个阶段
1.F=
2.3,Tv=200,Tf=200
2.F=2.6,Tv=200,Tf=200
3.F=2.9,Tv=100,Tf=2100
关机和弦音:三降调,按音调分3个阶段
1.F=
2.9,Tv=200,Tf=200
2.F=2.6,Tv=200,Tf=200
3.F=2.3,Tv=100,Tf=2100
2.编程实例
MCU:STM8S903K3 开发环境:STVD 4.1.6+Cosmic 4.2.8
/* buzzer.h文件*/
[Copy to clipboard]View Code C
1 2 3 4 5 6 #ifndef __BUZZER_H #define __BUZZER_H
#include "common.h" #include "beep.h" typedef enum
7 8 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 {
MONO =0,//单音
POLY_ON =1,//开机和弦
POLY_OFF =2//关机和弦
}Tone_Type;//蜂鸣器声音类型
typedef struct
{
FREQ_Type Freq;//频率
u8 OSCTime;//振荡持续时间,最小单位为10ms u8 PWRTime;//供电持续时间,最小单位为10ms } TONE_Def;//音调结构体
void BuzzerStart(Tone_Type ToneType); void BuzzerCtrl(void);
#endif /* __BUZZER_H */
/* buzzer.c文件*/
[Copy to clipboard]View Code C
1 2 3 4 5 6 7 8 9
10
11
12
13
14
15
16
17
18
19 #include "buzzer.h"
const TONE_Def Tone1[]={{FREQ_2K6,100,20},{FREQ_NO,0,0}};//单音
const TONE_Def Tone2[]={{FREQ_2K3,20,20},{FREQ_2K6,20,
20},{FREQ_2K9,210,10},{FREQ_NO,0,0}};//开机和弦音
const TONE_Def Tone3[]={{FREQ_2K9,20,20},{FREQ_2K6,20,
20},{FREQ_2K3,210,10},{FREQ_NO,0,0}};//关机和弦音
TONE_Def * pTone;
static u8 BuzzerStatus =0;
//蜂鸣器启动,需要发声时调用
void BuzzerStart(Tone_Type ToneType)
{
switch(ToneType)
{
case MONO:
pTone = Tone1;
break;
case POLY_ON:
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 pTone = Tone2;
break;
case POLY_OFF:
pTone = Tone3;
break;
default:
pTone = Tone1;
break;
}
BuzzerStatus =0;
}
//蜂鸣器控制,每10ms执行一次void BuzzerCtrl(void)
{
static TONE_Def Tone;
switch(BuzzerStatus)
{
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
case0:
Tone =*pTone;
if(Tone.Freq!= FREQ_NO)//非结束符
{
//先判断供电持续时间
if(Tone.PWRTime!=0)
{
Tone.PWRTime--;
BeepPwrOn();
}
else
{
BuzzerStatus =2;
break;
}
//再判断振荡持续时间
if(Tone.OSCTime!=0)
{
Tone.OSCTime--;
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76 BEEP_SetFreq(Tone.Freq);
BEEP_On();
}
else
{
BeepPwrOff();
BuzzerStatus =2;
break;
}
//判断完成,开始递减计时
BuzzerStatus =1;
}
else/* Tone.Freq == FREQ_NO *///是结束符
{
BuzzerStatus =2;
}
break;
case1:
if(Tone.PWRTime!=0)
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
{
Tone.PWRTime--;
}
else
{
BeepPwrOff();
}
if(Tone.OSCTime!=0)
{
Tone.OSCTime--;
}
else
{
BEEP_Off();
pTone ++;//取下一个音调 BuzzerStatus =0;
}
break;
default:
96
97
break; }
}
以上代码中,BEEP_Off(),BEEP_On(),BeepPwrOff(),BEEP_SetFreq()都在头文件beep.h中声明,由底层代码实现。
上层代码只需在主循环中每10ms调用一次BuzzerCtrl()函数,在需要发音的地方调用一次BuzzerStart()函数,即可实现和弦音的播放了。
思维拓展:依据以上代码的结构,可以很容易的通过定义TONE_Def数组实现任意节奏,任意曲调的输出。
如下段:
[Copy to clipboard]View Code C
1 2 3 4 5 6 7 8 9 10 const TONE_Def Tone4[]={//两只老虎(两只老虎两只老虎跑得快跑得快)
{FREQ_2K,25,25},//1
{FREQ_2K3,25,25},//2
{FREQ_2K6,25,25},//3
{FREQ_2K,25,25},//1
{FREQ_2K,25,25},//1
{FREQ_2K3,25,25},//2
{FREQ_2K6,25,25},//3
{FREQ_2K,25,25},//1
{FREQ_2K3,25,25},//2
11
12
13
14
15
16
17
{FREQ_2K6,25,25},//3
{FREQ_2K9,50,25},//4 稍有停顿{FREQ_2K3,25,25},//2
{FREQ_2K6,25,25},//3
{FREQ_2K9,100,25},//4 和弦效果{FREQ_NO,0,0}//停止
};
当然,你可以添加一些按键,为每个按键设定一个特定音调的和弦音输出,就做成一个电子琴了,音质很不错的哦:)。