收藏 分销(赏)

简易音节发生器.doc

上传人:綻放 文档编号:8930624 上传时间:2025-03-08 格式:DOC 页数:3 大小:591.10KB 下载积分:8 金币
下载 相关 举报
简易音节发生器.doc_第1页
第1页 / 共3页
简易音节发生器.doc_第2页
第2页 / 共3页


点击查看更多>>
资源描述
如有你有帮助,请购买下载,谢谢! 简易音阶发生器 一、课题目的: 1、 学习和掌握硬件电路的设计方法; 2、 学习和研究用 EDA、MCU 等不同的手段、方法来完成本科的设计任务,并从中 逐渐学会方案的比较和选择; 3、 学习电路的模块化调试和软硬件结合调试方法 二、课题要求: (1)产生 C 调八个音阶的振荡频率:"1,2,3,4,5,6,7,1"八个音阶,由按键 分别控制。 音阶的振荡频率和周期表: (2)按下对应键从扬声器发出相应的音阶,同时按下两个数字键号时,只发出一个 音阶频率信号。 (3)模拟通道的频宽为 30Hz~10kHz。 (4)功率放大器的负载电阻 RL=8 欧,最大功率输出 Pomax³0.5W、效率h ³50%。 (5) 扩展要求) *可以设置自动播放和手动弹奏两种工作模式。自动播放时按下播 ( 放键,自动播出预存的音乐;手动弹奏模式时,按下音阶键发出相应的声音。 三、课题的设计方案和方案比较: 方案一:利用 RC 振荡电路来实现。 震荡器的原理很简单,就是正反馈原理,LC 决定震荡的频率,普通晶体震 荡器的晶体可以等效一个 Q 值很高的电感,利用电容的充放电产生震荡。在逆变器电 路中多用 RC 组成的多谐振荡器。也有用变压器反馈式的自激振荡器。逆变器一般输 出的是方波。 按键输入 频率控制器 正弦波发生器 衰减器 音符功率放大器 扬声器 图1 RC 振荡系统结构图 方案二:利用 555 定时器来实现。 555 定时器的基本原理。R = R1+RW,当电源接通后,VCC 通过电阻 R 向 电容 C 充电, 电容 VC 上升到 2VCC/3 时 RS 触发器置 0, 输出 Vo 为低电平, 待 即 同时电容 C 通过三极管 T 放电。当触发端的外接输入信号电压 Vi<VCC /3 时,RS 触发器置 1,即输出 Vo 为高电平,同时三极管 T 截止。电源 VCC 再次通过电阻 R 向电容 C 充电。输出维持高电平的时间取决于 RC 的充电时间,输出电压的脉宽 Tw =RCIn3»1.1RC,一般 R 取 1kΩ ~10MΩ。 按键输入 555定时器 波形变换 功率放大器 扬声器 图2 555 定时器系统结构图 方案三:利用 FPGA 来实现。 1页 如有你有帮助,请购买下载,谢谢! 实验原理:主系统由 3个模块组成,例 6-29 是顶层设计文件,其内部有两个 功能模块 TONE.VHD 和 SPEAKER.VHD是音阶发生器,当 8位发声控制输入 。模块 TONE INDEX 中某一位为高电平时,则对应某一音阶的数值将从端口 TONE 作为获得该 输出, 音阶的分频预置值;同时由 CODE 输出对应该音阶简谱的显示数码,如'5,并由 HIGH ' 输出指示音阶高 8度显示。由例 6-28 可见,其语句结构只是类似与真值表的纯组合 电路描述,其中的音阶分频预置值,如 Tone <= 1290 是根据产生该音阶频率所对 应的分频比获得的。 图3 FPGA 系统结构图 方案四:利用单片机来实现。 单片机因其体积小、功能强、价格低廉而得到广泛应用。本设计中采用 AT89C51 单片机设计微型电子琴的方法,仅需 AT89C51 最小系统,扩展一组小键盘 (这里以 4×4 键盘为例,可按需要扩展) 再加一片 LM386 做音频小功放,输出到扬 , 声器。电源可由三节 5 号电池提供。 图4 单片机系统结构图 本设计采用方案四。 四、硬件模块设计原理: 在方案四中, 我们选择 Atmel 公司提供的 8 位单片机 Atmega16L 作为频率控制器, 直接利用 IO 口产生对应频率的 PWM 波形;通过键盘来控制音阶和播放音乐;由于 IO 出来的是方波带有一定的高次谐波分量,声音变得不够纯;因此在输出口外加滤波 器使输出的方波平滑为较理想的正弦波,末级外加功率放大推动扬声器发出声音。具 体的系统框图如图 4 所示: 1、键盘模块 在这里采用矩阵式排列键盘,如图一所示,这样可以合理应用硬件资源,把 16 只按键排列成 4*4 矩阵形式,用一个 8 位 I/O 口控制如图所示。P1 口 是 4x4 键盘的 驱动口,P1.0-P1.3 是行线 P1.4-P1.7 是列线。程序设计中采用经典 4*4 键盘扫描函数 即可。具体方法使使某一行设置成输出,然后读取键盘的值,依次就能够得到 16 个 不同的值,在这里具体功能是 0-8 产生单独的音频,9 自动播放音乐。 图 5 键盘原理图 2、 PWM 波产生模块 本系统所用的单片机为 Atmel 公司提供的 8 位单片机 AT89S52,其引脚如图 6 所示: 图 6 AT89S52 的引脚图 PWM 产生可以通过单片机的定时器定时中断,将单片机上对应蜂鸣器的 I/O 口 来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同 频率的声音,我们只需将定时器予置不同的定时值就可实现。那么怎样确定一个频率 所对应的定时器的定时值呢?以标准音高 A 为例: A 的频率 f = 440 Hz,其对应的周期为: T = 1/ f = 1/440 =2272m s 由上图可知,单片机上对应蜂鸣器的 I/O 口来回取反的时间应为: t = T/2 = 2272/2 = 1136m s 这个时间 t 也就是单片机上定时器应有的中断触发时间。一般情况下,单片机奏 乐时,其定时器为工作方式 1,它以振荡器的十二分频信号为计数脉冲。设振荡器频 2页 如有你有帮助,请购买下载,谢谢! 率为 f0,则定时器的予置初值由下式来确定: t = 12 *(TALL -THL)/ f0 式中 TALL = 216 = 65536,TCNT1 为定时器待确定的计数初值。因此定时器的 高低计数器的初值为: TCNT1H = THL / 256 = ( TALL - t* f0/12) / 256 TCNT1L = THL % 256 = ( TALL - t* f0/12) %256 将 t=1136m s 代入上面两式 (注意: 计算时应将时间和频率的单位换算一致) , 即可求出标准音高 A 在单片机晶振频率 f0=12Mhz,定时器在工作方式 1 下的定时器 高低计数器的予置初值为 : TH440Hz = (65536 - 1136 * 12/12) /256 = FBH TL440Hz = (65536 - 1136 * 12/12)%256 = 90H 根据上面的求解方法,我们就可求出其他音调相应的计数器的予置初值。 音符的节拍我们可以举例来说明。在一张乐谱中,我们经常会看到这样的表达式, 4 3 如 1=C 4 、1=G ¼¼ 等等,这里 1=C,1=G 表示乐谱的曲调,和我们前面所谈的音 4 43 3 调有很大的关联, 、 就是用来表示节拍的。以 为例加以说明,它表示乐谱中 44 4 以四分音符为节拍,每一小结有三拍。比如: 其中 1 、2 为一拍,3、4、5 为一拍,6 为一拍共三拍。1 、2 的时长为四分音 符的一半,即为八分音符长,3、4 的时长为八分音符的一半,即为十六分音符长,5 的时长为四分音符的一半,即为八分音符长,6 的时长为四分音符长。那么一拍到底 该唱多长呢?一般说来,如果乐曲没有特殊说明,一拍的时长大约为 400—500ms 。 我们以一拍的时长为 400ms 为例,则当以四分音符为节拍时,四分音符的时长就为 400ms,八分音符的时长就为 200ms,十六分音符的时长就为 100ms。 可见,在单片机上控制一个音符唱多长可采用循环延时的方法来实现。首先,我 们确定一个基本时长的延时程序,比如说以十六分音符的时长为基本延时时间,那么, 对于一个音符,如果它为十六分音符,则只需调用一次延时程序,如果它为八分音符, 则只需调用二次延时程序,如果它为四分音符,则只需调用四次延时程序,依次类推。 通过上面关于一个音符音调和节拍的确定方法,我们就可以在单片机上实现演奏 音乐了。具体的实现方法为:将乐谱中的每个音符的音调及节拍变换成相应的音调参 数和节拍参数,将他们做成数据表格,存放在存储器中,通过程序取出一个音符的相 关参数,播放该音符,该音符唱完后,接着取出下一个音符的相关参数¼¼,如此直 到播放完毕最后一个音符,根据需要也可循环不停地播放整个乐曲。另外,对于乐曲 中的休止符,一般将其音调参数设为 FFH,FFH,其节拍参数与其他音符的节拍参数 确定方法一致,乐曲结束用节拍参数为 00H 来表示。 本系统用的是单片机内部 RC 振荡频率 f0=12Mhz。定时器高低计数器的予置初值 如表 3 所示: 表 3 定时器 1 初值设定 音阶 1 2 3 4 5 6 7 0 TCNT1H 0xfb 0xfc 0xfc 0xfc 0xfd 0xfd 0xfd 0xfc TCNT1L 0xe9 0x20 0x80 0xef 0x45 0x92 0xd6 0x3a 3页
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服