1 / 10
文档名称:

创新实验电子琴创新增强版.doc

格式:doc   大小:68KB   页数:10页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

创新实验电子琴创新增强版.doc

上传人:读书之乐 2023/9/28 文件大小:68 KB

下载得到文件列表

创新实验电子琴创新增强版.doc

相关文档

文档介绍

文档介绍:该【创新实验电子琴创新增强版 】是由【读书之乐】上传分享,文档一共【10】页,该文档可以免费在线阅读,需要了解更多关于【创新实验电子琴创新增强版 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。创新实验——电子琴(创新增强版)
班级:工双学11
朱 宏 0108
俞 淼 01082027
张珑译 01082030
指导教师:夏琴老师
6月29日
鉴于本实验有新的突破,难度加大,因此该团体由三人构成
开放实验名称
一、开发目的
1.开发学生的创新意识
2.巩固编程语言知识
3.掌握I8253芯片的使用
二、参加人员
朱宏、俞淼、张珑译
三、实验环境
基于16位Dos界面环境
四、工作原理、设计思想等
工作原理:运用8253产生一定频率和持续时间的信号。
设计思想: ‘1’--‘8’变化脉冲频率和脉冲持续时间使扬声器发出7种音调。 按键‘A’-‘H’发出二分之一音符,按键‘a’-‘h’发出四分之一音符
,按回车键奏出。
‘9’播放默认乐曲
五、流程图
开始(START)
主程序流程
N
接受输入字符
Y
退出DOS
(FINISH)
与否Esc
Y
自动播放音乐
(ATUO)
N
与否按9
N
Y
创作音乐
(CREATE)
与否Space
Y
弹奏1/4音
(PLAY3)
N
与否1/4音
N
Y
弹奏1/2音
(PLAY2)
与否1/2音
N
与否是全音符
N
END(QUIT)
创作音乐(CREATE)
START
接受输入的字符串
将字符串长度存入CX
取[字符串首地址+DI]到AL
发声
DI加1
N
比较CX DI

END

