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

上传人:b****6 文档编号:13607778 上传时间:2023-06-15 格式:DOCX 页数:20 大小:238.93KB
下载 相关 举报
微机原理音乐程序设计.docx_第1页
第1页 / 共20页
微机原理音乐程序设计.docx_第2页
第2页 / 共20页
微机原理音乐程序设计.docx_第3页
第3页 / 共20页
微机原理音乐程序设计.docx_第4页
第4页 / 共20页
微机原理音乐程序设计.docx_第5页
第5页 / 共20页
微机原理音乐程序设计.docx_第6页
第6页 / 共20页
微机原理音乐程序设计.docx_第7页
第7页 / 共20页
微机原理音乐程序设计.docx_第8页
第8页 / 共20页
微机原理音乐程序设计.docx_第9页
第9页 / 共20页
微机原理音乐程序设计.docx_第10页
第10页 / 共20页
微机原理音乐程序设计.docx_第11页
第11页 / 共20页
微机原理音乐程序设计.docx_第12页
第12页 / 共20页
微机原理音乐程序设计.docx_第13页
第13页 / 共20页
微机原理音乐程序设计.docx_第14页
第14页 / 共20页
微机原理音乐程序设计.docx_第15页
第15页 / 共20页
微机原理音乐程序设计.docx_第16页
第16页 / 共20页
微机原理音乐程序设计.docx_第17页
第17页 / 共20页
微机原理音乐程序设计.docx_第18页
第18页 / 共20页
微机原理音乐程序设计.docx_第19页
第19页 / 共20页
微机原理音乐程序设计.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

《微机原理音乐程序设计.docx》由会员分享,可在线阅读,更多相关《微机原理音乐程序设计.docx(20页珍藏版)》请在冰点文库上搜索。

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

微机原理音乐程序设计

沈阳工程学院

课程设计

 

课程设计题目:

音乐程序设计

 

系别信息工程系班级系统本101

学生姓名王一丞学号2010414124

指导教师衣云龙、王德君职称讲师、工程师

起止日期:

2012年05月21日起——至2012年05月25日止

沈阳工程学院

课程设计任务书

 

课程设计题目:

音乐程序设计

 

系别信息工程系班级系统本101

学生姓名王一丞学号2010414124

指导教师衣云龙、王德君职称讲师、工程师

课程设计进行地点:

微机原理实验室(F106)

任务下达时间:

2012年05月18日

起止日期:

2012年05月21日起——至2012年05月25日止

教研室主任王健2012年05月18日批准

一、设计目的

通过课程设计使学生更进一步掌握微机原理及应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解。

通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用微机解决问题的步骤及方法。

为以后学生结合专业从事微机应用设计奠定基础。

二、设计的原始资料及依据

查阅可编程计数器/定时器芯片8254相关资料。

用简单的输入输出端口等硬件,输入数据、处理数据和输出数据。

三、设计的主要内容及要求

内容:

利用微机原理试验箱,设计简易音乐程序,要求至少可以播放2首音乐。

要求:

1)用2个开关选择歌曲。

2)能用扬声器播放歌曲。

四、对设计说明书撰写内容、格式、字数的要求

1.课程设计说明书(论文)是体现和总结课程设计成果的载体,一般不应少于3000字。

2.学生应撰写的内容为:

目录、正文、参考文献等。

课程设计说明书(论文)的结构及各部分内容要求可参照《沈阳工程学院毕业设计(论文)撰写规范》执行。

应做到文理通顺,内容正确完整,书写工整,装订整齐。

3.说明书(论文)手写或打印均可。

手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时按《沈阳工程学院毕业设计(论文)撰写规范》的要求进行打印。

4.课程设计说明书(论文)装订顺序为:

封面、任务书、成绩评定表、目录、正文、参考文献。

五、设计完成后应提交成果的种类、数量、质量等方面的要求;

提交课程设计说明书一份。

在说明书中要有设计原理、硬件电路接线图、设计的程序及必要注释等。

六、时间进度安排;

顺序

阶段日期

计划完成内容

备注

1

1.5天

查阅资料及程序设计

2

2.5天

上机调试程序

3

0.5天

成绩评定

4

0.5天

书写报告

沈阳工程学院

微机原理及汇编语言课程设计成绩评定表

系(部):

信息系班级:

系统本101学生姓名:

王一丞

指导教师评审意见

评价

内容

具体要求

权重

评分

加权分

调研

论证

能独立查阅文献,收集资料;能制定课程设计方案和日程安排。

