蜂鸣器实验报告

合集下载

蜂鸣器变声控制实验单片机实验报告

蜂鸣器变声控制实验单片机实验报告

蜂鸣器变声控制实验单片机实验报告一、实验目的1、了解单片机控制蜂鸣器发声的原理。

2、学会使用单片机控制蜂鸣器的频率、占空比、时长等特性。

3、掌握编写蜂鸣器变声程序的方法。

二、实验器材1、单片机培训板。

2、蜂鸣器。

3、杜邦线若干。

三、实验原理1、蜂鸣器通常是由震动片、驱动电路和音箱构成的,同时需要满足一定的电源条件和频率特性才能发声。

四、实验内容1、将蜂鸣器与单片机连接好。

3、观察蜂鸣器的变声效果。

五、实验步骤1、将蜂鸣器与单片机连接好。

将蜂鸣器的正极连接单片机的P1.0口,将蜂鸣器的负极连接单片机的GND口。

2、编写蜂鸣器变声程序,具体过程如下:1)定义相关变量和函数:需要定义相关变量和函数,例如频率、占空比、时长等变量,以及控制蜂鸣器发声的函数。

2)初始化:需要对单片机进行初始化设置,包括端口初始化、定时器初始化等。

3)控制蜂鸣器发声:通过改变PWM的频率、占空比、时长等特性,来控制蜂鸣器的发声。

4)停止蜂鸣器发声:在需要停止蜂鸣器发声时,关闭PWM输出端口即可。

3、观察蜂鸣器的变声效果。

根据程序设定的频率、占空比和时长等特性,可以看到蜂鸣器在不同的情况下发出不同的声音。

六、实验结果1、在经过程序设计后,蜂鸣器成功发出变声效果,根据程序的要求可以发出不同的声音。

3、在实验中还可以通过添加其他的控制模块,例如按键、温度传感器等,来实现更复杂的控制操作。

1、本次实验主要掌握了单片机控制蜂鸣器发声的原理和方法,通过自己编写程序来控制蜂鸣器发声。

3、通过本次实验,学生们不仅掌握了相关的电路和编程知识,同时还锻炼了自己的实践能力和创新思维。

单片机蜂鸣器实验报告体会

单片机蜂鸣器实验报告体会

单片机蜂鸣器实验报告体会通过这次单片机蜂鸣器实验,我深刻体会到了单片机的应用和蜂鸣器的原理与工作方式。

同时,实验过程中也锻炼了我动手实践、问题分析和解决能力。

以下是我的一些心得体会。

首先,这次实验让我重新认识和理解了单片机的作用和重要性。

单片机是一种微型计算机系统,通过给单片机编程,可以实现各种复杂的控制功能。

在这次实验中,我们利用单片机控制蜂鸣器发出不同频率的声音,让我感受到了单片机在音频控制方面的优势。

同时,单片机的计算能力和高效性也让我意识到它在各个领域的广泛应用。

其次,通过这次实验,我深入了解了蜂鸣器的原理和工作方式。

蜂鸣器是一种能够发出声音的电子器件,它是利用电流通过振动片或压电陶瓷晶片引起共振来产生声音。

通过改变电流的频率和占空比,可以发出不同的声音。

在实验中,我们通过改变单片机的输出电压来控制蜂鸣器的工作状态,发出不同频率的声音。

这让我明白了如何利用蜂鸣器来实现声音控制。

此外,这次实验也让我意识到了问题分析和解决的重要性。

在实验过程中,我们遇到了各种问题,如蜂鸣器不工作、声音频率不准确等。

这些问题的出现让我反思了自己对实验原理的理解和对单片机编程的掌握程度。

通过仔细分析问题的原因和搜索相关资料,我找到了解决方法,如检查电路连接是否正确、重新编写程序等。

这让我意识到在实验和工程项目中,能够熟练运用问题分析和解决方法是很重要的。

最后,通过这次实验,我也发现了自己在动手实践方面的不足之处。

实验的电路连接和单片机编程都需要细心和耐心,我在实验过程中有时会出现粗心和着急的情况。

这次实验让我认识到了自己的不足,并促使我更加认真对待实验和动手实践的环节。

