1前 言乐曲演奏广泛用于自动答录装置、手机铃声、集团电话、及智能仪器仪表设备。
实现方法有许多种,在众多的实现方法中,以纯硬件完成乐曲演奏,随着FPGA 集成度的提高,价格下降,EDA 设计工具更新换代,功能日益普及与流行,使这种方案的应用越来越多。
如今的数字逻辑设计者面临日益缩短的上市时间的压力,不得不进行上万门的设计,同时设计者不允许以牺牲硅的效率达到保持结构的独特性。
使用现今的EDA 软件工具来应付这些问题,并不是一件简单的事情。
FPGA 预装了很多已构造好的参数化库单元LPM 器件。
通过EDA 软件工具,设计者可以设计出结构独立而且硅片的使用效率非常高的产品。
本文介绍在EDA 开发平台上利用单片机及汇编语言设计音乐硬件演奏电路,并定制单片机存储音乐数据,以十首乐曲为例,将音乐数据存储到单片机,就达到了以纯硬件的手段来实现乐曲的演奏效果。
只要修改单片机所存储的音乐数据,将其换成其他乐曲的音乐数据,再重新连接到程序中就可以实现其它乐曲的演奏。
目录摘要 (4)第1章概述 (5)第2章音乐盒的发音原理 (6)2.1 播放音乐的原理 (6)2.2 音符频率的产生 (6)2.3 节拍频率的产生 (8)第3章硬件电路设计 (9)3.1 硬件电路 (9)3.2 整体硬件电路 (10)3.3 原理说明 (11)22.4 键盘按键 (11)第4章软件设计 (12)4.1 程序设计流程 (12)4.2 设计源程序代码 (12)第5章仿真及调试 (13)5.1 调试 (13)5.2 仿真 (13)5.3 程序调试中出现的问题及解决的办法 (15)第6章设计小结及建议 (17)致谢 (18)参考文献 (19)附录一元器件清单 (20)附录二部分源程序代码 (21)3基于AT89C51单片机的音乐盒的设计【摘要】:随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。
小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。
传统的音乐盒多是机械型的,体积笨重,发音单调,不能实现批量生产。
本文设计的音乐盒是以单片机为核心元件的电子式音乐盒,体积小,重量轻,能演奏和旋音乐,功能多,使用方便,可以批量生产,具有一定的商业价值。
【关键词】:音乐盒;单片机;LCD45第1章 概述传统的音乐盒多是机械音乐盒,其工作原理是通过齿轮带动一个带有铁钉的铁桶转动,铁桶上的铁钉撞击铁片制成的琴键,从而发出声音。
但是,机械式的音乐盒体积比较大,比较笨重,且发音单调。
水、灰尘等外在因素,容易使内部金属发音条变形,从而造成发音跑调。
另外,机械音乐盒放音时为了让音色稳定,必须放平不能动摇,而且价格昂贵,不能实现大批量生产。
本文设计的音乐盒,是基于单片机设计制作的电子式音乐盒。
与传统的机械式音乐盒相比更小巧,音质更优美且能演奏和弦音乐。
电子式音乐盒动力来源是电池,制作工艺简单,可进行批量生产,所以价格便宜。
基于单片机制作的电子式音乐盒,控制功能强大,可根据需要选歌,使用方便。
所放歌曲的节奏可以根据需要进行设置,根据存储容量的大小,可以尽可能多的存储歌曲。
另外,可以设计彩灯外观效果,增设放歌时间、序号显示灯功能,使音乐盒的功能更加丰富,如图1-1所示。
图1-1 单片机音乐盒功能框图单片机音乐播放 时间显示播放音乐 序号音乐播放 扬声器时钟、复位 电路选歌按键6第2章 音乐盒的发音原理2.1 播放音乐的原理发音原理:播放一段音乐需要的是两个元素,一个是音调,另一个是音符。
首先要了解对应的音调,音调主要由声音的频率决定,同时也与声音强度有关。
对一定强度的纯音,音调随频率的升降而升降;对一定频率的纯音、低频纯音的音调随声强增加而下降,高频纯音的音调却随强度增加而上升。
另外,音符的频率有所不同。
基于上面的内容,这样就对发音的原理有了一些初步的了解。
音符的发音主要靠不同的音频脉冲。
利用单片机的内部定时器/计数器0,使其工作在模式1,定时中断,然后控制P3.7引脚的输出音乐。
只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O 反相,然后重复计时此半周期时间再对I/O 反相,就可在I/O 脚上得到此频率的脉冲。
2.2 音符频率的产生音符及定时器初始值:例如:中音1(do )的音频=523HZ,周期T=1/523s=1912s μ 定时器/计数器0的定时时间为:T/2=1912/2s μ=956s μ定时器956s μ的计数值=定时时间/机器周期=956s μ/1s μ=956(时钟频率=12MHZ)装入T0计数器初值为65536-956=64580将64580装入T0寄存器中,启动T0工作后,每计数956次时将产生溢出中断,进入中断服务时,每次对P3.0引脚的输出值进行取反,就可得到中音DO (523HZ )的音符音频。
将51单片机内部定时器工作在计数器模式1下,改变计数初值TH0,TL0以产生不同的频率。
下表2-1是C 调各音符频率与计数初值T 的对照表:7表2-1 C 调各音符频率与计数初值T 的对照表音符 频率(Hz )/初值(s μ) 音符 频率(Hz )/初值(s μ) 低1DO 262/63627 中1DO 523/64580 高1DO 1042/65056 低2RE 294/63835 中2RE 589/64687 高2RE 1245/65134 低3M 330/64021 中3M 661/64780 高3M 1318/65157 低4FA 350/64107 中4FA 700/64822 高4FA 1397/65178 低5SO 393/64264 中5SO 786/64900 高5SO 1568/65217 低6LA 441/64402中6LA 882/64969 高6LA 1760/65252 低7SI 495/64526 中7SI990/65031高7SI1967/65282音符、音符编码及定时器初始值:为了产生音符,必须求出音符低音5—高音5的计数初值。
例如C 调的低1DO 的THTL=65536-50000/262=63627,中音DO 的THTL=65536-500000/523=64580,高音DO 的THTL=65536-500000/1042=65056。
为了方便写谱,对其进行简单的编码,在编程时,根据音符编码查找对应的计数初值。
比如说音乐是C 调的,那么出现低音的5SO ,直接将代码写为1;出现低音6LA,直接写一个2的代码;出现低音7SI ,直接写一个3代码。
表2-2 音符编码表音符 音符编码音符 音符编码不发音 0 低5SO 1 低6LA 2 低7SI 3 中1DO 4 中2RE 5 中3M 6 中4FA 7 中5SO 8 中6LA 9 中7SI A 高1DO B 高2RE C 高3M D 高4FA E 高5SOF 高6LAG82.3 节拍频率的产生 节拍的产生与编码:音乐中的节拍用延时时间产生。
例如,1拍=0.4s ,1/4拍=0.1s ,以此类推。
假设1/4拍执行一次延时程序,则1/2拍就执行两次延时程序,所以只要求出1/4拍的延时时间,其余节拍就是它的倍数。
为了方便,将节拍数也进行了编码,并且计算了乐谱节拍编程时的延时时间,如表2-3和表2-4所示。
表2-3 节拍数编码表按1/4拍为一个延时时间的节拍编码与节拍对应的表 按1/8拍为一个延时时间的节拍编码与节拍对应的表 节拍编码节拍 节拍编码节拍 节拍编码节拍 节拍编码节拍 1 1/4 6 6/4 1 1/8 6 6/8 2 2/4 8 8/4 2 2/8 8 8/8 3 3/4 A 10/4 3 3/8 A 10/8 4 4/4 C 12/4 4 4/8 C 12/8 55/4F15/455/8表2-4 乐谱节拍编程时的时间延时表乐谱节拍 1/4拍的延时时间乐谱节拍 1/8拍的延时时间4/4 125 ms 4/4 62 ms 3/4 187 ms 3/4 94 ms 2/4250 ms2/4125 ms音符编码和节拍编码完成后,在编程时,每个音符占一个字节,高四位是音符编码,低四位是节拍编码。
9第3章 硬件电路设计3.1 硬件电路本设计中用到了AT89C51单片机,4*4键盘,蜂鸣器,16*2 LCD 等硬件电路常用元器件。
3.1.1 时钟复位电路时钟电路由单片机XTAL1、 XTAL2引脚外接晶振(12MHz )及起振电容C1、C2(均为30pf )组成。
如图3-1所示:图3-1 时钟复位电路3.1.2 按键输入电路按键输入电路由4*4矩阵键盘组成, P1口作为输入控制按键,其中P1.0~P1.3扫描行,P1.4~P1.7扫描列。
3.1.3 输出显示电路用P2.0~P2.2作为LCD 的RS 、R/W 、E 的控制信号;用P0.0~P0.7作为LCD 的D0~D7的控制信号。
由于P0口作为输出,应加上拉电阻。
用P3.7口控制蜂鸣器。
输出显示电路如图3-2所示:XTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51X1CRYSTALC130pFC230pFC310uFR210k10图3-2 输出显示电路3.2 整体硬件电路 如图3-3所示:图3-3 音乐盒硬件电路原理图XTAL218XTAL119ALE 30EA31PSEN 29RST 9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51X1CRYSTALC130pFC230pFC310uFLS1SPEAKERQ1PNPR11kR210k234567891RP110KD 714D 613D 512D 411D 310D 29D 18D 07E 6R W 5R S 4V S S 1V D D 2V E E3LCD1LM016L0123456789A BC D E F1--A:十首歌曲C:下一首歌曲D:上一首歌曲E:暂停F:开机画面XTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51LS1SPEAKERQ1PNPR11kD 714D 613D 512D 411D 310D 29D 18D 07E 6R W 5R S 4V S S 1V D D 2V E E3LCD1LM016L234567891RP1RESPACK-8113.3 原理说明:当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。