电子琴课设报告.docx

上传人:b****0 文档编号:9016265 上传时间:2023-05-16 格式:DOCX 页数:20 大小:77.50KB
下载 相关 举报
电子琴课设报告.docx_第1页
第1页 / 共20页
电子琴课设报告.docx_第2页
第2页 / 共20页
电子琴课设报告.docx_第3页
第3页 / 共20页
电子琴课设报告.docx_第4页
第4页 / 共20页
电子琴课设报告.docx_第5页
第5页 / 共20页
电子琴课设报告.docx_第6页
第6页 / 共20页
电子琴课设报告.docx_第7页
第7页 / 共20页
电子琴课设报告.docx_第8页
第8页 / 共20页
电子琴课设报告.docx_第9页
第9页 / 共20页
电子琴课设报告.docx_第10页
第10页 / 共20页
电子琴课设报告.docx_第11页
第11页 / 共20页
电子琴课设报告.docx_第12页
第12页 / 共20页
电子琴课设报告.docx_第13页
第13页 / 共20页
电子琴课设报告.docx_第14页
第14页 / 共20页
电子琴课设报告.docx_第15页
第15页 / 共20页
电子琴课设报告.docx_第16页
第16页 / 共20页
电子琴课设报告.docx_第17页
第17页 / 共20页
电子琴课设报告.docx_第18页
第18页 / 共20页
电子琴课设报告.docx_第19页
第19页 / 共20页
电子琴课设报告.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

电子琴课设报告.docx

《电子琴课设报告.docx》由会员分享,可在线阅读,更多相关《电子琴课设报告.docx(20页珍藏版)》请在冰点文库上搜索。

电子琴课设报告.docx

电子琴课设报告

 

微机原理与汇编语言课程设计

电子琴程序

 

院系:

计算机学院二系

班级:

计08-3班

姓名:

王振华(09)

指导教师:

鲁敬轩

 

2011年6月29日

 

微机原理与汇编语言课程设计任务书

一、题目:

电子琴

二、设计的目的

1.掌握利用PC机扬声器发出不同频率声音的方法;

2.学习利用系统功能调用从键盘上读取字符的方法;

3.掌握定时器/计数器8253的工作原理;

三、设计要求

编写程序,程序运行时使PC机成为一架可演奏的“钢琴”。

当按下数字键1-8时,依次发出1,2,3,4,5,6,7,I八个音调,Ctrl-c则退出演奏状态。

独立完成课程设计。

四、设计内容及步骤

1.PC机扬声器电路

电路图如图1所示:

图1PC机扬声器控制电路

通过给8253定时器装入不同的计数值,可以使其输出不同频率的波形。

当与门打开后,经过放大器的放大作用,便可驱动扬声器发出不同频率的音调。

为使该音调的声音持续一段时间,要插入一段延时程序,之后再将扬声器关闭(关闭与门)。

2.建立音频表

要使计算机成为可弹奏的简易电子琴,需要使用系统调用的01H功能以接收键入字符,并且要建立一张音频表。

五、课程设计工作量

每人的程序量应在100行有效程序行以上,不得抄袭,否则给不及格成绩。

六、课程设计工作计划

2009年6月15日1-2节指导教师讲课,学生准备文献资料;

2009年6月15日~2009年6月19日每人完成自己程序并能独立演示;

2009年6月19日下午验收,学生撰写课程设计报告。

指导教师签字:

教研室主任签章:

微机原理与汇编语言课程设计指导教师评语与成绩

指导教师评语:

 

课程设计表现成绩:

课程设计验收成绩:

课程设计报告成绩:

课程设计总成绩:

指导教师签字:

2007年月日

 

一、概述

1.课题描述

随着社会发展,计算机硬件技术越来越多的应用到生活中的各个领域,人们对软硬件技术结合开发出来的产品的要求越来越迫切,需求日益增加,如今用软硬件结合设计电子产品已经成为了一大时尚。

本设计编写的一个用PC机模拟电子琴的程序,利用PC机中的8253和键盘的按键模拟电子琴8个音节的发声。

编程使计算机的数字键1、2、3、4、5、6、7、8作为电子琴按键,按下即发出相应的音阶。

开发工具:

汇编语言MASMFORWINDOWS

2.程序设计目的

课程设计是培养学生运用有关课程的基础理论和技能解决实际问题,进一步提高学生本专业必要的基本技能、方法和创新能力的重要环节之一。