只有通过亲身实践,才能够更好地理解和掌握相关知识。

总而言之,通过这次单片机蜂鸣器实验,我不仅加深了对单片机和蜂鸣器的理解,也锻炼了动手实践和问题解决的能力。

这次实验让我更加认识到了单片机的应用前景和重要性,同时也让我明白了在实验和工程项目中,细心和耐心是非常重要的品质。

蜂鸣器延时实验报告

蜂鸣器延时实验报告

蜂鸣器延时实验报告通过实验研究蜂鸣器的延时特性,了解蜂鸣器的工作原理和延时时间的影响因素。

实验原理:蜂鸣器是一种能够产生声音的电子装置,主要由振荡器和扬声器组成。

振荡器通过输入电流或电压来激励扬声器发出声音。

实验器材:蜂鸣器、电源、示波器、电阻、电容等。

实验步骤:1. 将蜂鸣器与电源连接,调节电源电压和电流以满足蜂鸣器的工作要求。

2. 连接示波器,用于观察蜂鸣器的输出波形。

3. 通过改变电阻或电容的数值,调节振荡器的频率,控制蜂鸣器的音调。

4. 改变电阻或电容的数值,延时蜂鸣器发出声音的延时时间,并记录实验数据。

5. 分析实验数据,总结蜂鸣器延时时间与电阻、电容等参数之间的关系。

实验数据和结果:在实验过程中,记录下了不同电阻和电容数值对蜂鸣器延时时间的影响。

通过示波器观察到蜂鸣器输出的波形,并记录下不同延时时间的波形特征。

根据实验数据和观察结果,得出以下结论:1. 延时时间与电阻数值成正比关系:通过改变电阻的数值,我们可以调节振荡器的频率,从而控制蜂鸣器的音调和延时时间。

当电阻数值增大时,延时时间也会变长;反之,电阻数值减小时,延时时间也会减小。

2. 延时时间与电容数值成反比关系:通过改变电容的数值,我们同样可以调节振荡器的频率,从而控制蜂鸣器的音调和延时时间。

当电容数值增大时,延时时间会变短;反之,电容数值减小时,延时时间会增加。

3. 延时时间与振荡器频率有关:振荡器的频率决定了蜂鸣器的音调和延时时间。

较高的频率会导致较短的延时时间,而较低的频率会导致较长的延时时间。

实验结论:通过对蜂鸣器的延时实验研究,我们得出以下结论:1. 蜂鸣器的延时时间可以通过改变电阻和电容的数值来调节。

电阻数值的增加会导致延时时间变长,而电容数值的增加会导致延时时间变短。

2. 振荡器的频率也会影响蜂鸣器的延时时间,较高的频率会导致较短的延时时间,而较低的频率会导致较长的延时时间。

3. 在实际应用中,我们可以根据需要来选择合适的电阻和电容数值,以达到所需的延时时间。

蜂鸣器谱曲实验报告

蜂鸣器谱曲实验报告

一、实验目的1. 了解蜂鸣器的工作原理和特性;2. 掌握蜂鸣器谱曲的基本方法;3. 通过实验,验证蜂鸣器演奏音乐的效果。

二、实验原理蜂鸣器是一种电磁声音变换器,它利用电信号的变化产生声音。

蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。

当接通电源后,多谐振荡器起振,输出音频信号,阻抗匹配器推动压电蜂鸣片发声。

蜂鸣器谱曲的基本方法是通过编程控制蜂鸣器发出不同频率的音频信号,从而实现演奏音乐的效果。

音乐由音调和节拍两个主要元素组成,对于蜂鸣器来说,频率的高低决定了音调的高低。

三、实验器材1. 蜂鸣器;2. 电脑;3. 编程软件(如C语言、Python等);4. 连接线和电源。

四、实验步骤1. 连接蜂鸣器将蜂鸣器的正负极分别连接到电脑的GPIO(通用输入输出)端口,确保连接正确。

