微机原理及应用课程设计(电子琴)

更新时间:2023-06-02 17:29:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

利用微机原理的知识实现电子琴

目录:

一、课程设计的目的与要求

1.设计目的

2.设计要求

3.主要技术指标

二、课程设计课题的分析

三、课程设计的结果

1.实验代码

2.实验现象

3.实验说明

四、课程设计心得与体会

五、参考文献

主要实验内容

计算机电子琴仿真

利用微机原理的知识实现电子琴

一、课程设计的目的与要求

1、设计目的

本课程的课程设计是自动化专业学生学习完《微机原理及应用》课程后,进行的一次以汇编语言为主,硬件设计为辅的综合训练。本课程设计的目的在于加深对微机原理基本知识的理解,掌握汇编语言程序设计的基本方法;掌握运用微机原理开发系统的基本方法。 2、设计要求

从课程设计的目的出发,通过设计工作的各个环节,达到以下要求:

1) 掌握汇编语言程序设计的基本方法。 2) 进一步理解各种接口电路的应用。例如8255并行接口,8253定时器等。 3) 掌握利用PC机扬声器发出不同频率声音的方法。 3、主要技术指标 编写程序

1) 在程序运行时使PC即成为一架可弹奏的电子琴。当按下小写字母a-g时,依次发

出低八度1,2,3,4,5,6,7这7个音调,当按下数字键1-7时,依次发出C调的1,2,3,4,5,6,7这7个音,而当按下大写字母A-G时,依次发出高八度1,2,3,4,5,6,7这7个音调。按下CTRL+C或者回车则退出电子琴状态。 2) 在程序运行时使PC自动按要求提示演奏乐曲。

二、课程设计课题的分析

1、主要步骤及其内容的分析:

先根据乐谱对应的频率编写相应的频率表,然后根据1,9,10号功能键的调用实现界面的显示;由于在计算机内部8254,8255已经连接好(在下面会介绍连接示意图)。

要求是实现8个音符的发音,但是在我们所做的课设中不但实现了8个音符的发音而且还根据乐谱编写了天空之城的曲子和big bigworld的曲子;更运用循环结构设计了音符的低,中,高音的不同发音。

在开始编写的程序中,当执行一个曲子的时候并不可以中断只能等待其结束,后来在查阅资料后更改原来的程序后;当在执行一个曲子的时候,当你按下任意的按键就可以终止曲子,返回开始的界面。

8254控制字的初始化:

MOV AL, 0B6H ;8254的控制字 1011 0110计数器2 计数器16位操作 方式3二进制

OUT 43H, AL

扬声器的开始与关闭:

IN AL, 61H MOV AH, AL

OR AL, 3 ;因为扬声器的低两位高电平有效 OUT 61H, AL

利用微机原理的知识实现电子琴

曲子演奏过程中的终止程序:

PUSH AX MOV AH,0BH INT 21H CMP AL,0 JNE START POP AX

实现音符不同发音的循环程序: MUSIC5 PROC NEAR PUSH AX PUSH BX PUSH CX

LOP5: MOV AH, 01H INT 21H CMP AL, 0DH JE EXIT5

CMP AL, 61H

JB LOP7 CMP AL, 67H

JA LOP5 AND AX, 0FH

SHL AX, 1 SUB AX, 2 MOV SI, AX

MOV BX, OFFSET TABLE

MOV DI, [BX][SI] MOV BX, 100

CALL GENSOUND JMP LOP5

LOP6:

CMP AL, 0DH JE EXIT5

CMP AL, 31H

JB LOP5 CMP AL, 37H

JA LOP5 AND AX, 0FH

SHL AX, 1 SUB AX, 2 MOV BX,0EH

ADD AX, BX

利用微机原理的知识实现电子琴

MOV SI, AX

MOV BX, OFFSET TABLE

MOV DI, [BX][SI] MOV BX, 100

CALL GENSOUND ;JMP LOP5

LOP7:

CMP AL, 0DH JE EXIT5

CMP AL, 41H

JB LOP6 CMP AL, 47H

JA LOP5 AND AX, 0FH

SHL AX, 1 SUB AX, 2 MOV BX,1CH

ADD AX, BX MOV SI, AX

MOV BX, OFFSET TABLE

MOV DI, [BX][SI] MOV BX, 100

CALL GENSOUND JMP LOP5

EXIT5: POP CX POP BX POP AX

RET MUSIC5 ENDP

2、扬声器的工作原理图以及程序执行的流程图:

利用微机原理的知识实现电子琴

图1.扬声器工作原理图示

图2.主程序工作流程图

利用微机原理的知识实现电子琴

图3.乐曲演奏子程序工作流程图

4.扬声器工作流程图