通过课程设计使学生受到设计方法的初步训练,能用文字、图形和现代设计方法简要、系统、正确地表达设计成果。

《微机接口课程设计》主要是训练学生综合运用学过的微机原理的软件和硬件知识,独立完成一个实际的微机应用设计系统,并在实验室实现。

此次课设是对个人的程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,为学习后继的基础课和专业课打下坚实的基础。

课设所用的是汇编语言,它是一种机器语言,是计算机能提供的最快最有效的语言,也是能够利用计算机所有硬件性能并能直接控制硬件的语言。

实验不仅培养了实际动手能力,也进一步学习了汇编语言的结构和使用方法,提高了汇编语言的水平。

 

二、总体方案设计

1.电子琴程序

由于是用键盘的数字键1-8,要先读取键盘的输入,判断输入是否在1-8之间,不在就退到主菜单,若是就根据键值查表找出相应的频率,计算初值,调用发音子程序即可,此时的音长固定。

初值的计算方法是用输入的clk频率除以音符的频率。

程序流程图如图1所示。

图1电子琴程序流程图

 

2.单音调子程序SOUND

单音调子程序的调用前需要进行以下几个方面工作:

(1)确定相应的音调所对应的频率,查表可以得到,再由频率得到对应的8253计数初值。

(2)确定音长,即一个音符所持续的时间。

在单音调子程序中实现发出一个音符的声音,持续所需的时间,流程图如图2所示:

图2单音调子程序流程图

 

三、详细设计

1.扬声器

在PC/XT机中,扬声器接口电路由8255A-5、8253-5、驱动器和低通滤波器等构成,其中8253-5是音频信号源,8255A-5作控制器,驱动器用来增大8253-5输出的TTL电平信号的驱动能力,低通滤波器将脉冲信号转换成接近滤波的音频信号,去驱动扬声器发声。

8253-5的计数器2的CLK2端所加的时钟脉冲频率为1.19318MHZ。

可根据这个频率和所要产生的声音频率,计算出定时常数,经编程让计数器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.界面设计

主界面为一架电子琴,并采用漂亮的字体作为提示语。

利用int10h实现,利用宏定义画线和矩形。

DRAWSQREMACROSTART_X,START_Y,END_X,END_Y,COLOR

LOCALROW_UP,ROW_DOWN,RANK_LEFT,RANK_RIGHT

PUSHAX

PUSHBX

PUSHCX

PUSHDX

PUSHSI

MOVAH,0CH

MOVAL,COLOR

MOVBH,0

MOVCX,START_X

MOVDX,START_Y

ROW_UP:

;画上边

INT10H

INCCX

CMPCX,END_X

JNEROW_UP

RANK_RIGHT:

;画右边

INT10H

INCDX

CMPDX,END_Y

JNERANK_RIGHT

MOVCX,START_X;下边起始点

MOVSI,END_X

INCSI

ROW_DOWN:

;画下边

INT10H

INCCX

CMPCX,SI

JNEROW_DOWN

MOVDX,START_Y;右边起始点

MOVCX,START_X

RANK_LEFT:

;画右边

INT10H

INCDX

CMPDX,END_Y

JNERANK_LEFT

POPSI

POPDX

POPCX

POPBX

POPAX

ENDM

四、调试与运行结果说明

1.主界面

图7主界面

2.退出界面

图8退出界面

 

五、课程设计总结

通过这一周的硬件课程设计,我对微机原理及应用这门课有了更深的认识,系统的掌握了微机原理及接口的应用知识。

这次课程设计我做的是用PC机模拟电子琴发声。

在老师确定题目后,我便去图书馆查阅了大量的关于定时器8253的书籍,并找相应的发声程序参阅。

然后确定好自己的方案,对自己的设计有了一个大概的思路。

通过编程,我学会了如何独立的写出程序,提高了自己的分析解决问题的能力,并且使自己所学的知识与实践相结合,应用到实践当中。

课程设计中涉及到在设计当中遇到了很多的问题,但通过查找资料,克服了这些问题,提高了自己在实际当中解决问题的能力。

虽然此次课程设计的过程是艰辛的,但结果还是令我比较欣慰的。

在此特别感谢孙老师对我的的指导。

对于本次课程设计,自己从中取得了许多知识,提高了自己解决问题的能力,应该耐心的去解决程序中的问题和不足。

