微机原理课程设计音乐演奏.docx

上传人:b****7 文档编号:9207498 上传时间:2023-02-03 格式:DOCX 页数:24 大小:192.10KB
下载 相关 举报
微机原理课程设计音乐演奏.docx_第1页
第1页 / 共24页
微机原理课程设计音乐演奏.docx_第2页
第2页 / 共24页
微机原理课程设计音乐演奏.docx_第3页
第3页 / 共24页
微机原理课程设计音乐演奏.docx_第4页
第4页 / 共24页
微机原理课程设计音乐演奏.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

微机原理课程设计音乐演奏.docx

《微机原理课程设计音乐演奏.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计音乐演奏.docx(24页珍藏版)》请在冰豆网上搜索。

微机原理课程设计音乐演奏.docx

微机原理课程设计音乐演奏

微机原理与汇编语言课程设计

音乐演奏

 

学院:

计算机科学技术

专业:

计算机科学与技术(工)

班级:

计10-1班

姓名:

学号:

指导教师:

2013年3月10日

微机原理与汇编语言课程设计任务书

一、题目:

音乐演奏

二、设计的目的

1.了解PC机扬声器系统的电路结构;

2.学习扬声器发生的编程方法;

3.掌握定时器/计数器8253的工作原理及编程方法。

三、设计要求

1.用菜单选择乐曲,让扬声器按节拍演奏连续的音乐;

2.至少三首歌曲,按下”O”键第1首,按下”E”键第2首,按下”T”键第3首,按下”Q”键推出。

四、设计内容

采用PC系列微机演奏3首(或以上)音乐。

五、课程设计工作量

一般每人的程序量应在100行有效程序行以上。

不得抄袭,否则给不及格成绩。

六、课程设计工作计划

2013年3月4日1-2节指导教师讲课,学生准备文献资料;

2013年3月4日~2013年3月8日每人完成自己程序并能独立演示;

2013年3月8日下午验收,学生撰写课程设计报告。

 

指导教师签字:

专业主任签章:

微机原理与汇编语言课程设计指导教师评语与成绩

指导教师评语:

 

课程设计表现成绩:

课程设计验收成绩:

课程设计报告成绩:

课程设计总成绩:

指导教师签字:

2013年3月日

 

 

 

第1章概述

1.1选题来源

音乐是我们精神生活必不可缺的一部分,它遍布在我们生活的每一个角落。

运动时,上网时,看书时我们总是喜欢听着音乐,它可以使我们的生活更有旋律性,节奏感,使我们更好的的陶冶情操,养性怡情,让我们的生活富有活力。

21世纪是信息时代,掌握坚实计算机专业知识,是我们计算机专业学生所必须做到的,汇编语言开发是机算计应用技术的一项内容,我们的老师高瞻远瞩的为我们提供了音乐演奏这个课题,不仅可以使我们更好的夯实我们的专业知识,还让我们掌握了一些基于PC机音乐播放的前沿技术。

所以我选择这个课题进行深入研究。

1.2选题目的

本设计的主要目的在于:

锻练学生的汇编语言独立开发能力,对计算机内部的8253芯片和8255芯片的工作原理有更深入的了解,提升学生的专业综合技能。

其次,本设计还培养了学生的发现问题并解决问题的能力。

最终,学生的综合素质得到了进一步提升,为自己顺利与社会接轨做好准备。

1.3选题意义

开发音乐播放课题的过程,我们对汇编语言的开发有了更进一步的理解,让我们的逻辑思维得到加强,此外我们对8253和8255有了更深的认识。

(1)、理论上的意义

在对8253和8255知识的研究,完成音乐播放盒的设计,要用到汇编语言写程序和对芯片数据手册等有关资料的查询。

此项设计是考验我们综合知识应用能力,理论联系实际的能力,真正的做到学以致用,为今后的学习,走向社会,走向岗位做了一定的铺垫。

(2)、实践上的意义

此课题开发,激发了我们对汇编语言学习和应用的兴趣,提升了我们的动手能力,对新知识、新技术的学习和接受能力,从时间角度讲是自己四年大学生活不可多得的一次锻炼。

第2章总体设计方案

2.1硬件总体设计

图2-1硬件设计总电路图

系统运行,通过8253的工作方式2产生方波信号,由8255接收方波信号并驱动扬声器发出声音,进而根据程序设定的频率和音符发出规则的音乐。

2.1软件总体设计

图2-2程序流程图

人机交互包括屏幕显示提示语以及人工输入相应参数,主要应用到BIOS的10H号中断调用以及DOS的21H号中断调用。