2. 编写程序使用编程软件编写程序,实现以下功能:(1)初始化蜂鸣器端口;(2)定义音乐音符频率表,包括音符、频率和持续时间;(3)根据音符频率和持续时间,通过GPIO端口控制蜂鸣器发出相应频率的音频信号;(4)循环播放音乐音符,实现整首歌曲的演奏。

3. 编译程序将编写好的程序编译成可执行文件。

4. 播放音乐将编译好的程序运行在电脑上,观察蜂鸣器是否能够演奏出预定的音乐。

五、实验结果与分析1. 实验结果通过编程控制蜂鸣器,成功演奏了一首简单的歌曲。

播放过程中,蜂鸣器能够发出不同频率的音频信号,实现音乐演奏的效果。

2. 分析(1)蜂鸣器能够发出不同频率的音频信号,说明蜂鸣器具有较好的音质表现。

(2)通过编程控制蜂鸣器,可以实现音乐演奏的效果,说明蜂鸣器在音乐领域的应用前景广阔。

(3)实验过程中,由于蜂鸣器受到电源、环境等因素的影响,可能导致音质不够理想。

在今后的实验中,可以尝试优化程序,提高音质。

六、实验总结1. 通过本次实验,了解了蜂鸣器的工作原理和特性,掌握了蜂鸣器谱曲的基本方法。

2. 实验结果表明,蜂鸣器能够发出不同频率的音频信号,实现音乐演奏的效果。

制作蜂鸣器模块实验报告

制作蜂鸣器模块实验报告

一、实验目的1. 了解蜂鸣器的工作原理及分类。

2. 掌握蜂鸣器模块的制作方法。

3. 学会使用蜂鸣器模块进行简单的声音控制。

二、实验原理蜂鸣器是一种电子音响器件,其工作原理是利用电流通过压电陶瓷片或电磁线圈产生振动,从而发出声音。

根据驱动方式,蜂鸣器可分为有源蜂鸣器和无源蜂鸣器两种。

1. 有源蜂鸣器:内部自带振荡电路,只需接通电源即可发声。

2. 无源蜂鸣器:需要外部电路提供方波信号驱动。

本实验采用有源蜂鸣器模块,其内部结构包括振荡电路、驱动电路、压电陶瓷片等。

三、实验器材1. 有源蜂鸣器模块2. 单片机(如Arduino)3. 杜邦线4. 电源5. 万用表6. 烧录器四、实验步骤1. 搭建电路:- 将蜂鸣器模块的VCC引脚连接到单片机的5V电源;- 将蜂鸣器模块的GND引脚连接到单片机的GND;- 将蜂鸣器模块的I/O引脚连接到单片机的数字输出引脚(如D8)。

2. 编写程序:- 使用单片机编程语言(如Arduino)编写程序,通过控制数字输出引脚的高低电平,控制蜂鸣器发声。

3. 烧录程序:- 将编写好的程序烧录到单片机中。

4. 测试:- 连接电源,观察蜂鸣器是否发声。

五、实验结果与分析1. 实验结果:- 成功搭建蜂鸣器模块电路;- 编写程序控制蜂鸣器发声;- 实现简单的音乐播放功能。

2. 分析:- 通过控制单片机数字输出引脚的高低电平,可以改变蜂鸣器的频率,从而控制音调;- 通过改变高低电平的持续时间,可以改变蜂鸣器的音量;- 可以通过编程实现多种声音效果,如音乐播放、报警等。

六、实验总结1. 通过本次实验,掌握了蜂鸣器的工作原理及分类;2. 学会了蜂鸣器模块的制作方法;3. 掌握了使用蜂鸣器模块进行简单的声音控制。

七、拓展应用1. 将蜂鸣器模块应用于智能家居系统,实现门铃、报警等功能;2. 将蜂鸣器模块应用于机器人,实现语音提示、警报等功能;3. 将蜂鸣器模块应用于音乐创作,实现音效合成等功能。

vhdl实验报告--蜂鸣器

vhdl实验报告--蜂鸣器

vhdl实验报告--蜂鸣器VHDL 实验报告蜂鸣器一、实验目的本次实验的主要目的是通过使用 VHDL 语言来设计并实现一个蜂鸣器的控制电路,深入理解数字电路的设计原理和 VHDL 编程的基本方法,掌握硬件描述语言在实际电路设计中的应用,提高自己的逻辑思维和问题解决能力。

