微机原理课设.docx

上传人:b****8 文档编号:30506487 上传时间:2023-08-16 格式:DOCX 页数:14 大小:148.96KB
下载 相关 举报
微机原理课设.docx_第1页
第1页 / 共14页
微机原理课设.docx_第2页
第2页 / 共14页
微机原理课设.docx_第3页
第3页 / 共14页
微机原理课设.docx_第4页
第4页 / 共14页
微机原理课设.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

微机原理课设.docx

《微机原理课设.docx》由会员分享,可在线阅读,更多相关《微机原理课设.docx(14页珍藏版)》请在冰豆网上搜索。

微机原理课设.docx

微机原理课设

自动化专业课程设计报告

《微机原理及应用课程设计》

题目.计算机仿真电子琴

 

班级自动化10-3

姓名王帅

学号1005130313

时间12.12.24-28

地点电信实验中心第六实验室

指导教师李向军

大连水产学院信息工程学院

自动化教研室

计算机仿真电子琴

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

1、教学目的

本课程的课程设计是自动化专业学生学习完《微机原理及应用》课程后,进行的一次以汇编语言为主,硬件设计为辅的综合训练。

本课程设计的其目的在于加深对微机原理基本知识的理解,掌握汇编语言程序设计的基本方法;掌握运用微机原理开发系统的基本方法。

2、教学要求

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

1)掌握汇编语言程序设计的基本方法。

2)进一步理解各种接口电路的应用。

例如8255并行接口,8253定时器等。

3)掌握利用PC机扬声器发出不同频率声音的方法。

4)设计要求

(1)掌握本课程设计所涉及到的基本理论。

(2)理解硬件电路的工作原理。

(3)自行设计软件流程图,编制程序。

(4)调试程序使其能正常运行。

(5)设计完成后,必须写出设计总结。

内容包括:

原理介绍,简单的硬件电路图,较详细的程序流程图及完整的软件源程序清单。

二.课程设计课题分析

1.电子琴的设计实际上就是要设计一个程序,能够通过该程序控制PC机内扬声器的发声规律,按下相应的按键后,扬声器能发出指定频率的声音。

PC机内的扬声器是通过并行接口芯片8255和定时芯片8253来控制发音的

1.19318MHZ

 

扬声器是由8253通道2产生的方波信号和8255的PB1相与后驱动发声的,且通道2的门信号由8255的PB0提供,要想让扬声器发声,PB0和PB1必须同时为高电平,因此,可以通过对8255的PB0和PB1的设置来控制扬声器的开通和关断,而其发音频率可以通过对8253通道2的计数初值的设置来控制。

所设计程序的任务就是要通过对按键的判断来设置8255的PB0和PB1输出电平的高低,以及8253通道2计数初值的设置。

计数初值N=时钟频率/音阶频率.各音阶的频率如下表所示。

 

音符

1

2

3

4

5

6

7

频率(低)

131

147

165

175

196

220

247

频率(中)

262

294

330

349

392

440

494

频率(高)

524

588

660

698

784

880

988

8255工作原理

 

PC机内8255的A口,B口,C口和控制口的端口地址分别为:

60H,61H,62H,63H。

8253工作原理

D7

D6

D5

D4

D3

D2

D1

D0

 

PC机内8253的通道0,通道1,通道2,控制口的端口地址分别为:

40H,41H,42,43H。

因为扬声器是由通道2来控制的,故应选择通道2,工作方式选为方式3,输出的信号则为方波信号。

2.程序流程图

 

 

Y

N

Y

 

N

Y

 

音乐播放子程序流程图

 

Y

N

 

发音子程序流程图

在弹奏和演奏时都需调用发音子程序,发音子程序的作用是控制扬声器的发音,其流程图如下:

 

三.课程设计过程及结果

DATASEGMENT

INFO1DB0AH,0DH,'WELCOMEYOUTOCOMEHERE!

$'

DB0AH,0DH,'THISISAMUSICPROGRAM!

$'

DB0AH,0DH,'PLEASESELECLT!

$'

INFO2DB0AH,0DH,'INPUTERROR!

$'

INFO3DB0AH,0DH,'PLEASEINPUTAGAIN!

$'

MUSLISTDB0AH,0DH,'========================='

DB0AH,0DH,'Press1taihuchuan'

DB0AH,0DH,'Press2SCALEPLAY'

DB0AH,0DH,'Press3orctrl+CEXIT'

DB0AH,0DH,'========================='

