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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

微机原理音乐程序的设计.docx

1、微机原理音乐程序的设计 阳 工 程 学 院课 程 设 计课程设计题目:音乐程序设计系 别 信息工程系 班级 系统本101 学生凌贤忠学号2010414109指导教师 衣云龙、王德君职称 讲师、工程师起止日期:2012年05月21日起至 2012年05月25日止 阳 工 程 学 院课程设计任务书课程设计题目:音乐程序设计系 别 信息工程系班级 系统本101学生凌贤忠 学号 2010414109指导教师 衣云龙、王德君 职称讲师、 工程师课程设计进行地点:微机原理实验室(F106) 任 务 下 达 时 间:2012年05 月 18 日起止日期:2012年05月21日起至2012年05月25日止教研

2、室主任 王健 2012年05月18日批准一、设计目的通过课程设计使学生更进一步掌握微机原理与应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解。通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用微机解决问题的步骤与方法。为以后学生结合专业从事微机应用设计奠定基础。二、设计的原始资料与依据查阅可编程计数器/定时器芯片8254相关资料。用简单的输入输出端口等硬件,输入数据、处理数据和输出数据。三、设计的主要容与要求容:利用微机原理试验箱,设计简易音乐程序,要求至少可以播放2首音乐。要求:1)用2个开关选择歌曲。 2)能用扬声器播放歌曲。四、对设计说明书撰写容、格式、

3、字数的要求 1.课程设计说明书(论文)是体现和总结课程设计成果的载体,一般不应少于3000字。2.学生应撰写的容为:目录、正文、参考文献等。课程设计说明书(论文)的结构与各部分容要求可参照工程学院毕业设计(论文)撰写规执行。应做到文理通顺,容正确完整,书写工整,装订整齐。3.说明书(论文)手写或打印均可。手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时按工程学院毕业设计(论文)撰写规的要求进行打印。4.课程设计说明书(论文)装订顺序为:封面、任务书、成绩评定表、目录、正文、参考文献。五、 设计完成后应提交成果的种类、数量、质量等方面的要求;提交课程设计说明书一份。在说明书中要有设

4、计原理、硬件电路接线图、设计的程序与必要注释等。六、时间进度安排;顺序阶段日期计 划 完 成 容备注11.5天查阅资料与程序设计22.5天上机调试程序30.5天成绩评定40.5天书写报告 阳 工 程 学 院微机原理与汇编语言课程设计成绩评定表系(部):信息系班级:系统本101学生:凌贤忠指 导 教 师 评 审 意 见评价容具 体 要 求权重评 分加权分调研论证能独立查阅文献,收集资料;能制定课程设计方案和日程安排。0.15432工作能力态度工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作,0.25432工作量按期圆满完成规定的设计任务,工作量饱满,难度适宜。0.25432说明书的

5、质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规。0.55432指导教师评审成绩(加权分合计乘以12)分加权分合计指 导 教 师 签 名:年月日评 阅 教 师 评 审 意 见评价容具 体 要 求权重评 分加权分查阅文献查阅文献有一定广泛性;有综合归纳资料的能力0.25432工作量工作量饱满,难度适中。0.55432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规。0.35432评阅教师评审成绩(加权分合计乘以8)分加权分合计评 阅 教 师 签 名:年月日课 程 设 计

6、 总 评 成 绩分第一章 绪论微机接口原理是一门非常重要的计算机技术基础课程,全面介绍微机的基本结构、工作原理、硬件配置、接口期间和接口种类等。本次微机接口课程设计的主要目的是要使学生更进一步掌握微机原理与应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解。通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用微机解决问题的步骤与方法。为以后学生结合专业从事微机应用设计奠定基础。在本次课程设计家利用课上所学的各种知识,对自己的课程设计题目进行设计。我们小组所要设计的题目是音乐程序设计。在设计的过程中主要利用计数器/定时器8254芯片和可编程并行接口8255A芯片,完