利用微机原理的知识实现电子琴

三、课程设计的结果

利用微机原理的知识实现电子琴

1. 实验代码

DATA SEGMENT

INFO1 DB 0AH, 0DH, 'WELCOME YOU TO COME HERE!$' DB 0AH, 0DH, 'THIS IS A MUSIC PROGRAM!$' DB 0AH, 0DH, 'PLEASE SELECLT!$'

INFO4 DB 0AH, 0DH, 'INPUT ERROR!$'

INFO5 DB 0AH, 0DH, 'PLEASE INPUT AGAIN!$'

MUSLIST DB 0AH, 0DH, '=========================' DB 0AH, 0DH, 'Press1 Tian Kong Zhi Cheng' DB 0AH, 0DH, 'Press2 Big Big World' DB 0AH, 0DH, 'Press3 SCALE PLAY ' DB 0AH, 0DH, 'Press4 EXIT'

DB 0AH, 0DH, '=========================' DB 0AH, 0DH, '$'

MUS_FRQ1 DW 441,495,525,495,525,661,495 DW 330,330,441,393,441,525,393 DW 330,330,350,330,350,525,330 DW 525,525,525,495,350,350,495,495 DW 441,495,525,495,525,661,495 DW 330,330,441,393,441,525,393

DW 330,350,525,495,495,525,589,589,661,525 DW 525,495,441,441,495,393,441,-1

MUS_TIM1 DW 100,100,200,100,100,100,300 DW 100,100,200,100,100,100,200 DW 100,100,200,100,100,100,200 DW 100,100,100,200,100,100,100,200 DW 100,100,200,100,100,100,200 DW 100,100,200,100,100,100,300

DW 100,100,100,50,50,100,100,100,100,100,200 DW 100,100,100,100,100,100,200

MUS_FRQ2 DW 262,294,330,330,330,330,350,294,294,294 DW 294,294,294,330,262,262,262,262,294,330,294,294 DW

262,294,330,330,330,330,350,294,294,294,294,330,330,294,262,-1

MUS_TIM2 DW 100,50,100,100,100,100,50,100,100,100 DW 50,50,50,50,100,100,100,50,50,200,50,100

DW 100,50,100,100,100,50,50,100,100,100,50,50,50,10,50,200 TABLE DW 131,147,165,175,196,221,248,262,294,330,349,392,440,494,525,589,661,700,786,882,990

利用微机原理的知识实现电子琴

NUMB DB 0AH, 0DH, 'Keyboard a-g to v1-7,number1-7 to =1-7,A-G to ^1-7' DB 0AH, 0DH, 'Enter or Ctrl+C to exit' DB 0AH, 0DH, '$' DATA ENDS

STACK SEGMENT PARA STACK 'STACK'

STA DB 200 DUP('STACK') STACK ENDS CODE SEGMENT

ASSUME DS: DATA, SS: STACK, CS: CODE, ES: DATA START: MOV AX, DATA MOV DS, AX MOV ES, AX

MOV AX, STACK MOV SS, AX

SHOW MACRO B

MOV DX, OFFSET B MOV AH, 09H INT 21H ENDM

SHOW INFO1

LOP: SHOW MUSLIST ;功能的实现

MOV AH, 01H

INT 21H CMP AL, 34H

JZ RETU CMP AL, 31H

JNZ B0 CALL MUSIC1

JMP EXIT1

B0: CMP AL, 32H JNZ C0 CALL MUSIC2

JMP EXIT1

C0: CMP AL, 33H JNZ EXIT SHOW NUMB CALL MUSIC5

EXIT1: SHOW INFO5 JMP LOP EXIT: SHOW INFO4

当输入不同数字的时候,程序会识别,显示及其相应

利用微机原理的知识实现电子琴

SHOW INFO5

JMP LOP

RETU: MOV AX, 4C00H INT 21H

MUSIC1 PROC LEA SI, MUS_FRQ1 LEA BP,DS: MUS_TIM1

FREQ1: PUSH AX ;曲子中断的程序 MOV AH,0BH INT 21H CMP AL,0 JNE START POP AX MOV DI, [SI] CMP DI,-1

JE END_MUS1 MOV BX, DS: [BP] CALL GENSOUND

ADD SI,2 ADD BP,2 JMP FREQ1

END_MUS1:RET MUSIC1 ENDP

MUSIC2 PROC LEA SI, MUS_FRQ2 LEA BP,DS: MUS_TIM2 START1: CALL START FREQ2: PUSH AX MOV AH,0BH INT 21H CMP AL,0 JNE START POP AX MOV DI, [SI] CMP DI,-1

JE END_MUS2 MOV BX, DS: [BP] CALL GENSOUND

ADD SI,2 ADD BP,2 JMP FREQ2

