音乐盒毕业设计.doc

上传人:仙人指路1688 文档编号:3995206 上传时间:2023-03-30 格式:DOC 页数:29 大小:249KB
返回 下载 相关 举报
音乐盒毕业设计.doc_第1页
第1页 / 共29页
音乐盒毕业设计.doc_第2页
第2页 / 共29页
音乐盒毕业设计.doc_第3页
第3页 / 共29页
音乐盒毕业设计.doc_第4页
第4页 / 共29页
音乐盒毕业设计.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《音乐盒毕业设计.doc》由会员分享,可在线阅读,更多相关《音乐盒毕业设计.doc(29页珍藏版)》请在三一办公上搜索。

1、 摘要社会在进步,人们对视觉、听觉方面的享受提出了越来越高的要求。小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。本文设计的音乐盒主要运用汇编语言及PC机中的8255A,8253芯片实现音乐的播放。通过PC机硬件的发声以及软件编译,从而设计制造出一个多功能音乐盒。本音乐盒共有三首歌曲,当程序开始运行后,在屏幕上会出现欢迎词及歌曲名单,可以按下相应的提示键播放对应的歌曲,播放过程中可以按下任意键停止并返回主菜单。程序中的乐曲丰富,本文设计的音乐盒体积小,重量轻,不但可以演奏和旋音乐,而且功能多,使用方便,可以批量生产,具有一定的商业价值。关键词:音乐盒,汇编语言,8255A,825

2、3目录绪论21.音乐盒的发音原理31.1 PC机发声原理31.1.1 PC机发声系统31.1.2 发声控制31.2 音符频率的产生31.3 节拍频率的产生42.硬件原理52.1 8253的原理和结构52.1.1 8253的内部结构52.1.2 8253的控制字62.1.3 8253的工作方式72.2 8255A的原理和结构82.2.1 8255的内部结构82.2.2 8255A的控制字92.2.3 Intel 8255A的方式选择103.软件设计113.1发声程序原理114.设计任务及调试124.1设计任务124.1.1设计要求124.1.2设计思想124.2 调试12结束语15致谢16参考文

3、献17附录一 程序设计流程图18附录二 源程序代码19绪论1.音乐盒的发音原理1.1 PC机发声原理1.1.1 PC机发声系统PC机发声系统以8253的2号计数器为核心。系统初始化时,2号计数器工作在“方波发声器”方式,初值为二进制数,写入顺序为先低后高, CLK2为1.193182MHz当计数器初值为533H时,OUT2输出的方波大约为900Hz,经过简单的滤波之后,送至扬声器。改变2号计数器的记数初值就可以使扬声器发出不同的频率的音响。1.1.2 发声控制发声系统受8255A芯片(口地址为60H63H)的两根输出线PB0和PB1的控制,PB0输出的高电平使计数器正常工作,PB1输出高电平打

4、开输出控制门,因此执行下面的OPEN子程序可以打开扬声器,执行下面的CLOSE子程序可以关闭扬声器。1.2 音符频率的产生在汇编语言的音乐盒设计中需要应用到一定的乐理知识,在此加以介绍PC机中的芯片通过音乐对应的频率来播放乐曲种中不同的音高,然后再通过定义的不同时间去确定乐曲某个音符锁发声的长短。我们通过一定的表格来表示,更加的清晰,容易查找。如表1-1所示:表1-1 各音高对应的频率高音7654321987880783698659587523中音7654321494440392349330294262低音76543212472201961751651471318253计数器的计数初值与发出声

5、音的频率之间的关系如下关系式: 时钟频率 计数初值=- 发出声音的频率 1.3 节拍频率的产生乐谱不仅表示音高同样表示节拍,与汇编语言中的对应关系如下:表1-2 常用音符对应的节拍表47/235/22100877562503/213/41/21/4372518126本表选用250ms作为1拍,则半拍是125ms,程序是以10ms为单位的,所以1拍和半拍的音符,可以通过分别重复执行25次和12次演示程序来得到所需的乐音持续时间。具体时间可通过延时程序的时间来进行调节。2.硬件原理2.1 8253的原理和结构2.1.1 8253的内部结构 图2.1 8253的内部结构图Intel 8253是一种常

6、用的可编程控制器/计数器接口芯片。8253具有三个独立的功能完全相同的16位减法计数器,24脚DIP封装,由单一的+5V电源供电。主要功能: (1)每片8253上有三个独立的16位减法计数器,最大技术范围为065 535。(2)每个计数器上都可按二进制或二一十进制计数(3)每个通达都有六中不同的工作方式(4)计数脉冲的频率可达2MHz (5)输入/输出与TTL兼容 表2-1 PC机的端口地址/cs/wr/rdA1A0操作功能PC机口地址00100计数初值写入计数器040H00101计数初值写入计数器141H00110计数初值写入计数器242H00111写入控制字寄存器43H01000读计数器0

