ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:77.50KB ,
资源ID:9016265      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-9016265.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(电子琴课设报告.docx)为本站会员(b****0)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

电子琴课设报告.docx

1、电子琴课设报告微机原理与汇编语言课程设计电子琴程序 院 系: 计算机学院二系 班 级: 计08-3班 姓 名: 王振华(09) 指导教师: 鲁敬轩 2011 年 6 月 29 日微机原理与汇编语言课程设计任务书一、题目:电子琴二、设计的目的1. 掌握利用PC机扬声器发出不同频率声音的方法;2. 学习利用系统功能调用从键盘上读取字符的方法;3. 掌握定时器/计数器8253的工作原理;三、设计要求编写程序,程序运行时使PC 机成为一架可演奏的“钢琴”。当按下数字键1-8时,依次发出1,2,3,4,5,6,7,I八个音调,Ctrl-c 则退出演奏状态。独立完成课程设计。四、设计内容及步骤1PC 机扬

2、声器电路电路图如图1所示:图1 PC 机扬声器控制电路通过给8253定时器装入不同的计数值,可以使其输出不同频率的波形。当与门打开后,经过放大器的放大作用,便可驱动扬声器发出不同频率的音调。为使该音调的声音持续一段时间,要插入一段延时程序,之后再将扬声器关闭(关闭与门)。2建立音频表要使计算机成为可弹奏的简易电子琴,需要使用系统调用的01H 功能以接收键入字符,并且要建立一张音频表。五、课程设计工作量每人的程序量应在100行有效程序行以上,不得抄袭,否则给不及格成绩。六、课程设计工作计划2009年6月15日1-2节 指导教师讲课,学生准备文献资料;2009年6月15日2009年6月19日 每人

3、完成自己程序并能独立演示;2009年6月19日下午 验收,学生撰写课程设计报告。指导教师签字: 教研室主任签章: 微机原理与汇编语言课程设计指导教师评语与成绩指导教师评语:课程设计表现成绩: 课程设计验收成绩: 课程设计报告成绩: 课程设计 总成绩: 指导教师签字: 2007年 月 日一、概述1.课题描述随着社会发展,计算机硬件技术越来越多的应用到生活中的各个领域,人们对软硬件技术结合开发出来的产品的要求越来越迫切,需求日益增加,如今用软硬件结合设计电子产品已经成为了一大时尚。本设计编写的一个用PC机模拟电子琴的程序,利用PC机中的8253和键盘的按键模拟电子琴8个音节的发声。编程使计算机的数

4、字键1、2、3、4、5、6、7、8作为电子琴按键,按下即发出相应的音阶。开发工具:汇编语言 MASM FOR WINDOWS2.程序设计目的课程设计是培养学生运用有关课程的基础理论和技能解决实际问题,进一步提高学生本专业必要的基本技能、方法和创新能力的重要环节之一。通过课程设计使学生受到设计方法的初步训练,能用文字、图形和现代设计方法简要、系统、正确地表达设计成果。微机接口课程设计主要是训练学生综合运用学过的微机原理的软件和硬件知识,独立完成一个实际的微机应用设计系统,并在实验室实现。此次课设是对个人的程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,为学习后继

5、的基础课和专业课打下坚实的基础。课设所用的是汇编语言,它是一种机器语言,是计算机能提供的最快最有效的语言,也是能够利用计算机所有硬件性能并能直接控制硬件的语言。实验不仅培养了实际动手能力,也进一步学习了汇编语言的结构和使用方法,提高了汇编语言的水平。二、总体方案设计1.电子琴程序由于是用键盘的数字键1-8,要先读取键盘的输入,判断输入是否在1-8之间,不在就退到主菜单,若是就根据键值查表找出相应的频率,计算初值,调用发音子程序即可,此时的音长固定。初值的计算方法是用输入的clk频率除以音符的频率。程序流程图如图1所示。图1 电子琴程序流程图2.单音调子程序SOUND单音调子程序的调用前需要进行

