ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:366.71KB ,
资源ID:11255422      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11255422.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于AT89C51单片机音乐盒设计含程序设计.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于AT89C51单片机音乐盒设计含程序设计.docx

1、基于AT89C51单片机音乐盒设计含程序设计前 言乐曲演奏广泛用于自动答录装置、手机铃声、集团电话、及智能仪器仪表设备。实现方法有许多种,在众多的实现方法中,以纯硬件完成乐曲演奏,随着FPGA集成度的提高,价格下降,EDA设计工具更新换代,功能日益普及与流行,使这种方案的应用越来越多。如今的数字逻辑设计者面临日益缩短的上市时间的压力,不得不进行上万门的设计,同时设计者不允许以牺牲硅的效率达到保持结构的独特性。使用现今的EDA软件工具来应付这些问题,并不是一件简单的事情。FPGA预装了很多已构造好的参数化库单元LPM器件。通过EDA软件工具,设计者可以设计出结构独立而且硅片的使用效率非常高的产品

2、。本文介绍在EDA开发平台上利用单片机及汇编语言设计音乐硬件演奏电路,并定制单片机存储音乐数据,以十首乐曲为例,将音乐数据存储到单片机,就达到了以纯硬件的手段来实现乐曲的演奏效果。只要修改单片机所存储的音乐数据,将其换成其他乐曲的音乐数据,再重新连接到程序中就可以实现其它乐曲的演奏。摘 要4第1章 概述5第2章 音乐盒的发音原理62.1 播放音乐的原理62.2 音符频率的产生62.3 节拍频率的产生8第3章 硬件电路设计93.1 硬件电路93.2 整体硬件电路103.3 原理说明 112.4 键盘按键 11第4章 软件设计124.1 程序设计流程124.2 设计源程序代码12第5章 仿真及调试

3、135.1 调试 135.2 仿真 135.3 程序调试中出现的问题及解决的办法 15第6章 设计小结及建议17致谢 18参考文献 19附录一 元器件清单 20附录二 部分源程序代码21基于AT89C51单片机的音乐盒的设计【摘要】:随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。传统的音乐盒多是机械型的,体积笨重,发音单调,不能实现批量生产。本文设计的音乐盒是以单片机为核心元件的电子式音乐盒,体积小,重量轻,能演奏和旋音乐,功能多,使用方便,可以批量生产,具有一定的商业价值。【关键词】:音乐盒;单片机;LCD第

4、1章 概述传统的音乐盒多是机械音乐盒,其工作原理是通过齿轮带动一个带有铁钉的铁桶转动,铁桶上的铁钉撞击铁片制成的琴键,从而发出声音。但是,机械式的音乐盒体积比较大,比较笨重,且发音单调。水、灰尘等外在因素,容易使内部金属发音条变形,从而造成发音跑调。另外,机械音乐盒放音时为了让音色稳定,必须放平不能动摇,而且价格昂贵,不能实现大批量生产。本文设计的音乐盒,是基于单片机设计制作的电子式音乐盒。与传统的机械式音乐盒相比更小巧,音质更优美且能演奏和弦音乐。电子式音乐盒动力来源是电池,制作工艺简单,可进行批量生产,所以价格便宜。基于单片机制作的电子式音乐盒,控制功能强大,可根据需要选歌,使用方便。所放

5、歌曲的节奏可以根据需要进行设置,根据存储容量的大小,可以尽可能多的存储歌曲。另外,可以设计彩灯外观效果,增设放歌时间、序号显示灯功能,使音乐盒的功能更加丰富,如图1-1所示。图1-1 单片机音乐盒功能框图第2章 音乐盒的发音原理2.1 播放音乐的原理发音原理:播放一段音乐需要的是两个元素,一个是音调,另一个是音符。首先要了解对应的音调,音调主要由声音的频率决定,同时也与声音强度有关。对一定强度的纯音,音调随频率的升降而升降;对一定频率的纯音、低频纯音的音调随声强增加而下降,高频纯音的音调却随强度增加而上升。另外,音符的频率有所不同。基于上面的内容,这样就对发音的原理有了一些初步的了解。 音符的