START
自动播放(AUTO)
读取默认的字符串
将字符串长度存入CX
取[字符串首地址+DI]到AL
发声
DI加1
N
比较CX,DI
END
六、源程序代码
DATA SEGMENT ;定义数据段
TABLE DW 524,588,660,698,784,880,988,1048;八个音节的发音频率
MESS DB 'PRESS SPACE TO ENTER COMPOSITION MODE',0DH,0AH,'$'
DATABUF DB 81
ACTLEN DB ?
STING DB 81 DUP(?)
SOUND DB 49 DUP(45H,41H,46H,45H,43H,42H,33H,43H,46H,45H,43H,42H, 41H,32H,42H,45H,43H,42H,41H,46H,31H,62H,61H,46H,31H,62H,61H,46H,31H,43H,62H,43H,62H,41H,43H,32H,41H,62H,41H,46H,45H,46H,35H,43H,62H,31H,45H,66H,35H)
DATA ENDS
STACK SEGMENT PARA STACK 'STACK'
STA DB 20 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
功效1,单音播放
CODE SEGMENT ;定义代码段
ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA
START: MOV AX,DATA
MOV DS,AX ;初始化DS
MOV AX,STACK
MOV SS,AX ;初始化SS
MOV AX,TOP
MOV SP,AX
MOV DX,OFFSET MESS ;取提示段的偏移地址
MOV AH,09H ;键盘功效中断,显示字符串
INT 21H
PLAY1: MOV AH,01H ;键盘功效中断,键盘输入
INT 21H
CMP AL,1BH ;判断与否是Esc
JZ FINISH ;是的话,跳出Dos
CMP AL,39H ;判断与否有“9”键
JZ AUTO ;是的话,进行自动演奏
CMP AL,20H ;判断与否是空格
JZ CREATE ;是的话,进行自主创作音乐
CMP AL,60H ;判断与否是a,b,c,d,e,f,g
JA PLAY3 ;是的话,调用程序段PLAY3
CMP AL,40H ;判断与否是A,B,C,D,E,F,G
JA PLAY2 ;是的话,调用程序段PALY2
PUSH AX
SUB AL,31H
CALL SCAN ;调用子程序SCAN
POP AX
CALL SET ;调用子程序SET
IN AL,61H ; 发音设立
OR AL,03H
OUT 61H,AL
PUSH AX
MOV AX,0FFFH ;延时设立
CALL DELAY1 ;调用子程序DELAY1
POP AX
IN AL,61H ;发音设立
AND AL,0FCH
OUT 61H,AL
JMP PLAY1 ;跳转回PLAY
FINISH: MOV AX,4C00H ;软中断,返回DOS
INT 21H
;-----------------------------------------------------------演奏1/2音符
PLAY2: PUSH AX
SUB AL,41H ;判断输入是哪个音符
CALL SCAN ;调用子程序SCAN
POP AX
CALL SET ;调用子程序SET
IN AL,61H ;发音设立
OR AL,03H
OUT 61H,AL
PUSH AX
MOV AX,07FFH ;延时设立
CALL DELAY1 ;调用子程序DELAY1
POP AX
IN AL,61H ;发音设立
AND AL,0FCH
OUT 61H,AL
JMP PLAY1 ;跳转回PLAY1
;-----------------------------------------------------------演奏1/4音符
PLAY3: PUSH AX
SUB AL,61H
CALL SCAN ;调用子程序SCAN
POP AX
CALL SET ;调用子程序SET
IN AL,61H ;发音设立
OR AL,03H
OUT 61H,AL
PUSH AX
MOV AX,03FFH ;延时设立
CALL DELAY1 ;调用延时程序DELAY1
POP AX
IN AL,61H ;发音设立
AND AL,0FCH
OUT 61H,AL
JMP PLAY1 ;跳转回PLAY1
;---------------------------------------------------------- 功效2-演奏默认乐曲
AUTO: LEA BX,SOUND
MOV CX,49 ;设立循环次数
MOV DI,0000H
JMP RPLAY1 ;跳过CREATE,至RPLAY1,
;----------------------------------------------------------- 功效3自主创作音乐
CREATE:MOV AH,0AH ;键盘功效中断,带缓冲的键盘输入
MOV DX,OFFSET DATABUF ;取缓冲区的偏移地址
INT 21H
MOV SI,OFFSET ACTLEN ;取单个字符缓冲区的偏移地址
MOV Cl,[SI]
AND CX,0FFH
MOV DI,0000H
LEA BX,STING ;取STING的偏移地址
RPLAY1:PUSH BX
MOV AL,[BX+DI] ;开始逐个取字符
CMP AL,60H ;判断与否是1/4音符
JA RPLAY3 ;是的话,调用程序段RPLAY3
CMP AL,40H ;判断与否是1/2音符
JA RPLAY2 ;是的话,调用程序段RPLAY2
PUSH AX
SUB AL,31H
CALL SCAN ;调用子程序SCAN
POP AX
CALL SET ;调用子程序SET
IN AL,61H ;发音设立
OR AL,03H
OUT 61H,AL
PUSH AX
MOV AX,0FFFH ;延时设立
CALL DELAY1 ;调用子程序DELAY1
POP AX
IN AL,61H ;发音设立
AND AL,0FCH
OUT 61H,AL
INC DI ;递加DI
CMP CX,DI ;DI与CX比较
JZ QUIT ;DI=CX的时候,跳转至QUIT
POP BX
JMP RPLAY1 ;跳转至RPLAY1
RPLAY2:PUSH BX
PUSH AX
SUB AL,41H
CALL SCAN ;调用子程序SCAN
POP AX
CALL SET ;调用子程序SET
IN AL,61H ;发音设立
OR AL,03H
OUT 61H,AL
PUSH AX
MOV AX,07FFH ;延时设立
CALL DELAY1 ;调用子程序DELAY1
POP AX
IN AL,61H ;发音设立
AND AL,0FCH
OUT 61H,AL
INC DI ;递加DI
CMP CX,DI ;DI与CX比较
JZ QUIT ;DI=CX的时候,跳转至QUIT
POP BX
JMP RPLAY1 ;跳转至RPLAY1
RPLAY3:PUSH BX
PUSH AX
SUB AL,61H
CALL SCAN ;调用子程序SCAN
POP AX
CALL SET ;调用子程序SET
IN AL,61H ;发音设立
OR AL,03H
OUT 61H,AL
PUSH AX
MOV AX,03FFH ;延时设立
CALL DELAY1 ;调用子程序DELAY1
POP AX
IN AL,61H ;发音设立
AND AL,0FCH
OUT 61H,AL
INC DI ;递加DI
CMP CX,DI ;DI与CX比较
JZ QUIT ;DI=CX的时候,跳转至QUIT
POP BX
JMP RPLAY1 ;跳转至RPLAY1
QUIT: MOV AX,4C00H ;软中断,返回DOS
INT 21H
SCAN PROC NEAR
PUSH DX
SHL AL,01
MOV BL,AL
MOV AX,0
MOV DX,12H
MOV BH,00
DIV WORD PTR[TABLE+BX]
MOV BX,AX
POP DX
RET
SCAN ENDP
;-----------------------------------------------------------对8253进行设立
SET PROC NEAR
PUSH AX
PUSH BX
MOV AL,10110110B
OUT 43H,AL
MOV AX,BX
OUT 42H,AL
MOV AL,AH
OUT 42H,AL
POP BX
POP AX
RET
SET ENDP
;-----------------------------------------------------------延时程序
DELAY1 PROC NEAR
PUSH CX
X11:MOV CX,0FFFFH
X12:DEC CX
JNZ X12
DEC AX
JNZ X11
POP CX
RET
DELAY1 ENDP
CODE ENDS
END START
七、成果评述或总结
本次实验是一次成功的团体合作,即使每个人的分工略有轻重,但是本程序的每一部分都是集体智慧的结晶。
在本次实验中,我们团体碰到了诸多的问题和困难。
由于我们编制程序采用的是功效块化分工,因此当把三个人各自负责的功效块合并在一起的时候,程序出现了严重的衔接问题。通过小组三人的多次碰头讨论和一起上机实践,重复修改,才解决了程序各方面的统一性。通过实施多功效块化调用,使程序构造紧凑,简短精练,功效齐全。
并且,在实验规定的基础上,我们小组又扩展了某些新的功效:根据音的长短,设立了全音符、1/2音符、1/4音符;添加了自动演奏默认歌曲和自己创作歌曲的功效。能够说,我们的程序已经超出了所规定的难度,也正是由于这个因素,我们小组比规定的多一种人。
本程序的基本思路来自实验教材,但是对其功效的增强和扩充也均通过团体组员的精心设计,在此过程中对微机原理理解的加深是本次实验最重要的收获。
最后,感谢夏秦老师对实验中本实验的指导和协助,在此致以最真诚的谢意。