7、当前计数值40H01001读计数器1当前计数值41H01010读计数器2当前计数值42H 在8253的使用中/cs、/wr、/rd、A1和A0决定着PC机口地址的,选择相应的功能2.1.2 8253的控制字 D7D6D5D4D3D2D1D0图2-2 8253的控制字8253控制字的各位的详细意义如下:D7、D6用于选择工作的计数器D7D6=00:选择计数器0工作;D7D6=01:选择计数器1工作;D7D6=10:选择计数器2工作;D7D6=11:无效。D5、D4规定读/写操作格式或类型。D5D4=00:计数器锁存命令,把写本命令时的当前计数器值,以便以后读写;D5D4=01:8位计数器,只写低

8、位字节,高位字节自动为0;D5D4=10:16位技术,只写高位字节,地位字节自动为0;D5D4=11:16位计数器,先写低位字节,后写高位字节。D3、D2、D1用于选择工作方式。D3D2D1=000:使计数器工作于方式0;D3D2D1=001:使计数器工作于方式1;D3D2D1=010:使计数器工作于方式2;D3D2D1=011:使计数器工作于方式3;D3D2D1=100:使计数器工作于方式4;D3D2D1=101:使计数器工作于方式5。D0是计数器俺二进制计数或二十一进制(BCD码)计数。D0=0:按二进制计数;D0=1:按二十一进制计数。2.1.3 8253的工作方式1 方式0:计数到零可

9、申请中断2 方式1:可编程单拍脉冲3 方式2: N分频器4 方式3:方波速率发生器5 方式4:软件触发选通6 方式5:硬件触发选通7六种工作方式小结 上面已经分别介绍了Intel 8253可编程定时器/计数器接口芯片的六种工作方式,下面再对它们的共同点和不同点进行简单总结。1) OUT的输出波形在六种工作方式中,只有方式0在写入控制字后,OUT输出为低电其他五种方式OUT输出都为高电平。方式2、方式4和方式5都是输出宽度为一个CLK周期的负脉冲,输出波形相同,但方式2是连续工作的,方式4是由软件出发的,方式5是由硬件门控制脉冲触发的。计数初值和输出的波形有很大的关系。2.2 8255A的原理和

10、结构2.2.1 8255的内部结构由图可知,8255A由以下几个部分组成:1. 数据端口A、B、C 8288A有三个8位的数据端口:端口A、端口B、端口C。可用程序把它们设计成输入端口或输出端口。端口:端口包含一个位的数据输入锁存器和一个位的数据输出锁存器/缓冲器。因此,不管用端口A作输入口还是输出口,数据均能受到锁存。端口B:端口B包含一个8位的数据输入缓冲器和一个8位的数据输出锁存器/缓冲器。因此,端口B作输入口时,数据不能受到锁存;端口B作输出口时,数据能受到锁存。端口C:端口C包含一个8位的数据输入缓冲器和一个8位的数据输出锁存器/缓冲器。因此,端口C与端口B一样,作输入口时数据不受锁

11、存,作输出口数据能受到锁存。2. A组控制、B组控制这两组控制电路,用来接收来自CPU和读/写控制逻辑电路发来的控制字和读/写信号,实现对8255A的数据端口的读/写控制。其中,A组控制电路控制端口A和端口C的高四位的工作方式和读/写控制;B组控制电路控制端口B和端口C的低四位的工作方式和读/写控制。3. 读/写控制逻辑读/写控制逻辑控制8255A的数据传输。它接收来自系统地址总线的A1 、A0、地址译码输出的片选信号和系统控制总线的信号,将这些信号进行组合后,得到A组控制和B组控制的控制命令,从而实现数据的传输。4. 数据总线缓冲器这是一个双向的8位数据缓冲器,可直接与系统的数据总线相连,用