6、发音主要靠不同的音频脉冲。利用单片机的内部定时器/计数器0,使其工作在模式1,定时中断,然后控制P3.7引脚的输出音乐。只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。2.2 音符频率的产生音符及定时器初始值:例如:中音1(do)的音频=523HZ,周期T=1/523s=1912定时器/计数器0的定时时间为:T/2=1912/2=956定时器956的计数值=定时时间/机器周期=956/1=956(时钟频率=12MHZ)装入T0计

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

8、/65134低3M330/64021中3M 661/64780高3M1318/65157低4FA 350/64107中4FA700/64822高4FA 1397/65178低5SO393/64264中5SO 786/64900高5SO1568/65217低6LA 441/64402中6LA 882/64969高6LA 1760/65252低7SI 495/64526中7SI 990/65031高7SI 1967/65282音符、音符编码及定时器初始值:为了产生音符,必须求出音符低音5高音5的计数初值。例如C调的低1DO的THTL=65536-50000/262=63627,中音DO的THTL=

9、65536-500000/523=64580,高音DO的THTL=65536-500000/1042=65056。为了方便写谱,对其进行简单的编码,在编程时,根据音符编码查找对应的计数初值。比如说音乐是C调的,那么出现低音的5SO,直接将代码写为1;出现低音6LA,直接写一个2的代码;出现低音7SI,直接写一个3代码。表2-2 音符编码表音符音符编码音符音符编码不发音0低5SO1低6LA2低7SI3中1DO4中2RE5中3M6中4FA7中5SO8中6LA9中7SIA高1DOB高2REC高3MD高4FAE高5SOF高6LAG2.3 节拍频率的产生节拍的产生与编码:音乐中的节拍用延时时间产生。例如

10、,1拍=0.4s,1/4拍=0.1s,以此类推。假设1/4拍执行一次延时程序,则1/2拍就执行两次延时程序,所以只要求出1/4拍的延时时间,其余节拍就是它的倍数。为了方便,将节拍数也进行了编码,并且计算了乐谱节拍编程时的延时时间,如表2-3和表2-4所示。表2-3 节拍数编码表按1/4拍为一个延时时间的节拍编码与节拍对应的表按1/8拍为一个延时时间的节拍编码与节拍对应的表节拍编码节拍节拍编码节拍节拍编码节拍节拍编码节拍11/466/411/866/822/488/422/888/833/4A10/433/8A10/844/4C12/444/8C12/855/4F15/455/8表2-4 乐谱节

11、拍编程时的时间延时表乐谱节拍1/4拍的延时时间乐谱节拍1/8拍的延时时间4/4125 ms4/462 ms3/4187 ms3/494 ms2/4250 ms2/4125 ms音符编码和节拍编码完成后,在编程时,每个音符占一个字节,高四位是音符编码,低四位是节拍编码。第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 按键输入电路按键输入

12、电路由4*4矩阵键盘组成, P1口作为输入控制按键,其中P1.0P1.3扫描行,P1.4P1.7扫描列。3.1.3 输出显示电路用P2.0P2.2作为LCD的RS、R/W、E的控制信号;用P0.0P0.7作为LCD的D0D7的控制信号。由于P0口作为输出,应加上拉电阻。用P3.7口控制蜂鸣器。输出显示电路如图3-2所示:图3-2 输出显示电路3.2 整体硬件电路如图3-3所示:图3-3 音乐盒硬件电路原理图3.3 原理说明:当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。同时启动定时器T1,显示乐曲播放的时间,并驱动LCD,显示歌曲号及播放时间。(1)硬件

13、电路中用P1.0P1.7控制按键,其中P1.0P1.3扫描行,P1.4P1.7扫描列; (2)用P2.0P2.2作为LCD的RS、R/W、E的控制信号;(3)用P0.0P0.7作为LCD的D0D7的控制信号; (4)用P3.7口控制蜂鸣器; (5)电路为12MHz晶振频率工作,起振电路中C1,C2均为30pf。 3.4 键盘按键 键盘按键分布如下:0123456789ABCDEF按键功能说明:1A十首歌曲C下一首歌曲D上一首歌曲E暂停F开机画面第4章 软件设计本程序可以实现该课程设计的基本要求,并可以通过按键播放达10首歌曲。4.1 程序设计流程程序设计流程图如图4-1所示:图4-1 程序设计