7、成2个开关选择歌曲,能用扬声器播放歌曲。首先我们利用定时器产生各种频率的声音,如“DO”“RE”“ME”然后将各个单音连接起来就组成了一首简单的曲子或者旋律,旋律与拍数可以按音乐简谱而定。对8255芯片PA0和PA6口的置0和1来选择歌曲。其次实现唱歌功能即实现歌曲的节拍通过调用延时子程序控制音符发音的长短,实现连续发声把SI是否为0作为循环的条件在每一次扬声器发出一个相应音符之后做无条件转移,从而使扬声器连续发声。第二章 实验原理2.1 设计原理我们在这次课设选择了音乐程序设计,音乐程序设计可以实现至少两首歌的可选择播放。对于歌曲的播放我们采用的是计数器/定时器8254芯片,而对于选择哪首歌

8、播放则是利用可编程并行接口8255A芯片来实现的。基于8254定时计数接口芯片的工作原理,本次课设实现了音乐演奏系统程序设计。当运行程序时,扬声器便发出优美的音乐。首先要解决发声并发出相应音符声音的问题,由8254计数器0在初始化时用来产生一定频率的方波来使扬声器发声,再根据不同音符对应的频率写入计数初值发出相应的音符声。对8255芯片PA0和PA1口的置0和1来控制扬声器的开关。其次实现唱歌功能即实现歌曲的节拍通过调用延时子程序控制音符发音的长短,实现连续发声把SI是否为0作为循环的条件在每一次扬声器发出一个相应音符之后做无条件转移,从而使扬声器连续发声。2.2 设计环境与设备PC机一台、w

9、indows 98系统、实验箱,导线若干。8254定时器:用于产生秒脉冲。8255并口:用做接口芯片,与数码管相连2.3 硬件接线图硬件接线图如图2.1所示。D0 PB0D1 PB1D2 8 D3 2D4 5D5 5D6 芯D7 片WR RD PA0CS PA1A0 A1 XD0XD1XD2 系XD3 统XD4 总XD5 线XD6XD7IOW#IOR#IOY3IOY1XA1XA2Clk+5VD0D1D2 8D3 2D4 5D5 4D6 芯D7 片WRRDCSA0A1CLK0OUT0GATE0图2.1硬件接线图2.4 设计流程图软件流程图如图2.2所示。图 2.2 软件流程图2.58254芯片2

10、.5.1定时/计数器8254主要功能: 每片上有3 个独立的16 位的减计数器通道。 对于每个计数器,都可以单独作为定时器或计数器使用,并且都可以按照二进制或十进制来计数。 每个通道都有6 种工作方式,都可以通过程序设置或改变。 每个计数器的速率可高达2MHz。最高的计数时钟频率为2.6MHz。2.5.28254部结构8254的部结构如图2.3所示,它主要包括以下几个主要部分:图2.38254的部结构2.5.3 8254外部引脚8254芯片是具有24个引脚的双列直插式集成电路芯片,其引脚分布如图所示。8254芯片的24个引脚分为两组,一组面向CPU,另一组面向外部设备,各个引脚与其所传送信号的

11、情况,介绍如下:D7D0:双向、三态数据线引脚,与系统的数据线连接,传送控制、数据与状态信息。:来自于CPU的读控制信号输入引脚,低电平有效。:来自于CPU的写控制信号输入引脚,低电平有效。:芯片选择信号输入引脚,低电平有效。图2.48254的引脚A1、A0:地址信号输入引脚,用以选择8254芯片的通道与控制字寄存器。VCC与GND:+5V电源与接地引脚CLKi:i=0,1,2,第i个通道的计数脉冲输入引脚,8254规定,加在CLK引脚的输入时钟信号的频率不得高于2.6MHZ,即时钟周期不能小于380ns。GATEi:i=0,1,2,第i个通道的门控信号输入引脚,门控信号的作用与通道的工作方式