BIOS的10H号中断调用用于显示器驱动,设置显示模式和光标位置;DOS的21H号中断调用用于单字符输入以及多字符输出显示。

第3章总体设计方案

3.1硬件设计

3.1.18253内部结构

8253的内部结如图3-1-1所示:

 

 

图3-1-18253内部结构图

8253读/写逻辑信号组合的功能以及各计数器通道、控制字寄存器在PC机的地址分配如表3-1-1所示:

表3-1-18253读/写逻辑信号组合的功能及地之分配

 

3.1.28253的控制字

8253的控制字用于选择计数器的通道工作,三个通道可以同时工作,但是要分别进行初始化;用于规定读/写操作格式或类型,8253可以有8位的计数值或16位计数值,可以按2进制计数或按十进制计数,8253共有六种工作方式,8253是由主机编程设定的,通过把一个8位控制字写入8253的控制字寄存器,使8253按照某种规定的工作方式工作。

控制字的定义如图3-1-2所示:

 

图3-1-28253的控制字

3.2软件设计

音乐演奏实现的一个主要步骤是乐谱编程。

通过相应的频率表将乐谱中对应的音符转化为计数器的计数初值,节奏通过延时程序转化为对喇叭发音时间的控制,从而实现音符和节拍的数字化。

利用硬件实现频率计数和延时时间的控制,利用8253-5定时/计数器芯片和8255A并行I/O接口芯片。

使8253的一个通道工作在“方波发生器”模式,实现对频率的计数;利用8255A的PB3端口实现发声时间的计数控制。

这样可以精确的控制时间,减少CPU的开支。

该方案的优点是控制精度提高,同时也减少CPU的开支。

缺点是硬件开销比较多。

3.2.1音乐演奏

在此课题开发中,我设定没拍时间为12,主要的高中低音符参照表3-2-1制作:

表3-2-1音符表:

表3-2-1音符频率程表

低音

频率

中音

频率

高音

频率

1

262

1

523

1

1046

2

294

2

587

2

1175

3

330

3

659

3

1318

4

349

4

698

4

1397

5

392

5

784

5

1568

6

440

6

880

6

1760

7

494

7

988

7

1975

一首乐曲由若干音符组成,一个音符对应一个频率。

将与一个频率对应的计数器初值写入2号计数器(端口地址为42H),扬声器就发出相应的音调,计数器初值的计算公式:

计数器初值=1193182/输出频率

其中,1193182Hz转换成十六进制为12348CH,因此在打开扬声器的条件下,执行下列程序段即可发出与输出频率对应的音调。

moval,0b6h

out43h,al

movdx,12h

movax,34DCH

divdi

out42h,al

moval,ah

out42h,al

inal,61h

movah,al;保存端口b的状态

oral,03h

out61h,al;将PB0,PB1设为

3.2.2界面设计

音乐盒的界面如图3-2-1所示:

 

图3-2-1音乐播放盒界面

界面显示应用了int21h里的第9号功能。

在界面中主要显示了三首音乐名字分别为《诺恩吉雅》、《春暖花开》和《美丽的草原我的家》,播放的快捷键分别为1、2和3,并提示播放。

主现实现程序:

welcomedb'QuyanboCurriculumdesign--MusicBox',0dh,0ah,0dh,0ah,'$'

we1db'******************************************************',0dh,0ah,0dh,0ah,'$'

we2db'*Press1tochooseplay<>*',0dh,0ah,0dh,0ah,'$'

we3db'******************************************************',0dh,0ah,0dh,0ah,'$'

we4db'*Press1tochooseplay<>*',0dh,0ah,0dh,0ah,'$'

we5db'******************************************************',0dh,0ah,0dh,0ah,'$'

we6db'*Press1tochooseplay<>*',0dh,0ah,0dh,0ah,'$'

we7db'******************************************************',0dh,0ah,0dh,0ah,'$'

welcome1db'Pleaseenter1,2,or3tochoosesongs!

',0dh,0ah,0dh,0ah,'$'

当音乐播放时屏幕会如图3-2-2所示:

图3-2-1播放界面

主要实现程序:

playingdb'<>isplaying.',0dh,0ah,0dh,0ah,'$'

playing1db'<>isplaying.',0dh,0ah,0dh,0ah,'$'

playing2db'<>isplaying.',0dh,0ah,0dh,0ah,'$'

第4章调试与运行结果说明

在调试过程中,我遇到了很多的错误,其中最令我记忆深刻的是越界问题,经过几天的查阅资料,我终于解决了该问题。

程序运行结果如4-1所示:

图4-1音乐盒程序运行结果

第5章课程设计总结

在这次课程设计中,对汇编应用程序理论知识有了系统的学习,在学习知识的同时还明白了阅历的重要,在平时中应该查找大量资料,不懈的努力和独立思考的能力,虽然这次的五子棋是一个比较简单的程序,但从中我学会了很多学习的方法,受益匪浅,面对以后的挑战只有不断的学习和实践。

第6章谢启

在此次课程设计伊始,孙老师为我们提供了课题而且还不辞劳苦的为我们讲解了各个课题的具体思路,着手点和一些专业知识,极大的补充了我们的知识,激发了我们的积极性。

在课程设计验收之际,孙老师还为我们讲解了我们的不足,并为我们提出了改进的方向。

在此我向孙老师表示诚挚谢意。

 

参考文献

[1] 孙海,葛建梅.大学计算机基础[M]. 北京:

中国电力出版社,2011.

[2] 钱晓捷. 微机原理与接口技术(第4版)[M]. 北京:

机械工业出版社,2008.

 

 

附录:

datasegment

LO1equ262;音符宏定义

LO2equ294

LO3equ330

LO4equ349

LO5equ392

LO6equ440

LO7equ494

MID1equ523

MID2equ587

MID3equ659

MID4equ698

MID5equ784

MID6equ880

MID7equ988

HI1equ1046

HI2equ1175

HI3equ1318

HI4equ1397

HI5equ1568

HI6equ1760

HI7equ1975

music_freqdwMID6,HI2,HI1,MID6,MID5,MID3

dwHI2,HI5,HI3

dwHI2,HI3,HI6,HI5,HI3,HI2,HI1,MID6

dwHI1,HI3,MID2

dwHI1,HI2,HI3,HI3,HI5,MID6

dwMID5,MID6,HI1

dwMID5,MID6,HI2,HI1,MID6,MID5,MID3

dwMID5,HI1,MID6

music_lenthdw12,6,6,6,6,12

dw6,6,36

dw6,6,6,6,6,6,6,6

dw6,6,36

dw6,6,12,6,6,12

dw6,6,12,12,12

dw6,6,6,6,6,6,12

dw6,6,12,12,12

music_freq1dwMID2,MID2,MID2,MID3,MID2,MID1

dwMID2,MID1,LO6,LO6,MID1

dwMID2,MID5,MID3,MID2,MID1,MID2

dwLO6,MID2,MID2,MID2,MID3

dwMID3,MID2,MID1,LO6,LO5,MID1

dwMID2,MID2,MID1,LO6,LO5

dwLO5

dwMID2,MID5,MID2,MID3,MID2,MID1

dwMID2,MID1,LO6,LO6,MID1

dwMID2,MID5,MID3,MID2,MID1,MID2

dwLO6,MID2,MID2,MID2,MID3

dwMID2,MID2,MID1,LO6,LO6,MID1

dwMID2,MID2,MID2,MID1,LO6,LO6,LO5

dwLO5

dwMID1,LO5,MID1,MID2

dwMID2

dwMID4,MID4,MID4,MID4,MID4,MID4,MID3,MID2

dwMID3,MID5,MID5,MID2,MID3,MID2,MID1

dwMID2,MID2,MID2,MID1,LO6,LO6,MID1

dwMID2,MID2,MID2,MID6,MID2

dwMID5

music_lenth1dw12,12,9,3,6,6

dw18,6,12,6,6

dw12,12,9,3,6,6

dw12,12,6,12,6

dw6,12,6,12,6,6

dw12,12,6,6,6,6

dw24

dw12,12,6,6,6,6

dw18,6,12,6,6

dw12,12,9,3,6,6

dw12,12,6,12,6

dw6,6,6,6,12,6,6

dw12,6,6,6,6,6,6

dw24

dw18,6,12,6,6

dw24

dw9,3,6,6,9,3,6,6

dw6,6,12,9,3,6,6

dw6,6,6,6,12,6,6

dw12,12,12,6,6

dw24

music_freq2dwLO5,LO5,LO5,MID1,MID2,MID3

dwMID5,HI1

dwMID6,MID5,MID6,MID3,MID2

dwMID1

dwMID3,MID3,MID5,MID6,HI1

dwHI1,HI6,MID5,MID6

dwMID5

dwMID5

dwMID3,MID3,MID5,MID6,HI1

dwHI1,MID6,MID5

dwMID6,MID5,MID3,MID5

dwMID3,MID5

dwLO5,LO5,MID1,MID2,MID3

