配色: 字号:
单片机论文 电子音乐盒
2013-01-09 | 阅:  转:  |  分享 
  
摘要

【摘要】:随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。传统的音乐盒多是机械型的,体积笨重,发音单调,不能实现批量生产。本文设计的音乐盒是以单片机为核心元件的电子式音乐盒,体积小,重量轻,能演奏和旋音乐,功能多,使用方便,可以批量生产,具有一定的商业价值。

【关键词】:音乐盒;单片机;LCD



















概述

传统的音乐盒多是机械音乐盒,其工作原理是通过齿轮带动一个带有铁钉的铁桶转动,铁桶上的铁钉撞击铁片制成的琴键为了让音色稳定,必须放平不能动摇音乐盒音质能控制功能强使用方便



























图1-1单片机音乐盒功能框图





第2章音乐盒的发音原理

2.1播放音乐的原理

发音原理:播放一段音乐需要的是两个元素,一个是音调,另一个是音符。首先要了解对应的音调,音调主要由声音的频率决定,同时也与声音强度有关。对一定强度的纯音,音调随频率的升降而升降;对一定频率的纯音、低频纯音的音调随声强增加而下降,高频纯音的音调却随强度增加而上升。)

定时器/计数器0的定时时间为:T/2=1912/2=956

定时器956的计数值=定时时间/机器周期=956/1=956(时钟频率=12MHZ)

装入T0计数器初值为65536-956=64580

将64580装入T0寄存器中,启动T0工作后,每计数956次时将产生溢出中断,进入中断服务时,每次对P3.0引脚的输出值进行取反,就可得到中音DO(523HZ)的音符音频。将51单片机内部定时器工作在计数器模式1下,改变计数初值TH0,TL0以产生不同的频率。下表2-1是C调各音符频率与计数初值T的对照表:





表2-1C调各音符频率与计数初值T的对照表

音符 频率(Hz) 音符 频率(Hz) 低1DO 1DO 523/64580 高1DO低2RE 2RE 589/64687 高2RE 1245/65134 低3M3M 661/64780 高3M 1318/65157 低4FA4FA 700/64822 高4FA 1397/65178 低5SO5SO 786/64900 高5SO 1568/65217 低6LA 441/64402 中6LA 882/64969 高6LA 1760/65252 低7SI 7SI 990/65031 高7SI 1967/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 低5SO6LA 2 低7SI 1DO 4 中2RE 5 中3M 6 中4FA 7 中5SO 8 中6LA 9 中7SI A 高1DO B 高2RE C 高3M D 高4FA E 高5SO F 高6LA G 2.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 5 5/4 F 15/4 5 5/8

表2-4乐谱节拍编程时的时间延时表

乐谱节拍 1/4拍的延时时间 乐谱节拍 1/8拍的延时时间 4/4 125ms 4/4 62ms 3/4 187ms 3/4 94ms 2/4 250ms 2/4 125ms 音符编码和节拍编码完成后,在编程时,每个音符占一个字节,高四位是音符编码,低四位是节拍编码。









第3章硬件电路设计

3.1硬件电路

本设计中用到了89C51单片机,44键盘,蜂鸣器,162LCD时钟电路由单片机XTAL1、XTAL2引脚外接晶振(12MHz)及起振电容C1、C2(均为30pf)组成。如图3-1所示:

图3-1时钟复位电路



3.1.2按键输入电路

按键输入电路由44矩阵键盘组成,P1口作为输入控制按键,其中P1.0~P1.3扫描行,P1.4~P1.7扫描列用P2.0~P2.2作为LCD的RSR/W、E的控制信号用P0.0~P0.7作为LCD的D0~D7的控制信号





















图3-2输出显示电路

3.2整体硬件电路

如图3-3所示:

图3-3音乐盒硬件电路原理图

3.3原理说明:当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。同时启动定时器T1,显示乐曲播放的时间,并驱动LCD,显示歌曲号及播放时间。(1)?硬件电路中用P1.0~P1.7控制按键,其中P1.0~P1.3扫描行,P1.4~P1.7扫描列()?用P2.0~P2.2作为LCD的RSR/W、E的控制信号用P0.0~P0.7作为LCD的D0~D7的控制信号()?用P3.7口控制蜂鸣器()?电路为12MH晶振频率工作,起振电路中C1,C2均为30pf。



0 1 2? 3? 4 5? 6? 7? 8 9 A B C D E? F?



按键功能说明:



1—A 十首歌曲 C 下一首歌曲 D 上一首歌曲 E 暂停 F 开机画面





第4章软件设计

本程序可以实现该课程设计的基本要求,并可以通过按键播放达10首歌曲。



4.1程序设计流程

程序设计流程图如图4-1所示:





































图4-1程序设计流程图

4.2设计源程序代码(见附录)

第5章仿真及调试

5.1调试:

(1)按照第2章设计的硬件电路在proteus软件内画好电路图。

(2)打开单片机软件开发系统keil,选择AT89C51单片机,在其中编写程序,运行生成一个hex文件。

(3)电路检查无误后,双击AT89C51单片机,打开编辑元件对话框(如图5-1所示),将已经在keil环境下调试好的程序hex文件加载到单片机上。



图5-1加载单片机程序



5.2仿真:

