基于8086的音乐播的设计与实现_第1页
基于8086的音乐播的设计与实现_第2页
基于8086的音乐播的设计与实现_第3页
基于8086的音乐播的设计与实现_第4页
基于8086的音乐播的设计与实现_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业论文题目(将自己的毕业论文题目作为页眉)PAGEPAGE45宋体二号加黑宋体二号加黑华文新魏小初号,简体华文新魏小初号,简体微机原理课程设计(论文)题目基于8086的音乐播所填内容为黑体3号播放器的设计与实现所填内容为黑体3号学生姓名 专业班级计算机科学与技术1班学号所在系信息工程学院指导教师固定内容为宋体3号完成时间固定内容为宋体3号论文题目,3号黑体,分1行或2行居中打印论文题目,3号黑体,分1行或2行居中打印小3号黑体小3号黑体摘要本文旨在学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,通过设计总框图清晰明了的了解认识到基于8086条件下的音乐播放器的设计和应用,本文包含了设计思路说明通过对电子音乐播放器的设计,从电路到汇编代码,再到对程序的调试,在整个的设计过程中学到了很多,例如,对8254发生原理的理解,其工作原理就是对输入相同的脉冲,通过计数器的控制作用,从中学习课程设计的目的和意义。关键词:8086、8254、论文题目(英文),加粗3号大写TimesNewRoman,分1~3行居中打印,每行左右两边至少留5个字符空格加粗4号TimesNewRoman论文题目(英文),加粗3号大写TimesNewRoman,分1~3行居中打印,每行左右两边至少留5个字符空格加粗4号TimesNewRoman小4号小写TimesNewRoman小4号小写TimesNewRoman加粗小4号TimesNewRoman4号宋体4号黑体页码编为ⅠⅡⅢ4号黑体3号黑体小4号宋体,目录只到三级编号,正文可以到四级编号目录一课程设计的目的和意义二设计要求三设计总框图四设计设计思路说明五程序流程图六接口电路原理图七设计总结八汇编程序代码一、课程设计的目的和意义学习和掌握计算机中常用接口电路的应用和设计技术,学会针对不同的要求设计汇编程序代码,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学知识的应用能力以及分析问题解决问题的能力得到全面提高。二、设计要求利用8254作为音阶频率发生器,应先对至少两段音乐进行编码后存入音符表,并建立好音阶表,每段音符长度不能少于60个,每首连续播放3遍后,自动播放下一段音乐,几段音乐播完后,循环播放,直到有键盘输入任意字符时停止,并且使用8255作为控制开关的并行输入接口,输入开关选择的音乐控制信号。三、设计总框图四、设计设计思路说明:电子音乐播放器属于接口电路的连接使用,本设计是以8254芯片为核心的发生系统。8086CPU在形成系统总线后,通过和8254及8255的连接使用可以很好的驱动扬声器发音。系统初始化后,8255通过B通道,从控制开关读取所需的控制字,并送入8086CPU中进行判断,选择不同的播放音乐。使8254的通过0号计数器工作在“频率发生器”方式3,向发生器发出不同频率的方波。当给定不同的计数初值时可以使扬声器发出不同频率的音响。五、程序流程图开始开始读取音符频率读取音符频率播放音乐播放音乐读取选择信号读取选择信号YY播放song1是1H吗?H键吗?播放song1是1H吗?H键吗?YNYN播放song2是2H吗?播放song2是2H吗?Y是4H吗?播放song3NY是4H吗?播放song3NNNNCX=0NCX=0YYN键盘是否输入?N键盘是否输入?Y结束Y结束六、接口电路原理图1、8254的基本知识8254占用4个端口,3个定时器各占1个,控制端口占1个。8254的内部结构如图所示,它主要包括以下几个主要部分:8254的内部结构(1).数据总线缓冲器实现8254与CPU数据总线连接的8位双向三态缓冲器,用以传送CPU向8254的控制信息、数据信息以及CPU从8254读取的状态信息,包括某时刻的实时计数值。(2).读/写控制逻辑控制8254的片选及对内部相关寄存器的读/写操作,它接收CPU发来的地址信号以实现片选、内部通道选择以及对读/写操作进行控制。(3).控制字寄存器在8254的初始化编程时,由CPU写入控制字,以决定通道的工作方式,此寄存器只能写入,不能读出。(4).计数通道0#、1#、2#:这是三个独立的,结构相同的计数器/定时器通道,每一个通道包含一个16位的计数寄存器,用以存放计数初始值,一个16位的减法计数器和一个16位的锁存器,锁存器在计数器工作的过程中,跟随计数值的变化,在接收到CPU发来的读计数值命令时,用以锁存计数值,供CPU读取,读取完毕之后,输出锁存器又跟随减1计数器变化。(5).8254外部引脚8254芯片是具有24个引脚的双列直插式集成电路芯片,其引脚分布如图所示。8254芯片的24个引脚分为两组,一组面向CPU,另一组面向外部设备,各个引脚及其所传送信号的情况,介绍如下:1.D7~D0:双向、三态数据线引脚,与系统的数据线连接,传送控制、数据及状态信息。2.:来自于CPU的读控制信号输入引脚,低电平有效。3.:来自于CPU的写控制信号输入引脚,低电平有效。4.:芯片选择信号输入引脚,低电平有效。8254的引脚(6).8254端口地址8254端口地址(7).8254功能8253A既可作定时器又可作计数器:=1\*GB3①计数:计数器装入初值后,当GATE为高电平时,可用外部事件作为CLK脉冲对计数值进行减1计数,每来一个脉冲减1,当计数值减至0时,由OUT端输出一个标志信号。=2\*GB3②定时:计数器装入初值后,当GATE为高电平时,由CLK脉冲触发开始自动计数,当计数到零时,发计数结束定时信号。除上述典型应用外,8253A还可作频率发生器、分频器、实时钟、单脉冲发生器等。(二)、系统设计(1).控制字8255利用端口B从音乐播放选择端口读入8位数据进行判断,同时8254选择通道0,方式3,二进制,先读低位/后高位读数。则输入的控制字为:MOVDX,D8255_MODEMOVAL,10000010BOUTDX,ALMOVDX,D8254_MODEMOVAL,00110110BOUTDX,AL(2).演奏单音符8254芯片(口地址为40H—43H)的0号计数器工作在方式3作为频率发生器发出方波。每一个音符对应一个频率,将与一个频率对应的计数初值写入0号计数器,扬声器就可以发出相应的音调。由于本实验采用的时钟是8086CPU时钟,其频率可选为1MHZ。故计数初值的计算公式如下:计数初值=1M/输出频率1MHZ转换为16进制数为0F4240H,因此在打开扬声器的情况下执行以下子程序即可发出与输出频率对应的音调。MOVDX,4CHMOVAX,4B40HMOVCX,频率值DIVCX;AX=计数初值OUT40H,ALMOVAL,AHOUT40H,AL(3).演奏时间控制通过控制每个音符的演奏时间可以使乐曲更加有节奏感。最直观的方法是按照乐谱为每一个音符规定一个演奏时间,但是利用这种方法调试程序特别困难。特别是在遇到一首不熟悉的歌曲时,初期很难确定每个音符的演唱时间,而调试程序的时候费时费力,效果很差。我们可以利用另外一种方法,即为每个音符规定一个“单位时间”。单位时间×N=音符的演唱时间其中,N为调试参数,一首歌曲只有一个调试参数,它为常数。由于每个音符的节奏(即演唱时间)不同,所以各个音符的“单位时间”都不一样。每个音符演奏的“单位时间”的确定:我们知道,音符的节奏分为一拍、半拍、1/4拍、1/8拍等等。如果在一首歌中,所有音符中演奏时间最短的为1/8拍,我们就规定1/8拍音符的“单位时间”为1,1/4拍音符的“单位时间”为2,半拍音符的“单位时间”为4,一拍音符的“单位时间”为8。调试参数N的确定:显然,如果能测出一段乐谱的总的时间t,用T(i)来表示第i个音符的“单位时间”,那么:N=(4)、频率表和时间表设计程序时,数据段设这两张“表”,一张是频率表,将与音符对应的频率值依次写入表中,另一张是时间表,依次存放每个音符的单位时间。当然频率表项和时间表项要一一对应,不能错位,频率表的最后一个表项为0,作为重复演唱或者停止演唱的标志。在接通扬声器的情况下,依次取出频率表中的频率值,转换成计数初值写入2号计数器,依次取出时间表中的单位时间和调试参数N相乘,然后再调用延时子程序即可得到延时时间,也就是音符的演奏时间。表一:音阶频率表音阶频率(HZ)1 2472 247(12√2)²=2773 3114 3305 3706 4157 4661 247(12√2)12=247*2=494表二:音符频率表(HZ)247,247,277,311,311,330,330,311,311,277277,311,277,247,466,247,415,415,247,247277,311,311,330,330,311,311,370,415,370311,277,247,277,277,247,330,370,415,370330,247,247,311,311,330,311,277,247,277370,370,370,370,247,247,277,247,415,370,--1表三:单位时间表4484484442244844422448448448884444844441644444444444416七、设计总结(一)设计总结通过对电子音乐播放器的设计,从电路到汇编代码,再到对程序的调试,在整个的设计过程中学到了很多,例如,对8254发生原理的理解,其工作原理就是对输入相同的脉冲,通过计数器的控制作用,输出需要的不同频率的波。同时用到了8255的并行接口,将二进制的控制信息传入8086CPU中处理,选择是否对音乐播放进行调整。在使用8255和8254接口的时候,都要对其进行初始化,这初始化程序的编写,有助于对这些接口芯片的工作原理的理解。同时在调试过程中对不同音阶进行调试,加深了对发声原理的理解与掌握。总之,在实验中自己动手,把理论知识用于实践,从中能够领会很多。(二)设计存在的问题和不足由于是初次设计这个微机课程设计,在设计中由于考虑不全或知识面的狭窄,导致了在实验设计中出现一些不足和错误,主要有以下几点:实验箱里面的线路连接和接线接头不是很熟悉,在实验连线中偶尔出现错误。关于实验中的芯片的使用方法,存在问题,不能准确的合理使用芯片功能。写程序代码时,由于知识面的狭窄,会对一些步骤的编写出现错误,不过查资料后都正确的改正了。关于循环和声音控制计数器中数的计算有点问题,不过经过老师的解答,也基本弄清楚了。设计中最大的难处就是实现上面的对音节时间的控制方式,在最后的编程中没有使用上面的时间控制方式,从而导致了最后输出地音乐的声音不是很标准,同时也难调试。(三)心得体会这次课程设用了一个星期,在这一个星期的日子里,虽然还要复习其他的学科知识以应对相应的期末考试,但在每天下午的设计实验室里面还是静下心来认认真真的编写汇编代码,学习连接线路芯片。在之前的书本理论知识的学习中对相应的芯片知识不是很了解,在课程设计的过程中,加深了其理解。同时,也对整个学科的知识进行了汇总学习。从8286CPU到8255并行接口再到8254可编程计数器的使用原来和连接方法进行深入的学习,关于8255和8254相应的程序控制字进行了理解与掌握,基本熟悉了其相关的用法,在把理论知识用在了实际问题的解答之中,即进一步学会了怎么将理论与实践结合起来解决问题。虽然,认认真真的看书找资料,但还是会在设计过程中遇到一些问题,但在老师是指导下,问题一个一个的解决,知识和动手能力再一点一点的增加,相信只有把知识应用到实际中才算是真正的学习知识。八、汇编程序代码D8255_MODEEQU0C003HD8255_B_DUEQU0C001HD8254_MODEEQU0C063HD8254_COUTEQU0C060HNAMEDZYYBFPAGE50,70DATA1SEGMENTFREQ1DW247,247,277,311,311,330,330,311,311,277DW277,311,277,247,466,247,415,415,247,247DW277,311,311,330,330,311,311,370,415,370DW311,277,247,277,247,330,370,415,370,330DW247,247,311,311,330,311,277,247,415,370,0,0TIME1DW50,25,25,50,50,50,50,25,100,50DW25,25,50,50,50,50,25,100,50,25DW25,50,50,50,50,50,50,25,50,50DW25,25,50,50,50,25,100,75,25,25DW25,25,25,25,25,25,100,50,50,25,0,0FREQ2DW265,294,330,262,262,294,330,262,330,349DW392,330,349,392,392,440,392,349,330,262DW392,440,392,349,330,262,294,196,262,294DW196,262,0TIME2DW50,50,100,100,100,100,100,50,50,100DW100,100,100,100,50,50,100,100,100,100DW100,100,50,50,100,100,100,100,100,50DW100,100,0,0FREQ3DW7DUP(330),392,262,294,330,4DUP(349)DW2DUP(330),330,294,262,294,392DW7DUP(330),392,262,294,330,4DUP(349)DW2DUP(330),392,392,349,294,262,0,0TIME3DW2DUP(25,25,50),4DUP(25),100DW2DUP(25,25,50),4DUP(25)DW2DUP(50),2DUP(25,25,50),4DUP(25),100DW2DUP(25,25,50),4DUP(25),100,0,0DATA1ENDSSTACK1SEGMENTPARASTACKDW100DUP(?)STACK1ENDSCODESEGMENTASSUMECS:CODE,DS:DATA1ASSUMESS:STACK1START:MOVAX,DATA1MOVDS,AXMOVAX,0MOVSI,AXMOVDX,D8255_MODEMOVAL,10000010B;B端口方式0输人OUTDX,ALMOVDX,D8254_MODE;连接8253的控制端口MOVAL,00110110B;定义8253为通道0,方式3,OUTDX,AL;二进制,先读低位/后读高位MUSIC1:MOVCX,4HCIRCUL1:DECCXJZMUSIC2LEADI,FREQ1;取偏移地址LEABP,TIME1LOOP1:MOVAX,[DI];取时间偏移地址CMPAX,0JECIRCUL1CALLSPEAKERXORAX,AXMOVDX,D8255_B_DU;连接8255_B端口INAL,DX;从手动控制端读入控制选择信息MOVAH,0CMPAX,SI;判断输入的信息变化没有,JZAAA1;没变则表示没有改变原来的选择MOVSI,AXCMPAL,1H;判断输入的信息,JNZAAA2:选择播放那首音乐JMPMUSIC1AAA2:CMPAL,2HJNZAAA3JMPMUSIC2AAA3:CMPAL,4HJNZAAA1JMPMUSIC3AAA1:ADDDI,2ADDBP,2JMPLOOP1MUSIC2:MOVCX,4HCIRCUL2:DECCXJZMUSIC3LEADI,FREQ2LEABP,TIME2LOOP2:MOVAX,[DI]CMPAX,0JECIRCUL2CALLSPEAKERXORAX,AXMOVDX,D8255_B_DU;连接8255_B端口INAL,DX;从手动控制端读入控制选择信息MOVAH,0HCMPAX,SI;判断输入的信息变化没有,没变JZAAA6;则表示没有改变原来的选择MOVSI,AXCMPAL,1H;判断输入的信息,选择播放那首音乐JNZAAA4JMPMUSIC1AAA4:CMPAL,2HJNZAAA5JMPMUSIC2AAA5:CMPAL,4HJNZAAA6JMPMUSIC3AAA6:ADDDI,2ADDBP,2JMPLOOP2MUSIC3:MOVCX,4HCIRCUL3:DECCXJNZLOOOPCALLBREAKJMPMUSIC1LOOOP:LEADI,FREQ3;取偏移地址LEABP,TIME3;取时间偏移地址LOOP3:MOVAX,[DI]CMPAX,0JECIRCUL3CALLSPEAKERXORAX,AXMOVDX,D8255_B_DU;连接8255_B端口INAL,DX;从手动控制端读入控制选择信息MOVAH,0HCMPAX,SI;判断输入的信息变化没有,没JZAAA9;变则表示没有改变原来的选择MOVSI,AXCMPAL,1H;判断输入的信息,选择播放那首音乐JNZAAA7JMPMUSIC1AAA7:CMPAL,2HJNZAAA8JMPMUSIC2AAA8:CMPAL,4HJNZAAA9

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论