12、有关。OUTi:i=0,1,2,第i个通道的定时/计数到信号输出引脚,输出信号的形式由通道的工作方式确定,此输出信号可用于触发其它电路工作,或作为向CPU发出的中断请求信号。2.5.4 计数器部结构每个计数器由一个16位可预置的减1计数器组成,计数初值可保存在16位的锁存器中,该锁存器只写不能读。在计数器工作时,初值不受影响,以便进行重复计数。图中每个计数器有一个时钟输入端CLK作为计数脉冲源, 计数方式可以是二进制,计数围110000H,也可以是十进制,计数围165536。门控端GATE用于控制计数开始和停止。输出OUT端当计数器计数值减到零时,该端输出标志信号 。2.5.58254功能82

13、54既可作定时器又可作计数器:计数: 计数器装入初值后,当GATE为高电平时,可用外部事件作为CLK 脉冲对计数值进行减1 计数,每来一个脉冲减1,当计数值减至0时,由OUT 端输出一个标志信号。定时: 计数器装入初值后,当GATE为高电平时,由CLK 脉冲触发开始自动计数,当计数到零时,发计数结束定时信号。除上述典型应用外,8254还可作频率发生器、分频器、实时钟、单脉冲发生器等。2.5.68254控制字图2.58254控制字说明 :8254每个通道对输入CLK按二进制或二十进制从预置值开始减1计数,减到0时从OUT输出一个信号。8254编程时先写控制字,再写时间常数。2.5.78254工作

14、方式方式0:计数结束产生中断方式当写入控制字后,OUT变为低电平,当写入初值后立即开始计数,当计数结束时,变成高电平。方式1:可编程单次脉冲方式当初值装入后且GATE由低变高时,OUT变为低电平,计数结束变为高电平。方式2:频率发生器方式当初值装入时,OUT变为高;计数结束,OUT变为低。该方式下如果计数未结束,但GATE为低时,立即停止计数,强制OUT变高,当GATE再变高时,便启动一次新的计数周期。方式3:方波发生器当装入初值后,在GATE上升沿启动计数,OUT 输出高电平; 当计数完成一半时,OUT输出低电平。图2.6 方波图方式3与方式2的工作方式类似,也是在初始化完成后能重复循环计数

15、,只是输出的波形不同。计数过程当把方式3的控制字写入控制字寄存器后,输出端OUT变成高电平,作为初始电平。再将计数初值写入计数初值寄存器CR中,再经过一个时钟周期,计数初值被移入计数执行单元CE中,从下一个时钟脉冲开始作减1 计数,方式3的计数过程分为两种情况:第一种情况:计数初值为偶数,当作减1计数减到N/2时,输出端OUT端变成低电平,减到0时,输出端OUT变成高电平,并重新从初值开始新的计数过程。若GATE为高电平,则一直重复同样的计数过程。可见,输出端OUT输出连续的方波,故称方波发生器。第二种情况:计数初值为奇数,当作减1计数减到(N+1)/2以后,输出端OUT变成低电平,减到0时,

16、输出端OUT又变成高电平。并重新从初值开始新的计数过程。这时输出端的波形为连续的近似方波。门控信号的影响工作在方式3时,门控信号GATE的功能与工作方式2一样,即GATE 为高电平时,允许计数;GATE为低电平时停止计数。GATE引脚上的信号从低电平跳到高电平时,将会重新把计数初值寄存器CR中的容移入计数执行单元CE中,并以新装入的值重新开始计数。如果在计数过程中写入新的初值,而GATE信号一直维持高电平,则新的初值不会影响当前的计数过程,只有在计数结束后的下一个计数周期,才按新的初值计数。若写入新的初值后,遇到门控信号的上升沿,则结束现行的计数过程,从下一个时钟脉冲下降沿开始按新的计数初值进

17、行计数。2.6 8255芯片2.6.1 8255外部引脚功能图2.7 8255外部引脚图可编程并行接口8255芯片的外部引脚图如图2.7所示。 PA0PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。 PB0PB7:端口B输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器。 PC0PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口, 每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。 RESET:复位输入线,