二、实验原理蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电。

常见的蜂鸣器分为有源蜂鸣器和无源蜂鸣器两种。

有源蜂鸣器内部自带了振荡源,只要给其供电就能发出固定频率的声音;无源蜂鸣器则需要外部提供一定频率的脉冲信号才能发声。

在本实验中,我们使用 VHDL 语言来控制一个无源蜂鸣器。

通过编写代码,生成特定频率的脉冲信号,从而驱动蜂鸣器发声。

三、实验设备及工具1、计算机2、 Quartus II 软件3、开发板四、实验内容及步骤1、设计思路首先,需要确定蜂鸣器发声的频率。

通过计算得出所需的时钟周期数。

然后,使用计数器来产生特定频率的脉冲信号。

最后,将脉冲信号输出到蜂鸣器的控制引脚。

2、 VHDL 代码编写```vhdllibrary ieee;use ieeestd_logic_1164all;use ieeenumeric_stdall;entity buzzer_control isport(clk : in std_logic;rst : in std_logic;buzzer : out std_logic);end entity;architecture Behavioral of buzzer_control isconstant CLK_FREQ : integer := 50_000_000; 系统时钟频率constant BUZZER_FREQ : integer := 1000; 蜂鸣器发声频率signal counter : integer range 0 to CLK_FREQ/BUZZER_FREQ 1; signal clk_div : std_logic;beginprocess(clk, rst)beginif rst ='1' thencounter <= 0;clk_div <='0';elsif rising_edge(clk) thenif counter = CLK_FREQ/BUZZER_FREQ 1 thencounter <= 0;clk_div <= not clk_div;elsecounter <= counter + 1;end if;end if;end process;buzzer <= clk_div;end architecture;```3、编译与仿真将编写好的 VHDL 代码在 Quartus II 软件中进行编译。

单片机蜂鸣器控制实验报告

单片机蜂鸣器控制实验报告摘要:本实验旨在通过使用单片机(Microcontroller Unit,MCU)来控制蜂鸣器发出不同的声音,进一步熟悉单片机的使用和控制技术。

通过实验,我们可以了解如何编程控制蜂鸣器,从而为更复杂的电子设备的开发做好准备。

本实验基于XXXXX单片机平台进行,具体的实验步骤和控制代码将在下文进行详细说明。

1. 实验介绍单片机蜂鸣器控制实验是一项基础实验,旨在让学生了解单片机的控制原理和实践操作。

在实验中,我们使用XXXXX单片机平台。

此平台具有良好的可编程性,且集成了许多功能模块,是学习和使用单片机的理想选择。

2. 实验材料- XXXXX单片机开发板- 蜂鸣器模块- 连接线- 电源3. 实验步骤3.1 连接电路将蜂鸣器模块的正极与单片机开发板的IO口相连,将负极与开发板的GND相连。

使用连接线进行正确的连接。

3.2 编程调试根据单片机平台的要求,采用XXXXX编程语言编写蜂鸣器控制程序。

以下是一段示例代码:```#include <XXXXX.h>int main() {while(1) {// 产生蜂鸣器控制信号XXXXX_WritePin(GPIOX, PinX, HIGH);delay_ms(1000);XXXXX_WritePin(GPIOX, PinX, LOW);delay_ms(1000);}}```在该示例代码中,通过控制GPIOX的PinX引脚输出高电平或低电平,来控制蜂鸣器的工作状态。

通过设置适当的延迟时间,我们可以调整蜂鸣器的鸣叫频率和持续时间。

3.3 烧录程序将编写好的程序烧录到单片机开发板中。

按照开发板的烧录方法进行操作。

3.4 调试和测试烧录完成后,将开发板连接到电源,并观察蜂鸣器的工作情况。

根据我们在代码中设定的参数,蜂鸣器应该会发出特定频率和持续时间的声音。

4. 结果与分析在实验过程中,我们可以根据需要编写不同的程序来控制蜂鸣器的状态,例如不同的频率、间隔时间和持续时间。