12、来传送输入数据、输出数据以及CPU发给8255的控制信息。2.2.2 8255A的控制字C端口置1置0控制字: 端口C的数位常常作为控制位来使用,所以,在设计8255A芯片时,应使端口C中的各位可以用置1置0控制字来单独设置。其具体格式如下图所示。重要说明:C端口置1置0控制字尽管是对端口C进行操作,但此控制字必须写入控制口,而不是写入C端口。2.2.3 Intel 8255A的方式选择通过对方式选择控制字的方式分析可以知道:端口A可以工作于方式0、方式1、方式2工三种方式,可以作为输入端口或输出端口;端口B可以工作于方式0、方式1两种方式,可以作为输入端口或输出端口;端口C可分为高四位(PC

13、7PC4)和低四位(PC3PC0),可分别设置成输入端口或输出端口;端口C的高四位与端口A配合组成A组,端口C的低四位与端口B配合组成B组。D7=1表明是设定方式选择控制字。表3-1 8255的端口地址A1A0/RD/WR/CS操作功能00010读端口地址A01010读端口地址B10010读端口地址C00100写端口地址A01100写端口地址B10100写端口地址C11100写方式控制字XXXX1无操作(高阻抗)XX110无操作(高阻抗)11010非法状态3.软件设计3.1发声程序原理;打开扬声器子程序open proc push ax in al,61h or al,03h out 61h,

14、al pop ax retopen endp;关闭扬声器子程序close proc push ax in al,61h and al,0fch out 61h,al pop ax retclose endp 4.设计任务及调试4.1设计任务用汇编语言编程来实现一个简单的音乐盒功能。4.1.1设计要求功能要求:1、程运行后首先在屏幕上显示出乐曲菜单。2、用键盘输入相应的提示键选择相应的音乐后,便开始播放原先编制好的音乐。3、输入错误时要有适当提示,并允许重新输入。4、音乐播放过程中可按任意键停止播放,并回到主菜单。4.1.2设计思想首先进入DOS系统,运用masm,link软件对其汇编,链接。汇

15、编链接成功后,进入程序的初始界面,然后运用1号功能检测键盘的输入,并选择相应的操作,若是无效操作则选取相应的提示,反则播放对应的乐曲,播放过程中,可以按任意键停止并回到初始状态。4.2 调试程序的初始页面,见图4.2.1图4.2.1当我们输入“1”时,名为“song bie”的歌曲开始响起,同时窗口的提示也发生了变化,具体如下提示:图4.2.2 音乐播放图当输入错误的代码时,会有相应的提示,同时窗口提示信息放大如下:图4.2.3 输入错误提示信息在播放歌曲过程中,按下任意键歌曲会暂停并回到主菜单,如,播放歌曲“peng you”时,按下“d”键,则会出现以下提示:图4.2.4 “peng yo

16、u”歌曲播放中 图4.2.5 按下任意键回到主菜单如果我们输入“Q”时,程序就推出了:结束语经过这段时间的努力奋斗,这次的毕业设计即将完成。课程的设计让我了解到编写程序时必须很细心。此次课程设计使我感受颇深,以下是我总结的几个方面:这次做论文的经历会使我终身受益,我感受到做论文是要真真正正用心去做的一件事情,是自己真正的学习过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破。自此之前,自己学习的理论知识面不够广。通过这次毕业设计,使我第一次系统性的回顾了之前所学的所有课程内容。从中我懂得了所学知识的重要性,知识掌握的越多,设计的作品功能也就越强大。希望这次的经历能让

17、我在以后的学习中激励我继续进步。我经过这次系统的毕业设计,大致地了解了对以设计进行系统研究、设计及制作的全过程。这些认识使我在将来的工作和学习当中都会有很大的帮助。在以后加以吸收利用,以提高自己的应用能力,而且还能增长自己见识补充最新的知识。毕业设计培养了严肃认真和实事求是的科学态度,而且培养了吃苦耐劳的精神以及严谨的作风,提高了交流沟通和团体写作能力,这对我以后的工作都有非常大的帮助的。虽然我的论文作品不是很成熟,还有很多不足之处,但我可以自豪的说,这里面的每一段代码,都有我的劳动。当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。我相信其中的酸甜苦辣最终都会化为甜美

18、的甘泉。致谢经过近一段时间的忙忙碌碌,这次基于汇编的音乐盒设计就要接近尾声了。在这次的汇编课程设计过程中,无论是在理论学习阶段,还是在设计选题、查询资料和撰写的每一个环节,我都得到了许多人的悉心指导和帮助。尤其要感谢我的论文指导老师-唐民丽老师,谢谢您这段时间对我的指导和帮助。在闲聊中她总是能像知心朋友一样鼓励你,在论文的写作和措辞等方面她也总会以“专业标准”严格要求你,从选题、定题开始,一直到最后论文的反复修改、润色,唐老师始终认真负责地给予我深刻而细致地指导,帮助我开拓研究思路,精心点拨,热忱鼓励。正是在唐老师的无私指导和鼓励下,我的设计书才能更快的顺利完成。另外,在校图书馆查找资料的时候