(1)点击运行按钮之后,电路上电,按下F键,LCD上得到开机画面,显示开机字符“WELCOMHERE”及当前作用键F,如图5-2所示:





图5-2开机画面

(2)按下1-A中的某一按键,LCD显示当前作用按键(当前播放音乐的标号)并显示该音乐播放的时间,同时,蜂鸣器播放当前乐曲。LCD显示如图5-3所示(以按下5键为例):



图5-3按下5键时LCD的显示



(3)按下C键,则LCD显示由当前乐曲跳转到下一首,蜂鸣器响起下一首乐曲。如图5-4所示:











当前显示C键动作后

图5-4C键动作效果图

(3)按下D键,则LCD显示由当前乐曲跳转到上一首,蜂鸣器响起上一首乐

曲。如图5-5所示:













当前显示D键动作后

图5-5C键动作效果图



(4)按下E键,则蜂鸣器停止当前音乐的播放,而且LCD上播放的时间也停留在当前,再次按下E键后,音乐继续播放,播放时间继续计时。如图4-5所示:













当前显示E键动作后

图5-6E键动作效果图



5.3程序调试中出现的问题及解决的办法:

有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发现是因为程序中有的指令书写得不规范导致的,例如有的RET返回指令一定要按正确格式书写或在两行指令间最好不要留空行。

程序中的跳转指令的运用很重要,为保险起见,都用LJMP,我们就遇到过跳转指令用错程序无法正常运行的现象。当用JNZ指令时,跳转范围比较少,这时要用一个标号中转。

编程时要注意,在程序开始时,要写入各定时器中断的入口地址。

4.编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不

便于查找或更改。

程序的结构要设计的合理,避免上下乱调用的现象,这样会使程序更加清晰化。

编程前要加流程图,这样会使思路清晰,如设计思路完全可以按着MP3的工作方式列写流程图。

LCD计时正常显示的解决办法:

两个定时器同时工作,存在中断时序问题,刚开始时我们把定时器1设定在方式3,计250us,由于定时中断过于频繁,使CPU负载过大,导致音乐不能正常播放,时间不能正常显示。解决办法:将定时器1设定在工作方式1,16位计数,计50ms,效果有很大改观。

当音乐为全4拍起始时,此时音乐节奏与定时器T1中断频率错开,LCD显示和音乐播放都会好一些。

另外,在歌曲中,当遇到一个音符发音为4拍,在编曲中为CH,托因时间较长,当定时器T1此时来中断时,就会对歌曲播放产生影响,若改为发音一拍,中断对歌曲播放影响减弱,但音乐效果变差。

改进方案:若采用可以定时时间更长的单片机,可以避免其中的一些问题。





















第6章设计小结及建议

1.本学期学习单片机的时间只有8周时间,对单片机的硬件设计,软件设计掌握的深度不够,但通过此次课程设计,却改变了很多,首先,对于硬件电路的工作原理有了进一步的学习,同样就有了进一步的认识;其次,软件方面,在程序的设计,程序的调试方面都学到了很多东西。

2.?在一个好的氛围里才能踏下心来做东西,在这几天课程设计的时间里,电子协会的氛围对我的影响很大,这也是我能完成课程设计的动力。另外在编程中出现问题时,一定要戒骄戒躁,脚踏实地,认真看书,仔细分析,仔细调试,就一定会发现错误,克服困难,我也是这么做的,这在课程设计中十分重要。

3.在大学课堂的学习只是纯理论的专业知识,而我们应该把所学的用到现实生活中去,此次的音乐盒设计给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应社会激烈的竞争。

4.?最后要提一点建议,希望下一次课程设计中,每个人都能有一块实验开发板,这样能使每个人都能得到充分的锻炼!















致谢

经过近一个星期的忙忙碌碌,这次的单片机课程设计已经快要接近尾声了。在这次的单片机课程设计过程中,无论是在理论学习阶段,还是在设计的选题、资料查询和撰写的每一个环节,我都得到到了许多人的悉心的指导和帮助。首先,借此机会我向我们的单片机授课教师及课程设计指导老师表示衷心的感谢,老师的指导和帮助,是我顺利完成本次课程设计的基础和前提。另外,感谢各位同学的帮助和勉励。同窗之谊和手足之情,我将终生难忘!我愿在未来的学习和研究过程中,以更加丰厚的成果来答谢曾经关心、帮助和支持过我的所有老师、同学和朋友。























参考文

韩志军,沈晋源,王振波.单片机应用系统设计(第一版)[M].机械工业出版社,2005张靖武,周领彬.单片机系统的PROTEUS设计与仿真(第一版)M].电子工业出版社.2007.

何立民.MCS-51系列单片机应用系统设计[M].北京:北京航空航天大学出版社,1990.































1















单片机



音乐播放

时间显示



播放音乐

序号



音乐播放

扬声器



时钟、复位

电路





选歌按键





主程序开始



初始化变量及LCD接口



初始化计数器T0,计时器T1



LCD显示英文欢迎字符



N



等待按键,是否有按键?包括播放键,暂停键,停止键



Y



歌曲号及播放时间显示在LCD上



依据按键码演奏对应的歌曲



C键动作





D键动作





E键动作









献花(0)
+1
(本文系草木戒工作...首藏)