0.1

5

4

3

2

工作能力

态度

工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作,

0.2

5

4

3

2

工作量

按期圆满完成规定的设计任务,工作量饱满,难度适宜。

0.2

5

4

3

2

说明书的质量

说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。

0.5

5

4

3

2

指导教师评审成绩

(加权分合计乘以12)

加权分合计

指导教师签名:

年月日

评阅教师评审意见

评价

内容

具体要求

权重

评分

加权分

查阅

文献

查阅文献有一定广泛性;有综合归纳资料的能力

0.2

5

4

3

2

工作量

工作量饱满,难度适中。

0.5

5

4

3

2

说明书的质量

说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。

0.3

5

4

3

2

评阅教师评审成绩

(加权分合计乘以8)

加权分合计

评阅教师签名:

年月日

课程设计总评成绩

第一章绪论

微机接口原理是一门非常重要的计算机技术基础课程,全面介绍微机的基本结构、工作原理、硬件配置、接口期间和接口种类等。

本次微机接口课程设计的主要目的是要使学生更进一步掌握微机原理及应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解。

通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用微机解决问题的步骤及方法。

为以后学生结合专业从事微机应用设计奠定基础。

在本次课程设计中大家利用课上所学的各种知识,对自己的课程设计题目进行设计。

我们小组所要设计的题目是音乐程序设计。

在设计的过程中主要利用计数器/定时器8254芯片和可编程并行接口8255A芯片,完成2个开关选择歌曲,能用扬声器播放歌曲。

首先我们利用定时器产生各种频率的声音,如“DO”“RE”“ME”

然后将各个单音连接起来就组成了一首简单的曲子或者旋律,旋律及拍数可以按音乐简谱而定。

对8255芯片PA0和PA6口的置0和1来选择歌曲。

其次实现唱歌功能即实现歌曲的节拍通过调用延时子程序控制音符发音的长短,实现连续发声把[SI]是否为0作为循环的条件在每一次扬声器发出一个相应音符之后做无条件转移,从而使扬声器连续发声。

第二章实验原理

2.1设计原理

我们在这次课设选择了音乐程序设计,音乐程序设计可以实现至少两首歌的可选择播放。

对于歌曲的播放我们采用的是计数器/定时器8254芯片,而对于选择哪首歌播放则是利用可编程并行接口8255A芯片来实现的。

基于8254定时计数接口芯片的工作原理,本次课设实现了音乐演奏系统程序设计。

当运行程序时,扬声器便发出优美的音乐。

首先要解决发声并发出相应音符声音的问题,由8254计数器0在初始化时用来产生一定频率的方波来使扬声器发声,再根据不同音符对应的频率写入计数初值发出相应的音符声。

对8255芯片PA0和PA1口的置0和1来控制扬声器的开关。

其次实现唱歌功能即实现歌曲的节拍通过调用延时子程序控制音符发音的长短,实现连续发声把[SI]是否为0作为循环的条件在每一次扬声器发出一个相应音符之后做无条件转移,从而使扬声器连续发声。

2.2设计环境及设备

PC机一台、windows98系统、实验箱,导线若干。

8254定时器:

用于产生秒脉冲。

8255并口:

用做接口芯片,与数码管相连

2.3硬件接线图

硬件接线图如图2.1所示。

D0PB0

D1PB1

D28

D32

D45

D55

D6芯

D7片

WR

RDPA0

CSPA1

A0

A1

XD0

XD1

XD2系

XD3统

XD4总

XD5线

XD6

XD7

IOW#

IOR#

IOY3IOY1

XA1

XA2

Clk

+5V

D0

D1

D28

D32

D45

D54

D6芯

D7片

WR

RD

CS

A0

A1

CLK0

OUT0

GATE0

 

 

图2.1硬件接线图

2.4设计流程图

软件流程图如图2.2所示。

 

图2.2软件流程图

2.58254芯片

2.5.1定时/计数器8254

主要功能:

⑴每片上有3个独立的16位的减计数器通道。

⑵对于每个计数器,都可以单独作为定时器或计数器使用,并且都可以按照二进制或十进制来计数。

⑶每个通道都有6种工作方式,都可以通过程序设置或改变。

⑷每个计数器的速率可高达2MHz。

最高的计数时钟频率为2.6MHz。

2.5.28254内部结构

8254的内部结构如图2.3所示,它主要包括以下几个主要部分:

图2.38254的内部结构

2.5.38254外部引脚

