《微机原理与应用》课程设计电子音乐播放器模板Word文档格式.docx

上传人:b****1 文档编号:5744345 上传时间:2023-05-05 格式:DOCX 页数:18 大小:142.83KB
下载 相关 举报
《微机原理与应用》课程设计电子音乐播放器模板Word文档格式.docx_第1页
第1页 / 共18页
《微机原理与应用》课程设计电子音乐播放器模板Word文档格式.docx_第2页
第2页 / 共18页
《微机原理与应用》课程设计电子音乐播放器模板Word文档格式.docx_第3页
第3页 / 共18页
《微机原理与应用》课程设计电子音乐播放器模板Word文档格式.docx_第4页
第4页 / 共18页
《微机原理与应用》课程设计电子音乐播放器模板Word文档格式.docx_第5页
第5页 / 共18页
《微机原理与应用》课程设计电子音乐播放器模板Word文档格式.docx_第6页
第6页 / 共18页
《微机原理与应用》课程设计电子音乐播放器模板Word文档格式.docx_第7页
第7页 / 共18页
《微机原理与应用》课程设计电子音乐播放器模板Word文档格式.docx_第8页
第8页 / 共18页
《微机原理与应用》课程设计电子音乐播放器模板Word文档格式.docx_第9页
第9页 / 共18页
《微机原理与应用》课程设计电子音乐播放器模板Word文档格式.docx_第10页
第10页 / 共18页
《微机原理与应用》课程设计电子音乐播放器模板Word文档格式.docx_第11页
第11页 / 共18页
《微机原理与应用》课程设计电子音乐播放器模板Word文档格式.docx_第12页
第12页 / 共18页
《微机原理与应用》课程设计电子音乐播放器模板Word文档格式.docx_第13页
第13页 / 共18页
《微机原理与应用》课程设计电子音乐播放器模板Word文档格式.docx_第14页
第14页 / 共18页
《微机原理与应用》课程设计电子音乐播放器模板Word文档格式.docx_第15页
第15页 / 共18页
《微机原理与应用》课程设计电子音乐播放器模板Word文档格式.docx_第16页
第16页 / 共18页
《微机原理与应用》课程设计电子音乐播放器模板Word文档格式.docx_第17页
第17页 / 共18页
《微机原理与应用》课程设计电子音乐播放器模板Word文档格式.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

《微机原理与应用》课程设计电子音乐播放器模板Word文档格式.docx

《《微机原理与应用》课程设计电子音乐播放器模板Word文档格式.docx》由会员分享,可在线阅读,更多相关《《微机原理与应用》课程设计电子音乐播放器模板Word文档格式.docx(18页珍藏版)》请在冰点文库上搜索。

《微机原理与应用》课程设计电子音乐播放器模板Word文档格式.docx

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

1.D7~D0:

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

2.

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

3.

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

4.

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

8254的引脚

(6).8254端口地址

8254端口地址

(7).8254功能

8253A既可作定时器又可作计数器:

计数:

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

定时:

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

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

(二)、系统设计

(1).控制字

8255利用端口B从音乐播放选择端口读入8位数据进行判断,同时8254选择通道0,方式3,二进制,先读低位/后高位读数。

则输入的控制字为:

MOVDX,D8255_MODE

MOVAL,10000010B

OUTDX,AL

MOVDX,D8254_MODE

MOVAL,00110110B

(2).演奏单音符

8254芯片(口地址为40H—43H)的0号计数器工作在方式3作为频率发生器发出方波。

每一个音符对应一个频率,将与一个频率对应的计数初值写入0号计数器,扬声器就可以发出相应的音调。

由于本实验采用的时钟是8086CPU时钟,其频率可选为1MHZ。

故计数初值的计算公式如下:

计数初值=1M/输出频率

1MHZ转换为16进制数为0F4240H,因此在打开扬声器的情况下执行以下子程序即可发出与输出频率对应的音调。

MOVDX,4CH

MOVAX,4B40H

MOVCX,频率值

DIVCX;

AX=计数初值

OUT40H,AL

MOVAL,AH

(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)

1247

2247(12√2)²

=277

3311

4330

5370

6415

7466