18、当该输入端外于高电平时,所有部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。 CS:片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255与CPU进行通讯。 RD:读信号线,当这个输入引脚为低电平时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。 WR:写入信号,当这个输入引脚为低电平时,允许CPU将数据或控制字写8255。 D0D7:8255的数据线。8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。 2.6.2 8255部结构图2.8 825

19、5的部结构图可编程并行接口8255芯片的部结构图如图2.8所示。 输入/输出端口A、B、C 。这三个端口均可看作是I/O端口,但它们的结构和功能也稍有不同。A口和B口是一个独立的8位I/O口。C口:可以看作是一个独立的8位I/O口;也可以看作是两个独立的4位I/O口。 A组和B组控制电路。这是两组根据CPU命令控制8255A工作方式的电路,这些控制电路部设有控制寄存器,可以根据CPU送来的编程命令来控制8255A的工作方式,也可以根据编程命令来对C口的指定位进行置/复位的操作。A组控制电路用来控制A口与C口的高4位;B组控制电路用来控制B口与C口的低4位。 读/写控制逻辑,它负责管理8255A

20、的数据传输过程。它接收CS*与RD*、WR*、RESET,还有来自系统地址总线的口地址选择信号A0和A1。将这些信号组合后,得到对A组控制部件和B组控制部件的控制命令,并将命令发给这两个部件,以完成对数据、状态信息和控制信息的传输。 数据总缓冲器,它是8位的双向的三态缓冲器。作为8255A与系统总线连接的界面,输入/输出的数据,CPU的编程命令以与外设通过8255A传送的工作状态等信息,都是通过它来传输的。2.6.3 8255控制字1 工作方式选择控制字它可以使8255的三个端口工作于不同的工作方式,如图2.9所示的8255控制字。图 2.9 8255的控制字图当控制字bit=7时,控制字的b

21、it6bit3这4位用来控制A组,A口的8位和C口的高4位,而控制字的低3位bit2bit0用来控制B组,包括B口的8位和C口的低四位。三种工作方式的描述如下:方式0基本输入/输出方式;方式1选通输入/输出方式;方式2双向传送方式。2 C口按位置位/复位控制字8255的C口具有位控功能,即端口C的8位中的任一位都可通过CPU向8255的控制寄存器写入一个按位置位/复位控制字来置1或清0,而C口中其他位的状态不变。其格式注意8255的C口按位置位/复位控制字的最高位D7(特征位)应为低电平。如图2.10所示C口按位置位/复位控制字格式。图2.10 C口按位置位/复位控制字第三章 程序设计3.1

22、频率产生模块所有音乐都是由各个不同频率的音阶和其延续时间的长短来实现的。不同的音乐是由各个音阶按某种排列各自播放一定时间形成的,将各音乐音阶和其延续时间存在数据段中,然后根据不同按键值选择不同的音阶和时间表,再使用计数器产生该音阶频率。而我们学过的有计数器可以产生各种频率,所以我们主要采用计数器8254产生各音符,用8255并行接口来控制,达到播放音乐的功能。所有音乐都是由各个不同频率的音阶和其延续时间的长短来实现的。不同的音乐是由各个音阶按某种排列各自播放一定时间形成的,将各音乐音阶和其延续时间存在数据段中,然后根据不同按键值选择不同的音阶和时间表,再使用计数器产生该音阶频率。CPU通过对定

23、时器的通道0进行编程,使其I/O寄存器接收一个控制声音频率的16位计数值。以产生特殊的音响。当定时器接收的计数值为533H时,能产生896Hz的声音,因此产生其他频率的计数值就可算出来:533Hz896频率=1234DC频率在送出频率计数值之前,还要给方式寄存器送一个方式值,该数决定对哪一个通道编程,采用什么模式,送入通道的计数值是一字节还是两字节,是二进制码还是BCD码。其位组合的格式如下:产生指定频率声音的程序段如下: PLAY: MOV DX,0FH MOV AX,4240H DIV WORD PTR SIMOV DX,MY8254_COUNT0OUT DX,ALMOV AL,AHOUT