利用微机原理的知识实现电子琴

END_MUS2:RET MUSIC2 ENDP

MUSIC5 PROC NEAR PUSH AX PUSH BX PUSH CX

LOP5: MOV AH, 01H ;实现音符的低,中,高音发音的循环结构 INT 21H CMP AL, 0DH JE EXIT5

CMP AL, 61H

JB LOP7 CMP AL, 67H

JA LOP5 AND AX, 0FH

SHL AX, 1 SUB AX, 2 MOV SI, AX

MOV BX, OFFSET TABLE

MOV DI, [BX][SI] MOV BX, 100

CALL GENSOUND JMP LOP5

LOP6:

CMP AL, 0DH JE EXIT5

CMP AL, 31H

JB LOP5 CMP AL, 37H

JA LOP5 AND AX, 0FH

SHL AX, 1 SUB AX, 2 MOV BX,0EH

ADD AX, BX MOV SI, AX

MOV BX, OFFSET TABLE

MOV DI, [BX][SI] MOV BX, 100

CALL GENSOUND ;JMP LOP5

利用微机原理的知识实现电子琴

LOP7:

CMP AL, 0DH JE EXIT5

CMP AL, 41H

JB LOP6 CMP AL, 47H

JA LOP5 AND AX, 0FH

SHL AX, 1 SUB AX, 2 MOV BX,1CH

ADD AX, BX MOV SI, AX

MOV BX, OFFSET TABLE

MOV DI, [BX][SI] MOV BX, 100

CALL GENSOUND JMP LOP5

EXIT5: POP CX POP BX POP AX

RET MUSIC5 ENDP

GENSOUND PROC ;PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI

MOV AL, 0B6H OUT 43H, AL

MOV DX, 12H MOV AX, 533H*896 DIV DI

OUT 42H, AL MOV AL, AH

OUT 42H, AL IN AL, 61H MOV AH, AL

OR AL, 3 OUT 61H, AL

扬声器的功能实现

利用微机原理的知识实现电子琴

PUSH AX

WAIT1: MOV CX, 1200 DELA1: IN AL, 61H AND AL, 10H CMP AL, AH JE DELA1 MOV AH,AL LOOP DELA1 DEC BX JNZ WAIT1 POP AX MOV AL, AH

OUT 61H, AL POP DI POP DX POP CX

POP BX POP AX

RET GENSOUND ENDP CODE ENDS END START 2、实验现象

利用微机原理的知识实现电子琴

图6.DOS调试界面

图7.操作界面初始界面

利用微机原理的知识实现电子琴

图8.按数字键3后进入电子琴界面按回车后退出电子琴界面

图9.按数字键4返回DOS界面

3、操作说明

在进行操作的时候只要在键盘上按1-2这四个数字键就可以任意听取歌曲1—歌曲2,按数字键3时进入电子琴界面,当按下小写字母a-g时,依次发出低八度1,2,3,4,5,6,7这7个音调,当按下数字键1-7时,依次发出C调的1,2,3,4,5,6,7这7个音,而当按下大写字母A-G时,依次发出高八度1,2,3,4,5,6,7这7个音调。按下CTRL+C或者回车则退出电子琴状态。这时候按4退出程序。

四、课程设计心得与体会

在课程设计中,经过老师的讲解以及到图书馆查阅资料。

找到了一个适合课程设计的程

利用微机原理的知识实现电子琴

序,但是又比课程设计麻烦了一点。在后面的课程设计中为了实现不同的功能,对程序进行一步步的改进和理解,以及不断查阅的查阅资料和同学的相互讨论,在后面的程序中慢慢弄懂了整个程序的意思。

在后面自己按照自己的想法调整程序的时候,不断的尝试,最后终于将自己的程序改出了自己想要的结果,相同音符的不用发音(分为低,中,高共21个音调);在开始的时候曲子演奏的时候只能等待曲子演奏结束并不能自己结束,后来在查阅资料中找到了自己可以结束曲子的程序,这样的不断尝试与调试使系统的功能更加的完美和丰富。

在课程设计中,自己与同学不断的查阅资料和熟悉一些在课堂上学习的知识,来完成自己想要的程序。使自己对汇编语言有了进一步的了解,也为自己在以后的学习中提供了丰富的经验。,

五、参考文献

[1] 王忠民微型计算机原理(第二版).西安:西安电子科技大学出版社.2007年 [2] 马春燕微机原理与接口技术实验与学习辅导.北京:电子工业出版社.2007年 [3] 赵燕、何南微机原理与应用实验指导书:大连海洋大学 2008年 [4] 王忠民微型计算机原理陕西:西安电子出版社 2007年

本文来源:https://www.bwwdw.com/article/9j01.html

Top