19、,图书馆的老师也给我提供了很多方面的支持与帮助。在此,向帮助和指导过我的各位老师表示崇高的敬意和衷心的感谢!感谢我的同学和朋友,在我写论文的过程中给予我了很多素材,还在论文的撰写和排版过程中提供热情的帮助。正是由于你们的帮助和支持,我才能一个一个克服困难、解明疑惑,直至本文顺利完成,在这里请接受我诚挚的谢意。谢谢我的父母,没有他们辛勤的付出也就没有我的今天,在这一刻,将最崇高的敬意献给你们!在未来的日子里,我会更加努力的学习和工作,不辜负父母对我的殷殷期望!感谢这篇论文所涉及到的各位学者。本文引用了数位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇论文的写作。在此,向

20、各学术界的前辈们致敬!在论文即将完成之际,我的心情无法平静。相信等待我的是一片充满机遇、风险与快乐的土地;也相信我和同仁们的事业必将如涅磐之凤、浴火之凰;更加相信,不朽的民族精神终将引领我们创造新的奇迹!参考文献1 陈章龙,陈泽文.IBM-PC机软硬件接口及实验. 北京:人民邮电出版社,19932 邵时. 微机接口技术. 北京:清华大学出版社,20003 贾世文. USB 2.0 硬件设计. 北京:清华大学出版社,20024 钱晓捷,陈涛等. 微型计算机原理及接口技术. 北京:机械工业出版社, 19995 刘乐善,欧阳星明,曹计昌等. 微型计算机与接口技术. 武昌:华中科技大学出版社,2001

21、6 马平,姚文业,王炳谦. 微机原理及应用. 北京:中国电力出版社,20027 艾德才,姚佳康,龚涛. 微机接口技术实用教程. 北京: 清华大学出版社,20028 刘星等. 计算机接口技术. 北京:机械工业出版社,20039 李广军,王厚军. 实用接口技术. 成都:电子科技大学出版社,1997 10 丁辉. 汇编语言程序设计. 北京:电子工业出版社,200111 陈伟芳. 汇编语言程序设计实训教程. 北京:科学出版社,2004附录一 程序设计流程图是3?是2?是1?结束 开始播放相应歌曲mus_freq1送si,mus_time1送bpmus_freq2送si,mus_time2送bpmus_

22、freq3送si,mus_time3送bpN提示错误显示欢迎词与歌曲菜单接受字符是Q?NYYNYYN附录二 源程序代码发声程序代码: data segment lab0 db $ lab1 db -my name is liangbo.From 301 class of electronic information.No2009060121!-$ lab2 db -Welcome you! Please select a song:-$ lab3 db 1. song bie$ COUNT1 equ lab3 lab4 db 2. bu xiang zhang da$ COUNT2 equ l

23、ab4 lab5 db 3. peng you$ COUNT3 equ lab5 lab6 db Q.exit$ lab7 db please input right song code name$ lab8 db the music has begin that you choice$ lab9 db the music was end,please choose the another$mus_freq1 dw 392,330,392,523 dw 440,523,392 dw 392,262,294,330 dw 294,262,294 dw 392,330,392,523,494 dw

24、 440,523,392 dw 392,294,330,349,247,262 dw 440,523,523 dw 494,440,494,523 dw 440,494,523,440,440,392,330,262,294 dw 392,330,392,523,494,440,523,392 dw 392,294,330,349,247,262 dw -1 mus_time1 DW 25,13,13,50 dw 2 DUP(25),50 dw 25,13,13,25 dw 13,13,100 dw 25,13,13,38,13 dw 2 DUP(25),50 dw 25,13,13,38,1

25、3,100 dw 2 DUP(25),50 dw 25,13,13,50 dw 8 DUP(13),100 dw 25,13,13,38,13,25,25,50 dw 25,13,13,38,13,100 mus_freq2 dw 220,330,330,330,294,330,294,262,220,220 dw 330,330,349,330,294,220 dw 294,294,294,294,294,262,247,262 dw 294,294,330,294,262,220 dw 392,392,392,392,392,349,330,349 dw 392,392,440,392,3

26、49,349 dw 440,440,440,440,440,392,349,294 dw 330,330,330,349,330,330,220 dw 330,330,330,294,330,294,262,220,220 dw 330,330,349,330,294,220 ;50 dw 294,294,294,294,294,262,247,262 dw 294,294,330,294,262,220 dw 392,392,392,392,392,349,330,349 dw 392,392,440,392,349,349 dw 8 DUP(440) dw 494,494,494,523,