1247(12√2)12=247*2=494

表二:

音符频率表(HZ)

247,247,277,311,311,330,330,311,311,277

277,311,277,247,466,247,415,415,247,247

277,311,311,330,330,311,311,370,415,370

311,277,247,277,277,247,330,370,415,370

330,247,247,311,311,330,311,277,247,277

370,370,370,370,247,247,277,247,415,370,--1

表三:

单位时间表

44844844422448

44422448

4484488844448444416

44444444444416

七、设计总结

(一)设计总结

通过对电子音乐播放器的设计,从电路到汇编代码,再到对程序的调试,在整个的设计过程中学到了很多,例如,对8254发生原理的理解,其工作原理就是对输入相同的脉冲,通过计数器的控制作用,输出需要的不同频率的波。

同时用到了8255的并行接口,将二进制的控制信息传入8086CPU中处理,选择是否对音乐播放进行调整。

在使用8255和8254接口的时候,都要对其进行初始化,这初始化程序的编写,有助于对这些接口芯片的工作原理的理解。

同时在调试过程中对不同音阶进行调试,加深了对发声原理的理解与掌握。

总之,在实验中自己动手,把理论知识用于实践,从中能够领会很多。

(二)设计存在的问题和不足

由于是初次设计这个微机课程设计,在设计中由于考虑不全或知识面的狭窄,导致了在实验设计中出现一些不足和错误,主要有以下几点:

1、实验箱里面的线路连接和接线接头不是很熟悉,在实验连线中偶尔出现错误。

2、关于实验中的芯片的使用方法,存在问题,不能准确的合理使用芯片功能。

3、写程序代码时,由于知识面的狭窄,会对一些步骤的编写出现错误,不过查资料后都正确的改正了。

4、关于循环和声音控制计数器中数的计算有点问题,不过经过老师的解答,也基本弄清楚了。

5、设计中最大的难处就是实现上面的对音节时间的控制方式,在最后的编程中没有使用上面的时间控制方式,从而导致了最后输出地音乐的声音不是很标准,同时也难调试。

(三)心得体会

这次课程设用了一个星期,在这一个星期的日子里,虽然还要复习其他的学科知识以应对相应的期末考试,但在每天下午的设计实验室里面还是静下心来认认真真的编写汇编代码,学习连接线路芯片。

在之前的书本理论知识的学习中对相应的芯片知识不是很了解,在课程设计的过程中,加深了其理解。

同时,也对整个学科的知识进行了汇总学习。

从8286CPU到8255并行接口再到8254可编程计数器的使用原来和连接方法进行深入的学习,关于8255和8254相应的程序控制字进行了理解与掌握,基本熟悉了其相关的用法,在把理论知识用在了实际问题的解答之中,即进一步学会了怎么将理论与实践结合起来解决问题。

虽然,认认真真的看书找资料,但还是会在设计过程中遇到一些问题,但在老师是指导下,问题一个一个的解决,知识和动手能力再一点一点的增加,相信只有把知识应用到实际中才算是真正的学习知识。

八、汇编程序代码

D8255_MODEEQU0C003H

D8255_B_DUEQU0C001H

D8254_MODEEQU0C063H

D8254_COUTEQU0C060H

NAMEDZYYBF

PAGE50,70

DATA1SEGMENT

FREQ1DW247,247,277,311,311,330,330,311,311,277

DW277,311,277,247,466,247,415,415,247,247

DW277,311,311,330,330,311,311,370,415,370

DW311,277,247,277,247,330,370,415,370,330

DW247,247,311,311,330,311,277,247,415,370,0,0

TIME1DW50,25,25,50,50,50,50,25,100,50

DW25,25,50,50,50,50,25,100,50,25

DW25,50,50,50,50,50,50,25,50,50

DW25,25,50,50,50,25,100,75,25,25

DW25,25,25,25,25,25,100,50,50,25,0,0

FREQ2DW265,294,330,262,262,294,330,262,330,349

DW392,330,349,392,392,440,392,349,330,262

DW392,440,392,349,330,262,294,196,262,294

DW196,262,0

TIME2DW50,50,100,100,100,100,100,50,50,100