6、以下几个方面工作:(1)确定相应的音调所对应的频率,查表可以得到,再由频率得到对应的8253计数初值。(2)确定音长,即一个音符所持续的时间。在单音调子程序中实现发出一个音符的声音,持续所需的时间,流程图如图2所示:图2 单音调子程序流程图三、详细设计1.扬声器在PC/XT机中,扬声器接口电路由8255A-5、8253-5、驱动器和低通滤波器等构成,其中8253-5是音频信号源,8255A-5作控制器,驱动器用来增大8253-5输出的TTL电平信号的驱动能力,低通滤波器将脉冲信号转换成接近滤波的音频信号,去驱动扬声器发声。8253-5的计数器2的CLK2端所加的时钟脉冲频率为1.19318MH

7、Z。可根据这个频率和所要产生的声音频率,计算出定时常数,经编程让计数器2输出指定频率的波形。8255A-5的PB0接8253-5的GATE2,作为计数器的门控信号,允许或禁止8253-5计数。8255A-5的PB1接与门U87的一个输入端,用来对计数器2的OUT2端输出的波形作进一步的控制,当PB1=1时,8253-5从OUT2输出的波形才能通过与门U87送到驱动器75477的A端,送到扬声器插座使之发声。当PB1=0时,OUT2输出的波形不能通过与门,扬声器不会发声。当PB1PB0=11时扬声器能连续发声。 2.界面设计主界面为一架电子琴,并采用漂亮的字体作为提示语。利用int 10h实现,

8、利用宏定义画线和矩形。DRAWSQRE MACRO START_X,START_Y,END_X,END_Y,COLORLOCAL ROW_UP,ROW_DOWN,RANK_LEFT,RANK_RIGHTPUSH AX PUSH BX PUSH CX PUSH DX PUSH SI MOV AH,0CH MOV AL,COLOR MOV BH,0 MOV CX,START_X MOV DX,START_Y ROW_UP: ;画上边 INT 10H INC CX CMP CX,END_X JNE ROW_UP RANK_RIGHT: ;画右边 INT 10H INC DX CMP DX,END_Y

9、 JNE RANK_RIGHT MOV CX, START_X ;下边起始点 MOV SI,END_X INC SI ROW_DOWN: ;画下边 INT 10H INC CX CMP CX,SI JNE ROW_DOWN MOV DX,START_Y ;右边起始点 MOV CX,START_X RANK_LEFT: ;画右边 INT 10H INC DX CMP DX, END_Y JNE RANK_LEFT POP SI POP DX POP CX POP BX POP AXENDM四、调试与运行结果说明1.主界面图7 主界面2.退出界面图8 退出界面五、课程设计总结通过这一周的硬件课程设

10、计,我对微机原理及应用这门课有了更深的认识,系统的掌握了微机原理及接口的应用知识。这次课程设计我做的是用PC机模拟电子琴发声。在老师确定题目后,我便去图书馆查阅了大量的关于定时器8253的书籍,并找相应的发声程序参阅。然后确定好自己的方案,对自己的设计有了一个大概的思路。通过编程,我学会了如何独立的写出程序,提高了自己的分析解决问题的能力,并且使自己所学的知识与实践相结合,应用到实践当中。课程设计中涉及到在设计当中遇到了很多的问题,但通过查找资料,克服了这些问题,提高了自己在实际当中解决问题的能力。虽然此次课程设计的过程是艰辛的,但结果还是令我比较欣慰的。在此特别感谢孙老师对我的的指导。对于本

11、次课程设计,自己从中取得了许多知识,提高了自己解决问题的能力,应该耐心的去解决程序中的问题和不足。遇到问题时,应该对自己有信心,但也要知道自己的不足,认真去查阅资料和学习不懂的知识,时刻提醒自己不能自暴自弃,我也切实体会到了作为科技人员的标准。另外培养了同学之间团结精神和共同解决问题以及攻克难题耐力和意志。六、谢启本次设计得到了孙海老师和同学的大力支持和帮助,其中老师对此次设计的题目的主要难度以及一些要求和目的给出了详细的解释。同学对设计中遇到的汇编语言方面的知识给予了很大的帮助。本人与同学在设计过程中对整个设计思想和算法进行了探讨。感谢老师这学期对我的谆谆教导和对微机原理课程的认真讲解、对课