单片机蜂鸣器实验报告

一、实验目的1. 了解单片机I/O的工作方式;2. 熟悉51单片机的汇编指令;3. 掌握蜂鸣器的工作原理及驱动方法;4. 学会通过单片机控制蜂鸣器发声,实现音乐播放功能。

二、实验原理1. 单片机:单片机是一种具有微处理器的集成电路,它将微处理器、存储器、输入/输出接口等集成在一个芯片上,具有体积小、功耗低、成本低等特点。

2. 蜂鸣器:蜂鸣器是一种将电信号转化为声音信号的装置,广泛应用于计算机、打印机、复印机、报警器、电子玩具等电子产品中。

蜂鸣器主要分为有源蜂鸣器和无源蜂鸣器两种类型。

有源蜂鸣器内置振荡源,可直接发声;无源蜂鸣器无内置振荡源,需要控制器提供振荡脉冲才能发声。

3. 51单片机与蜂鸣器连接:51单片机通过P1.0端口控制蜂鸣器,当P1.0端口输出高电平时,蜂鸣器发声;输出低电平时,蜂鸣器停止发声。

三、实验器材1. 51单片机实验板;2. 蜂鸣器;3. 连接线;4. 信号源;5. 示波器;6. 计算机及仿真软件(如Proteus)。

四、实验步骤1. 将蜂鸣器连接到51单片机实验板的P1.0端口;2. 编写程序,实现以下功能:(1)初始化51单片机系统;(2)通过P1.0端口控制蜂鸣器发声;(3)实现音乐播放功能;3. 将程序烧录到51单片机实验板;4. 使用示波器观察蜂鸣器发出的声音波形;5. 使用信号源模拟按键输入,验证蜂鸣器控制功能;6. 使用Proteus仿真软件验证程序功能。

五、实验结果与分析1. 通过实验,成功实现了51单片机控制蜂鸣器发声,验证了单片机I/O的工作方式和51单片机的汇编指令;2. 实现了音乐播放功能,验证了蜂鸣器的工作原理及驱动方法;3. 通过示波器观察,蜂鸣器发出的声音波形符合预期,验证了程序的正确性;4. 通过Proteus仿真软件,验证了程序在虚拟环境中的正确性。

六、实验总结1. 通过本次实验,掌握了单片机I/O的工作方式,熟悉了51单片机的汇编指令;2. 理解了蜂鸣器的工作原理及驱动方法,学会了通过单片机控制蜂鸣器发声;3. 提高了动手实践能力,培养了团队协作精神。

蜂鸣器电路实验报告

一、实验目的1. 理解蜂鸣器的工作原理及驱动方式。

2. 掌握蜂鸣器电路的设计与搭建方法。

3. 熟悉数字电路中常用元件的应用。

二、实验原理蜂鸣器是一种将电信号转换为声信号的装置,广泛应用于报警器、门铃、玩具等领域。

根据工作原理,蜂鸣器主要分为压电式和电磁式两种。

1. 压电式蜂鸣器:由压电蜂鸣片、阻抗匹配器、共鸣箱等组成。

当接通电源后,多谐振荡器产生音频信号,阻抗匹配器推动压电蜂鸣片发声。

2. 电磁式蜂鸣器:由振荡器、电磁线圈、磁铁、振动膜片等组成。

接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下振动发声。

本实验采用压电式蜂鸣器,通过数字电路产生音频信号,驱动蜂鸣器发声。

三、实验器材1. 数字电路实验箱2. 万用表3. 蜂鸣器4. 芯片(如74HC595、555定时器等)5. 连接线6. 电源四、实验步骤1. 搭建蜂鸣器驱动电路(1)将555定时器配置成多谐振荡器模式,产生一定频率的方波信号。

(2)将74HC595串行输入端(SI)连接到555定时器的输出端(OUT),将74HC595的串行移位寄存器输出端(SRCLK)连接到555定时器的复位端(RESET),实现74HC595的复位。

(3)将74HC595的串行输出端(SO)连接到蜂鸣器的驱动端,为蜂鸣器提供驱动信号。

