钢琴模拟程序_第1页
钢琴模拟程序_第2页
钢琴模拟程序_第3页
钢琴模拟程序_第4页
钢琴模拟程序_第5页
已阅读5页,还剩18页未读, 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、文档编码 : CU5F5F8V8Y7 HU5F3O6K2B6 ZN6C8Z4Y9U2学号:0121114440105 课 程 设 计题 目学 院专 业班 级姓 名指导老师2022 年1 月9日武汉理工高校运算机把握技术课程设计说明书课程设计任务书同学姓名:专业班级:电气 1107 指导老师:陈 静 工作单位:自动化学院题 目: 钢琴模拟程序设计要求完成的主要任务 : (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1使用汇编语言设计一个弹奏程序, 程序运行时使 PC 机成为一架可弹奏的 “ 钢琴” ;2屏幕显示钢琴图像;3当按下数字 1-8 时,依次发出1,2,3,4,5,6,7,

2、i 八个音调;按下CTRL-C就退出“ 钢琴” 状态;4. 变调:按下键“U” 后,再弹奏和演奏时琴键相应的音符频率变高;按下键“D”后,再弹奏和演奏时琴键相应的音符频率变低;5撰写课程设计说明书;内容包括:摘要、目录、正文、参考文献、附录(程序清单);正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收成及心得体会;时间支配:12 月 26 日- 12 月 28 日查阅资料及方案设计12 月 29 日- 1 月2 日编程月日1 月 3 日- 1 月 7 日调试程序1 月 8 日- 1 月 9 日撰写课程设计报告指

3、导老师签名:年系主任(或责任老师)签名:年月日武汉理工高校运算机把握技术课程设计说明书目 录摘 要 . . 11. 设计意义 . . 22. 设计内容及其设计要求 . . 23. 总体方案论证 . . 23.1 按键与音调频率值的对应 . . 23.2 扬声器的驱动分析 . . 33.3 发声时间 . 44. 程序设计 . . 54.1 主程序设计及其流程图 . . 54.2 发声子程序 SOUND . 65 结果分析 . . 75.1 程序调试 . . 75.2 结果记录及分析 . . 8终止语 . . 9参考文献 . . 10附录:程序代码 . . 11本科生课程设计成果评定表武汉理工高校

4、微机原理及接口技术课程设计说明书摘 要汇编语言是一种功能很强的程序设计语言,也是利用运算机全部硬件特性并能直接控 制硬件的语言;汇编语言,作为一门语言,对应于高级语言的编译器,需要一个“ 汇编器”来把汇编语言原文件汇编成机器可执行的代码;高级的汇编器如 MASM ,TASM 等等为我们写汇编程序供应了许多类似于高级语言的 特点,比如结构化、抽象等;在这样的环境中编写的汇编程序,有很大一部分是面对汇编 器的伪指令,已经类同于高级语言;而此次的微机原理与接口技术(基于 16 位机)的 课程设计正是利用这个学期所学的汇编语言来设计一个键盘钢琴的应用程序,要求该汇编 语言程序能实现键盘钢琴的功能,就是

5、在键盘上按下自定义的按键之后,可以从主板的蜂 鸣器上发出确定频率的音调,而这些音调的频率都是相应音阶的特点频率,故发出的声正 好就是音乐的各个音阶声调;通过这个应用程序,依据音乐的谱子连续地按下相应按键,就可以像钢琴那样发出音 乐来,但是局限于扬声器的缘由,所发出的音乐没有真正的钢琴那样精妙;但是现在的一 些键盘钢琴的软件已经能驱动声卡,来获得更好更逼真的钢琴音乐成效了;关键词: 汇编 接口 钢琴 模拟1 武汉理工高校微机原理及接口技术课程设计说明书1. 设计意义键盘钢琴,电脑键盘代替钢琴键演奏钢琴乐曲;最原始、也是最流行的版本,音符以 ABCDEGF 为编排;让不懂音乐的网友可以快速上手,其

6、体积小,简洁便利、易传播,因 此在网上普及率最高;键盘钢琴让人可以在闲暇时刻,可以小小地消遣一下,增加生活的乐趣;由于一架钢琴过于昂贵,对于一般的一般工薪阶层的人来说,仍是很难接触到钢琴的,而键盘钢琴的 显现正好让那些业余爱好者,既中意的对钢琴音乐艺术的追求,也更廉价和便利;对于初 学音乐的人来说,这样的键盘钢琴软件更是训练的好助手,可以帮忙你快速熟识各音阶音调和旋律节奏;因此,这样的软件也许多版本,有专业版,也有简洁的 Flash 版,当然也 有此次课设要求设计的简洁版;专业版能供应多种乐器音色、录放功能、音符显示;不太好的地方是键盘要按下去才发音,没有延时,弹起来不太就手;Flash 版音

7、色也比较好,提 供了多键位,也可以自定义键位;2. 设计内容及其设计要求1使用汇编语言设计一个弹奏程序,程序运行时使 PC 机成为一架可弹奏的“ 钢琴”;2屏幕显示钢琴图像;3当按下数字 1-8 时,依次发出 1,2,3,4,5,6,7,i 八个音调;按下 CTRL-C 就退出“ 钢琴” 状态;4. 变调:按下键“U” 后,再弹奏和奏时琴键相应的音符频率变高;按下键“D” 后,再弹奏和演奏时琴键相应的音符频率变低;3. 总体方案论证3.1按键与音调频率值的对应设计汇编语言程序,要实现键盘钢琴,第一是按键的自定义设计,由于题中要求设计 的按键音调有 8 个,并且按 u 和 d 可以设置升降调,经

8、上网查找资料,设定钢琴频率如表 1-1 所示,其中设置了 7 个倍频,可用 u 和 d 来调整倍频数;表 1-1 音调频率与倍频的对应关系倍频数1 2 3 4 5 6 7 i 1 65 73 82 87 98 110 123 130 2 130 146 164 174 196 220 246 260 3 260 292 328 348 392 440 492 520 4 520 584 656 696 784 880 984 1040 5 1040 1168 1312 1392 1568 1760 1968 2080 5 2080 2336 2624 2784 3136 3520 3936 4

9、160 7 4160 4672 5248 5568 6272 7040 7872 8320 相邻倍频数音调频率之间有着两倍的关系,这样就很便利数据的储存了,只需要将其 中一个倍频的频率值储备下了,再进行二倍关系的换算可得到所需要的频率,实际调试过2 武汉理工高校微机原理及接口技术课程设计说明书程中最高设置到 7 倍频比较合适;程序数据区可储备一倍频的数据:FREQ DB 65,73,82,87,98,110,123,130 这样,不仅节省了储备空间,而且降低了储备数据的复杂程度;倍频数的设置 在数据区设置一个倍频数并且使其初始倍率为 1 DIAO DB 1 在程序中通过 u 或 d 的输入可以

10、来修改DIAO 中的数据,从而转变并且保持倍频数;设定好倍频数之后,键盘输入 1 到 8 的数字,将输入的 ascii 码转换成一倍频数据区的所对应的偏移地址,就可以用查表的方法取出所需的一倍频频率,然后在乘上已经设置好的倍频数,即可得到所需要输出的音频;3.2扬声器的驱动分析所用该程序主要是驱动电脑主板上的扬声器,依据音阶音调不同的频率值,来是扬声器发出不同的声音,从而产生想弹钢琴一样的感觉,当然音质是不能相提并论的;(在这里需要说明的是, 现在大多数笔记本主板上已没有这个扬声器,但是台式机大多仍是有的,在台式机上的成效更好点; )在电路上如下图 3-1 所示:8255PB1 图 3.1 8

11、253 的电路连接图在 PC/XT/AT 家族中,计时器芯片的 3 个通道都用其特地的功能,通道 2 是用来把握运算机的扬声器的声音频率的;通道 2 用于产生频率信号,故工作方式在方式 3,计数值为 6A4H=1190,方波输出频率为1.19MHz/1190=1KHz,此信号准备了扬声器的声调,而通道 2 的把握字就为 0B6H,1.19M 约等于十六进制 12348CH;由图 3-1 可知 8253 的通道 2 计数由 8255A 的 PB0 把握,当 PB0 输出为高电平的时候,是门 GATE2 为高电平; 此时,8253的通道 2 答应计数, 故通道 2 的输出方波受 PB0 把握,从而

12、把握扬声器的音调高低; 通道 2 的输出能否对扬声器产生连续把握仍取决于 8255A 的3 武汉理工高校微机原理及接口技术课程设计说明书PB1;当 PB1 为“0” 时, OUT2 不能通过“ 与门” ;反之就可通过“ 与门” 把握扬声器;所以,扬声器发音时间的长短取决于8255A 的 PB1 信号;另外,CPU 通过 8255A 的 C 口,得知 5283 通道 2 的状态和扬声器驱动器的状态;由上可知,需要扬声器正常发声,需要8253 和 8255A 的协同工作,而 8253 的把握字在网上查的为 43H,就同过下面的程序来初始化 8253;MOV AL, 0B6H OUT 43H, AL

13、 而通道 2 的端口地址为 42H,由于 N 值一般运算得出都大于 255,故需要一个字的写入,而又由于 8253 只有八位数据线,故字的写入需要两次,一般将 N 值直接给 AX 然后通过下面的程序即可完成;OUT 42H, AL MOV AL, AH OUT 42H, AL 而 8255A 能把握 8253 和扬声器,但是只要 PB0 和 PB1 同时为高调平, 扬声器就为开,就对 8255A 的把握就是在对扬声器的把握,在网上得知 以通过下面的程序实现扬声器的开与关;IN AL, 61H 8255A 的 B 口地址为 61H,就可OR AL,3 ;可以保证 PB0 和 PB1 同时为高调平

14、OUT 61H,AL ;打开扬声器MOV AL, AH ;可以保证 PB0 和 PB1 同时为低调平AND AL,0FCH OUT 61H,AL ;关闭扬声器3.3 发声时间 由于只要通过 8255A 将扬声器打开而不关闭, 那么只要 8253 正常工作,扬声器就会一 直发声,需要发声时间多长,只需要写一个延时子程序即可,利用 LOOP 和跳转指令就可以得到一个双循环程序, 在依据指令时间依次乘以LOOP 循环的次和跳转指令的跳转次数就可以得到想要的延时时间;子程序循环完毕在将扬声器关闭即可;延时子程序时间的长 短就是发声时间的长短;4 武汉理工高校微机原理及接口技术课程设计说明书4. 程序设

15、计4.1主程序设计及其流程图开头数据初始化( KYES 、FREQ、DIAO 等显示提示信息按键输入是修改倍频数输入是否为ESC 其他终止提示语判定输入u/d 取频率发音1-8 返回 dos 终止图 4.1 主程序的流程图如图 4-1,主程序的主要任务:1) 假如输入的 KEY 为“ESC” 时,直接跳转至退出 EXIT 处;2) 假如出输入按键为 u 或 d 时,转变倍频并且返回输入;3) 假如输入为 1 到 8 时,发出相对应的频率的声音并返回输入;4) 假如输入为其他就直接返回输入;5 武汉理工高校微机原理及接口技术课程设计说明书4.2发声子程序 SOUND 读取 8253 计数初值和音

