乐曲程序的设计与实现毕业设计(论文)word格式

上传人:人*** 文档编号:431572187 上传时间:2024-01-08 格式:DOC 页数:21 大小:214.53KB
返回 下载 相关 举报
乐曲程序的设计与实现毕业设计(论文)word格式_第1页
第1页 / 共21页
乐曲程序的设计与实现毕业设计(论文)word格式_第2页
第2页 / 共21页
乐曲程序的设计与实现毕业设计(论文)word格式_第3页
第3页 / 共21页
乐曲程序的设计与实现毕业设计(论文)word格式_第4页
第4页 / 共21页
乐曲程序的设计与实现毕业设计(论文)word格式_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《乐曲程序的设计与实现毕业设计(论文)word格式》由会员分享,可在线阅读,更多相关《乐曲程序的设计与实现毕业设计(论文)word格式(21页珍藏版)》请在金锄头文库上搜索。

1、武汉理工大学汇编语言程序设计课程设计说明书学 号: 0120610340832课 程 设 计题 目乐曲程序的设计与实现学 院计算机科学与技术专 业计算机科学与技术班 级计算机0608班姓 名李 琼指导教师周德仿2009年1月16日课程设计任务书学生姓名: 李 琼 专业班级: 计算机0608班 指导教师: 周德仿 工作单位:计算机科学与技术学院 题目: 乐曲程序的设计与实现初始条件:理论:完成了汇编语言程序设计课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。实践:完成了汇编语言程序设计的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的

2、调试方法。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)进一步理解和掌握程序直接控制I/O方式,掌握计算机发声程序的设计。具体的设计任务及要求:1采用位触发方式编写程序,使计算机发出音响并奏出两只老虎的乐曲。1) 通过查阅相关资料,进一步理解程序直接控制I/O方式和位触发方式控制声音的工作原理。2) 一首乐曲是由不同频率和节拍的音调组成,因此控制脉冲的频率和持续时间是编写乐曲程序的关键。根据已知的音符频率对照表,给出乐曲的频率表;设二分音符持续时间为0.5秒(50*10ms),50作为2拍的计数值,给出乐曲的节拍时间表;3) 编写程序并调试通过。2进一步学习

3、利用定时器产生声音的方法,使计算机奏出乐曲(例如两只老虎等)。在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书。阅读资料:1)IBMPC汇编语言程序设计实验教程3.1节2)IBMPC汇编语言程序设计(第2版)10.4节,10.5节时间安排:设计安排一周:周1、周2:完成系统分析及设计。周3、周4:完成程序调试,和验收。周5:撰写课程设计报告。指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日乐曲程序的设计与实现1 实验设计目的以及功能1.1设计目的汇编语言是计算机能够提供给用户使用的最快而又最有效的语言,也是能够用计算机所有硬件特性并能直接

4、控制硬件的唯一语言。通过这次实验要求我们:1)了解通用发声程序 2)了解与掌握定时.计数.音乐.频率.时间之间的关系 3)学会用发声程序的设计方法 4) 学会用汇编语言编辑音乐程序 通过音乐程序设计熟悉并掌握用汇编语言编程的方法和特点,借此来比较高级语言低级语言的优缺点,以便更好运用各种语言来开发应用软件通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。能用汇编语言熟练地运用三大结构,进一步掌握各个指令的功能,特别是转向指令,能掌握子程序的定义及调用,包括段间及段内调用,以及正确地运用DEBUG指令,进一步理解和掌握程序直接控制

5、I/O方式。1.2 设计功能在本次实验中,编写源程序,并要求实现以下功能:1采用位触发方式编写程序,使计算机发出音响并奏出两只老虎的乐曲。1) 通过查阅相关资料,进一步理解程序直接控制I/O方式和位触发方式控制声音的工作原理。2) 一首乐曲是由不同频率和节拍的音调组成,因此控制脉冲的频率和持续时间是编写乐曲程序的关键。根据已知的音符频率对照表,给出乐曲的频率表;设二分音符持续时间为0.5秒(50*10ms),50作为2拍的计数值,给出乐曲的节拍时间表;3) 编写程序并调试通过。2进一步学习利用定时器产生声音的方法,使计算机奏出乐曲(例如两只老虎等)。2开发平台开发环境:Windows平台Vis