dwMID5,MID3,MID2,MID3

dwMID2

dwMID2

dwMID3,MID3,MID5,MID6,HI1

dwMID1,MID6,MID5

dwMID6,MID5,MID3,MID5

dwMID3,MID5

dwMID6,MID5,MID3,MID2,MID3,MID5

dwMID5,MID6

dwLO5,LO6,MID1,MID3,MID2

dwMID1

dwMID1,MID2,MID3,MID5

dwMID5

dwMID5,MID3,MID5,MID6

dwHI1,HI2

dwHI2,HI1,MID6,HI1

dwMID6

dwMID6,MID5,MID6,HI1

dwMID6,MID5,MID6

dwMID3,MID2,MID1,LO6

dwLO5,MID5

dwMID3,MID2,MID1,MID2

dwMID1

dwMID1,MID3,MID5,MID6

dwMID3,MID5,MID6,HI1

dwHI1,HI1,HI1,HI1

music_lenth2dw6,3,3,6,3,3

dw18,6

dw6,3,3,6,6

dw24

dw6,6,6,3,3

dw12,6,3,3

dw24

dw24

dw6,6,6,3,3

dw18,3,3

dw12,6,3,3

dw12,6

dw6,6,6,3,3

dw12,6,3,3

dw24

dw24

dw6,6,6,3,3

dw18,3,3

dw12,6,3,3

dw18,6

dw6,3,3,6,3,3

dw18,6

dw6,3,3,6,6

dw24

dw6,6,9,3

dw24

dw12,6,3,3

dw18,6

dw12,6,3,3

dw24

dw12,6,3,3

dw18,3,3

dw9,3,6,6

dw12,6,6

dw12,6,3,3

dw24

dw12,6,3,3

dw12,6,3,3

dw24,24,24

blankdb0dh,0ah,0dh,0ah,'$'

welcomedb'QuyanboCurriculumdesign--MusicBox',0dh,0ah,0dh,0ah,'$'

we1db'******************************************************',0dh,0ah,0dh,0ah,'$'

we2db'*Press1tochooseplay<>*',0dh,0ah,0dh,0ah,'$'

we3db'******************************************************',0dh,0ah,0dh,0ah,'$'

we4db'*Press1tochooseplay<>*',0dh,0ah,0dh,0ah,'$'

we5db'******************************************************',0dh,0ah,0dh,0ah,'$'

we6db'*Press1tochooseplay<>*',0dh,0ah,0dh,0ah,'$'

we7db'******************************************************',0dh,0ah,0dh,0ah,'$'

welcome1db'Pleaseenter1,2,or3tochoosesongs!

',0dh,0ah,0dh,0ah,'$'

playingdb'<>isplaying.',0dh,0ah,0dh,0ah,'$'

playing1db'<>isplaying.',0dh,0ah,0dh,0ah,'$'

playing2db'<>isplaying.',0dh,0ah,0dh,0ah,'$'

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

begin:

movah,0;设置显示方式用于清屏

moval,3

int10h

leadx,blank;显示blank缓存区中的字符

movah,9

int21h

leadx,welcome;显示welcone缓存区中的字符

movah,09h

int21h

leadx,we1;显示we1缓存区中的字符

movah,09h

int21h

leadx,we2;显示we2缓存区中的字符

movah,09h

int21h

leadx,we3;显示we3缓存区中的字符

movah,09h

int21h

leadx,we4;显示we4缓存区中的字符

movah,09h

int21h

leadx,we5;显示we5缓存区中的字符

movah,09h

int21h

leadx,we6;显示we6缓存区中的字符

movah,09h

int21h

leadx,we7;显示we7缓存区中的字符

movah,09h

int21h

leadx,welcome1;显示welcome1缓存区中的字符

movah,09h

int21h

movah,0;从键盘接收字符返回al为字符码,ah为扫描码

int16h

cmpah,01h

jzstop

cmpal,'1'

jemusic1

cmpal,'2'

jemusic2

cmpal,'3'

jemusic3

music1:

movcx,39

leabp,music_lenth

leasi,music_freq

jmpload1

music2:

movcx,115

leabp,music_lenth1

leasi,music_freq1

jmpload2

music3:

movcx,128

leabp,music_lenth2

leasi,music_freq2

load3:

leadx,playing2;显示playing缓存区中的字符

movah,9

int21h

jmpmusic

load1:

leadx,playing;显示playing缓存区中的字符

movah,9

int21h

jmpmusic

load2:

leadx,playing1;显示playing缓存区中

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

当前位置:首页 > 外语学习 > 其它语言学习

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

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