16、长8253 置初值开启与门和 8253GATE 延时关闭与门和 8253GATE返回图 4.2 子程序 SOUND流程图子程序 SOUND 流程图如图 3-3 所示,其主要任务是完成发声,在该子程序中,分两次向通道 2 端口 42H 写入计数初值 N 的程序语句为:OUT 42H,AL MOV AL,AH OUT 42H,AL 打开和关闭扬声器的程序为:IN AL,61H ;可以保证 PB0 和 PB1 同时为高调平OR AL,3 OUT 61H,AL ;打开扬声器MOV AL,AH ;可以保证 PB0 和 PB1 同时为低调平AND AL,0FCH OUT 61H,AL ;关闭扬声器6 武汉

17、理工高校微机原理及接口技术课程设计说明书5. 结果分析5.1程序调试按上面的思路和流程图写好程序后,对程序进行调试:在选择基频的时候,最初选择的是网上给的数据:131,147,165,175,196,220,247,262,而在写好程序之后运行发觉,输入 1 到 7 或 u/d 是,程序正常运行,但是一旦输入为 8 的时候,程序就会显现如图 5-1 所示错误,经过 debug 过程分析后,发觉 262 超过了 db 类型的范畴;解决这个问题,最初的方案是把类型从db 换成 dw,但是认为仍要修改后面的程序,所以选择了将基频储备区的数据降到原先的一半运行之后成功解决;图 5.1 调试图7 武汉理