2. 编写程序(1)编写555定时器控制程序,产生一定频率的方波信号。

(2)编写74HC595控制程序,将方波信号转换为脉冲信号,驱动蜂鸣器发声。

3. 调试与测试(1)连接电源,观察蜂鸣器是否正常发声。

(2)调整555定时器的电阻和电容,改变方波信号的频率,观察蜂鸣器音调的变化。

(3)调整74HC595的输入端,改变驱动脉冲的宽度,观察蜂鸣器音量的变化。

五、实验结果与分析1. 蜂鸣器正常发声,证明电路搭建成功。

2. 通过调整555定时器的电阻和电容,可以改变方波信号的频率,从而改变蜂鸣器的音调。

蜂鸣器实验报告思考

蜂鸣器实验报告思考蜂鸣器实验报告思考:蜂鸣器实验是电路原理课程中常见的实验之一,通过搭建简单的电路,能够使蜂鸣器发出一定频率的声音。

本次实验的目的是理解蜂鸣器的工作原理,掌握蜂鸣器的使用方法,并通过实际实验验证理论知识。

实验步骤:1. 搭建蜂鸣器电路:蜂鸣器通常有两个引脚,分别是正极和负极。

在本次实验中,我们需要将蜂鸣器与一个发声电路相连。

发声电路通常由一个振荡电路和一个放大电路组成。

将蜂鸣器的正极与振荡电路的输出端连接,负极与放大电路的输入端连接。

根据电路图,依次连接各个元器件和导线。

2. 设置振荡电路参数:在实验中,我们需要设置振荡电路的频率和电压。

通过调整电源电压和电阻的数值,可以改变振荡电路的频率。

我们可以不断尝试不同的参数组合,以找到合适的频率。

3. 设置放大电路参数:放大电路的作用是放大振荡电路输出的信号,并驱动蜂鸣器发声。

通过调整放大电路中的元器件参数,如电阻和电容,可以改变放大电路的增益和响应特性。

4. 进行实验观察:当电路连接正确并且参数设置合适后,启动电源,蜂鸣器应该开始发声。

观察蜂鸣器的频率、响度和稳定性。

如果发现声音不正常或者无法发声,则需要检查电路连接和元器件参数设置,逐步寻找问题。

实验结果和讨论:通过以上实验步骤,我们成功地搭建了蜂鸣器电路,并且观察到了蜂鸣器的发声现象。

根据实验中的观察和实验数据,我们得出以下结论和讨论。

首先,蜂鸣器发声的频率是由振荡电路控制的,在实验中我们可以通过调整振荡电路的电阻和电容来改变频率。

较大的电阻或者小的电容会使振荡频率变低,反之亦然。

在实验过程中,我们可以尝试不同的参数组合,以找到合适的频率。

其次,蜂鸣器的响度和稳定性也受到放大电路的影响。

放大电路的设计需要考虑到增益和频率响应特性。

过大或过小的增益可能导致蜂鸣器声音过大或过小,甚至无法发声。

此外,放大电路的频率响应特性应该尽可能平坦,以保证声音的稳定性和质量。

在实验中,我们还发现蜂鸣器发声的功率与电源电压有关。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实 验 报 告 实验名称: [蜂鸣器音乐发生器实验]

姓 名: 学 号: 指导教师: 实验时间: [2013年6月15日]

信息与通信工程学院 1 实验要求 用所学知识和编程技巧,编写一段程序,实现用蜂鸣器演奏一首歌曲。按下(sw2)按键,蜂鸣器唱出一首歌,歌曲可以自己选择,主要是通过不同的频率来实现不同的音调。

2 实验原理

