音乐盒Word格式.docx
- 文档编号:16338754
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:15
- 大小:343.93KB
音乐盒Word格式.docx
《音乐盒Word格式.docx》由会员分享,可在线阅读,更多相关《音乐盒Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
3、了解利用数模转换器产生音乐的基本方法
二、设备与环境
PC兼容机、Windows操作系统、HQFC集成开发环境、TPC-386EM实验箱。
三、设计内容
(一)设计原理图
8255芯片:
8253的内部结构如图所示
8253的控制字
8253的控制字用于选择哪个计数器通道工作,三个通道可同时工作,但是要分别进行初始化;
用于规定读/写操作格式或类型,8253可以有8位的计数值或16位的计数值,可以按二进制计数或按二—十进制计数;
用于选择工作方式,8253共有六种工作方式。
8253是由主机编程设定的,通过把一个8位的控制字写入8253的控制字寄存器,使8253按照某种给定的方式工作。
控制字的定义如图3-2b所示。
8253计数值的计算方法为:
计数值=时钟频率÷
音符频率(时钟频率=1.19318MHz=1234DCH)
扬声器发声电路图:
(二)、总体设计
1、程序运行后首先在屏幕上显示出乐曲菜单,制作者姓名。
2、用键盘键A、B、C选择相应的乐曲。
3、输入错误时要有适当提示,并允许重新输入。
4、选择Q键后可以正常退出程序。
5、允许中断。
可以在没有听完整首歌曲时人为中断听下一首歌曲,或退出。
(三)、详细设计
在电子琴实验的基础上进行改进,同样利用8255的C口输出,设置8254计时器0方式3,先读写低字节,再读写高字节。
编写演奏乐曲需要把与音符所对应的频率放在FREQ表中,把与音符所对应的节拍(延时次数值)放在TIME表中。
然后由主程序控制,逐一按音符的频率和节拍值,使扬声器发出声音。
当与音符对应的频率值为0时,停止演奏。
子程序PLAY的功能是使扬声器发出声音,演奏乐曲。
由DI指定音符的频率,BX指定与音符对应的节拍。
SI指向频率表FREQ,BP指向节拍表TIME。
频率表以0结尾,用于作为程序结束的条件:
如果取来的频率值为0,则程序结束。
扬声器发声,通过设定并行接口电路8255的PC0、PC1的值进行控制,PC0、PC1为11扬声器;
PC0、PC1为00关扬声器。
四、程序流程图
五、实物接线图
六、设计结果
(一)运行结果
(一)实验结果分析
如图程序运行显示歌曲列表,通过选择A,B或C播放相应曲目,在当前歌曲播放过程中,随时可以选择另一首曲目进行播放,或者直接输入Q退出程序。
如果当前曲目播放完毕则提示请再次输入,若输入的命令非A,B或C,则提示输入有误!
七、程序代码
DATASEGMENT
io8255cEQU28ah
io8255ctlEQU28bh
io8253aEQU280h
io8253bEQU283h
STR1DB0DH,0AH,'
welcomyoucometohere!
STR2DB0DH,0AH,'
thisisamusicprogram!
$'
STR3DB0DH,0AH,'
pleaseselect!
STR4DB0DH,0AH,'
inputerror!
STR5DB0DH,0AH,'
pleaseinputagain!
STR6DB0DH,0AH,'
Ashaonianzhuangzhibuyanchou$'
STR7DB0DH,0AH,'
Bwoniuyuhuangliniao$'
STR8DB0DH,0AH,'
Cmeilidetonghua$'
STR9DB0DH,0AH,'
QEXIT$'
FREQ1DW294,392,392,294,330,262,220,262,196,262,262,220,262,294,330,392,294,294
DW294,392,392,294,330,262,220,262,220,196,196,220,262,294,330,
220,196,196
DW392,392,392,330,392,440,392,330,440,440,392,330,294,392,294,
330,262,220
DW392,220,262,220,392,440,392,330,392,294,392,392,392,330,392,440,440,
392
DW330,440,440,392,440,392,330,294,294,392,294,330,262,220,196,220,262,
220,294,262,294,220,196
DW392,294,330,262,220,196,220,262,220,294,262,294,220,196,196,0
TIME1DW250,250,370,60,60,250,120,120,500,190,60,120,120,250,120,120,500,500
DW25,25,37,6,6,25,12,12,50,19,6,12,12,12,25,12,50,50
DW190,60,120,60,60,370,120,120,120,60,60,120,500,120,60,60,120,120
DW190,60,250,120,120,60,60,60,60,500,190,60,120,60,60,120,250,120
DW120,120,120,60,60,60,60,120,250,120,60,60,120,120,190,60,250,120,120,
60,60,120,500
DW120,60,60,120,120,190,60,250,120,120,60,60,120,500,500
FREQ2DW392,392,392,392,330,392,262,440,392,392,392,392,392,330,294,262,330,294
DW294,330,392,392,392,330,330,294,262,262,294,330,262,262,220,196,220,
196
DW392,392,392,330,392,262,440,392,392,392,392,392,330,294,262,330,294
DW262,330,294,294,330,392,392,330,330,294,262,262,294,330,262,262,220
DW196,392,392,392,392,330,294,262,440,392,392,440,262,294,262,294,330,
294,262,0
TIME2DW60,120,6,120,60,60,120,120,250,60,120,60,120,60,60,120,120,250
DW190,60,120,60,60,120,60,60,120,120,190,60,120,60,60,120,120,250
DW60,120,60,120,60,60,120,120,250,60,120,60,120,60,60,120,120,250
DW120,120,120,120,120,60,60,120,120,190,60,120,60,60
DW120,120,250,60,120,60,120,60,60,120,120,120,60,60,120,120,120,120,
250,250,500
FREQ3DW220,330,247,220,262,294,262,330,220,440,392,440,392,294,349,330,330,330
DW220,440,392,294,330,349,330,294,262,220,330,294,247,220,220
DW220,247,262,294,330,262,247,196,220,262,294,330,330
DW220,247,262,294,330,262,247,196,220,262,294,262,262
DW220,247,262,294,330,262,247,196,220,262,294,262,330,330
DW220,247,262,294,330,262,247,196,220,262,294,262,262,262
DW262,262,294,330,262,247,196,262,247,196,247,220,220,220,0
TIME3DW250,250,500,120,120,190,60,500,250,250,120,120,120,120,120,120,250,500
DW250,250,190,60,120,120,250,250,500,250,250,370,120,500,250
DW120,120,120,120,120,120,250,250,120,120,120,120,250
DW120,120,120,120,120,120,250,250,120,120,60,120,120,250
DW120,120,120,120,120,120,250,250,60,60,120,120,120,500
DW120,60,60,120,120,250,250,250,250,500,120,120,250,500
DATAENDS
STACKSEGMENT
DB200DUP(?
)
STACKENDS
CODESEGMENT
ASSUMEDS:
DATA,SS:
STACK,CS:
CODE
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETSTR1
MOVAH,9
INT21H
LEADX,STR2
LEADX,STR3
LEADX,STR6
LEADX,STR7
LEADX,STR8
LEADX,STR9
MOVAH,02H
MOVDL,0DH
MOVDL,0AH
JMPINPUT
XSH:
MOVAH,02H
LEADX,STR5
MOVAH,9
INT21H
INPUT:
MOVAH,1
CMPAL,'
Q'
JEEXIT;
若输入Q退出
A'
JNEN1;
不为‘A‘转N1
LEASI,FREQ1
LEABP,TIME1
LOP:
MOVDI,[SI]
CMPDI,0
JZXSH;
频率值为0,转XSH
MOVBX,DS:
[BP]
CALLPLAY
ADDSI,2
ADDBP,2
JMPLOP
JMPXSH
N1:
CMPAL,'
B'
JNEN2;
不为‘B’转N2
LEASI,FREQ2
LEABP,TIME2
N2:
C'
JNEERROR;
若不为’C’提示错误
LEASI,FREQ3
LEABP,TIME3
ERROR:
LEADX,STR4
MOVAH,9
MOVAH,9
INT21H
JMPINPUT
EXIT:
MOVAH,4CH
INT21H
PLAYPROC
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHDI
INT16H;
16号I/O中断功能调用
JZPLAY1
JMPSTART
play1:
MOVDX,io8253b
MOVAL,00110110B;
8253初始化
OUTDX,AL
MOVDX,12H
MOVAX,348CH;
时钟频率送AX
DIVDI;
MOVDX,io8253a
MOVAL,AH
MOVDX,io8255ctl;
设置8255C口输出
MOVAL,10000000B
MOVDX,io8255c
MOVAL,03h
OUTDX,AL;
置PC1PC0=11(开扬声器)
CALLDELAY;
延时
MOVAL,00H
OUTDX,AL;
置PC1PC0=00(关扬声器)
POPDI
POPDX
POPCX
POPBX
POPAX
RET
PLAYENDP
DELAY1PROC
SHLBX,1
DELAY:
MOVCX,0FFFFH
LOP10:
LOOPLOP10
DECBX
JNZDELAY
RET
DELAY1ENDP
CODEENDS
ENDSTART
八、设计体会
这次的接口课程设计使我学到了很多,从开始的设计到最后的成功运行,中间的过程是辛苦而美好的。
此次课程设计不仅使我的理论知识得到进一步的巩固,而且,通过对硬件的编程控制,使我的实践能力获得了很好的锻炼。
独立完成课程设计是美好的而难忘的,两周的课程设计,每一天都记忆犹新,提出问题,分析问题,再想办法解决问题。
在实验前做好充分的准备,以便在实验过程中尽量减少盲目的操作,以提高实验的效率。
实验的过程还培养了自己分析问题和解决问题的能力,发现问题,分析问题,然后通过查阅相关资料或请教同学或老师解决问题。
这个过程使我得到了很大的提高。
通过使用汇编语言编程实现歌曲播放,使我发现简短的汇编程序蕴含着丰富的美,每一条指令的功能,再到一组指令的效果,每一次功能的实现,都非常有趣。
随着课程设计的进展,离预计目标的实现越来越近,虽然在这个过程中一直有难题出现,但是通过分析,与同学探讨和查阅资料,问题也一步步得以解决,很是欣慰。
通过接口课程设计,我们将学到的硬件知识应用到实践中,用理论指导实践,用实践验证理论,使自己的知识越来越丰富,收获的快乐也越来越多。
不知不觉,两周的课程设计很快就结束了,在这两周的实践中我学到了很多,不仅使自己的理论知识得到了进一步的提高,同时理论联系实际的能力也有了很大的提升,在印象中原本很难的硬件编程现在变得不那么困难了,为我以后继续深入学习打下了坚实的基础。
九、其它
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 音乐盒
![提示](https://static.bdocx.com/images/bang_tan.gif)