18、工高校微机原理及接口技术课程设计说明书5.2结果记录及分析 调试之后,运行结果和课题的设计要求完全相符合;开头运行程序,能看到如下图5-2 所示的“Welcome to Piano of Keyboard” 程序运行开头提示语和以及如下所示操作提示语,图 5-2 操作界面图进入操作界面之后,按下1 到 8 键, pc 机会发出一倍频的所对应的音调;每按下一次u 键,倍频自动加1,直到倍频为 7 时,按下 u 键,倍频保持为7 不变,此时按下1 到 8键,便会发出对应倍频对应按键的音调;每按下一次 时按下 1 到 8 键,将发出对应倍频对应音调;当按下出 界面保持不变;按 esc键终止程序时,显

19、现如图 5-3 所示的终止语;图 5-3 终止界面图d 键,倍频减 1 直到倍频等于 1,此 esc、u、d、1 到 8 以外的按键是,8 武汉理工高校微机原理及接口技术课程设计说明书终止语通过这两周的硬件课程设计,我对微机原理及接口技术这门课有了更深的熟识,系统 的把握了微机原理及接口的应用学问;这次课程设计我做的是用开关模拟电子琴发声;在老师确定题目后,我便去图书馆查 阅了大量的关于开关输入和发声程序设计的书籍,然后确定好自己的方案,对自己的设计 有了一个大致的思路;通过编程,我学会了如何独立的写出程序,提高了自己的分析解决 问题的才能,并且使自己所学的学问与实践相结合,应用到实践当中;课