14、流程图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上得到开机画面,显示开机字符“WELCOM HERE”及当前作用键F,如图5-2所示:图5-2 开机画面(2)按下1-A中的某一

15、按键,LCD显示当前作用按键(当前播放音乐的标号)并显示该音乐播放的时间,同时,蜂鸣器播放当前乐曲。LCD显示如图5-3所示(以按下5键为例):图5-3 按下5键时LCD的显示(3)按下C键,则LCD显示由当前乐曲跳转到下一首,蜂鸣器响起下一首乐曲。如图5-4所示:当前显示 C键动作后图5-4 C键动作效果图(3)按下D键,则LCD显示由当前乐曲跳转到上一首,蜂鸣器响起上一首乐曲。如图5-5所示:当前显示 D键动作后图5-5 C键动作效果图(4)按下E键,则蜂鸣器停止当前音乐的播放,而且LCD上播放的时间也停留在当前,再次按下E键后,音乐继续播放,播放时间继续计时。如图4-5所示:当前显示 E

16、键动作后图5-6 E键动作效果图5.3 程序调试中出现的问题及解决的办法:1 有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发现是因为程序中有的指令书写得不规范导致的,例如有的RET返回指令一定要按正确格式书写或在两行指令间最好不要留空行。2 程序中的跳转指令的运用很重要,为保险起见,都用LJMP,我们就遇到过跳转指令用错程序无法正常运行的现象。当用JNZ指令时,跳转范围比较少,这时要用一个标号中转。3 编程时要注意,在程序开始时,要写入各定时器中断的入口地址。4 编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或更改。5 程序的结构要设计的合理,避

17、免上下乱调用的现象,这样会使程序更加清晰化。6 编程前要加流程图,这样会使思路清晰,如设计思路完全可以按着MP3的工作方式列写流程图。7 LCD计时正常显示的解决办法:a. 两个定时器同时工作,存在中断时序问题,刚开始时我们把定时器1设定在方式3,计250us,由于定时中断过于频繁,使CPU负载过大,导致音乐不能正常播放,时间不能正常显示。解决办法:将定时器1设定在工作方式1,16位计数,计50ms,效果有很大改观。b. 当音乐为全4拍起始时,此时音乐节奏与定时器T1中断频率错开,LCD显示和音乐播放都会好一些。c. 另外,在歌曲中,当遇到一个音符发音为4拍,在编曲中为*CH,托因时间较长,当

18、定时器T1此时来中断时,就会对歌曲播放产生影响,若改为发音一拍,中断对歌曲播放影响减弱,但音乐效果变差。d. 改进方案:若采用可以定时时间更长的单片机,可以避免其中的一些问题。第6章 设计小结及建议1本学期学习单片机的时间只有8周时间,对单片机的硬件设计,软件设计掌握的深度不够,但通过此次课程设计,却改变了很多, 首先,对于硬件电路的工作原理有了进一步的学习,同样就有了进一步的认识;其次,软件方面,在程序的设计,程序的调试方面都学到了很多东西。2.在一个好的氛围里才能踏下心来做东西,在这几天课程设计的时间里,电子协会的氛围对我的影响很大,这也是我能完成课程设计的动力。另外在编程中出现问题时,一

19、定要戒骄戒躁,脚踏实地,认真看书,仔细分析,仔细调试,就一定会发现错误,克服困难,我也是这么做的,这在课程设计中十分重要。3.在大学课堂的学习只是纯理论的专业知识,而我们应该把所学的用到现实生活中去,此次的音乐盒设计给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应社会激烈的竞争。4.最后要提一点建议,希望下一次课程设计中,每个人都能有一块实验开发板,这样能使每个人都能得到充分的锻炼!致谢经过近一个星期的忙忙碌碌,这次的单片机课程设计已经快要接近尾声了。在这次的单片机课程设计过程中,无论是在理论学习阶段,还是在设计的选题、资料查询和撰写的每一个环节,我都得到到了许多人的悉心的