DW100,100,100,100,50,50,100,100,100,100

DW100,100,50,50,100,100,100,100,100,50

DW100,100,0,0

FREQ3DW7DUP(330),392,262,294,330,4DUP(349)

DW2DUP(330),330,294,262,294,392

DW7DUP(330),392,262,294,330,4DUP(349)

DW2DUP(330),392,392,349,294,262,0,0

TIME3DW2DUP(25,25,50),4DUP(25),100

DW2DUP(25,25,50),4DUP(25)

DW2DUP(50),2DUP(25,25,50),4DUP(25),100

DW2DUP(25,25,50),4DUP(25),100,0,0

DATA1ENDS

STACK1SEGMENTPARASTACK

DW100DUP(?

STACK1ENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA1

ASSUMESS:

STACK1

START:

MOVAX,DATA1

MOVDS,AX

MOVAX,0

MOVSI,AX

MOVDX,D8255_MODE

MOVAL,10000010B;

B端口方式0输人

MOVDX,D8254_MODE;

连接8253的控制端口

MOVAL,00110110B;

定义8253为通道0,方式3,

OUTDX,AL;

二进制,先读低位/后读高位

MUSIC1:

MOVCX,4H

CIRCUL1:

DECCX

JZMUSIC2

LEADI,FREQ1;

取偏移地址

LEABP,TIME1

LOOP1:

MOVAX,[DI];

取时间偏移地址

CMPAX,0

JECIRCUL1

CALLSPEAKER

XORAX,AX

MOVDX,D8255_B_DU;

连接8255_B端口

INAL,DX;

从手动控制端读入控制选择信息

MOVAH,0

CMPAX,SI;

判断输入的信息变化没有,

JZAAA1;

没变则表示没有改变原来的选择

CMPAL,1H;

判断输入的信息,

JNZAAA2:

选择播放那首音乐

JMPMUSIC1

AAA2:

CMPAL,2H

JNZAAA3

JMPMUSIC2

AAA3:

CMPAL,4H

JNZAAA1

JMPMUSIC3

AAA1:

ADDDI,2

ADDBP,2

JMPLOOP1

MUSIC2:

CIRCUL2:

JZMUSIC3

LEADI,FREQ2

LEABP,TIME2

LOOP2:

MOVAX,[DI]

JECIRCUL2

MOVAH,0H

判断输入的信息变化没有,没变

JZAAA6;

则表示没有改变原来的选择

判断输入的信息,选择播放那首音乐

JNZAAA4

AAA4:

JNZAAA5

AAA5:

JNZAAA6

AAA6:

JMPLOOP2

MUSIC3:

CIRCUL3:

JNZLOOOP

CALLBREAK

LOOOP:

LEADI,FREQ3;

LEABP,TIME3;

LOOP3:

JECIRCUL3

判断输入的信息变化没有,没

JZAAA9;

变则表示没有改变原来的选择

JNZAAA7

AAA7:

JNZAAA8

AAA8:

JNZAAA9

JMPMUSIC3

AAA9:

JMPLOOP3

SPEAKERPROC

PUSHAX

PUSHBX

PUSHCX

PUSHDX

MOVBX,AX

MOVDX,0FH

MOVAX,4240H;

送入记数值clk=1MHZ1000

DIVBX

MOVDX,D8254_COUT;

将数送入8253计数器中

OUTDX,AL;

将每个音节的时间周期存入CX

MOVCX,2710H;

设0.5s的时间周期所需的循环次数

WAIT1:

MOVBX,WORDPTRDS:

[BP]

DELAY2:

MOVAX,2710H;

设最小节拍播放时间为0.5s

DELAY3:

DECAX

JNZDELAY3

DELAY1:

DECBX

JNZDELAY2

LOOPWAIT1

CALLBREAK

POPDX

POPCX

POPBX

POPAX

RET

SPEAKERENDP

BREAKPROC;

键盘输入字符时,结束程序运行

MOVAH,6

MOVDL,0FFH

INT21H

JZRETURN

MOVAH,4CH

RETURN:

BREAKENDP

CODEENDS

ENDSTART

 

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

当前位置:首页 > 医药卫生 > 基础医学

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

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