20、程设计中涉及到许多接口芯片, 使我对这些芯片有了更深的熟识,对芯片的各种工作方式有了更深的懂得,虽然没有进行硬件的调试,但通过设计,我也学到了许多书本上没有的学问;在设计当中 遇到了许多的问题,但通过查找资料,克服了这些问题,提高了自己在实际当中解决问题 的才能;虽然此次课程设计的过程是艰辛的,但结果仍是令我比较欣慰的;在此特别感谢老师 对我的指导;9 武汉理工高校微机原理及接口技术课程设计说明书参考文献1 周佩玲,彭虎,傅忠谦 .微机原理与接口技术(基于16 位机),电子工业出版社, 2022. 2 周佩玲,吴耿峰,万炳奎编 .十六位微型运算机原理接口及其应用,中国科学技术高校 出版社, 1

21、995. 3 周明德 .微型运算机系统原理及应用 (第四版) 习题集与试验指导书, 清华高校出版社,2022. 4 戴梅萼 .微型运算机技术及应用 第三版 .清华高校出版社, 2022. 5 孙德文 .微型运算机技术 .高等训练出版社, 2022. 6 王爽 .汇编语言 .清华高校出版社 其次版 ,2022 10 武汉理工高校微机原理及接口技术课程设计说明书附录:程序代码DRAWLINE0 MACRO START_X,START_Y,END_X,COLOR ; 画横线LOCAL PAINT PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,0CH MOV AL,CO

22、LOR MOV BX,0 MOV CX,START_X MOV DX,START_Y PAINT: INT 10H INC CX CMP CX,END_X JC PAINT POP DX POP CX POP BX POP AX ENDM DRAWLINE1 MACRO START_X,START_Y,END_Y,COLOR ; 画竖线 LOCAL PAINT PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,0CH MOV AL,COLOR MOV BX,0 MOV CX,START_X MOV DX,START_Y PAINT: INT 10H INC DX C

23、MP DX,END_Y 11 武汉理工高校微机原理及接口技术课程设计说明书 JC PAINT POP DX POP CX POP BX POP AX ENDM DRAWOBILQUE MACRO START_X,START_Y,END_X,COLOR ; 画斜线 向右倾斜LOCAL PAINT2 PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,0CH MOV AL,COLOR MOV BX,0 MOV DX,START_Y MOV CX,START_X PAINT2: INT 10H DEC CX INC DX CMP CX,END_X JA PAINT2 POP

24、 DX POP CX POP BX POP AX ENDM DRAW MACRO START_X,START_Y,END_X,END_Y,COLOR ; 画填充矩形 LOCAL DRAW_NEXT PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,0CH ; 写像素点12 武汉理工高校微机原理及接口技术课程设计说明书 MOV AL,COLOR ; 设置颜色 MOV BH,0 ; 选用页号 0 MOV CX,START_X ; 列起始点 MOV DX,START_Y ; 行起始点DRAW_NEXT: INT 10H ; 画点 INC CX ; 画横线 CMP CX,E

25、ND_X ; 比较行是否画完 JNE DRAW_NEXT ; 画另一行 MOV CX, START_X ; 另一行的起始点 INC DX CMP DX,END_Y ; 比较列是否画完 JNE DRAW_NEXT ; 未完连续画 POP DX POP CX POP BX POP AX ENDM DATA SEGMENT DIAO DB 1 KEYS DB 12345678 FREQ DB 65,73,82,87,98,110,123,130 WELC DB WELCOME TO PIANO OF KEYBOARD,0DH,0AH EXPL DB EXPLANATION:, 0DH,0AH, KE

