单片机键盘乐器课程设计报告书

单片机键盘乐器课程设计报告书
单片机键盘乐器课程设计报告书

工学院

课程设计报告

(2015 ~2016学年度第二学期)

课程名称接口技术与外部设备课程设计名称键盘电子乐器

学号

专业

班级

地点

教师

1.课程设计目的及要求

1)、实验目标、功能设计要求:利用并行接口8255作为键盘接口,设计一个具有2个八度音阶的键盘乐器,音阶键不少于16个,采用扫描方式管理键盘,音域围自行定义。 2)、软件、硬件环境:Windows XP 、1G 存

2. 课程设计步骤 (1) 弄明白设计题目

(2) 查阅资料,搞清楚8253和8255的工作原理。 (3) 上网查阅相关资料 (4) 编程实现

(5) 完成课程设计报告

3. 课程设计容 1)、设计概述

(a) 开发平台:masm (b) 参考书籍:《微型计算机接口技术及应用》、《IBM —PC 汇编语言课程设计》、《手把手教你学单片机》 2)、处理流程 (a)8253 引脚图

1224

12…

1413GN D D 7D 6D 5D 4D 3D 2

D 1D 0CLK 0OUT 0GAT

E 0

V CC W R

D C

S A 1A 0CLK 2

OUT 2

GATE 2CLK 1

GATE 1OUT 1…

8253/8254

图3.1 定时/计数器8253/8254 引脚图

B

1234567891011121314151617181920

4039383736353433323130292827262524232221

P A3P A2P A1P A0RD CS GND A0A1P A7P A6P A5P A4P A0P A1P A2P A3P B0P B1P B2

P A5P A6P A7P A0WR RESET D0D1D2D3D4D5D6D7Vcc P A7P A6P B5P B4P B3

8255

4. 课程设计结果 运行正确:

摁键盘Q~U :能发低音

摁键盘A~J :能发比上行高一音阶的音频 摁键盘Z~M :能发比上行更高一音阶的音频

5. 课程设计总结分析

组员分工及评分:查找资料:阳吉红(B )、董湘北(B ) 程序修改实现:媚(B +)

董湘北自我评价:接到课程设计题目,刚开始刚到非常的棘手,通过翻阅了上学期的《汇编语言程序实验教程》,了解到控制电路是以位触发和定时器控制两种不同的方式驱动扬声器发声,8253驱动扬声器,8255接受输入的数据。实验完成还行,巩固了硬件知识。

阳吉红自我评价:这个实验中我们遇到了很多问题但在老师和同学的帮助下得到了解决

开 始

获取中断向量

调用8253,驱动扬声器 返回中断向量 设置中断向量

调用8255,按键发声

返回DOS

,这个实验让我了解了接口实验的基本要求,总之学到不少东西啦。

媚自我评价:学完接口技术这门课程,觉得自己学得还可以。但是做完课程设计,才发现自己学得远远不够。虽然课程设计做得不是非常好,但是,还是学到一些东西。知道了8253不近可以用来做计数器,还能编程驱动扬声器。我们这个课程用到了8253和8255。8253用来驱动扬声器,8255用来接受从键盘输入的数据。

总的来说,结果还不是太坏。还是学到了一点东西。

6. 附录(源程序)

DATAS SEGMENT

;此处输入数据段代码

DATAS ENDS

STACKS SEGMENT

;此处输入堆栈段代码

STACKS ENDS

CODE SEGMENT

ASSUME CS:CODE

D1=131;设置音频围

D2=147

D3=165

D4=175

D5=196

D6=220

D7=247

Z1=262

Z2=294

Z3=330

Z4=349

Z5=392

Z6=440

Z7=494

G1=523

G2=587

G3=659

G4=714

G5=784

G6=880

G7=988

OLDINT8 DD ?

OLDINT9 DD ?

TIME DW 0

ASCII DB10H,11H,12H,13H,14H,15H,16H

DB 1EH,1FH,20H,21H,22H,23H,24H

DB 2CH,2DH,2EH,2FH,30H,31H,32H MUSIC DW D1,D2,D3,D4,D5,D6,D7

DW Z1,Z2,Z3,Z4,Z5,Z6,Z7

DW G1,G2,G3,G4,G5,G6,G7

NEWINT8: DEC CS:WORD PTR TIME ;指向TIME JZ CLOSEV

NEW8_0:JMP CS:OLDINT8

CLOSEV:PUSH AX

IN AL,61H

AND AL,0FDH

OUT 61H,AL

POP AX

JMP NEW8_0

VOICE:MOV CX,AX

MOV DX,12H

MOV AX,34DCH

DIV CX

PUSH AX

MOV AL,0B6H

OUT 43H,AL

POP AX

OUT 42H,AL

XCHG AL,AH

OUT 42H,AL

IN AL,61H

OR AL,03H

OUT 61H,AL

RET

NEWINT9: IN AL,60H

PUSH AX

IN AL,61H

OR AL,80H

OUT 61H,AL

AND AL,7FH

OUT 61H,AL

MOV AL,20H

OUT 20H,AL

STI

POP AX

PUSH AX

CMP AL,80H

JB NEW90

MOV CS:WORD PTR TIME,04H

JMP QUIT

NEW90:PUSH CS

POP ES

MOV DI,OFFSET ASCII

MOV CX,22D

CLD

REPNZ SCASB

JCXZ QUIT

SUB DI,OFFSET ASCII

DEC DI

SHL DI,1

MOV AX,ES:[DI+MUSIC]

MOV CS:WORD PTR TIME,0H

CALL VOICE

QUIT:POP AX

CMP AL,01H

JNZ MEUN

LDS DX,CS:OLDINT8

MOV AX,2508H

INT 21H

LDS DX,CS:OLDINT9

MOV AX,2509H

INT 21H

MOV AX,4C00H

INT 21H

MEUN:STI

JMP MEUN

START:MOV AX,CS

MOV DS,AX

MOV AX,3508H ;获取中断向量

INT 21H

MOV CS:W ORD PTR OLDINT8,BX

MOV CS:WORD PTR OLDINT8+2,ES

MOV AX,3509H

INT 21H

MOV CS:W ORD PTR OLDINT9,BX

MOV CS:WORD PTR OLDINT9+2,ES

MOV AX,2508H ;设置中断向量

MOV DX,OFFSET NEWINT8

INT 21H

MOV AX,2509H

MOV DX,OFFSET NEWINT9

INT 21H

JMP MEUN

CODE ENDS

END START

相关主题
相关文档
最新文档