2.1蜂鸣器类型 蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。1、压电式蜂鸣器主要由多谐振荡、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成。当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。2、电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。 实验箱上蜂鸣器驱动原理:通过FPGA的143管脚驱动蜂鸣器发声,不同的频率使蜂鸣器发出不同的音调。 2.2音乐歌曲元素 一首歌曲由音调和节拍两个主要的元素组成。对于蜂鸣器来说,频率的高低决定了音调的高低。所有不同频率的信号都是从同一个基准频率分频得来的。由于音阶频率多为非整数,而分频系数又不能为小数,故必须 将计算得到的分频数四舍五入取整。若基准频率过低,则由于分频比太小,四舍五入取证后的误差较大。若基准频率过高,虽然误差变小,但分频数将变大。实际的设计在尽量减小频率误差的前提下去合适的基准频率。 给蜂鸣器输入相应的频率,可以使其发出表中所示的低音、中音、高音的do~xi的声音。将其按照音乐演奏的规律组合,便可以得到所需要的乐曲。 2.3任务原理 2.3.1音调的控制 频率的高低决定了音调的高低。音乐的十二平均率规定;每两个8度音之间的频率相差1

倍。在两个8度音之间,又可分为12个半音,每两个半音的频率比为122。另外,音名A的频率为440Hz,音名B到C直接、E到F之间为半音,其余为全音。由此可以计算出简谱中从低音1至高音1之间每个音名对应的频率如表1中所示。 音名 频率/Hz 音名 频率/Hz 音名 频率/Hz 低音1 261.6 中音1 523.3 高音1 1046.5 低音2 293.7 中音2 587.3 高音2 1174.7 低音3 329.6 中音3 659.3 高音3 1318.5 低音4 349.2 中音4 698.5 高音4 1396.9 低音5 392 中音5 784 高音5 1568 低音6 440 中音6 880 高音6 1760 低音7 493.9 中音7 987.8 高音7 1975.5 表1 简谱中的音名与频率的关系 所有不同频率的信号都是从同一个基准频率分频的到,由于音阶频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。实际设计中,在尽量减小频率误差的前提下取适合的基准频率,本实验中取6MHz为基准频率。 本题需要演奏的是两只老虎乐曲,该乐曲各音阶频率及相应的分频比如表2所示,为了减小输出的偶次谐波分量,最后输出到蜂鸣器的波形应为对称方波,因此在到达蜂鸣器之前, 有一个二分频的分频器。 音名 分频比 预置数 音名 分频比 预置数 低音3 9102 7281 中音2 5111 11272 低音5 7653 8730 中音3 4552 11831 低音6 6818 9565 中音5 3827 12556 低音7 6073 10310 中音6 3409 12974 中音1 5736 10647 高音1 2867 13516 表2 各音阶频率对应的分频比及预置数 此外,对于乐曲中的休止符,只要将分频系数设为0,即初始值为2141=16383即可,此时蜂鸣器不会发声。 2.3.2 音长的控制 音符的持续时间必须根据乐曲的速度及每个音符的节拍数来确定。本实验中最短的音符为4分音符,如果将全音符的持续时间设为1s的话,则只需要再提供一个4Hz的时钟频率即可产生4分音符的时长。 如图1所示是乐曲演奏电路的原理框,其中,乐谱产生电路用来控制音乐的音调和音长。控制音调通过设置计数器来实现,预置不同的数值可以使计数器产生不同频率的信号,从而产生不同的音调。控制音长是通过控制计数器预置数的停留时间来实现,预置数停留时间越长,则该音符的演奏的时间越长。每个音符的演奏时间都是0.25s的整数倍,对于节拍长的音符,在记谱时可连续记录多次即可。

2.4 实验流程图

图1 乐曲演奏的电路原理框图 3 FPGA所用的管脚分配

4实验结果:在编辑框内输入好程序以后,对程序进行编译,检查错误,无误后将其下

载到实验箱后,即可实现演奏两只老虎歌曲,可用按键sw2对其进行控制,当按键按下后,停止演奏,否则一直循环演奏。

