键盘钢琴课程设计.doc_第1页
键盘钢琴课程设计.doc_第2页
键盘钢琴课程设计.doc_第3页
键盘钢琴课程设计.doc_第4页
键盘钢琴课程设计.doc_第5页
免费预览已结束,剩余11页可下载查看

下载本文档

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

文档简介

武汉理工大学微机原理与接口技术课程设计报告书摘要汇编语言是能够利用计算机所有硬件特征且能直接用来控制硬件的一种程序设计语言,是计算机能够提供给用户的最快且最有效的编程语言。本次课设的题目是键盘钢琴汇编语言程序设计,利用PC机的发声原理,编程在键盘上设置若干键对应音阶,并对计算机里的8253和8255A等芯片进行控制,运行程序后,当按下这些键时,计算机的扬声器发出相应的声音。关键词:汇编语言,PC机发声原理,编程,键盘钢琴目录1总体方案论证11.1课程设计任务与要求11.2设计原理11.3总体设计思路12程序流程图设计及其说明23程序段落的说明43.1列写频率表和提示信息字符串43.2显示提示信息53.3字符的输入与判断63.4发声程序63.5延时功能74程序调试说明、结果记录与分析74.1程序调试过程74.2结果记录7心得体会9参考文献10附录1113键盘钢琴汇编语言程序设计1总体方案论证1.1课程设计任务与要求课程设计任务:键盘钢琴汇编语言程序设计课程设计要求:设计汇编语言程序,实现键盘钢琴功能,具体功能要求如下:1)在键盘上自定义若干键对应钢琴键;2)单击钢琴键,计算机发出相应音阶,发声时间自定义;3)单击”ESC”键退出程序。1.2设计原理PC机的发声原理为:可编程时间间隔定时器8253,能根据程序提供的计数值和工作模式产生不同频率的脉冲作为扬声器的声源。PC机上大多数I/O都是由主板上的8255(或8255A)可编程外围接口芯片(PPI)管理的。 PPI包括三个8位寄存器: 两个输入寄存器,端口地址分别是60H、62H; 一个输出寄存器,端口地址为61H。 由PPI输出寄存器中的,也就是61H端口的D0、D1位来控制扬声器的驱动。连接到扬声器上的是8253的定时器2。Couter2的GATE2与端口61H的PB0相连,当PB0=1时,GATE2获得高电平,使Counter2在模式3下工作。Couter2的OUT2与端口61H的PB1通过一个与门与扬声器的驱动电路相连。当PB1=1时,允许OUT2的输出信号到达扬声器。即PB1、PB011时,扬声器发声。1.3总体设计思路用DOC 21H中断类型的9号功能调用来显示提示信息,提示键盘上的键对应的音阶,然后用DOC 16H中断类型的0号功能调用来从键盘上读入一个字符,然后与Esc的进行比较,如果相同则退出,如果不同则与A的ASCII码进行比较,如果小于则重新出入,如不小于则与N的ASCII码进行比较,如大于则重新输入,如在A-N之间则取对应频率,然后对8253进行初始化,使其2号计数器工作在方式3下,然后用给定频率计算出计数初值,送给此计数器,令8255A的PB0和PB1置1,则发声,然后进行一秒钟的延时,然后重新输入一个字符,直到按Esc键退出。2程序流程图设计及其说明程序包括三大部分,即主程序,发声子程序,延时子程序。主程序包括显示提示信息、循环输入、对读入的字符的值进行检测并赋给相应频率、调用发声子程序、退出等功能,流程图如图2-1所示。发声子程序包括初始化8253和8255A、计算计数初值并送8253、调用延时子程序等功能,流程图如图2-2所示。延时子程序可制造10ms延时,流程图如图2-3所示。YNNY开始显示提示信息键盘输入一个字符是Esc吗?是AN键吗?退出调用发声子程序赋相应频率值图2-1 主程序流程图NY开始初始化8253计算计数初值送8253初始化8255A,发声令BX=100,CX=663调用延时子程序BX=0?结束BX-1图2-2 发声子程序流程图开始8255A的B口内容送AL,将PB4保留,其它位置零AL=AH?令AH=ALCX-1CX=0?结束NYYN图2-3 延时子程序流程图3程序段落的说明3.1列写频率表和提示信息字符串列写频率表,当输入的字符在定义的钢琴键之中时,便可通过查表得方式得到其对应频率。列写提示信息字符串,便可通过DOS 21H中断类型的 9号功能调用,来显示提示信息。DATA SEGMENT FREQ DW 175 ;频率表 DW 196 DW 220 DW 247 DW 262 DW 294 DW 330 DW 349 DW 392 DW 440 DW 494 DW 523 DW 587 DW 659MSG1 DBpress key A-D for low 4-7,0DH,0AH,$ ;提示信息MSG2 DBPress key E-K for normal 1-7,0DH,0AH,$MSG3 DBPress key L-N for high 1-3,0DH,0AH,$MSG4 DBPress key Esc to quit,0DH,0AH,$DATA ENDS3.2显示提示信息依次将MSG1,MSG2,MSG3,MSG4所在段的首偏移地址送给DX,用DOS 21H中断类型的9号功能调用将其显示出来MOV DX,OFFSET MSG1 ;显示提示信息 MOV AH,9 INT 21H MOV DX,OFFSET MSG2 MOV AH,9 INT 21H MOV DX,OFFSET MSG3 MOV AH,9 INT 21H MOV DX,OFFSET MSG4 MOV AH,9 INT 21H 3.3字符的输入与判断用DOS 16H中断类型的0号功能调用,从键盘输入一个字符,判断其是否为Esc,若是则退出,若不是,则判断其是否在A-N之间,如果是则用查表得方式求得其频率。MOV AH,0H INT 16H CMP AL,1BH ;如为Esc则退出 JE EXIT MOV BX,OFFSET FREQ CMP AL,A ;如不是指定键则重新输入 JB PIANO CMP AL,N JA PIANO AND AX,0FH SHL AX,1H SUB AX,2H MOV SI,AX MOV DI,BXSI3.4发声程序初始化8253,令2号计数器工作在方式3下,计算计数初值送给2号计数器,令8255A的PB0和PB1置1,则扬声器发出相应音阶。MOV AL,0B6H ;对8253写控制字 OUT 43H,AL MOV DX,12H ;计算计数初值 MOV AX,348CH DIV DI OUT 42H,AL MOV AL,AH OUT 42H,AL IN AL,61H ;存储8255A的B口内容,令PB0,PB1置1 MOV AH,AL OR AL,03H OUT 61H,AL3.5延时功能在调用发声程序之前令BX中的内容为100D,将CX设为663,则会产生1S的延时。BACK: MOV CX,663 CALL WAITF DEC BX JNZ BACKWAITF PROC NEAR PUSH AXWAIT1:IN AL,61H AND AL,10H CMP AL,AH JE WAIT1 MOV AH,AL LOOP WAIT14程序调试说明、结果记录与分析4.1程序调试过程程序调试,是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。这是保证计算机信息系统正确性的必不可少的步骤。编完计算机程序,必须送入计算机中测试。在调试过程中,会发现程序中的错误,例如分号不是在英文输入状态下输入的,在编译时会出现错误,还有提示信息显示有乱码。将这些错误改正后,程序可正常运行,完成设计要求中的功能。4.2结果记录运行程序,出现界面如图4-1所示。图4-1 程序运行界面图当输入的字符为A-N中的字符时,发出相应的音阶;当按Esc键时,退出程序;当按其他键时,不作出反应,需重新输入。运行结果满足任务要求。心得体会这次的微机原理课程设计就要结束了,通过这两个星期的课程设计,我对于微机原理这门课程的知识有了更深的理解。之前的课程结束后,我仅仅可以读懂和编写一些简单的程序。经过这次课程设计,我学会了如何更好地应用课上所学的编程知识和一些接口芯片的知识。这次课程设计中的编程是用汇编语言来完成的,汇编语言是能够利用计算机所有硬件特征且能直接用来控制硬件的一种程序设计语言,是计算机能够提供给用户的最快且最有效的编程语言。汇编语言是面向机器的。在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码,这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。本次课程设计我所做的题目是键盘钢琴汇编语言程序设计,应用到的编程指令和接口芯片是课上就学过的知识,但PC机的发声原理却是原来没有接触过的知识,通过查阅资料,我弄懂了PC机的发声原理,知道了原来我们的计算机里用的芯片是我们在课上曾经学过的,这让我觉得微机原理这门课程是很有实用性的,也激发了我对微机原理这方面知识的学习兴趣。这次我编的程序达到了任务书上的要求,但仍然有美中不足的地方,在以后的学习中我将进一步提高和完善自己。参考文献1周佩玲彭虎等.微机原理与接口技术. 北京:电子工业出版社,2005.42齐志儒高福祥等编.新版汇编语言程序设计 沈阳:东北大学出版社,20013沈美明温冬蝉等编. IBM-PC汇编语言程序设计 北京:清华大学出版社,20014任向明,卢惠林汇编语言程序设计实用教程北京:清华大学出版社,20095孙德文.微型计算机技术.高等教育出版社,2001附录DATA SEGMENT FREQ DW 175;频率表 DW 196 DW 220 DW 247 DW 262 DW 294 DW 330 DW 349 DW 392 DW 440 DW 494 DW 523 DW 587 DW 659MSG1 DBpress key A-D for low 4-7,0DH,0AH,$ ;提示信息MSG2 DBPress key E-K for normal 1-7,0DH,0AH,$MSG3 DBPress key L-N for high 1-3,0DH,0AH,$MSG4 DBPress key Esc to quit,0DH,0AH,$DATA ENDSSTACK SEGMENT DB 100 DUP(STACK)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA MOV DS,AX MOV DX,OFFSET MSG1 ;显示提示信息 MOV AH,9 INT 21H MOV DX,OFFSET MSG2 MOV AH,9 INT 21H MOV DX,OFFSET MSG3 MOV AH,9 INT 21H MOV DX,OFFSET MSG4 MOV AH,9 INT 21HPIANO:MOV AH,0H INT 16H CMP AL,1BH ;如为Esc则退出 JE EXIT MOV BX,OFFSET FREQ CMP AL,A ;如不是指定键则重新输入 JB PIANO CMP AL,N JA PIANO AND AX,0FH SHL AX,1H SUB AX,2H MOV SI,AX MOV DI,BXSI ;* IN AL,61H ;令PB0,PB1为0 AND AL,0FCH OUT 61H,AL ;* CALL SOUNDF JMP PIANOEXIT: MOV AH,4CH INT 21H;- ;发声子程序SOUNDF PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI ;* MOV AL,0B6H ;对8253写控制字 OUT 43H,AL ;* MOV DX,12H ;计算计数初值 MOV AX,348CH DIV DI OUT 42H,AL MOV AL,AH OUT 42H,AL ;* IN AL,61H ;存储8255A的B口内容,令PB0,PB1置1 MOV AH,AL OR AL,03H OUT 61H,AL MOV BX,100D ;产生1S的

温馨提示

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

评论

0/150

提交评论