完整word版微机原理课程设计音乐播放器Word文件下载.docx

上传人:b****5 文档编号:15822551 上传时间:2022-11-16 格式:DOCX 页数:16 大小:195.94KB
下载 相关 举报
完整word版微机原理课程设计音乐播放器Word文件下载.docx_第1页
第1页 / 共16页
完整word版微机原理课程设计音乐播放器Word文件下载.docx_第2页
第2页 / 共16页
完整word版微机原理课程设计音乐播放器Word文件下载.docx_第3页
第3页 / 共16页
完整word版微机原理课程设计音乐播放器Word文件下载.docx_第4页
第4页 / 共16页
完整word版微机原理课程设计音乐播放器Word文件下载.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

完整word版微机原理课程设计音乐播放器Word文件下载.docx

《完整word版微机原理课程设计音乐播放器Word文件下载.docx》由会员分享,可在线阅读,更多相关《完整word版微机原理课程设计音乐播放器Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。

完整word版微机原理课程设计音乐播放器Word文件下载.docx

硬件定时:

用计数器/定时器作为主要硬件,在软件简单指令的控制下产生精确的时间延迟。

突出优点为计数时不占用CPU时间,如利用定时器/计数器产生中断信号,可建立多作业环境,提高了CPU效率。

作为定时器可用8253或者8254,二者功能基本相同,知识工作的最高频率不一样。

本实验就采用了8254,其主要功能为:

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

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

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

(4)每个计数器的速率可高达10MHz。

主要部分有:

数据总线缓冲器、读/写控制逻辑、控制字寄存器、计数通道0#、1#、2#:

内部结构如下图:

8254内部结构

2.28254外部引脚

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

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

8254的引脚

(1)D7~D0:

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

(2)RD:

来自于CPU的读控制信号输入引脚,低电平有效。

(3)WR:

来自于CPU的写控制信号输入引脚,低电平有效。

(4)CS:

芯片选择信号输入引脚,低电平有效。

(5)A1、A0:

地址信号输入引脚,用以选择8254芯片的通道及控制字寄存器。

(6).VCC及GND:

+5V电源及接地引脚。

(7)CLKi:

i=0,1,2,第i个通道的计数脉冲输入引脚,8254规定,加在CLK引脚的输入时钟信号的频率不得高于2.6MHZ,即时钟周期不能小于380ns。

(8)GATEi:

i=0,1,2,第i个通道的门控信号输入引脚,门控信号的作用与通道的工作方式有关。

(9)OUTi:

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

2.38254端口地址

8254控制字

说明:

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

(2)8254编程时先写控制字,再写时间常数。

2.48254工作方式

(1)方式0:

计数结束产生中断方式

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

(2)方式1:

可编程单次脉冲方式

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

(3)方式2:

频率发生器方式

当初值装入时,OUT变为高;

计数结束,OUT变为低。

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

(4)方式3:

方波发生器

当装入初值后,在GATE上升沿启动计数,OUT输出高电平;

当计数完成一半时,OUT输出低电平。

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

(5)方式4:

软件出发选通方式

进入工作方式4,OUTi输出高电平。

装入计数值n后,如果GATE为高电平,则立即开始减“1”计数,直到计数值减到“0”为止,OUTi输出宽度为一个CLKi周期的负脉冲。

由软件装入的计数值只有一次有效,如果要继续操作,必须重新置入计数初值n。

如果在操作的过程中,GATE变为无效,则停止减“1”计数,到GATE再次有效时,重新从初值开始减“1”计数。

(6)方式5:

硬件触发方式计数

进入工作方式5,OUTi输出高电平,硬件触发信号由GATE端引入。

因此,开始时GATE应输入为0,装入计数初值n后,减“1”计数并不工作,一定要等到硬件触发信号由GATE端引入一个正阶跃信号,减“1”计数才会开始,待计数值计到“0”,OUTi将输出负脉冲,其宽度固定为一个CLKi周期,表示定时时间到或计数次数到。

三、程序设计思路

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

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

CPU通过对定时器的通道2(端口地址为42)进行编程,使其I/O寄存器接收一个控制声音频率的16位计数值,端口61H的最低控制通道2门控的开断。

以产生特殊的音响。

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

533Hz×

896÷

频率=1234DC÷

频率

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

其位组合的格式如下:

当通道2用于发声时,采用的是模式3,在模式3下,输出线为“1”和为“0”的时间各占计数时间的一半,因而产生一系列间隔均匀的脉冲。

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

MOVAL,0B6H

OUT43H,AL;

43H为8254的控制字端口

MOVDX,12H

MOVAX,34DCH

DIVDI;

(DI)=频率

OUT42H,AL;

42H为8254的通道2端口

MOVAL,AH

MOV42H,AL

从定时器输出的方波信号,经功率放大和滤波后驱动扬声器。

送到扬声器的信号还受到了从并行接口芯片8255(端口地址为61H)来的双重控制,端口61H的最低位控制通道2的门控开断,以产生特殊的音频信号,端口61H的PA1位和定时器的输出信号同时作为与门的输入,PA0和PA1位可由程序决定为0还是为1。