遇到问题时,应该对自己有信心,但也要知道自己的不足,认真去查阅资料和学习不懂的知识,时刻提醒自己不能自暴自弃,我也切实体会到了作为科技人员的标准。

另外培养了同学之间团结精神和共同解决问题以及攻克难题耐力和意志。

 

六、谢启

本次设计得到了孙海老师和同学的大力支持和帮助,其中老师对此次设计的题目的主要难度以及一些要求和目的给出了详细的解释。

同学对设计中遇到的汇编语言方面的知识给予了很大的帮助。

本人与同学在设计过程中对整个设计思想和算法进行了探讨。

感谢老师这学期对我的谆谆教导和对微机原理课程的认真讲解、对课程设计的细心指导。

您的认真负责让我感觉到了一个电脑工作者所要具备的素质,您的讲课风格让我对微机原理这门课产生了浓厚兴趣,并会更努力的去学习它!

在此,对您的帮助和支持表示由衷的感谢。

七、附录

;宏定义

DRAWMACROSTART_X,START_Y,END_X,END_Y,COLOR

LOCALDRAW_NEXT

;local:

避免宏重复调用时,标号的重复

;功能:

画填充的矩形

;使用条件:

START_X

PUSHAX

PUSHBX

PUSHCX

PUSHDX

MOVAH,0CH;写像素点

MOVAL,COLOR;设置颜色

MOVBH,0;选用页号0

MOVCX,START_X;列起始点

MOVDX,START_Y;行起始点

DRAW_NEXT:

INT10H;画点

INCCX;画横线

CMPCX,END_X;比较行是否画完

JNEDRAW_NEXT;画另一行

MOVCX,START_X;另一行的起始点

INCDX

CMPDX,END_Y;比较列是否画完

JNEDRAW_NEXT;未完继续画

POPDX

POPCX

POPBX

POPAX

ENDM

DRAWSQREMACROSTART_X,START_Y,END_X,END_Y,COLOR

LOCALROW_UP,ROW_DOWN,RANK_LEFT,RANK_RIGHT

;功能:

画不填充的矩形

PUSHAX

PUSHBX

PUSHCX

PUSHDX

PUSHSI

MOVAH,0CH

MOVAL,COLOR

MOVBH,0

MOVCX,START_X

MOVDX,START_Y

ROW_UP:

;画上边

INT10H

INCCX

CMPCX,END_X

JNEROW_UP

RANK_RIGHT:

;画右边

INT10H

INCDX

CMPDX,END_Y

JNERANK_RIGHT

MOVCX,START_X;下边起始点

MOVSI,END_X

INCSI

ROW_DOWN:

;画下边

INT10H

INCCX

CMPCX,SI

JNEROW_DOWN

MOVDX,START_Y;右边起始点

MOVCX,START_X

RANK_LEFT:

;画右边

INT10H

INCDX

CMPDX,END_Y

JNERANK_LEFT

POPSI

POPDX

POPCX

POPBX

POPAX

ENDM

DATASSEGMENT

;此处输入数据段代码

DATA1DB49h,56h,62h,66h,74h,83h,94h,99h;音频表

NUMDB?

;NUM为8253计数器初值的序号

;白色琴键坐标

ST_LXDW50,61,72,83,94,105,116

ST_MXDW127,138,149,160,171,182,193

ST_HXDW204,215,226,237,248,259,270

ST_YDW50

ED_LXDW60,71,82,93,104,115,126

ED_MXDW137,148,159,170,181,192,203

ED_HXDW214,225,236,247,258,269,280

ED_YDW90

;黑色琴键坐标

BT_XDW57,68,90,101,112

DW134,145,167,178,189

DW211,222,244,254,265

BT_YDW50

BD_XDW64,75,97,108,119

DW141,152,174,185,196

DW218,229,251,262,273

BD_YDW70

;定义在屏幕绘制字

START_COLDB?

;存储起始行

TEXTDB16;起始行

DB2;起始列

DB31H;字体颜色

DB'ThisIsMyCurriculumDesign',0FFH

DB'ThankYouForYourSupport',0FFH

DB'1.PRESS1~8TOPLAY',0FFH

DB'2.PRESSCTRL+CTOEXIT',0FFH,0FFH;显示字

DATASENDS

STACKSSEGMENT

;此处输入堆栈段代码

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

MAINPROCNEAR

START:

;此处输入代码段代码

CALLINIT;调用初始化程序

MOVBX,OFFSETDATA1;获取音频表