最近更新

毕业论文精进之路-研究技巧与展示策略 28页

航天器材海上运输合同样本 7页

金牌网络经纪人基础知识 63页

老年人福利保障通用原则 9页

学习绘画基础技巧-小学绘画培养 39页

大学生的心灵驿站-引导你走向情绪和学业的双赢.. 28页

培训师的角色和技能-培训师的定义、职责和技能.. 23页

人工智能在专科课程中的应用-教学和研究效率提.. 26页

专题六我国的民族关系与对外交往公开课获奖课.. 58页

制造自动化技术n公开课获奖课件赛课一等奖课件.. 130页

2025医疗器械租赁协议书书 15页

2025厦门员工劳动合同书 16页

2025吊车机械租赁合同书 14页

2025土方购买合同书范本 13页

2025塑胶运动场工程合同书 14页

2025夫妻离婚协议书优秀范本 13页

2025学校设备采购合同书 15页

2025居家养老服务合同书协议书书 15页

2025工程劳务及周转材料承包合同书 17页

2025工程项目招投标合同管理探讨 16页

三元流叶轮改造公开课获奖课件赛课一等奖课件.. 39页

职场技能对大学生就业的影响-大学生就业指导老.. 23页

2025建筑外墙涂料施工合同书 14页

2025总公司与分公司签订承包合同书 14页

色彩与想象:幼儿园手工彩蛋教学方案 28页

2025年研判报告分析模板 25页

忻州市征收集体土地上青苗补偿标准汇总表 6页

煤矿井下供电常用计算公式及系数(共21页) 21页

中性粒细胞缺乏伴发热患者并发感染的规范诊疗.. 30页

《电机与拖动基础第版》汤天浩习题解答 62页