5实验心得 通过这次实验,第一、我学到了一个有时序功能的器件如何用verilog语言实现其功能。在阅读程序、修改程序的过程中我更加熟悉了verilog语言,掌握了基本的编写程序的技巧和能力。第二、我认识到了实际用软件实现相应功能,原理来源于数字电路的基础知识,但又区别与课本上的内容。而学习了verilog语言,我意识到,不能从原有的思维方式出发进行分析和编程,必须建立整体的概念,从输入输出的整体功能出发用程序建立模块。并通过模块和模块的嵌套或者连接实现相应功能。第三、通过修改程序的联系,我体会到了如何结合实际模块的时序功能用程序实现对器件的控制。 为了在课堂上完成这次实验,课下真的需要下一番功夫。首先,自己认真提前学习的语言的编程,又在课上听老师讲解重点。课下自己编写了一些简单的小程序,以熟悉语言,但是在课上分析的整体程序还是有一定困难,在老师的讲解下,才慢慢理解。在理解的基础上修改程序很简单,但是想要自己独立编写这样一个程序,我想,还需要很长时间的实践才能得以实现。所以,还有许多需要努力的地方。 通过这次实验,学到了很多东西,体会到了自己实现一个程序功能的小小喜悦,也认识到了自己只是FPGA道路上的新手,还有很多未知的知识需要学习。真正学习的历程需要在课下多下功夫,希望通过这学期的学习自己能熟练掌握一些编程的技术,培养良好的思维模式。 6 参考文献

[1] 王金明. 《数字系统设计与Verilog HDL》第3版、第2版, 电子工业出版社, 2009、2005. TP271/W24.

[2] 夏宇闻. 《Verilog数字系统设计教程》, 北京航空航天大学出版社, 第1、2版, 2008. TP312VH/X31.

[3] 蒋璇,臧春华. 《数字系统设计与PLD应用技术》, 电子工业出版社, TP271/J63. [4] 张前, 王次炤, 《音乐美学基础》,人民音乐出版社,1992.05,J601/Z22 附录1:两只老虎曲谱图 附录2:程序清单 //音高与频率的对应关系 //---------------------------------------------------------------------- //| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | //|低音 |261.6Hz |293.7Hz |329.6Hz |349.2Hz | 392Hz | 440Hz |493.9Hz | //|中音 |523.3Hz |587.3Hz |659.3Hz |698.5Hz | 784Hz | 880Hz |987.8Hz | //|高音 |1045.5Hz|1174.7Hz|1318.5Hz|1396.9Hz| 1568Hz | 1760Hz |1975.5Hz| //---------------------------------------------------------------------- module liangzhi(clk,beep); //模块名称song input clk; //系统时钟50MHz output beep; //蜂鸣器输出端 reg beep_r; //寄存器 reg[7:0] state; //乐谱状态机 reg[15:0]count,count_end; reg[23:0]count1;

//乐谱参数:D=F/2K (D:参数,F:时钟频率,K:音高频率) parameter L_5 = 16'd63776, //低音5 M_1 = 16'd47774, //中音1 M_2 = 16'd42568, //中音2 M_3 = 16'd37919, //中音3 M_4 = 16'd35791, //中音4 M_5 = 16'd31888, M_6 = 16'd28409; //中音5 parameter TIME = 12000000; //控制每一个音的长短(250ms)

assign beep = beep_r; //输出音乐 always@(posedge clk) begin count <= count + 1'b1; //计数器加1 if(count == count_end) begin count <= 16'h0; //计数器清零 beep_r <= !beep_r; //输出取反 end end

always @(posedge clk) begin if(count1 < TIME) //一个节拍250mS count1 = count1 + 1'b1; else begin count1 = 24'd0; if(state == 8'd35) //64个节拍后循环 state = 8'd0; else state = state + 1'b1; case(state) 8'd0: count_end = M_1;//中音"1",持续1个节拍 8'd1: count_end = M_2;//中音"2",持续1个节拍 8'd2: count_end = M_3;//中音"3",持续1个节拍 8'd3: count_end = M_1;//中音"1",持续2个节拍 8'd4: count_end = M_1; 8'd5: count_end = M_2; 8'd6: count_end = M_3; 8'd7: count_end = M_1; 8'd8: count_end = M_3; 8'd9: count_end = M_4; 8'd10,8'd11: count_end = M_5; 8'd12: count_end = M_3; 8'd13: count_end = M_4; 8'd14,8'd15: count_end = M_5; 8'd16: count_end = M_5; 8'd17: count_end = M_6; 8'd18: count_end = M_5; 8'd19: count_end = M_4; 8'd20: count_end = M_3; 8'd21: count_end = M_1;

相关文档
最新文档