12、程设计的细心指导。您的认真负责让我感觉到了一个电脑工作者所要具备的素质,您的讲课风格让我对微机原理这门课产生了浓厚兴趣,并会更努力的去学习它!在此,对您的帮助和支持表示由衷的感谢。七、附录;宏定义DRAW MACRO START_X,START_Y,END_X,END_Y,COLOR LOCAL DRAW_NEXT;local:避免宏重复调用时,标号的重复;功能:画填充的矩形;使用条件:START_XEND_X,START_YEND_Y PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,0CH ;写像素点 MOV AL,COLOR ;设置颜色 MOV BH,0 ;选

13、用页号0 MOV CX,START_X ;列起始点 MOV DX,START_Y ;行起始点 DRAW_NEXT: INT 10H ;画点 INC CX ;画横线 CMP CX,END_X ;比较行是否画完 JNE DRAW_NEXT ;画另一行 MOV CX, START_X ;另一行的起始点 INC DX CMP DX,END_Y ;比较列是否画完 JNE DRAW_NEXT ;未完继续画 POP DX POP CX POP BX POP AXENDMDRAWSQRE MACRO START_X,START_Y,END_X,END_Y,COLOR LOCAL ROW_UP,ROW_DOWN

14、,RANK_LEFT,RANK_RIGHT;功能:画不填充的矩形 PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI MOV AH,0CH MOV AL,COLOR MOV BH,0 MOV CX,START_X MOV DX,START_Y ROW_UP: ;画上边 INT 10H INC CX CMP CX,END_X JNE ROW_UP RANK_RIGHT: ;画右边 INT 10H INC DX CMP DX,END_Y JNE RANK_RIGHT MOV CX, START_X ;下边起始点 MOV SI,END_X INC SI ROW_DOWN:

15、 ;画下边 INT 10H INC CX CMP CX,SI JNE ROW_DOWN MOV DX,START_Y ;右边起始点 MOV CX,START_X RANK_LEFT: ;画右边 INT 10H INC DX CMP DX, END_Y JNE RANK_LEFT POP SI POP DX POP CX POP BX POP AXENDMDATAS SEGMENT ;此处输入数据段代码 DATA1 DB 49h,56h,62h,66h,74h,83h,94h,99h ;音频表 NUM DB ? ;NUM为8253计数器初值的序号 ;白色琴键坐标 ST_LX DW 50,61,7

16、2,83,94,105,116 ST_MX DW 127,138,149,160,171,182,193 ST_HX DW 204,215,226,237,248,259,270 ST_Y DW 50 ED_LX DW 60,71,82,93,104,115,126 ED_MX DW 137,148,159,170,181,192,203 ED_HX DW 214,225,236,247,258,269,280 ED_Y DW 90 ;黑色琴键坐标 BT_X DW 57,68,90,101,112 DW 134,145,167,178,189 DW 211,222,244,254,265 BT

17、_Y DW 50 BD_X DW 64,75,97,108,119 DW 141,152,174,185,196 DW 218,229,251,262,273 BD_Y DW 70 ;定义在屏幕绘制字 START_COL DB ? ;存储起始行 TEXT DB 16 ;起始行 DB 2 ;起始列 DB 31H ;字体颜色 DB This Is My Curriculum Design,0FFH DB Thank You For Your Support,0FFH DB 1.PRESS 18 TO PLAY,0FFH DB 2.PRESS CTRL+C TO EXIT,0FFH,0FFH ;显示

18、字DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSMAIN PROC NEARSTART: ;此处输入代码段代码CALL INIT ;调用初始化程序 MOV BX,OFFSET DATA1 ;获取音频表 SKY: MOV AH,07H ;无回显过滤的字符输入 AL=8位数据 INT 21H CMP AL,3 ;如果按CTRL+C,退出 JE EXIT1 CMP AL,31H ;若AL小于1,循环,否则继续执行程序,31H是ASKII码1 JL SKY CM