6、ual C+ 6.0编译器运行环境:Windows,Linux全系列平台开发语言:C+3 概要设计 31 设计思路编写这个乐曲程序可分为四个步骤:311 定义频率表和时间表根据音阶表和简谱为演奏的乐曲定义一个频率表freq和一个节拍时间表time。频率表中的数据可以从书本查到,节拍时间表中的数据是延迟时间10ms的倍数。312 将两个表的偏移地址放入SI和DILEA SI,MUS_FREQLEA BP,DS:MUS_TIME313 取频率和时间从表中取出音符的频率放入DI,取出音符的持续时间(实际上是10ms的倍数)放入BX。MOV DI,SI MOV BX,DS:BP频率表中最后一个数据OF

7、FFFH作为乐曲的结束符,也可用0或其他的特殊值来代替。314调用SOUND子程序发出音调调用通用发声子程序GENSOUND发出音调。这个程序比较简单,如果想演奏另一个乐曲,只需把freq和time两个表中的数据换成另一个乐曲的频率和节拍时间就可以了。3.2 程序流程图开始结束是否继续N是否为A唱歌YNN是否为QYY请输入一个字符4详细设计41 发声程序411 扬声器驱动方式PC机上的大多数都是由主板上的8255(或8255A)可编程序外围 接口芯片(PPI)管理的。PPI包括三个8位寄存器,两个用于输入功能,一个用于输出功能。输入寄存器分配的I/O端口号为60H和62H,输出寄存器分配的I/

8、O端口号为61H。由PPI输出寄存器的0或1两位来控制扬声器的驱动方式。411 .2 采用定时器方式:它是利用8253/54定时器来驱动扬声器。连接到扬声器上的是2.从扬声器的驱动系统图中可以知道,GATE2与端口61H的PB0相连,当PB0=1时,GATE2获得高电平,使定时器2可以在模板3下工作。定时器2的OUT2与端口61H的PB1通过一个与门与扬声器的驱动电路相连。当PB1=1时,语序OUT2的输出信号到达扬声器电路。当通道2用于发声时,一般采用模式3下,输出线为“1”和为“0”的时间各占计数时间的一半,因而产生一系列间隔均匀的脉冲。下面是利用定时器产生指定频率声音的程序段:SOUND

9、 PROC NEAR ;定时器发出6614频率的声音 PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI MOV AL,0B6H ;向8253-5/8254-2计数器2写控制字 OUT 43H,AL ;方式3、双字节写和二进制计数方式写到控制口 MOV DX,12H ;设置被除数 MOV AX,348CH DIV DI OUT 42H,AL ;先送LSB MOV AL,AH OUT 42H,AL ;后送MSB IN AL,61H ;读8255端口B(61H)原值 MOV AH,AL ;保存端口原值 OR AL,3 OUT 61H,AL ;接通扬声器WAIT1: MO

10、V CX,4000 CALL WAITF DELAY1: DEC BX JNZ WAIT1 MOV AL,AH ;写回61H口原值,关闭扬声 OUT 61H,AL POP DI POP DX POP CX POP BX POP AX RET ;子程序结束返回SOUND ENDP WAITF PROC NEAR ;获得0.05s时间延迟 PUSH AX WAITF1: IN AL,61H AND AL,10H CMP AL,AH JE WAITF1 MOV AH,AL LOOP WAITF1 POP AX RET WAITF ENDP411.2 采用位触发方式程序直接控制PPI(8255A可编程

11、序外围接口芯片)的输出控制寄存器(I/O端口为61H)的第一位,使该位按所需的频率进行1和0的交替变化,从而控制开关电路产生遗传脉冲波形,这些脉冲经放大后驱动扬声器发出声音。如果控制这一脉冲波形的脉宽和长度就可以产生不同频率和不同音长的声音。扬声器发声通用子程序:IN AL,61HMOVE AH,ALAND AL,11111100B ;关断定时器通道2的门控SOUND: XOR AL,2 ;出发61H端口第一位 OUT 61H,ALMOV CX,DX ;(DX)=控制脉宽的计数值WAIT: LOOP WAIT ;延迟循环DEC BX ;(BX)=脉冲持续的时间JNZ SOUNDMOV AL,AHOUT 61H,AL ; 回复61H端口4 . 2 演奏乐曲程序两只老虎简谱5调试结果与运行情况分析5.1调试结果5.1.1DOS环境的初始界面5.1.2输入错误后的界面5.1.3继续选择输入后的界面5.1.4唱完歌后的界面5.1.5退出时的界面5.2运行情况分析5.2.1 伪操作格式错误5.2.1.1 错误格式HELLO ; DB 0DH,0AH, ;DB0DH,0AH, DB 0DH,0AH,* DB 0DH,0AH, 5.2.1.2 错误现象

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号