26、Y:1 2 3 4 5 6 7 8 NOTES 1 2 3 4 5 6 7 I,0DH,0AH, KEY:U NOTES RISE THE TONE,0DH,0AH, KEY:D NOTES LOWER THE TONE,0DH,0AH, PLEASE NOTE YOUR CAPS LOCK TRUNED OFF, 0DH,0AH ESCQ DB PLEASE PLAY:,0DH,0AH, YOU CAN TYPE ESC TO EXIT,0DH,0AH,$ LAST DB 0DH,0AH,WELCOME AGAIN.,$ WHITE DB 0FH BLACK DB 0 YELLOW DB 0

27、EEH GRAY DB 8 TABFC DW 192,294,330,350,393,441,495 BUFFER DW 0 DTIME DW 10 TONEF DW 0 TABOLINE DW 240,290,340,390,440,490 13 武汉理工高校微机原理及接口技术课程设计说明书 BLACKL DW 225,275,375,425,475 BLACKR DW 255,305,405,455,505 BBL DW 180,230,330,380,430 BBR DW 211,261,361,411,461 WL DW 101,151,201,251,301,351,401 WR D

28、W 150,200,250,300,350,400,451 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS,AX ; 初始化数据区 MOV AH,00H MOV AL,12H INT 10H MOV SI,190 ;SI=START_X MOV DI,140 ;DI=START_Y MOV BP,540 ;BP=END_X DRAWW4: DRAWLINE0 SI,DI,BP,WHITE DEC SI DEC BP INC DI CMP DI,230 JC DRAWW4 ; 画阴影 DRAW 10

29、0,230,450,250,GRAY ; 侧面阴影 MOV SI,140 PAINTSIDE4: DRAWOBILQUE 540,SI,450,GRAY INC SI CMP SI,160 JC PAINTSIDE4 ; 黑键阴影 MOV SI,140 PAINTSIDE04: DRAWOBILQUE 255,SI,210,BLACK INC SI CMP SI,150 JC PAINTSIDE04 MOV SI,140 PAINTSIDE14: 14 武汉理工高校微机原理及接口技术课程设计说明书DRAWOBILQUE 305,SI,260,BLACK INC SI CMP SI,150 JC

30、 PAINTSIDE14 MOV SI,140 PAINTSIDE24: DRAWOBILQUE 405,SI,360,BLACK INC SI CMP SI,150 JC PAINTSIDE24 MOV SI,140 PAINTSIDE34: DRAWOBILQUE 455,SI,410,BLACK INC SI CMP SI,150 JC PAINTSIDE34 MOV SI,140 PAINTSIDE44: DRAWOBILQUE 505,SI,460,BLACK INC SI CMP SI,150 JC PAINTSIDE44 ; 画分割线 MOV SI,240 REDRAW04: M

31、OV DI,SI SUB DI,90 DRAWOBILQUE SI,140,DI,BLACK ADD SI,50 CMP SI,540 JC REDRAW04 MOV SI,150 REDRAW14: DRAWLINE1 SI,230,250,BLACK ADD SI,50 CMP SI,440 JC REDRAW14 ; 画黑键盘 MOV BX,0 PAINTB4: MOV SI,OFFSET BLACKL MOV DI,OFFSET BLACKR MOV SI,SI+BX MOV BP,DI+BX 15 武汉理工高校微机原理及接口技术课程设计说明书MOV DI,140 DRAWB4: DR

32、AWLINE0 SI,DI,BP,BLACK DEC SI DEC BP INC DI CMP DI,185 JC DRAWB4 ADD BX,2 CMP BX,9 JC PAINTB4 ; 黑键底下阴影 MOV BX,0 PAINTBB4: MOV SI,OFFSET BBL MOV DI,OFFSET BBR MOV SI,SI+BX MOV BP,DI+BX DRAW SI,185,BP,195,BLACK ADD BX,2 CMP BX,9 JC PAINTBB4 ; 画键盘终止 LEA DX,WELC MOV AH,9 INT 21H ; 显示提示语句INPUT: MOV AH,7

33、INT 21H ;不回显输入键盘的KEY EXIT CMP AL,1BH ; 判定输入 KEY是否为“ESC” JZ EXIT ; 如输入 KEY为“ ESC” 就跳转到退出CMP AL,75H JNZ DOWN1 ; 输入是否为 U,不是跳到 DOWN1 LEA DI,DIAO MOV CL,DI CMP CL,64 ; 倍频数是否大于 64(7 倍频),大于 64 跳到 OUT11 JZ OUT11 SHL CL,1 ; 倍频不大于 64,左移一位,相当于乘二 MOV DI,CL DOWN1: CMP AL,64H ; 判定输入是否为D JNZ OUT11 ; 不是就跳到 OUT11 LEA DI,DIAO MOV CL,DI CMP CL,1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论