微机原理与接口技术课程设计音乐盒Word文档下载推荐.docx
《微机原理与接口技术课程设计音乐盒Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术课程设计音乐盒Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。
3、系统硬件组成框图————————————————4
四、程序功能描述及程序流程——————————————4
1、程序功能描述——————————————————4
2、程序流程————————————————————4
五、程序源代码及注释—————————————————6
六、DOS功能调用,文件列表清单————————————14
七、程序调试出现的问题、原因及排除——————————15
八、收获和体会————————————————————16
九、参考文献—————————————————————17
一、课题名称及设计组成员
(1)课程名称:
计算机音乐播放系统设计
(2)设计组成员:
二、课程内容及要求
课程内容:
设计一个汇编语言程序,实现计算机音乐播放系统。
实现功能如下:
(1)制作一个菜单,使用菜单条选择功能,让用户选择演奏的乐曲,不少于5首。
(2)用定时器方式演奏《梁祝》实现音乐演奏。
(3)提示使用ESC键或者ENTER键可以退出当前过程或返回DOS
(4)使用控制变量可以控制不同的效果以及要求,如播放速度,间隔等。
(5)界面美观,程序结构化程度高,模块结构合理。
三、方案、系统硬件组成框图以及工作原理说明
1、方案
基于PC计算机时钟晶振为1.1931816MHz,利用电脑中的蜂鸣器发出声音。
各音阶标称频率值:
音符:
1234567
(重低音)
对应频率:
(Hz)131147165175196220247
(低音)
(Hz)262294330349392440494
(中音)
(Hz)523587659698784880988
(高音)
(Hz)1046117513181397156817601975
2、工作原理说明
软件设计是本设计的重点,在软件设计中,要给8253和8255写数据,同时还要检测键盘输入的值,并根据输入的值,执行相应的代码来控制音乐的播放。
首先在一开始先显示音乐菜单,然后调用DOS中21H的01中断来接收键盘上的数据,在此过程中,程序在等待中,直到键盘上有键按下,程序才进行相应的操作。
当键盘输入一个值后,首先判断输入的值是否为“0”,如果是,那就退出程序,如果不是,再检测输入的数是否在1-4之间,如果是,那就调用相应的播放音乐的程序,否则我们重新提上,让其输入0-4之间的数值。
在音乐播放中,要实时的扫描键盘是否有值输入,如果用DOS中21H的01中断肯定是不行的,因为执行这个中断程序会等待,无法继续播放音乐。
因此采用中断21H中的0bH,这个中断不会等待,只会检查标准输入设备上是否有字符可读。
然后通过检测AL中的值是否为0FFH,来判断键盘是否有值输入。
如果键盘上有键输入,那么AL中会返回一个0FFH的值,否则就会返回00H。
如果有,再判断这个输入的值是否为“p”,如果是,就停止音乐的播放,否则继续播放音乐,由于程序运行非常快,这样就不会感觉到音乐有停顿现象。
实现和音乐演奏的同时实时扫描键盘的功能。
当音乐播放完后,调用JMP命令跳回到主菜单,再次让操作者选择播放哪一首歌或是选择退出。
在音乐暂停后,显示输入提示:
如果按“s”值继续音乐播放。
然后调用DOS中21H的01中断来接收键盘上的数据,在此过程中,程序在等待中,直到键盘上有键按下,然后我们按输入的数进行相应的操作,如果都不是,怎继续输入,知道输入正确的为止。
在这个设计中,最终要返回主菜单,然后通过按“Esc”等键退出。
3、硬件组成框图
PC机相关电路以及相关接口电路如下:
四、程序功能描述及程序流程
1、程序功能描述
计算机播放器系统:
显示入口菜单;
共5首待选择音乐:
1、北京欢迎你2、春天花会开3、欢乐颂4、但愿人长久
5、情非得已
播放功能:
音乐播放中途暂停、快进、放慢、单曲循环、列表循环、退出播放器
2、程序流程
主流程:
开始————显示音乐菜单————提示输入选择————判断输入是否为0,若是则退出程序————若否则判断是否在数字范围内————若是则调用音乐播放程序
音乐播放流程:
按键中断流程:
输入————判断输入所选择的功能————进入各功能子程序————根据各程序功能返回主程序
五、程序源代码及注释
DATASSEGMENT
SHOWDB0AH,0DH
DB'
***************************************'
0AH,0DH
thisisamusicprogram!
pleaseselect!
'
0AH,0DH
DB0AH,0DH
Inthispart,youcanpressbelowkeystoenjoymusic:
1.beijinghuanyingni'
2.chuntianhuahuikai'
3.huanlesong'
4.danyuanrenchangjiu'
5.qingfeideyi'
Youcanpress'
60H,'
Esc'
27H,'
or'
Enter'
27H,'
toexit.'
Duringthesongyoucanpressbelowkeystosetthespeedandplaybackmode:
u->
Faster'
d->
Slower'
p->
Pause'
s->
Start'
q->
Quit'
0AH,0DH,'
$'
WAIT_MDB0AH,0DH
musicing'
'
...'
ERROR_ODB0AH,0DH,'
Yourorderiserror,pleaseentertherightone:
QDB0AH,0DH,'
Thesongisover,youcanchooseasongagain.$'
PDB0AH,0DH,'
Havearest,youcanpressstostartthesongagain.$'
SDB0AH,0DH,'
Youhasstartthesongagain.'
UDB0AH,0DH,'
Youhavemadethebeatshorter.'
DDB0AH,0DH,'
Youhavemadethebeatlonger.'
OVERDB0AH,0DH,'
***************************************$'
DB0AH,0DH,'
;
****************************北京欢迎你*****************************
TONES_1DW659,2DUP(659,784,659,587,659,587,659,659,587,440,523,659,587,587,523,440,523,587,659,784,587,659,880,784,440,587,523)
DW587,523,440,523,587,659,784,587,659,880,784,784,659,587,659,587,523,784,880,587,440,659,587,587,523,-1
BEAT_1DW7DUP(25*200),50*200,5DUP(25*200),25*600,13DUP(25*200),25*600,6DUP(25*200),50*200,5DUP(25*200),25*600,13DUP(25*200),25*600
DW12DUP(25*200),50*400,6DUP(25*200),50*200,4DUP(25*200),50*200
**************************春天花会开******************************
TONES_2DW392,392,392,392,440,392,330,294,262,262,262,220,294
DW392,392,392,392,330,494,220,262,262,262,330,294,330,440,220,262,-1
BEAT_2DW25*200,3DUP(25*200,50*200,25*200,50*200,50*200,50*400)
DW25*200,50*200,25*200,50*200,50*200,50*200,50*200,4DUP(25*200)
****************************欢乐颂*****************************
TONES_3DW330,330,330,349,392,392,349,330,294,262,262,294,330,330,294,294
DW330,330,349,392,392,349,330,294,262,262,294,330,294,262,262,-1
BEAT_3DW13DUP(50*200),25*600,2DUP(25*200)
DW12DUP(50*200),25*600,2DUP(25*200)
**************************但愿人长久******************************
TONES_4DW262,262,262,220,196,220,262,262,262,220,196,220,294
DW330,262,220,330,262,220,294,262,220,349,349,220,262,294,294,196,247,220,247,262,-1
BEAT_4DW100,2DUP(50*200,25*200,25*200,25*600,25*200,50*400)
DW2DUP(50*200,25*200,25*