8254芯片是具有24个引脚的双列直插式集成电路芯片,其引脚分布如图所示。

8254芯片的24个引脚分为两组,一组面向CPU,另一组面向外部设备,各个引脚及其所传送信号的情况,介绍如下:

⑴D7~D0:

双向、三态数据线引脚,与系统的数据线连接,传送控制、数据及状态信息。

来自于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个通道的门控信号输入引脚,门控信号的作用与通道的工作方式有关。

⑼OUTi:

i=0,1,2,第i个通道的定时/计数到信号输出引脚,输出信号的形式由通道的工作方式确定,此输出信号可用于触发其它电路工作,或作为向CPU发出的中断请求信号。

2.5.4计数器内部结构

每个计数器由一个16位可预置的减1计数器组成,计数初值可保存在16位的锁存器中,该锁存器只写不能读。

在计数器工作时,初值不受影响,以便进行重复计数。

图中每个计数器有一个时钟输入端CLK作为计数脉冲源,计数方式可以是二进制,计数范围1~10000H,也可以是十进制,计数范围1~65536。

门控端GATE用于控制计数开始和停止。

输出OUT端当计数器计数值减到零时,该端输出标志信号。

2.5.58254功能

8254既可作定时器又可作计数器:

⑴计数:

计数器装入初值后,当GATE为高电平时,可用外部事件作为CLK脉冲对计数值进行减1计数,每来一个脉冲减1,当计数值减至0时,由OUT端输出一个标志信号。

⑵定时:

计数器装入初值后,当GATE为高电平时,由CLK脉冲触发开始自动计数,当计数到零时,发计数结束定时信号。

除上述典型应用外,8254还可作频率发生器、分频器、实时钟、单脉冲发生器等。

2.5.68254控制字

图2.58254控制字

说明:

⑴8254每个通道对输入CLK按二进制或二十进制从预置值开始减1计数,减到0时从OUT输出一个信号。

⑵8254编程时先写控制字,再写时间常数。

2.5.78254工作方式

⑴方式0:

计数结束产生中断方式

当写入控制字后,OUT变为低电平,当写入初值后立即开始计数,当计数结束时,变成高电平。

⑵方式1:

可编程单次脉冲方式

当初值装入后且GATE由低变高时,OUT变为低电平,计数结束变为高电平。

⑶方式2:

频率发生器方式

当初值装入时,OUT变为高;计数结束,OUT变为低。

该方式下如果计数未结束,但GATE为低时,立即停止计数,强制OUT变高,当GATE再变高时,便启动一次新的计数周期。

⑷方式3:

方波发生器

当装入初值后,在GATE上升沿启动计数,OUT输出高电平;当计数完成一半时,OUT输出低电平。

图2.6方波图

方式3与方式2的工作方式类似,也是在初始化完成后能重复循环计数,只是输出的波形不同。

计数过程

当把方式3的控制字写入控制字寄存器后,输出端OUT变成高电平,作为初始电平。

再将计数初值写入计数初值寄存器CR中,再经过一个时钟周期,计数初值被移入计数执行单元CE中,从下一个时钟脉冲开始作减1计数,方式3的计数过程分为两种情况:

第一种情况:

计数初值为偶数,当作减1计数减到N/2时,输出端OUT端变成低电平,减到0时,输出端OUT变成高电平,并重新从初值开始新的计数过程。

若GATE为高电平,则一直重复同样的计数过程。

可见,输出端OUT输出连续的方波,故称方波发生器。

第二种情况:

计数初值为奇数,当作减1计数减到(N+1)/2以后,输出端OUT变成低电平,减到0时,输出端OUT又变成高电平。

并重新从初值开始新的计数过程。

这时输出端的波形为连续的近似方波。

门控信号的影响

工作在方式3时,门控信号GATE的功能与工作方式2一样,即GATE为高电平时,允许计数;GATE为低电平时停止计数。

GATE引脚上的信号从低电平跳到高电平时,将会重新把计数初值寄存器CR中的内容移入计数执行单元CE中,并以新装入的值重新开始计数。

如果在计数过程中写入新的初值,而GATE信号一直维持高电平,则新的初值不会影响当前的计数过程,只有在计数结束后的下一个计数周期,才按新的初值计数。

若写入新的初值后,遇到门控信号的上升沿,则结束现行的计数过程,从下一个时钟脉冲下降沿开始按新的计数初值进行计数。

2.68255芯片

2.6.18255外部引脚功能

图2.78255外部引脚图