27、494,494 dw 349,330,330,349,330,330,349,330,330,523,523,494,440,440,392,349,349,330,294 dw 330,294,294,330,294,294,330,294,294,494,494,440,392,392,349,330,330,294,262 dw 349,330,330,349,330,330,349,330,330,523,523,494 dw 440,440,494,523,494,523,587,440,494 dw 523,523,523,440,494,523,523,523,440,523 d

28、w 494,494,494,440,494 dw -1 mus_time2 dw 13,13,13,13,7,7,13,13,13,13 dw 13,13,13,13,38,13 dw 13,13,13,13,13,13,13,13 dw 13,13,13,13,38,13 dw 13,13,13,13,13,13,13,13 dw 13,13,13,13,38,13 dw 13,13,13,13,13,13,13,13 dw 13,13,13,13,13,13,25,13 dw 13,13,13,7,7,13,13,13,13 dw 13,13,13,13,38,13 dw 13,13,13

29、,13,13,13,13,13 dw 13,13,13,13,38,13 dw 13,13,13,13,13,13,13,13 dw 13,13,13,13,38,13 dw 8 DUP(13) dw 5 DUP(13),25 dw 7,7,13,7,7,13,7,7,13,25,7,7,13,7,7,13,7,7,38 dw 7,7,13,7,7,13,7,7,13,25,7,7,13,7,7,13,7,7,38 dw 7,7,13,7,7,13,7,7,13,25,7,7 dw 13,7,7,13,7,7,38,7,7 dw 13,13,13,7,7,13,13,13,7,7 dw 13,

30、13,13,13,38 mus_freq3 dw 294,330,262,294,330,294,330,392,440,392,330,330 dw 294,330,262,294,330,196,294,330,294,220,262,262,262 dw 294,330,262,294,330,262,294,330 dw 392,392,440,262,220,262 dw 294,294,262,220,220,262 dw 294,330,294,262,294,330,294 dw 262,294,330,262,294,330 dw 392,392,440,262,220,26

31、2 dw 294,294,262,220,196,220,262 dw 330,392,392,392,392,440,392,440,494 dw 523,440,440,392,330,330,294 dw 262,262,440,392,330,294 dw 262,262,220,294 dw 330,392,392,392,392,440,392,440,494 dw 523,440,440,392,330,330,294,262,262,440,392,330,294,262,220,262,262 dw -1 mus_time3 DW 13,13,25,13,13,25,13,1

32、3,25,13,13,25 dw 13,13,25,13,13,25,13,13,25,13,13,50,75 dw 13,13,25,13,13,25,13,13 dw 25,13,13,25,13,13 dw 25,13,13,25,13,13 dw 13,13,13,13,25,13,13 dw 25,13,13,25,13,13 dw 25,13,13,25,13,13 dw 25,13,13,25,13,13,75 dw 13,13,13,13,13,13,25,13,13 dw 13,13,13,13,25,13,13 dw 25,13,13,25,13,13 dw 25,13,1

33、3,25 dw 13,13,13,13,13,13,25,13,13 dw 13,13,13,13,25,13,13,25,13,13,25,13,13,25,13,13,100 data ends code segment assume cs:code,ds:data start: push ds sub ax,ax push ax mov ax,data mov ds,ax push dx push ax push bx call huiche xianshi: mov dx,offset lab0 mov ah,9 int 21h mov dx, offset lab1 mov ah,9

34、 int 21h call huiche mov dx,offset lab0 mov ah,9 int 21h mov dx,offset lab2 mov ah,9 int 21h call huiche mov dx,offset lab0 mov ah,9 int 21h mov dx,offset lab3 mov ah,9 int 21h call huiche mov dx,offset lab0 mov ah,9 int 21h mov dx,offset lab4 mov ah,9 int 21h call huiche mov dx,offset lab0 mov ah,9

35、 int 21h mov dx,offset lab5 mov ah,9 int 21h call huiche mov dx,offset lab0 mov ah,9 int 21h mov dx,offset lab6 mov ah,9 int 21h ;150 call huiche mov dx,offset lab0 mov ah,9 int 21h pop bx pop ax pop dx ;检测用户的输入,执行相应的操作 mov ah,1 int 21h cmp al,q jz exit aa: cmp al,1 jnz bb lea si,mus_freq1 lea bp,mu

36、s_time1 call begin jmp start bb: cmp al,2 jnz cc lea si,mus_freq2 lea bp,mus_time2 call begin jmp start cc: cmp al,3 jnz tishi lea si,mus_freq3 lea bp,mus_time3 call begin jmp start;186 lop proc mov di,si cmp di,-1 jz zj mov bx,ds:bp call play inc si inc si inc bp inc bp jmp lop lop endp begin proc mov

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号