显然只有PA0和PA1都是1时,才能使扬声器发出声音。

控制音长的时间可以简单地通过反复执行指令来得到。

我们知道执行2801次LOOP指令约需要10MS的时间。

因此用10MS的倍数值来控制扬声器开关的时间间隔,就可控制发声的音长了。

实现程序如下:

INAL,61H

MOVAH,AL

ORAL,3

OUT61H,AL;

开扬声器

L:

MOVCX,2801

DY:

LOOPDY

DECBX

JNZL

OUT61H,AL;

关扬声器

四、功能流程图及子程序说明

1、总流程图

MAIN程序:

MAIN程序是总程序,输出说明,等待用户按键并读取键值。

根据不同的按键选择调用播音子程序播放不同的歌曲。

2、音乐播放子程序流程图

PLAY子程序:

PLAY子程序是播音子程序,SI指向音节表中的频率,BP指向音节表中的时间。

从SI的指向的音节表中取一个频率,只要不是-1,即有效就再读取时间,然后计算计数初值送入计数器,产生各种频率。

开启扬声器,根据所取的时间调用若干次延时子程序。

这段时间扬声器就发出该频率的声音,延时结束,就关闭扬声器,调用音节之间的小延时程序。

最后修改SI和BP,指向下一个频率,重复上面的工作

DELAY子程序和DELAY_OFF子程序:

两个都是子程序,采用空操作循环多次的方法,只是第二个延时时间较短,大概为5ms。

五、试验结果截屏:

初始界面:

如果按错了键,会出现如下界面:

如果选择正确,将出现如下界面:

六、参考文献

【1】李长青.微机原理与接口技术.徐州:

中国矿业大学出版社,2006

【2】沈美明.汇编语言程序设计实验教程.北京:

清华大学出版社,2002年

【3】周明德.微机原理与接口技术.北京:

人民邮电出版社,2002年

七、总结

在本次设计中,可以说是一次成功的经验。

在我们学完了《微型计算机原理与接口技术》这门课的基础上来做这个设计,通过设计后,使我们对这门课的理论知识的理解有很大程度上的加强。

微机原理这门课程本身是一门实验性和工程性很强的专业技术课,因此不仅要重视理论教学,更应注意实践技能的培养和训练。

课程设计是这门课程的一个重要环节,通过课程设计,巩固、加深和拓宽了学习的理解,本课程设计的重点目标是使用汇编语言,而不过多涉及硬件方面的太多知识。

在编程方面我通过本次课程设计学到了很多。

一开始面对很长的程序往往有畏难情绪,感觉无法下手,没办法只能硬着头皮啃下去,多看几个和音乐播放有关的汇编程序,然后我就能慢慢看懂了并理解了别的作者的设计思路。

然后再根据自己的思路,对照本人在图书馆借的汇编语言指导书慢慢编写符合自己思路的程序。

一次写出来的程序肯定不会是正确的,还需要进一步调试它。

检查程序过程中,在充分思考的基础上多次实验是检查改正程序的良方。

编写程序的过程中,体会最深的是子程序的调用和程序的条理问题,一个程序就算功能实现了,但是也要使主程序和子程序的条理分明,易读性高,才能算一个比较好的程序。

调试程序中,学习了DEBUG的使用,DEBUG对检查程序的错误作用很大。

同时,也要灵活使用各种调试方法,来缩小寻找错误的范围。

书到用时方恨少。

在课程设计过程中,我才体会到这句话的深意。

课堂上学的8254的知识和汇编语言都太少,还不足以完成本次课设,为此我经常跑图书馆借了各种各样的工具书。

有的书用处较大,有的书仅能用到一小块知识,就是这样,一步步在知识的海洋里我寻觅着自己需要的东西,确实克服了不少困难,解决了不少问题。

或许坎坷才能更好的使人成长。

在这次的课程设计中,我的收获是不但做出了一个符合要求的音乐播放器,而且为自己积累了一些宝贵的经验。

同时我也对音乐方面的频率知识有了一些认识,我想如果不是本次课程设计中用到这方面知识,我这辈子可能没有机会去接触这方面的知识了。

这,或许也是我比别的同学多出的一点收获吧!

六、附录

1、源程序代码:

SSEGSEGMENTPARASTACK'

stack'

dw100hdup(0);

Resizethestackbychangingthenumber'

100'

SSEGENDS

DSEGSEGMENT

INFO1DB0DH,0AH,'

--------------------------'

0DH,0AH,'

THEREARE3SONGS:

'

0DH,0AH,0DH,0AH,'

$'

INFO2DB'

1.HAPPYBIRTHDAY'

INFO3DB'

2.SHEEP'

INFO4DB'

3.RIVER'

INFO5DB'

0.EXIT'

INFO6DB'

YOUHAVECHOSEN:

INFO7D

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

当前位置:首页 > 表格模板 > 调查报告

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

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