DB0AH,0DH,'$'

MUS_FRQ1DW330,392,330,294,330,392,330,294,330

DW330,392,330,294,262,294,330,392,294

DW262,262,220,196,196,220,262,294,332,262,-1

MUS_TIM1DW3DUP(50),25,25,50,25,25,100

DW2DUP(50,50,25,25),100

DW3DUP(50,25,25),100

TABLEDW262,294,330,349,392,440,494,525

NUMBDB0AH,0DH,'Keyboardnumber1~8keysplaynotesofthescale'

DB0AH,0DH,'Entertoexit'

DB0AH,0DH,'$'

DATAENDS

STACKSEGMENTPARASTACK'STACK'

STADB200DUP('STACK')

STACKENDS

CODESEGMENT

ASSUMEDS:

DATA,SS:

STACK,CS:

CODE,ES:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVAX,STACK

MOVSS,AX

SHOWMACROB

MOVDX,OFFSETB

MOVAH,09H

INT21H

ENDM

SHOWINFO1

LOP:

SHOWMUSLIST

MOVAH,01H

INT21H

CMPAL,33H

JZRETU

CMPAL,31H

JNZB0

CALLMUSIC1

JMPEXIT1

B0:

CMPAL,32H

JNZEXIT

SHOWNUMB

CALLMUSIC2

EXIT1:

SHOWINFO3

JMPLOP

EXIT:

SHOWINFO2

SHOWINFO3

JMPLOP

RETU:

MOVAX,4C00H

INT21H

MUSIC1PROC

LEASI,MUS_FRQ1

LEABP,DS:

MUS_TIM1

FREQ1:

MOVDI,[SI]

CMPDI,-1

JEEND_MUS1

MOVBX,DS:

[BP]

CALLGENSOUND

ADDSI,2

ADDBP,2

JMPFREQ1

END_MUS1:

RET

MUSIC1ENDP

MUSIC2PROCNEAR

PUSHAX

PUSHBX

PUSHCX

LOP1:

MOVAH,01H

INT21H

CMPAL,0DH

JEEXIT2

CMPAL,31H

JBLOP1

CMPAL,38H

JALOP1

ANDAX,0FH

SHLAX,1

SUBAX,2

MOVSI,AX

MOVBX,OFFSETTABLE

MOVDI,[BX][SI]

MOVBX,100

CALLGENSOUND

JMPLOP1

EXIT2:

POPCX

POPBX

POPAX

RET

MUSIC2ENDP

GENSOUNDPROC

PUSHAX

PUSHBX

PUSHCX

PUSHDX

PUSHDI

MOVAL,0B6H

OUT43H,AL

MOVDX,12H

MOVAX,533H*896

DIVDI

OUT42H,AL

MOVAL,AH

OUT42H,AL

INAL,61H

MOVAH,AL

ORAL,3

OUT61H,AL

PUSHAX

WAIT1:

MOVCX,6000

DELA1:

INAL,61H

ANDAL,10H

CMPAL,AH

JEDELA1

MOVAH,AL

LOOPDELA1

DECBX

JNZWAIT1

POPAX

MOVAL,AH

OUT61H,AL

POPDI

POPDX

POPCX

POPBX

POPAX

RET

GENSOUNDENDP

CODEENDS

ENDSTART

程序运行结果

键入数字1,演奏歌曲欢乐颂

 

键入数字2,执行弹奏功能,数字1-8为简谱里的1.2.3.4.5.6.7.1

 

四.课程设计的心得与体会

通过整整一个星期的摸索和编程,查资料,终于把程序完成了,虽说程序总体并不是我们设计的,但是和同学们一起发现问题,分析问题,解决问题,也收获了不少,我们的编程技术都有所提高,上课时有些懵懂的知识,在这次课设中,也有了更深的理解。

最开始听到仿真电子琴是茫然的,到最后可以自己编曲,弹奏,感到很有成就感,在课设中也充满了乐趣。

我也体会到要提高自己的编程能力,扩展自己的知识,就必须去实践,用你所学的知识,和你所查得不知道的知识做一些实物,这样才会得到提高。

 

五.参考文献

1.《汇编语言程序设计教程》(周艳萍邹伟著)清华大学出版社。

2.刘卫国,陈昭平,张颖.MATLAB程序设计与应用.北京:

高等教育出版社,2002年

3.《PC机汇编语言实战精解》(李春生著)南开大学出版社。

 

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

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1