24、 DX,AL3.2 控制模块对8255芯片PA0和PA6口的置0和1来选择歌曲。其次实现唱歌功能即实现歌曲的节拍通过调用延时子程序控制音符发音的长短,实现连续发声把SI是否为0作为循环的条件在每一次扬声器发出一个相应音符之后做无条件转移,从而使扬声器连续发声。3.3 控制音符的演奏时间控制音符的演奏时间,是设计音乐程序的关键问题。最直观的方法是按照按照乐谱为每一个音符规定一个演奏时间,但是利用这种方法是调试程序特别困难。特别是在遇到一首不熟悉的歌曲时,初期很难确定每一个音符的演唱时间,而调试程序的时候费时费力,效果很差,下面,我么么向读者推荐一个记号的方法,即没一个音符规定一个“单位时间”。

25、单位时间*N=音符的演唱时间其中N为调试参数,一首歌只有一个调试参数。设计程序时用EQU伪指令定义调试参数,初值先行估计,调试时再修改它。如何确定每个音符的演奏时间呢?我们知道,音符的节奏分为一拍、半拍、1/4拍、1/8拍等等。如果在一首歌曲中,音符演奏的时间最短为1/8拍,我们就规定一拍音符的单位时间为8,半拍音符的单位时间为4,1/4拍音符的单位时间为2,1/8拍音符的单位时间为1。以“友谊地久天长”这首歌为例,最短音符为1/8拍,我们就定义一个单位时间为8。所示,途中第一行是一段曲谱,第3行是相应音符的单位时间,编程时,首先将一个音符的频率转化成计数初值写入2号计数器,然后将音符的单位时

26、间乘以调试参数N,在调用延时子程序,就可以控制音符的演奏时间了,调试时,只需改变调试参数N即可。3.4 音符频率表音符频率表如下表所示:表 4.1 音符频率表1 音符音调 A B C D E F G221 248 278 294 330 371 416248 278 312 330 371 416 467131 147 165 175 196 221 248147 165 185 196 221 248 278165 185 208 221 248 278 312175 196 221 234 262 294 330196 221 248 262 294 330 371表 4.2 音符频率表2

27、 音符音调 1 2 3 4 5 6 7 A B C D E F G 441 495 556 589 661 742 833 495 556 624 661 742 833 935 262 294 330 350 393 441 495 294 330 371 393 441 495 556 330 371 416 441 495 556 624 350 393 441 467 525 589 661 393 441 495 525 589 661 742表 4.3 音符频率表3 音符音调 A B C D E F G 882 990 1112 1178 1322 1484 1665 990 11

28、12 1248 1322 1484 1665 1869 525 589 661 700 786 882 990 589 661 742 833 882 990 1112 661 742 833 882 990 1112 1248 700 786 882 935 1049 1178 1322 789 882 990 1049 1178 1322 1484 编程产生各种音符的频率可参照此表。具体实现时由于各计算器的速度不同,乐曲演奏的速度存在差异,所以可以适当的调整延迟子程序的时间参数。3.6 程序设计IOY3 EQU 06C0H ; 端口定义IOY1 EQU 0640HMY8254_COUNT0

29、 EQU IOY3+00H ;8254计数器0端口地址MY8254_COUNT1 EQU IOY3+02H ;8254计数器1端口地址MY8254_COUNT2 EQU IOY3+04H ;8254计数器2端口地址MY8254_MODE EQU IOY3+06H ;8254控制寄存器端口地址MY8255_A EQU IOY1+00H ;8255输入输出0端口地址MY8255_B EQU IOY1+02H ;8255输入输出1端口地址MY8255_C EQU IOY1+04H ;8255输入输出2端口地址MY8255_MODE EQU IOY1+06H ;8255控制寄存器端口地址STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDATA SEGMENT FREQ_LIST DW 371,495,495,495,624,556,495,556,624 ;频率表DW 495,495,624,742,833,833,833,742,624DW 624,495,556,495,556,624,495,416,416,371 DW 495,833,742,624,624,495,556,495,556,833 DW 742,624,624,74

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

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