20、指导和帮助。首先,借此机会我向我们的单片机授课教师及课程设计指导老师师王冠凌老师表示衷心的感谢,王老师的悉心指导和帮助,是我顺利完成本次课程设计的基础和前提。同时,我要感谢授课的各位老师,正是由于他们的传道、授业、解惑,让我学到了专业知识,并从他们身上学到了如何求知治学、如何为人处事。另外,感谢各位同学的帮助和勉励。同窗之谊和手足之情,我将终生难忘!我愿在未来的学习和研究过程中,以更加丰厚的成果来答谢曾经关心、帮助和支持过我的所有老师、同学和朋友。参考文献【1】 韩志军,沈晋源,王振波.单片机应用系统设计(第一版)M.北京:机械工业出版社,2005.【2】 张毅刚. 单片机原理及应用M. 北京

21、:高等教育出版社,2003.【3】 王为青. 程国钢. 单片机Keil Cx51应用开发技术M. 北京:人民邮电出版社,2007.【4】 张靖武,周领彬.单片机系统的PROTEUS设计与仿真(第一版)M.电子工业出版社.2007.【5】 何立民.MCS-51系列单片机应用系统设计M.北京:北京航空航天大学出版社,1990.附录附录一 元器件清单:名 称数量(个)型号/参数备 注单片机1AT89C51液晶屏1LM016按键开关16BUTTON普通电阻210K(1个),1K(1个)排阻1RESPACK-810K电容330pf(2个),10uf(1个)晶振112MHz三极管1PNP蜂鸣器1SPEAK

22、ER附录二 部分源程序代码:RS BIT P2.0 ;定义液晶显示端口标号RW BIT P2.1E BIT P2.2ORG 0000HLJMP MAINORG 000BHLJMP TT0ORG 001BHLJMP T1INTORG 1000HMAIN: ;-;液晶初始化MOV SP,#70H MOV P0,#01H ;清屏CALL ENABLEMOV P0,#38H ;8位,2行显示LCALL ENABLEMOV P0,#0FH;屏显ON,光标ON,闪烁ONLCALL ENABLEMOV P0,#06H;计数地址加1,显示幕ONLCALL ENABLE;-内存初始化LCALL INITIL ;

23、-KEY1:LCALL KEYLCALL MODD LJMP KEY1;-键盘扫描KEY:NOPNOPLCALL KSJNZ K1 ;有按键转到K1LCALL KAIJILCALL SOPXN:LJMP KEYK1:LCALL MODDLCALL MODDLCALL KSJNZ K2LJMP KEYK2:MOV R2,#0FEH;读键盘MOV R4,#00HK3:MOV A,R2MOV P1,AMOV A,P1JB ACC.4,L1;为1跳转,第一行无按键MOV A,#00HLJMP LKL1:JB ACC.5,L2MOV A,#04HLJMP LKL2:JB ACC.6,L3MOV A,#0

24、8HLJMP LKL3:JB ACC.7,NEXT1MOV A,#0CH;-LK:ADD A,R4PUSH ACCK4:LCALL DELAY1;若同时有其他键,则等待LCALL KSJNZ K4;-MOV R3,#07H CLR AMOV R0,#30HMOV R1,#31HMM1:MOV A,R1MOV R0,AINC R0INC R1DJNZ R3,MM1POP ACCMOV R0,A RET;- -NEXT1:INC R4 ;-列扫描MOV A,R2JNB ACC.3,N2LJMP N1N2:LJMP KEYN1:RL AMOV R2,ALJMP K3;- -KS:MOV A,#0F0

25、H ;判断P1口MOV P1,ANOPNOPMOV A,P1CPL AANL A,#0F0HRET;- -DELAY1:SETB RS0DL:MOV R5,#0AHDL2:MOV R6,#63DL3:NOP NOPDJNZ R6,DL3DJNZ R5,DL2 CLR RS0 RET;30H-37H初值为零;-INITIL: MOV R3,#08HMOV R0,#30HM1:MOV R0,#00HINC R0DJNZ R3,M1 RET;- ;显示 ;- MODD: MOV P0,#8EHLCALL ENABLE MOV A,37HMOV DPTR,#TABLE3 MOVC A,A+DPTRLCALL WRITE2 RET;- ;开机提示字;- KAIJI:MOV A,37HCJNE A,#0FH,DFFMOV P0,#80H ;设光标地址 LCALL ENABLEMOV DPTR,#TABLE1;写数据LCALL WRITE1 DFF:RET;- ;按键值播放歌曲;- SOP:MOV A,37HCJNE A,#01H,A11LCALL MODDMOV 52H,#HIGH

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1