19、P AL,38H ;若AL大于8,循环,否则继续执行程序,38H是ASKII码8 JG SKY SUB AL,31H MOV AH,00H MOV DI,BX+SI MOV SI,AX MOV NUM,AL ;将所获取的键值赋给8253计数器 MOV AL,BXSI ;寄存器基址加变址寻址方式 PUSH BX CALL INIT1 CALL WAITF IN AL,61H AND AL,0FCH OUT 61H,AL ; 关闭扬声器 JMP SKYMAIN ENDP ;8253初始化子程序 INIT1 PROC NEAR ;选择方式三通道二 MOV DL,0AH ;控制扬声器声音 MUL DL

20、 MOV DI,AX MOV AL,0B6H OUT 43H,AL MOV DX,0012H MOV AX,34DEH DIV DI OUT 42H,AL MOV AL,AH OUT 42H,AL IN AL,61H ;声音开始 MOV AH,AL OR AL,03H OUT 61H,AL RET INIT1 ENDP;延时子程序 WAITF PROC NEAR PUSH AX ;保护寄存器 WAITF1: IN AL,61H ;读取PB端口值 AND AL,10H ;低四位清零 CMP AL,AH JE WAITF1 MOV AH,AL LOOP WAITF1 POP AX RET WAIT

21、F ENDP INIT PROC NEAR;初始化屏幕:画琴键 MOV AX,DATAS MOV DS,AX MOV AH,0 ;设置屏幕 MOV AL,0DH INT 10H ;BIOS 对屏幕及显示器所提供的服务程序 MOV AH,0BH MOV BH,0 MOV BL,09H ;背景色 INT 10H CALL SHOW_TEXT DRAW 45,30,285,94,05H DRAWSQRE 45,30,285,94,0DH DRAWSQRE 49,48,280,49,00H LEA SI,ST_LX ;画21个白色键 LEA DI,ED_LX MOV CX,21 INIT_DRAW:

22、DRAW SI,ST_Y,DI,ED_Y,0FH DRAW SI,90,DI,93,07H ;阴影 ADD SI,2 ADD DI,2 LOOP INIT_DRAW LEA SI,BT_X ;画15个黑色键 LEA DI,BD_X MOV CX,15 INIT_BLOCK: DRAW SI,BT_Y,DI,BD_Y,00H ADD SI,2 ADD DI,2 LOOP INIT_BLOCK RET INIT ENDP SHOW_TEXT PROC NEAR ;在屏幕上显示字符 LEA DI,TEXT ;载入字符串首地址 MOV DH,DI ;赋行值 INC DI ;取得列 MOV DL,DI

23、;赋列值 MOV START_COL,DL ;保存开始列 MOV AH,2 ;设置光标位置 MOV BH,0 ;0页 INT 10H INC DI ;取得颜色值 MOV BL,DI ;赋颜色值 CHAR_WRITE: INC DI ;取得要显示的字符 MOV AL,DI CMP AL,0FFH ;行结束否 JE BUMP_ROW ;下一行 CMP AL,0 ;结束否 JZ END_TEXT CALL SHOW_CHAR ;显示字符 JMP CHAR_WRITE ;下一个字符 END_TEXT: RET BUMP_ROW: INC DH ;下一行 MOV DL,START_COL ;赋开始列值

24、MOV AH,2 ;设光标位置 MOV BH,0 INT 10H JMP CHAR_WRITE SHOW_TEXT ENDP SHOW_CHAR PROC NEAR ;显示字符 MOV AH,9 ;显示字符 MOV BH,0 ;0页 MOV CX,1 INT 10H INC DL MOV AH,2 ;设置光标位置 MOV BH,0 ;0页 INT 10H RET SHOW_CHAR ENDP;退出 EXIT1: MOV AH,4CH INT 21H CODES ENDS END START参考文献1 郑坤.微型计算机技术实验指导书.2007.2 戴梅萼,史嘉权.微型计算机技术与运用.清华大学出版社2003.3 沈美明,温冬蝉.IBM-PC汇编语言程序设计.清华大学出版社.2003.4 董方武.微机接口技术.中国水利水电出版社.2001.

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2