可编程并行接口8255芯片的外部引脚图如图2.7所示。

⑴PA0~PA7:

端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。

⑵PB0~PB7:

端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。

⑶PC0~PC7:

端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。

端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。

⑷RESET:

复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。

⑸CS:

片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255与CPU进行通讯。

⑹RD:

读信号线,当这个输入引脚为低电平时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。

⑺WR:

写入信号,当这个输入引脚为低电平时,允许CPU将数据或控制字写8255。

⑻D0~D7:

8255的数据线。

8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。

2.6.28255内部结构

图2.88255的内部结构图

可编程并行接口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的数据传输过程。

它接收CS*及RD*、WR*、RESET,还有来自系统地址总线的口地址选择信号A0和A1。

将这些信号组合后,得到对A组控制部件和B组控制部件的控制命令,并将命令发给这两个部件,以完成对数据、状态信息和控制信息的传输。

⑷数据总缓冲器,它是8位的双向的三态缓冲器。

作为8255A与系统总线连接的界面,输入/输出的数据,CPU的编程命令以及外设通过8255A传送的工作状态等信息,都是通过它来传输的。

2.6.38255控制字

1工作方式选择控制字

它可以使8255的三个端口工作于不同的工作方式,如图2.9所示的8255控制字。

图2.98255的控制字图

当控制字bit=7时,控制字的bit6—bit3这4位用来控制A组,A口的8位和C口的高4位,而控制字的低3位bit2—bit0用来控制B组,包括B口的8位和C口的低四位。

三种工作方式的描述如下:

⑴方式0——基本输入/输出方式;

⑵方式1——选通输入/输出方式;

⑶方式2——双向传送方式。

2C口按位置位/复位控制字

8255的C口具有位控功能,即端口C的8位中的任一位都可通过CPU向8255的控制寄存器写入一个按位置位/复位控制字来置1或清0,而C口中其他位的状态不变。

其格式注意8255的C口按位置位/复位控制字的最高位D7(特征位)应为低电平。

如图2.10所示C口按位置位/复位控制字格式。

图2.10C口按位置位/复位控制字

第三章程序设计

3.1频率产生模块

所有音乐都是由各个不同频率的音阶和其延续时间的长短来实现的。

不同的音乐是由各个音阶按某种排列各自播放一定时间形成的,将各音乐音阶和其延续时间存在数据段中,然后根据不同按键值选择不同的音阶和时间表,再使用计数器产生该音阶频率。

而我们学过的有计数器可以产生各种频率,所以我们主要采用计数器8254产生各音符,用8255并行接口来控制,达到播放音乐的功能。

所有音乐都是由各个不同频率的音阶和其延续时间的长短来实现的。

不同的音乐是由各个音阶按某种排列各自播放一定时间形成的,将各音乐音阶和其延续时间存在数据段中,然后根据不同按键值选择不同的音阶和时间表,再使用计数器产生该音阶频率。

CPU通过对定时器的通道0进行编程,使其I/O寄存器接收一个控制声音频率的16位计数值。

以产生特殊的音响。

当定时器接收的计数值为533H时,能产生896Hz的声音,因此产生其他频率的计数值就可算出来:

533Hz×896÷频率=1234DC÷频率

在送出频率计数值之前,还要给方式寄存器送一个方式值,该数决定对哪一个通道编程,采用什么模式,送入通道的计数值是一字节还是两字节,是二进制码还是BCD码。

其位组合的格式如下:

产生指定频率声音的程序段如下:

PLAY:

MOVDX,0FH

MOVAX,4240H

DIVWORDPTR[SI]

MOVDX,MY8254_COUNT0

OUTDX,AL

MOVAL,AH

OUTDX,AL

3.2控制模块

对8255芯片PA0和PA6口的置0和1来选择歌曲。

其次实现唱歌功能即实现歌曲的节拍通过调用延时子程序控制音符发音的长短,实现连续发声把[SI]是否为0作为循环的条件在每一次扬声器发出一个相应音符之后做无条件转移,从而使扬声器连续发声。

3.3控制音符的演奏时间

控制音符的演奏时间,是设计音乐程序的关键问题。

最直观的方法是按照按照乐谱为每一个音符规定一个演奏时间,但是利用这种方法是调试程序特别困难。

特别是在遇到一首不熟悉的歌曲时,初期很难确定每一个音符的演唱时间,而调试程序的时候费时费力,效果很差,下面,我么么向读者推荐一个记号的方法,即没一个音符规定一个“单位时间”。

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2