汇编课程设计乐曲演奏程序武汉理工大学
eda乐曲硬件演奏电路课程设计
![eda乐曲硬件演奏电路课程设计](https://img.taocdn.com/s3/m/3359328a85254b35eefdc8d376eeaeaad1f316e3.png)
eda乐曲硬件演奏电路课程设计一、课程目标知识目标:1. 学生能够理解EDA乐曲硬件演奏电路的基本原理,掌握电路组成及各部分功能。
2. 学生能够描述常见电子元件在演奏电路中的作用,并运用相关知识分析电路性能。
3. 学生能够掌握编程软件及硬件设计工具,完成简单的EDA乐曲演奏电路设计。
技能目标:1. 学生能够运用所学知识,独立完成演奏电路的搭建与调试。
2. 学生能够通过编程软件,编写简单的乐曲程序,实现乐曲演奏。
3. 学生能够运用团队协作能力,共同解决演奏电路设计过程中遇到的问题。
情感态度价值观目标:1. 学生通过本课程的学习,培养对电子技术和音乐艺术的热爱,提高审美情趣。
2. 学生在学习过程中,养成积极探究、勇于创新的精神,增强实践操作能力。
3. 学生能够认识到科技与艺术的结合在生活中的应用,增强社会责任感和团队合作意识。
课程性质:本课程为实践性较强的课程,结合电子技术与音乐艺术,旨在培养学生的动手能力、创新思维和团队协作能力。
学生特点:本年级学生具备一定的电子技术基础知识,对音乐艺术有一定兴趣,好奇心强,善于动手实践。
教学要求:教师应注重理论与实践相结合,引导学生积极参与实践操作,鼓励学生创新思维,提高团队协作能力。
同时,关注学生的个体差异,因材施教,确保每位学生都能在课程中收获成长。
二、教学内容本课程教学内容主要包括以下三个方面:1. 理论知识学习:- 电路基础知识:回顾电路的基本概念、原理及电路图的识别。
- 电子元件介绍:学习常用电子元件的原理、功能及在演奏电路中的应用。
- EDA软件使用:介绍编程软件及硬件设计工具的使用方法,如Multisim、Proteus等。
2. 实践操作能力培养:- 电路搭建:学习演奏电路的搭建方法,熟悉各类电子元件的连接方式。
- 程序编写:编写简单的乐曲程序,掌握编程技巧,实现乐曲演奏。
- 调试与优化:对搭建的演奏电路进行调试,找出问题并进行优化。
3. 创新思维与团队协作:- 设计实践:运用所学知识,小组合作完成指定乐曲的演奏电路设计。
理工大学音乐课教案设计
![理工大学音乐课教案设计](https://img.taocdn.com/s3/m/881dd3307f21af45b307e87101f69e314332fae2.png)
课时:2课时年级:大一教学目标:1. 让学生了解音乐的基本知识和音乐的表现手法。
2. 培养学生对音乐的兴趣和审美能力。
3. 培养学生的团队协作精神。
教学重点:1. 音乐的基本知识和表现手法。
2. 学生对音乐的兴趣和审美能力的培养。
教学难点:1. 音乐的基本知识和表现手法的理解。
2. 学生对音乐的兴趣和审美能力的培养。
教学过程:第一课时一、导入1. 教师播放一段轻快的音乐,让学生放松心情,进入音乐课堂。
2. 教师简要介绍本节课的教学内容和目标。
二、音乐基本知识讲解1. 教师讲解音乐的基本知识,如音符、节奏、旋律等。
2. 学生跟随教师一起学习音符、节奏、旋律等基本知识。
三、音乐表现手法学习1. 教师讲解音乐的表现手法,如音色、音量、速度等。
2. 学生跟随教师一起学习音色、音量、速度等表现手法。
四、音乐实践1. 学生分组,每组选择一首歌曲进行合唱或演奏。
2. 教师指导学生进行音乐实践,注意音乐的基本知识和表现手法的运用。
五、总结与反馈1. 教师总结本节课的教学内容和重点。
2. 学生反馈本节课的学习收获和不足。
第二课时一、复习与巩固1. 教师提问学生关于音乐基本知识和表现手法的知识,检查学生的学习效果。
2. 学生回答问题,巩固所学知识。
二、音乐欣赏1. 教师播放一段经典音乐作品,引导学生欣赏音乐。
2. 学生跟随教师一起欣赏音乐,感受音乐的魅力。
三、音乐创作1. 教师引导学生进行音乐创作,可以是个人的或小组的合作。
2. 学生根据所学知识和音乐表现手法进行音乐创作。
四、展示与评价1. 学生展示自己的音乐作品,其他学生进行评价。
2. 教师对学生的音乐作品进行点评,指出优点和不足。
五、总结与反馈1. 教师总结本节课的教学内容和重点。
2. 学生反馈本节课的学习收获和不足。
教学评价:1. 学生对音乐基本知识和表现手法的掌握程度。
2. 学生对音乐的兴趣和审美能力的提升。
3. 学生在音乐实践中的表现和团队协作精神。
革命歌曲演奏程序《汇编语言程序设计》课程设计报告
![革命歌曲演奏程序《汇编语言程序设计》课程设计报告](https://img.taocdn.com/s3/m/9568af2efd0a79563d1e7245.png)
革命歌曲演奏程序《汇编语言程序设计》课程设计报告题目: 革命歌曲演奏程序初始条件:理论:学完“汇编语言程序设计”、“课程计算机概论”、“高级语言程序设计”和“数字逻辑”。
实践:计算机学院科学系实验中心提供计算机和软件平台。
如果自己有计算机可以在其上进行设计。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)编写用键盘选择计算机演奏歌曲的程序,歌曲清单至少包括3首。
(2)程序应有操作提示、输入和输出,界面追求友好,最好是菜单式的界面。
(3)设计若干用例(测试数据),上机测试程序并分析(评价)所设计的程序。
(4)设计报告格式按附件要求书写。
课程设计报告书正文的内容应包括:在正文第一行写课程设计题目;1.需求说明(要求、功能简述)或问题描述;2.设计说明(简要的分析与概要设计);3.详细的算法描述;4.源程序与执行结果(含测试方法和测试结果);5.使用说明;6.总结,包括设计心得(设计的特点、不足、收获与体会)和展望(该程序进一步改进扩展的设想)。
时间安排:设计时间一周:周1:查阅相关资料。
周2:系统分析,设计。
周3~4:编程并上机调试周5:撰写课程设计报告。
设计验收安排:21周星期五8:00起到计算机学院科学系实验中心进行上机验收。
设计报告书收取时间:21周的星期五下午5:00之前。
指导教师签名: 2007年1月18日系主任(或责任教师)签名: 2007年1月 18日革命歌曲演奏程序1 需求说明这次《汇编语言程序设计》课程设计要求通过一个较大型实用程序的设计与实现,综合运用所学知识,加深理解和掌握。
同时培养学生分析问题和解决问题的能力,以及自学能力。
我选择的题目是《革命歌曲演奏程序》,要求完成的主要任务有:(5)编写用键盘选择计算机演奏歌曲的程序,歌曲清单至少包括3首。
(6)程序应有操作提示、输入和输出,界面追求友好,最好是菜单式的界面。
(7)设计若干用例(测试数据),上机测试程序并分析(评价)所设计的程序。
汇编课程音乐演奏程序设计--这个才是正确的!
![汇编课程音乐演奏程序设计--这个才是正确的!](https://img.taocdn.com/s3/m/7cafc9b914791711cd791769.png)
08学号:题目音乐演奏程序设计教学院计算机学院专业计算机科学与技术班级05级本科(2)班姓名李锐指导教师马学军晏伯武姚莉杨斐2008年01月16日目录一概述 ........................... 错误!未定义书签。
二总体方案设计 ................... 错误!未定义书签。
三详细设计 ....................... 错误!未定义书签。
四程序的调试与运行结果说明 ....... 错误!未定义书签。
五课程设计总结 ................... 错误!未定义书签。
参考文献 .......................... 错误!未定义书签。
一概述汇编语言是计算机能够提供给用户使用的最快而有效的语言,也是能够利用计算机所有特性并能直接控制硬件的唯一语言。
借助于汇编程序,计算机本身可以自动地把汇编源程序翻译成用机器语言表示的目的程序,从而实现了程序设计工作的部分自动化。
1课程设计的目的掌握一些程序设计的基本方法,要指导主程序,子程序以及推栈段的使用,.了解通用发声程序.了解与掌握定时.计数.音乐.频率.时间之间的关系,学会用发声程序的设计方法,学会用汇编语言编辑音乐程序.2课程设计的要求1、需要的基本知识与技能。
具备汇编语言设计、编写、调试和运行程序的方法和技巧。
在PC机上运行汇编程序需要经过以下几个阶段:编辑源程序。
利用文本编辑工具编辑源程序,生成一个汇编语言的纯文本文件。
文件的扩展名为.ASM汇编源程序。
用汇编器汇编源程序生成目标代码文件,目标代码文件的扩展名是.OBJ,汇编器还可以生成列表文件和交叉参考文件。
汇编器相当于高级语言中的编译器。
汇编语言按照汇编语言的语法检查源程序,如果源程序语法有错误,汇编器就不生成目标代码文件,这时,必须重新编辑源程序,修改语法错误。
当发现源程序有的行含有不确定因素,汇编器会给出警告信,但按却省处理方法生成目标代码文件。
武汉理工汇编实验报告
![武汉理工汇编实验报告](https://img.taocdn.com/s3/m/0c6918d9195f312b3169a580.png)
实验项目名称
分支和循环结构程序设计
实验成绩
实验者
专业班级
软件zy1302班
组别
同组者
实验日期
2015年5月23日
第一部分:实验分析与设计
1.实验内容描述(问题域描述)
1. 编写程序,将BX与DX中较大的一个无符号数放到AX中。
利用debug的u、g、d等命令观察相关寄存器的内容。
三、主要仪器设备及耗材
PC机
第二部分:实验调试与结果分析
一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)
调试方法:
使用d命令、g命令、u命令等进行调试。
二、实验结果分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
三、小结、建议及体会
通过本次实验我掌握了子程序设计的基本方法、调用和返回指令的使用,学习了子程序设计时参数传递的几种方法。成功完成了本次实验题目的同时提高了自己对汇编语言子程序设计的认识。我始终坚持使用记事本工具进行编程,我相信这样可以进一步提高自己。
调试方法:用Debug的R命令查看、改变CPU寄存器的内容;
用Debug的D命令查看内存中的内容;
用Debug的E命令改写内存中的内容;
用Debug的U命令将内存中的机器指令翻译成汇编指令;
用Debug的T命令执行一条机器指令;
用Debug的A命令以汇编指令的格式在内存中写入一条机器指令。
二、实验结果分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
用d命令查看Result存储单元的值
二、实验结果分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
1、
音乐乐曲演奏程序课程设计报告
![音乐乐曲演奏程序课程设计报告](https://img.taocdn.com/s3/m/7ef3d659312b3169a451a429.png)
南通大学电气工程学院微机原理课程设计报告书课题名按键选择音乐播放和步进电机正反转控制班级电084班姓名陈彬小组成员陈彬陈海冬张晓天指导教师胡慧日期 2011.6.21 ~ 2011.6.30第一部分——软件设计按键选择音乐播放目录1、设计目的----------------------------------------------------------------------------------22、设计内容-------------------------------------------------------23、设计过程--------------------------------------------------------2 -------3.1流程图----------------------------------------------------2 -------3.2通用发声程序设计原理--------------------------------------3 --------3.3主要的宏和过程的实现-------------------------------------4 ------------------3.3.1DISPLAY显示宏----------------------4------------------3.3.2ADDRESS音乐地址宏-----------------5------------------3.3.3MUSIC宏----------------------------5------------------3.3.4通用发生程序GENSOUND-------------6------------------3.3.5WAITF延时程序----------------------6------------------3.3.6CLEAR清屏程序----------------------7------------------3.3.7RETU退出--------------------------7 --------3.4主程序实现------------------------------------------------8 ------------------3.4.1数据段定义--------------------------8------------------3.4.2堆栈段定义--------------------------8------------------3.4.3初始化------------------------------9------------------3.4.4程序执行过程------------------------94、系统调试------------------------------------------------------95、附录(程序清单)---------------------------------------------------------------------116、收获体会---------------------------------------------------------------------------------177、参考文献------------------------------------------------------171、设计目的1.能够较全面地巩固和应用课堂中所学的基本理论和程序设计方法,能够较熟练地完成汇编语言程序的设计和调试。
乐曲程序的设计与实现汇编
![乐曲程序的设计与实现汇编](https://img.taocdn.com/s3/m/3bc702f22e3f5727a4e962aa.png)
学号:13课程设计课程名称汇编语言程序设计题目乐曲程序的设计与实现学院计算机科学与技术学院专业计算机科学与技术班级0909班姓名王世创指导教师伍新华2011 年12 月30 日目录课程设计任务书 (1)1、实验内容及要求 (1)2、实验原理 (1)2.1 通用发声程序原理 (1)2.2 乐曲的频率和节拍 (3)3、方案设计及说明 (4)3.1 设计实现及功能 (4)3.2 流程图 (4)4、详细设计 (6)4.1 程序段说明 (6)4.2 主要的宏和过程实现 (6)4.2.1 DISPLAY显示宏 (6)4.2.2 ADDRESS显示宏 (6)4.2.3 MUSIC显示宏 (7)4.2.4 GENSOUND通用发声程序 (8)4.2.5 WAITF延时程序 (9)4.2.5 EXIT退出 (10)5、调试过程及实验结果分析 (10)5.1 调试过程 (10)5.5实验结果 (11)6、设计心得与改进方案 (12)6.1注意事项 (12)6.2 改进方案 (13)6.3 心得体会 (13)7、参考文献 (13)8、程序清单 (14)课程设计任务书学生姓名:王世创专业班级:计算机科学与技术学院0909指导教师:伍新华工作单位:计算机科学与技术学院题目: 乐曲程序的设计与实现初始条件:理论:完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。
实践:完成了《汇编语言程序设计》的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)进一步理解和掌握程序直接控制I/O方式,掌握计算机发声程序的设计。
具体的设计任务及要求:1.采用位触发方式编写程序,使计算机发出音响并演奏乐曲(例如《两只老虎》等)。
1)进一步理解程序直接控制I/O方式和位触发方式控制声音的工作原理。
微机原理课程设计
![微机原理课程设计](https://img.taocdn.com/s3/m/bfac9a9951e79b89680226df.png)
音乐演奏程序设计1设计任务使用汇编语言设计一个在计算机上运行的音乐演奏程序,屏幕显示钢琴图像,按“A”键唱乐曲,按“X”鍵退出。
2任务扩展实现以下附加功能之一:(1)按“B”键,播放暂停;(2)按“C”键,实现重复播放;(3)按“D”键,加快播放速度;(4)按“E”键,降低播放速度;(5)按“F”键,直接跳转到下首歌。
我选择的附加功能是按“F”键,直接跳转到下一首歌。
3程序设计3.1程序设计思路画钢琴界面时,先画出一个钢琴键,然后再用循环画出其余的钢琴键。
画单个钢琴键时,先画出下面的长方形,然后画出上面的平行四边形,然后画出右边的短横线,短横线也是用循环的方法画出那么多来的。
画完所有的钢琴键后,再单独画出最后一个键右边的平行四边形阴影。
实现下一首功能是通过改变FLAG的值,让FLAG自动加一,然后比较FLAG 里面的值,按顺序跳到相应的地址,播放相应的音乐。
当FLAG的值为3后,自动将FLAG值改为零,此时再按下“F”,FLAG的值就会加一,变为“1”,然后又开始播放第一首歌。
任何时刻按下“X”,就会退出程序。
3.2程序流程图单个钢琴键的绘制程序的流程图如下:图 3.1:单键绘制流程图整个钢琴键盘绘制程序的流程图如下:图3-2:钢琴键盘绘制流程图音乐播放程序的流程图如下:图3-3:音乐播放程序的流程图3.3程序清单汇编程序的所有源代码如下:;画横线DRAW_LINEX MACRO START_X,START_Y,END_X,COLOR LOCAL PAINTPUSH AXPUSH BXPUSH CXPUSH DXMOV CX,START_XMOV DX,START_Y ;设置起始坐标MOV AH,0CH ;写像素MOV AL,COLOR ;颜色设置MOV BX,0 ;在当前页操作PAINT:INT 10H ;调用中断进行画一个像素点INC CX ;每画一个像素点,横坐标加一CMP CX,END_X ;判断是否画完JNZ PAINT ;未画完,就继续画下一个像素POP DXPOP CXPOP BXPOP AXENDM; 画竖线DRAW_LINEY MACRO START_X,START_Y,END_Y,COLORLOCAL PAINT1PUSH AXPUSH BXPUSH CXPUSH DXMOV CX,START_XMOV DX,START_YMOV AH,0CHMOV AL,COLORMOV BX,0PAINT1:INT 10HDEC DX ;没画完一个像素点,纵坐标减一CMP DX,END_Y ;判断是否画完JNE PAINT1 ;未画完,继续画下一个像素点POP DXPOP CXPOP BXPOP AXENDM;画矩形DRAW_REGTANGLE MACRO START_X,START_Y,END_X,END_Y,COLOR LOCAL DRAW_NEXTPUSH AXPUSH BXPUSH CXPUSH DXMOV AH,0CHMOV AL,COLORMOV BH,0MOV CX,START_XMOV DX,START_YDRAW_NEXT:INT 10HINC CXCMP CX,END_X ;判断一行是否画完JNE DRAW_NEXT ;未画完继续MOV CX,START_X ;回到起始横坐标DEC DX ;每画完一行,列坐标减一CMP DX,END_Y ;判断矩形是否画完JNE DRAW_NEXT ;未完继续画下一行POP DXPOP CXPOP BXPOP AXENDM;画右斜平行四边形DRAW_PARALLELOGRAMX MACRO START_X,START_Y,END_X,END_Y,COLOR LOCAL DRAWPXPUSH DSPUSH SSMOV SI,START_XMOV DI,START_Y ;设置起始坐标MOV BP,END_XDRAWPX:DRAW_LINEX SI,DI,BP,COLOR ;调用画横线宏INC SI ;每画完一行,横坐标起始点加一INC BP ;横坐标终点加一DEC DI ;纵坐标起始点减一CMP DI,END_Y ;判断是否画完JNE DRAWPX ;未画完,继续画下一行POP DSPOP SSENDM; 画阴影四边形DRAW_PARALLELOGRAMY MACRO START_X,START_Y,END_X,END_Y,COLOR LOCAL DRAWPYPUSH DSPUSH SSMOV SI,START_XMOV DI,START_YMOV BP,END_YDRAWPY:DRAW_LINEY SI,DI,BP,COLOR ;调用画竖线宏INC SI ;每画完一列,横坐标起始点加一 DEC BP ;纵坐标终点减一DEC DI ;纵坐标起始点减一CMP SI,END_X ;判断是否画完JNE DRAWPY ;未画完,继续画下一列POP SSPOP DSENDM;画间隙中的横线(侧边部分)DRAW_PARALINE1 MACRO START_X,START_Y,END_Y1,COLOR LOCAL NEXT_LINE1PUSH AXPUSH BXPUSH CXPUSH DXPUSHFPUSH DSMOV CX,START_XMOV DX,START_YMOV SI,START_XADD SI,2 ;横线长度为2MOV AH,0CHMOV AL,COLORMOV BX,0NEXT_LINE1:INT 10HINC CXCMP CX,SIJNE NEXT_LINE1MOV CX,START_XSUB DX,2 ;横线间间隙为2CMP DX,END_Y1JAE NEXT_LINE1POP DSPOPFPOP DXPOP CXPOP BXPOP AXENDM;画间键身间隙间的横线(键体部分)DRAW_PARALINE2 MACRO START_X,START_Y,END_Y2,COLOR LOCAL NEXT_LINE2,GO_ONPUSH AXPUSH BXPUSH CXPUSH DXPUSHFPUSH DSPUSH SSMOV SI,START_XMOV DI,START_YMOV BP,START_XADD BP,2 ;横线长度为2MOV AH,0CHMOV AL,COLORMOV BX,0GO_ON:ADD SI,2 ;每画完一条,起始横坐标加2 SUB DI,2 ;纵坐标减2ADD BP,2 ;终点横坐标加2MOV CX,SIMOV DX,DI ;重新设置起始点坐标NEXT_LINE2:INT 10HINC CX ;画完一个像素点,横坐标加一CMP CX,BP ;判断一条横线是否画完JNE NEXT_LINE2 ;未画完,继续画CMP DX,END_Y2 ;判断是否全部画完JA GO_ON ;未完,继续POP DSPOP SSPOPFPOP DXPOP CXPOP BXPOP AXENDMDATA SEGMENTWHITE DB 0FFHBLACK DB 0YELLOW DB 88HGRAY DB 8 ;键盘颜色定义STARTX DW 100 ;起始横坐标STARTY DW 300 ;起始纵坐标ENDX DW 130ENDY DW 280LASTX DW ?LASTY DW 200FLAG DB 1RATE DW ? ;播放速度变量INFO1 DB 0DH,0AH,'Welcome to this interface!$' INFO2 DB 0DH,0AH,'Please enter A to start!$'INFO3 DB 0DH,0AH,'OPTIONS:$'INFO4 DB 0DH,0AH,'WRONG ORDER!$'INFO5 DB 0DH,0AH,'INPUT AGAIN!$'INFO6 DB 0DH,0AH,'GO TO NEXT MUSIC!$'MUSLIST DB 0DH,0AH,'A: START'DB 0DH,0AH,'F: NEXT MUSIC'DB 0DH,0AH,'X: ESC'DB 0DH,0AH,'$' ;提示语;音乐一------------------------------------------------------------ MUS_FREG1 DW 330,294,262,294,3 DUP (330)DW 3 DUP (294),330,392,392DW 330,294,262,294,4 DUP (330)DW 294,294,330,294,262,-1MUS_TIME1 DW 6 DUP (25),50DW 2 DUP (25,25,50)DW 12 DUP (25),100;音乐二----------------------------------------------------------- MUS_FREG2 DW 330,392,330,294,330,392,330,294,330DW 330,392,330,294,262,294,330,392,294DW 262,262,220,196,196,220,262,294,332,262,-1MUS_TIME2 DW 3 DUP(50),25,25,50,25,25,100DW 2 DUP(50,50,25,25),100DW 3 DUP(50,25,25),100;音乐三----------------------------------------------------------- MUS_FREG3 DW 262,262,294,262,349DW 330,262,262,294,262DW 392,349,262,262,523DW 440,349,262,262,466DW 466,440,262,392,349,-1MUS_TIME3 DW 50,50,100,100,100DW 100,100,50,50,100,100DW 100,100,100,50,50,100DW 100,100,100,100,100,50DW 50,100,100,100,100,100 ;音乐段DATA ENDSSTACK SEGMENTDB 400 DUP ('STACK')STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: ;主程序MOV AX,DATAMOV DS,AXCALL PIANOCALL MUSIC_PLAY; 音乐播放子程序MUSIC_PLAY PROCSHOW MACRO b ;定义一个宏显示字符串LEA DX,bMOV AH,9INT 21HENDMADDRESS MACRO A,B ;音乐地址宏LEA SI,ALEA BP,DS:BENDMSHOW INFO1SHOW INFO2SHOW INFO3SHOW MUSLIST ;提示语INPUT:MOV AH,01HINT 21HCMP AL,'X'JZ RETU ;按下为‘X’则退出dosCMP AL,'A' ;按下为‘A’则播放音乐JZ A0 ;是则跳到A0SHOW INFO4SHOW INFO5JMP INPUT ;否则提示输入错误,重新开始A0:ADDRESS MUS_FREG1,MUS_TIME1MOV RATE,7500 ;设置正常播放速度CALL MUSICJMP AGAINF0:CMP AL,'F'JNZ EXITNEXT:SHOW INFO6ADD FLAG,1NUM1:CMP FLAG,1JNZ NUM2ADDRESS MUS_FREG1,MUS_TIME1CALL MUSICJMP AGAINNUM2:CMP FLAG,2JNZ NUM3ADDRESS MUS_FREG2,MUS_TIME2CALL MUSICJMP AGAINNUM3:MOV FLAG,0ADDRESS MUS_FREG3,MUS_TIME3CALL MUSICJMP AGAINRETU:MOV AH,4CHINT 21HAGAIN:SHOW INFO5JMP INPUTEXIT:SHOW INFO4 ;按键错误,重新选择 SHOW INFO5JMP INPUTRETMUSIC_PLAY ENDP;发声GENSOUND PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DIMOV AL,0B6H ;开扬声器OUT 43H,ALMOV DX,12HMOV AX,348CHDIV DIOUT 42H,ALMOV AL,AHOUT 42H,ALIN AL,61HMOV AH,ALOR AL,3OUT 61H,ALWAIT1:MOV CX,RATE ;设置播放速度 CALL WAITFDELAY1:DEC BXJNZ WAIT1MOV AL,AHOUT 61H,ALPOP DIPOP DXPOP CXPOP BXPOP AXRETGENSOUND ENDPWAITF PROC NEARPUSH AXWAITF1:IN AL,61HAND AL,10HCMP AL,AHJE WAITF1MOV AH,ALLOOP WAITF1POP AXRETWAITF ENDPMUSIC PROC NEARPUSH DSSUB AX,AXPUSH AXFREG:MOV DI,[SI] ;获取频率值CMP DI,-1 ;音乐播放结束判断JE END_MUSMOV BX,DS:[BP]CALL GENSOUND ;播放一个频率ADD SI,2ADD BP,2 ;获取下一频率值,及其播放时间MOV AH,0BH ;判断键盘是否有键按下INT 21HCMP AL,0FFHJE INT9 ;有键按下则转去执行该指令JMP FREG ;无键按下则继续读取下一个频率值END_MUS:RETINT9:PUSHFPUSH AXPUSH DSPUSH ESPUSH CSPOP DSPUSH CSPOP ESIN AL,60H ;从键盘获取该键值ASCII码MOV AH,0INT 16H ;读取并保存到AL中CMP AL,'X' ;若为‘X’则退出dos操作界面JZ X0CMP AL,'F' ;若为‘F'则跳到下一首JZ NEXT1INT9_QUIT:POP ESPOP DSPOP AXPOPFJMP FREGX0:POP ESPOP DSPOP AXPOPFJMP RETUNEXT1:POP ESPOP DSPOP AXPOPFJMP NEXTMUSIC ENDP; 键盘绘图PIANO PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXMOV AH,0 ; 设置屏幕显示图形方式:每屏幕字符数80×25, 16色MOV AL,12HINT 10H ; 调用10H的0号功能中断; 键盘绘制主程序MOV CX,12DRAWING:CALL PIANO_DRAWCALL LINE_DRAWLOOP DRAWINGCALL PIANO_DRAWADD STARTX,30PUSH DXMOV DX,STARTXMOV LASTX,DXADD LASTX,80POP DXADD ENDX,30DRAW_PARALLELOGRAMY STARTX,STARTY,LASTX,ENDY,GRAY DRAW_LINEX 100,300,STARTX,GRAYPOP DXPOP CXPOP BXPOP AXRETPIANO ENDPPIANO_DRAW PROCDRAW_REGTANGLE STARTX,STARTY,ENDX,ENDY,WHITEDRAW_LINEX STARTX,ENDY,ENDX,GRAYDRAW_PARALLELOGRAMX STARTX,ENDY,ENDX,LASTY,WHITE RETPIANO_DRAW ENDPLINE_DRAW PROCDRAW_PARALINE1 ENDX,STARTY,ENDY,YELLOWDRAW_PARALINE2 ENDX,ENDY,LASTY,YELLOWADD STARTX,32ADD ENDX,32RETLINE_DRAW ENDPCODE ENDSEND START4程序运行与调试4.1运行程序把编好的源程序命名保存为YINYUE.asm,在MF2KP集成环境中进行调试,首先点运行选项中的调试,如果编译成功,就选择运行选项中的生成exe文件,这样就产生了一个可运行程序,然后点击运行,就会看到与题目要求相符的界面.程序运行截图:开始界面:图4-1:开始界面运行开始后显示钢琴界面,并显示提示语言。
汇编语言音乐课程设计
![汇编语言音乐课程设计](https://img.taocdn.com/s3/m/80172f2c7ed5360cba1aa8114431b90d6d858945.png)
汇编语言音乐课程设计一、课程目标知识目标:1. 学生理解汇编语言的基本概念,掌握音乐编程的基础知识;2. 学生学会使用汇编语言编写简单的音乐程序,了解音乐与计算机编程的结合;3. 学生了解音乐在计算机领域的应用,拓宽知识视野。
技能目标:1. 学生能够运用汇编语言进行音乐编程,创作独特的音乐作品;2. 学生通过动手实践,提高逻辑思维能力和问题解决能力;3. 学生学会合作与沟通,提高团队协作能力。
情感态度价值观目标:1. 学生培养对计算机编程和音乐的兴趣,激发创造力和创新精神;2. 学生在学习过程中,体验编程与音乐的乐趣,培养积极的学习态度;3. 学生通过课程学习,认识到科技进步对音乐创作的影响,增强社会责任感。
课程性质:本课程为选修课,结合汇编语言和音乐,培养学生编程技能和音乐素养。
学生特点:学生具备一定的计算机基础知识,对音乐有兴趣,具有较强的学习意愿和动手能力。
教学要求:教师需引导学生掌握汇编语言音乐编程的基本方法,注重实践与理论相结合,关注学生的个体差异,提供有针对性的指导。
通过课程学习,使学生在知识、技能和情感态度价值观方面取得具体的学习成果。
二、教学内容1. 汇编语言基础知识:介绍汇编语言的基本概念、语法和指令,包括寄存器、内存访问、程序流程控制等,关联教材第1章内容。
2. 音乐编程基础:讲解音乐编程的基本原理,如音调、节奏、音色等,引入MIDI音乐制作相关知识,关联教材第2章内容。
3. 汇编语言音乐编程实践:a. 使用汇编语言编写简单的MIDI音乐程序,如演奏一首简单的歌曲,关联教材第3章内容;b. 学习如何调整音量、音色和节奏等参数,创作个性化的音乐作品,关联教材第4章内容;c. 探索音乐与汇编语言的深度融合,如编写互动式音乐程序,关联教材第5章内容。
4. 教学进度安排:a. 第1-2周:汇编语言基础知识学习;b. 第3-4周:音乐编程基础学习;c. 第5-6周:汇编语言音乐编程实践;d. 第7-8周:作品创作、展示与评价。
理工大学音乐课教案模板
![理工大学音乐课教案模板](https://img.taocdn.com/s3/m/c1ab5f152a160b4e767f5acfa1c7aa00b42a9d1c.png)
教学对象:理工大学生教学目标:1. 让学生了解音乐的基本知识,提高音乐素养。
2. 培养学生对音乐的兴趣,激发学生的音乐创造力。
3. 培养学生的团队协作精神,提高学生的综合素质。
教学重点:1. 音乐基本知识的学习。
2. 音乐欣赏与鉴赏能力的培养。
3. 音乐实践活动的组织与实施。
教学难点:1. 学生对音乐知识的理解与掌握。
2. 学生音乐鉴赏能力的提高。
3. 音乐实践活动的组织与实施。
教学准备:1. 教学课件或教材。
2. 音乐播放设备。
3. 音乐实践活动所需的器材。
教学过程:一、导入1. 教师通过播放一段优美的音乐,引导学生进入课堂氛围。
2. 教师简要介绍本节课的学习目标和内容。
二、音乐基本知识学习1. 教师讲解音乐的基本概念,如:旋律、节奏、和声等。
2. 学生跟随教师学习音乐符号,如:五线谱、音符、休止符等。
3. 教师通过实例讲解音乐知识,让学生更好地理解。
三、音乐欣赏与鉴赏1. 教师播放不同风格的音乐,引导学生进行欣赏。
2. 教师引导学生分析音乐作品的特点,如:旋律、节奏、和声等。
3. 学生分组讨论,分享自己对音乐作品的理解和感受。
四、音乐实践活动1. 教师组织学生进行音乐实践活动,如:合唱、独唱、乐器演奏等。
2. 学生分组练习,教师进行指导。
3. 学生展示自己的音乐作品,互相评价。
五、总结与反馈1. 教师对本节课的学习内容进行总结。
2. 学生分享自己在课堂上的收获和感受。
3. 教师对学生的表现进行评价,提出改进意见。
教学反思:1. 本节课的教学目标是否达成?2. 学生的学习兴趣是否被激发?3. 教学方法是否有效?4. 学生对音乐知识的掌握程度如何?5. 如何改进教学,提高教学质量?教学评价:1. 学生对音乐知识的掌握程度。
2. 学生的音乐欣赏与鉴赏能力。
3. 学生的音乐实践活动表现。
4. 学生的课堂参与度。
教学时间:1课时备注:本教案可根据实际情况进行调整和补充。
音乐演奏程序
![音乐演奏程序](https://img.taocdn.com/s3/m/6308a00fde80d4d8d15a4f60.png)
课 程 设 计题 目 音乐演奏程序 学 院 自动化学院 专 业 电气工程及其自动化班 级 姓 名 指导教师2014年1月 9 日课程设计任务书学生姓名:专业班级:指导教师:工作单位:自动化学院题目: 音乐演奏程序设计要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.使用汇编语言设计一个在计算机上运行的音乐演奏程序;2.屏幕显示钢琴图像;3.按大写字母“A”,唱乐曲1;按大写字母“B”,唱乐曲2;按大写字母“C”,唱乐曲3,依次类推;4.按"X"鍵,退出5.撰写课程设计说明书。
内容包括:摘要、目录、正文、参考文献、附录(程序清单)。
正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。
时间安排:月日----- 月日查阅资料及方案设计月日----- 月日编程月日----- 月日调试程序月日----- 月日撰写课程设计报告指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (1)1音乐演奏的基本原理 (2)2设计方案 (2)2.1设计内容 (2)2.2主要宏与主要过程 (3)2.2.1音乐载入宏 (3)2.2.2PlayMusic宏 (3)2.2.3通用发声程序都soundout (4)2.2.4WAITF延时程序 (5)2.2.5CLEAR清屏程序 (6)2.2.6stdout 宏 (7)2.3主程序实现 (7)2.3.1数据段定义 (7)2.3.2堆栈段定义 (8)2.3.3初始化 (8)2.4程序调试运行 (9)3软件设计 (10)3.1主程序流程图 (10)3.2PlayMusic子程序流程图 (11)4结论 (12)5心得和体会 (12)参考文献 (14)附录 (15)摘要音乐演奏实现的一个主要步骤是乐谱编程。
通过相应的频率表将乐谱中对应的音符转化为计数器的计数初值,节奏通过延时程序利用硬件实现频率计数和延时时间的控制,利用8253-5定时/计数器芯片和8255A并行I/O接口芯片。
乐曲自动演奏器课程设计
![乐曲自动演奏器课程设计](https://img.taocdn.com/s3/m/08588bb7b9f67c1cfad6195f312b3169a551ea42.png)
乐曲自动演奏器课程设计一、课程目标知识目标:1. 学生能理解乐曲自动演奏器的原理与构造,掌握相关的电子元件功能。
2. 学生能掌握编程控制乐曲自动演奏器的基本步骤和方法。
3. 学生能了解不同音乐风格及其在自动演奏器中的应用。
技能目标:1. 学生能运用所学知识,独立设计并搭建一个简单的乐曲自动演奏器。
2. 学生能通过编程实现对乐曲自动演奏器的控制,演奏出简单的旋律。
3. 学生能运用团队协作能力,共同完成一个具有创意的乐曲自动演奏器项目。
情感态度价值观目标:1. 学生培养对音乐和电子技术的兴趣,激发创新意识和探索精神。
2. 学生在实践过程中,学会发现问题、分析问题、解决问题,增强自信心。
3. 学生通过团队协作,培养合作精神,提高沟通与表达能力。
4. 学生关注环保,养成节约资源、爱护公物的良好习惯。
课程性质:本课程为跨学科综合实践课程,结合音乐、电子技术和编程知识,注重培养学生的动手能力、创新意识和团队协作能力。
学生特点:五年级学生具有一定的音乐基础,对新鲜事物充满好奇,动手能力较强,喜欢团队合作。
教学要求:教师应关注学生的个体差异,因材施教,鼓励学生积极参与,注重实践与理论相结合,提高学生的综合素养。
通过课程目标的分解与实施,使学生在愉快的氛围中掌握知识,提高技能,培养情感态度价值观。
二、教学内容本课程教学内容分为五个部分,确保学生能够逐步掌握乐曲自动演奏器的相关知识。
第一部分:基础知识1. 介绍乐曲自动演奏器的原理与构造,关联教材中电子技术章节。
2. 概述编程控制乐曲自动演奏器的基本方法,关联教材中编程章节。
第二部分:电子元件1. 学习并认识常见的电子元件,如电阻、电容、二极管等。
2. 掌握电子元件在乐曲自动演奏器中的作用,进行实践操作。
第三部分:编程控制1. 学习编程软件的使用,如Scratch或Arduino。
2. 编写程序,实现对乐曲自动演奏器的控制。
第四部分:音乐知识1. 了解不同音乐风格,如古典、民谣、流行等。
音乐演奏程序设计
![音乐演奏程序设计](https://img.taocdn.com/s3/m/0647981ebdd126fff705cc1755270722182e5955.png)
音乐演奏程序设计一、概述音乐演奏程序设计是指通过编写计算机程序,实现音乐的演奏和创作。
通过使用合适的算法和数据结构,程序能够生成各种音乐作品,包括旋律、和声、节奏等。
本文将详细介绍音乐演奏程序设计的基本原理、流程和实现方法。
二、基本原理1. 音乐表示音乐可以通过音符、音程、和弦、节奏等元素来表示。
在程序设计中,可以使用各种数据结构来存储和处理这些音乐元素,如数组、链表、树等。
音符可以用数字或字母代表,音程可以用半音或全音表示,和弦可以用多个音符组合表示,节奏可以用时值表示。
2. 音乐生成算法音乐生成算法是音乐演奏程序设计的核心部分。
常用的算法包括随机算法、遗传算法、规则引擎等。
随机算法可以根据一定的概率生成随机音符或和弦,遗传算法可以通过模拟进化过程生成优秀的音乐片段,规则引擎可以根据预设的规则生成符合特定风格的音乐。
3. 音乐合成技术音乐合成是将音乐元素转化为音频信号的过程。
在程序设计中,可以使用各种合成技术来实现音乐合成,如乐器模拟、采样合成、合成器等。
乐器模拟可以通过模拟乐器的声音特性来生成逼真的音乐效果,采样合成可以通过采样已有音频片段来生成音乐,合成器可以通过合成算法生成各种音乐效果。
三、流程音乐演奏程序设计的一般流程如下:1. 确定音乐风格和目标在开始设计程序之前,需要明确音乐的风格和目标。
不同的音乐风格有不同的特点和要求,因此需要根据目标来选择合适的算法和技术。
2. 设计音乐数据结构根据音乐元素的特点,设计合适的数据结构来存储音乐信息。
可以使用数组、链表、树等数据结构来表示音符、和弦、节奏等。
3. 实现音乐生成算法根据所选的算法和数据结构,编写相应的代码来实现音乐生成算法。
可以使用编程语言如C++、Python等来实现算法。
4. 实现音乐合成技术选择合适的音乐合成技术,编写相应的代码来实现音乐合成功能。
可以使用合成器、乐器模拟库等工具来实现音乐合成。
5. 调试和优化在完成程序编写后,进行调试和优化工作。
流行音乐乐曲演奏程序
![流行音乐乐曲演奏程序](https://img.taocdn.com/s3/m/ed8632e7524de518964b7d64.png)
流行音乐乐曲演奏程序一、需求说明1、通过一个较大型实用程序的设计与实现,综合运用所学知识,加深理解和掌握。
同时培养学生分析问题和解决问题的能力,以及自学能力。
2、编写用键盘选择计算机演奏歌曲的程序,歌曲清单至少包括3首;3、程序应该有操作提示、输入和输出,界面追求友好,最好是菜单式的界面;4、设计若干用例(测试数据),上机测试程序并分析所设计的程序;二、设计说明1、简要分析为了编写一个流行音乐乐曲演奏程序,分析时按照课程设计的要求必须要有操作提示、输入和输出。
在界面设计时应该追求友好,能够使用户便于使用该程序。
而且按照课题要求最好能够实现菜单式的界面,进一步提高该程序界面的友好性。
同时,在设计分析时也必须解决发声问题。
分析设计时按照课本P383(10.4 通用发声程序)所示的设计方法解决发声问题。
2、概要分析2.1 用户界面以下是显示音乐菜单的字符串msgmenu db'************************************** ',0dh,0ahdb'* The pop music menu is that: * ',0dh,0ahdb'* * ',0dh,0ahdb'* 1:dahai * ',0dh,0ah ;张宇生《大海》db'* 2:dongfengpo * ',0dh,0ah ;周杰伦《东风破》db'* 3:dashetou * ',0dh,0ah ;吴克群《大舌头》db'************************************** ',0dh,0ah,'$'2.2 模块定义、原理2.2.2 提示选择乐曲msgchoose db 0dh,0ah,'Input the number(1~3) <q to exit>to choose the music you want,input:','$'在出现菜单时,同时出现选择乐曲模块,帮助用户认识菜单和操作菜单的方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学号:0121010340112课程设计课程名称汇编语言程序设计题目乐曲演奏程序学院计算机科学与技术学院专业计算机科学与技术班级1001班姓名XXX指导教师XXX2012 年06 月27 日课程设计任务书学生姓名: XXX 专业班级:计科1001班指导教师: XXX 工作单位:计算机科学与技术学院题目: 乐曲演奏程序初始条件:理论:完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。
实践:完成了《汇编语言程序设计》的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)理解键盘接口的工作原理,掌握BIOS键盘I/O功能,掌握复杂内存数据结构的定义和管理方法。
具体的设计任务及要求:1)采用位触发方式编写程序,使计算机发出音响并演奏乐曲;2)要求在屏幕上用键盘选择歌曲;3)程序采用子程序结构,结构清晰;4)友好清晰的用户界面,能识别输入错误并控制错误的修改。
在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书。
阅读资料:1)《IBM—PC汇编语言程序设计实验教程》实验2.42)《IBM—PC汇编语言程序设计(第2版)》例6.11时间安排:设计安排一周:周1、周2:完成系统分析及设计。
周3、周4:完成程序调试,和验收。
周5:撰写课程设计报告。
指导教师签名:年月日系主任(或责任教师)签名:年月日乐曲程序的设计与实现1.实验原理1.1 音调与频率和时间的关系利用计算机控制发声的原理,可以编写演奏乐曲的程序。
乐曲是按照一定的高低、长短和强弱关系组成的音调。
在一首乐曲中,每个音符的音高和音长与频率和节拍有关。
组成乐曲的每个音符的频率值和持续时间是乐曲程序发声需要的两个数据。
但实际上卷入计数器的输入频率与音符频率相除的值,通用发声程序的前半部分就是完成这个计算,并将计数值送入计数器2的功能。
音符的持续时间是根据乐曲的速度及音箱的节拍数来确定的。
1.2 乐曲的频率和节拍乐曲是按照一定的高低、长短、强弱组成的音调。
在一首乐曲中,每个音符的音高和音长和频率和节拍有关。
每个音符的频率值和持续时间是乐曲程序发声需要的两个必要数据。
高音阶从中C(263)到高C(523), 各个音阶对应的频率如下所示:DW 263 --------- CDW 294 --------- DDW 330 --------- EDW 349 --------- FDW 392 --------- GDW 440 --------- ADW 494 --------- BDW 523 --------- C如果知道了乐曲的曲谱,就可以将每个音符的频率和持续时间定义为两个数据表,然后通过调用子程序将表中数据取出,通过扬声器发声。
例如MERRY CHRISTMAS频率表和节CHST_F dw 7 dup(330),392,262,294,330,4 dup(349),2 dup(330),330,294,294,262,294,392 dw 7 dup(330),392,262,294,330,4 dup(349),2 dup(330),392,392,349,294,262,0 CHST_T dw 2 dup(25,25,50),4 dup(25),100,2 dup(25,25,50)dw 4 dup(25),2 dup(50),2 dup(25,25,50)dw 4 dup(25),100,2 dup(25,25,50),4 dup(25),100其中,CHST_F为频率表,CHST_T为节拍表,两个表中的数据一一对应,每一组代表着乐曲中的一个音符,频率表中以0作为结束的标志。
1.3 实验要求1.进一步理解和掌握程序直接控制I/O方式,掌握计算机发声程序的设计。
具体的设计任务及要求:1) 进一步理解程序直接控制I/O方式和位触发方式控制声音的工作原理。
2) 一首乐曲是由不同频率和节拍的音调组成,因此控制脉冲的频率和持续时间是编写乐曲程序的关键。
根据已知的音符频率对照表,设置乐曲的频率表和节拍时间表;3) 编写程序并调试通过。
2.了解定时器的工作原理,掌握利用定时器产生声音的方法,使计算机演奏乐曲(例如《两只老虎》等)。
编写程序并调试通过。
1.4 通用发声程序的设计原理PC机发声系统以8254的2号计数器为核心。
系统初始化时,2号计数器I作在“方波发生器”方式,初值为二进制数,,写入顺序为先低后高,CLK2为1.193182MHz,当计数初值为533H时,OUT2输出的方波大约为900Hz,经过简单的滤波之后,送至扬声器。
改变1.4号计数器的计数初值就可以使扬声器发出不同频率的音响。
ROM BIOS 中有个BEEP子程序,这能根据BL中组出的时间计数值控制8254定时器,产生持续时间为1个或几个0.5秒,频率为896HZ的声音,我们可以利用并修改BEEP,使其产生任一频率的声音。
为此我们需要做两点修改,首先,BEEP程序只能产生896HZ的声音,我们的通用发声程序应能产生任一频率的声音。
其次,BEEP产生声音的持续时间(音长)只能是0.5秒的倍数,我们希望声音的持续时间更易于调整,例如可以是10ms的倍数。
我们知道BEEP能将计数值533H送给定时器2产生896HZ的声音的,那么产生其它频率声音的时间计数值应为:533H×896÷给定频率=123280H÷给定频率发声程序包括3个步骤:(1)在8253中的42端口送一个控制字0B6H(10110110B),该控制字对定时器2进行初始化,使定时器2准备接收计数初值。
(2)在8253中的42H端口(Timer2)装入一个16位的计数值(533H×895/频率),以建立将要产生的声音频率。
(3)把输出端口61H的PB0、PB1两位置1,发出声音。
对于发音部分。
PC机上的大多数输入/输出(I/O)都是由主板上的8255(或8255A)可编程序外围接口芯片(PPI)管理的。
PPI包括3个8位寄存器,两个用于输入功能,一个用于输出功能。
输入寄存器分配的I/O端口号为60H和62H,输出寄存器分配的I/O端口号为61H。
由PPI输出寄存器中的0、1两位来选择扬声器的驱动方式。
连接到扬声器上的是定时器2,从上图可以看到,GATE2与端口61H的PB0相连,当PB0=1时,GATE2获得高电平,使定时器2可以在模式3(方波)下工作。
定时器2的OUT2与端口61H的PB1通过一个与门与扬声器的驱动电路相连。
当PB1=1时,允许OUT2的输出信号到达扬声器电路。
因此,只有PB0和PB1同时为“1”时,才能驱动扬声器地声。
通过以下指令实现:IN AL,61HOR AL,3OUT 61H,AL上面的指令用以打开扬声器,如要关闭扬声器时则为:AND AL,0FCHOUT 61H,AL当从8255中采集到输入的数据时,需要确定相应的频率,所以在软件编程时要建立一个数据表:TABLE DW 493,440,392,349,329,293,261把相应的频率送到一个寄存器上,通过公式:计数值=533H×896÷ f=1234DCH÷ f算出计数值,再把算得的计数值送给8253,就可产生所要频率的方波。
在把计数值送8253前,必须先把8253进行初始化:MOV AL,0B6HOUT 43H,AL使其选用通道2,工作在方式3下。
就整个电路而言,接好电路后,通过软件编程不断地采集从8255口中输入的信号,而8个开关都接在8255的A口上,只要有开关按下,就会采集到一个数据,根据这个数据与事先编好的表对应,得到一个计数值,把这个计数值送给8253的通道2,8253的通道2工作的方式3下,这样就可以产生满足频率要求的发声方波。
这个方波经驱动放大就可以使扬声器发出相应的声音。
所以8255在这里完成两个任务,它不仅从A口中采集到数据,而且B口的PB1和PB0两个位要控制发声。
8253的主要任务就是产生所要求发声的不同频率的方波。
2、方案设计及说明2.1 设计实现及功能了解了乐曲演奏的原理,就可以开始设计方案。
首先,明确整个程序的结构及各个程序段的结构和功能,然后设计流程图。
按照要求,程序需要完成的功能如下所示:1.程序需要通过定时器原理完成播放乐曲的功能,这是最基本的功能。
2.在程序中添加一个键盘发声功能,即通过按键盘上不同的按键来发出不同频率的音符。
3.程序应该有判断用户输入是否符合规定,如果输入不正确,应该有所提示。
4.在用户输入较多的情况下,选择界面会显得较为凌乱,所以添加一个清屏功能显得很有必要。
5. 在主界面选择不同的选项时,应该跳转到不同的子界面,结束之后再返回主选择界面。
2.2 流程图开始显示提示信息接收键盘输入是“Q ”?是“A ”?是“C ”?是“B ”?退出程序将音乐节拍频率地址导入ADDRESS 调用MUSIC ,播放音乐显示错误提示调用清屏程序是是是是否否否否说明:在进入主界面的时候有6个选项,分别是1: MUSIC1 -- MERRY CHRISTMAS2: MUSIC2 – TAIHU3: MUSIC3 -- LITTLE BEE4: PLAY BY KEYBOARD5: PRESS 5 TO QUIT6: CLEAR THE SCREEN通过选择不同的选项进入其子界面来实现不同的功能。
2.3 关键代码设计实现及分析2.3.1 程序段说明1) DATAS为数据段,其中存放在程序中所要显示的提示选择信息,还有乐曲的频率表和节拍表,和键盘控制发声对应的音符表。
2) CODES为代码段,由于在整个程序中各个子程序都定义为NEAR,所以只需要有一个代码段,各个子程序的定义及实现都放在其中。
2.3.2 PLAY_MUSIC 乐曲演奏程序的实现及分析“PLAY_MUSIC”为播放音乐的子程序,完成的功能是通过SI(频率表的偏移地址) BP(节拍表的偏移地址)(通过主程序传递过来的参数)找到对应的频率(DI)、节拍(BX),再以DI、BX为参数调用SOUNDF子程序来发出声音。
关键代码:FREQ:MOV DI, [SI]CMP DI, 0JE END_MUSICMOV BX, DS:[BP]CALL SOUNDF ; 以DI(频率) BX(节拍)为参数,调用SOUNDFADD SI, 2ADD BP, 2JMP FREQSI, BP是频率表和节拍表的偏移地址,通过寄存器间接寻址方式找到数据段中定义数据,传递给BX和DI,然后调用SOUNDF发出一个频率为DI,节拍数为BX的声音注意:在频率表中应该设置一个结束标志,“CMP DI, 0”,在这里以0作为结束标志。