键盘钢琴课程设计

上传人:陈** 文档编号:94523536 上传时间:2022-05-23 格式:DOC 页数:16 大小:83KB
返回 下载 相关 举报
键盘钢琴课程设计_第1页
第1页 / 共16页
键盘钢琴课程设计_第2页
第2页 / 共16页
键盘钢琴课程设计_第3页
第3页 / 共16页
点击查看更多>>
资源描述
武汉理工大学微机原理与接口技术课程设计报告书撰写人:_日 期:_摘要汇编语言是能够利用计算机所有硬件特征且能直接用来控制硬件的一种程序设计语言,是计算机能够提供给用户的最快且最有效的编程语言。本次课设的题目是键盘钢琴汇编语言程序设计,利用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附录113精品范文模板 可修改删除键盘钢琴汇编语言程序设计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的延迟时间 ;*BACK: MOV CX,663 CALL WAITF DEC BX JNZ BACK MOV AL,AH OUT 61H,AL POP DI POP DX POP CX POP BX POP AX RETSOUNDF ENDP;- ;延时子程序WAITF PROC NEAR PUSH AXWAIT1:IN AL,61H AND AL,10H CMP AL,AH JE WAIT1 MOV AH,AL LOOP WAIT1 POP AX RETWAITF ENDP;-CODE ENDSEND START第 16 页 共 16 页免责声明:图文来源于网络搜集,版权归原作者所以若侵犯了您的合法权益,请作者与本上传人联系,我们将及时更正删除。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!