SKY:

MOVAH,07H;无回显过滤的字符输入AL=8位数据

INT21H

CMPAL,3;如果按CTRL+C,退出

JEEXIT1

CMPAL,31H;若AL小于1,循环,否则继续执行程序,31H是ASKII码'1'

JLSKY

CMPAL,38H;若AL大于8,循环,否则继续执行程序,38H是ASKII码'8'

JGSKY

SUBAL,31H

MOVAH,00H

MOVDI,[BX+SI]

MOVSI,AX

MOVNUM,AL;将所获取的键值赋给8253计数器

MOVAL,[BX][SI];寄存器基址加变址寻址方式

PUSHBX

CALLINIT1

CALLWAITF

INAL,61H

ANDAL,0FCH

OUT61H,AL;关闭扬声器

JMPSKY

MAINENDP

;8253初始化子程序

INIT1PROCNEAR;选择方式三通道二

MOVDL,0AH;控制扬声器声音

MULDL

MOVDI,AX

MOVAL,0B6H

OUT43H,AL

MOVDX,0012H

MOVAX,34DEH

DIVDI

OUT42H,AL

MOVAL,AH

OUT42H,AL

INAL,61H;声音开始

MOVAH,AL

ORAL,03H

OUT61H,AL

RET

INIT1ENDP

;延时子程序

WAITFPROCNEAR

PUSHAX;保护寄存器

WAITF1:

INAL,61H;读取PB端口值

ANDAL,10H;低四位清零

CMPAL,AH

JEWAITF1

MOVAH,AL

LOOPWAITF1

POPAX

RET

WAITFENDP

INITPROCNEAR

;初始化屏幕:

画琴键

MOVAX,DATAS

MOVDS,AX

MOVAH,0;设置屏幕

MOVAL,0DH

INT10H;BIOS对屏幕及显示器所提供的服务程序

MOVAH,0BH

MOVBH,0

MOVBL,09H;背景色

INT10H

CALLSHOW_TEXT

DRAW45,30,285,94,05H

DRAWSQRE45,30,285,94,0DH

DRAWSQRE49,48,280,49,00H

LEASI,ST_LX;画21个白色键

LEADI,ED_LX

MOVCX,21

INIT_DRAW:

DRAW[SI],ST_Y,[DI],ED_Y,0FH

DRAW[SI],90,[DI],93,07H;阴影

ADDSI,2

ADDDI,2

LOOPINIT_DRAW

LEASI,BT_X;画15个黑色键

LEADI,BD_X

MOVCX,15

INIT_BLOCK:

DRAW[SI],BT_Y,[DI],BD_Y,00H

ADDSI,2

ADDDI,2

LOOPINIT_BLOCK

RET

INITENDP

SHOW_TEXTPROCNEAR

;在屏幕上显示字符

LEADI,TEXT;载入字符串首地址

MOVDH,[DI];赋行值

INCDI;取得列

MOVDL,[DI];赋列值

MOVSTART_COL,DL;保存开始列

MOVAH,2;设置光标位置

MOVBH,0;0页

INT10H

INCDI;取得颜色值

MOVBL,[DI];赋颜色值

CHAR_WRITE:

INCDI;取得要显示的字符

MOVAL,[DI]

CMPAL,0FFH;行结束否

JEBUMP_ROW;下一行

CMPAL,0;结束否

JZEND_TEXT

CALLSHOW_CHAR;显示字符

JMPCHAR_WRITE;下一个字符

END_TEXT:

RET

BUMP_ROW:

INCDH;下一行

MOVDL,START_COL;赋开始列值

MOVAH,2;设光标位置

MOVBH,0

INT10H

JMPCHAR_WRITE

SHOW_TEXTENDP

SHOW_CHARPROCNEAR

;显示字符

MOVAH,9;显示字符

MOVBH,0;0页

MOVCX,1

INT10H

INCDL

MOVAH,2;设置光标位置

MOVBH,0;0页

INT10H

RET

SHOW_CHARENDP

;退出

EXIT1:

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

参考文献

[1]郑坤.微型计算机技术实验指导书.2007.

[2]戴梅萼,史嘉权.微型计算机技术与运用.清华大学出版社2003.

[3]沈美明,温冬蝉.IBM-PC汇编语言程序设计.清华大学出版社.2003.

[4]董方武.微机接口技术.中国水利水电出版社.2001.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 商业计划

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

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