资源描述
自动化专业课程设计汇报
《微型计算机原理课程设计》
班 级 自动化12-3
姓 名 金星
学 号
时 间 .12.18
地 点 电信试验中心第六试验
指 导 教 师 李 向 军
大 连 海 洋 大 学 信 息 工 程 学 院
自 动 化 教 研 室
题目:计算机仿真电子琴
一、课程设计目标和要求
1、设计目标
本课程课程设计是自动化专业学生学习完《微机原理及应用》课程后,进行一次以汇编语言为主,硬件设计为辅综合训练。本课程设计目标在于加深对微机原理基础知识了解,掌握汇编语言程序设计基础方法;掌握利用微机原理开发系统基础方法。
2、设计要求
从课程设计目标出发,经过设计工作各个步骤,达成以下要求:
1) 掌握汇编语言程序设计基础方法。
2) Dos基础调用。
3) 深入了解多种接口电路应用。(8255并行接口,8254定时器等)。
4) 掌握利用PC机扬声器发出不一样频率声音方法。
3、关键技术指标
编写程序
1) 在程序运行时使PC即成为一架可弹奏电子琴。当按下数字键1-8时,依次发出1,2,3,4,5,6,7,I这八个音调。按下CTRL+C或回车则退出电子琴状态。
2) 在程序运行时使PC自动按要求提醒演奏乐曲。
音符
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/8245硬件:
电子琴设计实际上就是要设计一个程序,能够经过该程序控制PC机内扬声器发声规律,按下对应按键后,扬声器能发出指定频率声音。PC机内扬声器是经过并行接口芯片8255和定时芯片8253来控制发音,其电路连接方法以下图所表示。
图1.扬声器工作原理图示
图2.主程序工作步骤图
图3.乐曲演奏子程序工作步骤图 图4.电子琴子程序工作步骤图
图5.扬声器工作步骤图
8255内部结构图图2所表示,它有3个数据端口,分为两组,A组由A口和C口高四位组成,B组由B口和C口低四位组成。其方法控制字图3所表示。
图2 8255内部结构图
图3 8255方法控制字
方法控制字特征位
D0
D7
D6
D5
D4
D3
D2
D1
1
A组工作方法
0 0——方法0
0 1——方法1
1 ´——方法2
B组
工作方法
0——方法0
1——方法1
A口
输入/输出
1——输入
0——输出
PC7~PC4
输入/输出
1——输入
0——输出
B口
输入/输出
1——输入
0——输出
PC3~PC0
输入/输出
1——输入
0——输出
PC机内8255A口,B口,C口和控制口端口地址分别为:60H,61H,62H,63H。
2.2 8253工作原理
8253芯片中有3个计数通道,称为通道0,1,2,它们和外部电路相连信号线有3根:CLK,GATE,OUT,CLK是脉冲输入端,GATE是门控信号,OUT是输出信号,计数器工作在减1状态。其内部结构图和方法控制字格式图4,图5所表示。
其中当计数器工作在方法3时,输出信号为方波信号。
内
部
总
线
A1
GATE0
CLK0
OUT0
GATE1
CLK1
OUT1
GATE2
CLK2
OUT2
D0-D7
计数器0
计数器2
计数器1
控制寄存器
A0
数据总线缓冲器
R/W逻辑电路
图4 8253内部结构图
D7
D6
D5
D4
D3
D2
D1
D0
计数器选择
00 计数器0
01计数器1
10 计数器2
11 不用
00 计数器锁存
01 读写低8位
10 读写高8位
11 读写16位
工作方法选择
000 方法0
001 方法1
×10 方法2
×11 方法3
100 方法4
101 方法5
计数方法
0 二进制
1 BCD计数
图5 8253控制字格式
PC机内8253通道0,通道1,通道2,控制口端口地址分别为:40H,41H,42,43H。因为扬声器是由通道2来控制,故应选择通道2,工作方法选为方法3,输出信号则为方波信号。
三、课程设计结果
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 HuanLeSong'
DB 0AH, 0DH, 'Press2 KaiXin'
DB 0AH, 0DH, 'Press3 XiaoBuWuQu'
DB 0AH, 0DH, 'Press4 Wonderful'
DB 0AH, 0DH, 'Press5 SCALE PLAY '
DB 0AH, 0DH, 'Press6 EXIT'
DB 0AH, 0DH, '========================='
DB 0AH, 0DH, '$'
MUS_FRQ1 DW 330, 330, 350, 393, 393, 350, 330, 294
DW 262, 262, 294, 330, 330, 294, 294
DW 330, 330, 350, 393, 393, 350, 330, 294
DW 262, 262, 294, 330, 294, 262, 262
DW 294, 294, 330, 262, 294, 330, 350, 330, 262
DW 294, 330, 350, 330, 262, 262, 294, 393
DW 330, 330, 350, 393, 393, 350, 330, 294
DW 262, 262, 294, 330, 294, 262, 262, -1
MUS_TIM1 DW 8 DUP(100)
DW 7 DUP(100),200
DW 8 DUP(100)
DW 7 DUP(100),200
DW 5 DUP(100),50,50,2 DUP(100)
DW 100,50,50,4 DUP(100),200
DW 8 DUP(100)
DW 7 DUP(100),200
MUS_FRQ2 DW 330, 294, 262, 294, 3 DUP(330)
DW 3 DUP(294), 330, 392, 392
DW 330, 294, 262, 294, 4 DUP(330)
DW 294, 294, 330, 294, 262, -1
MUS_TIM2 DW 6 DUP(100),200
DW 2 DUP(100,100,200)
DW 8 DUP(100)
DW 4 DUP(100),400
MUS_FRQ3 DW 392, 262, 294, 330, 350, 392, 262, 262
DW 440, 350, 392, 440, 494, 524, 262, 262
DW 350, 392, 350, 330, 294, 330
DW 350, 330, 294, 262, 294, 330, 294, 262, 247, 262,-1
MUS_TIM3 DW 200, 4 DUP(100), 200, 200, 200
DW 200, 4 DUP(100), 200, 200, 200
DW 200, 4 DUP(100), 200
DW 4 DUP(100), 200, 4 DUP(100), 400
MUS_FRQ4 DW 330, 392, 330, 294, 330, 392, 330, 394, 330
DW 330, 392, 330, 294, 262, 294, 330, 392, 294
DW 262, 262, 220, 196, 196, 220, 262, 294, 330, 262,-1
MUS_TIM4 DW 3 DUP(200), 100, 100, 200, 100, 100, 400
DW 2 DUP(200,200,100,100), 400
DW 3 DUP(200,100,100), 400
TABLE DW 262, 294, 330, 349, 392, 440, 494, 525
NUMB DB 0AH, 0DH, 'Keyboard number 1~8 keys play notes of the scale'
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
DISPLY MACRO B
MOV DX, OFFSET B
MOV AH, 09H
INT 21H
ENDM
DISPLY INFO1
LOP: DISPLY MUSLIST
MOV AH, 01H
INT 21H
CMP AL, 36H
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 D0
CALL MUSIC3
JMP EXIT1
D0: CMP AL, 34H
JNZ E0
CALL MUSIC4
JMP EXIT1
E0: CMP AL, 35H
JNZ EXIT
DISPLY NUMB
CALL MUSIC5
EXIT1: DISPLY INFO5
JMP LOP
EXIT: DISPLY INFO4
DISPLY INFO5
JMP LOP
RETU: MOV AX, 4C00H
INT 21H
MUSIC1 PROC
LEA SI, MUS_FRQ1
LEA BP,DS: MUS_TIM1
FREQ1: MOV DI, [SI]
CMP DI,-1
JE END_MUS1
MOV BX, DS: [BP]
CALL SOUND
ADD SI,2
ADD BP,2
JMP FREQ1
END_MUS1:RET
MUSIC1 ENDP
MUSIC2 PROC
LEA SI, MUS_FRQ2
LEA BP,DS: MUS_TIM2
FREQ2: MOV DI, [SI]
CMP DI,-1
JE END_MUS2
MOV BX, DS: [BP]
CALL SOUND
ADD SI,2
ADD BP,2
JMP FREQ2
END_MUS2:RET
MUSIC2 ENDP
MUSIC3 PROC
LEA SI, MUS_FRQ3
LEA BP,DS: MUS_TIM3
FREQ3: MOV DI, [SI]
CMP DI,-1
JE END_MUS3
MOV BX, DS: [BP]
CALL SOUND
ADD SI,2
ADD BP,2
JMP FREQ3
END_MUS3:RET
MUSIC3 ENDP
MUSIC4 PROC
LEA SI, MUS_FRQ4
LEA BP,DS: MUS_TIM4
FREQ4: MOV DI, [SI]
CMP DI,-1
JE END_MUS4
MOV BX, DS: [BP]
CALL SOUND
ADD SI,2
ADD BP,2
JMP FREQ4
END_MUS4:RET
MUSIC4 ENDP
MUSIC5 PROC NEAR
PUSH AX
PUSH BX
PUSH CX
LOP5: MOV AH, 01H
INT 21H
CMP AL, 0DH
JE EXIT5
CMP AL, 31H
JB LOP5
CMP AL, 38H
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 SOUND
JMP LOP5
EXIT5: POP CX
POP BX
POP AX
RET
MUSIC5 ENDP
SOUND 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、试验现象
1. 进入DOS后在DOS界面进行汇编链接并生成可实施文件.exe
2.双击可实施文件KS.exe(这里我把程序取名为KS)进入操作界面图6所表示
图6.操作界面初始界面
图8.按数字键5后进入电子琴界面
图9.按回车后退出电子琴界面
3.在进行操作时候只要在键盘上按1-4这四个数字键就能够任意听取歌曲1—歌曲4,按数字键5时进入电子琴界面,这时候1-8分别表示音乐CDEFGABC这多个音符。按回车后退出电子琴操作界面,这时候按6退出程序。
四、课程设计心得和体会
经过这次微机原理课设,我发觉全部理论全部是要经过实践来精进。从一开始什么全部不会,到现在点点了解,几天下来感慨颇多。经过电子琴制作,使我更为深刻掌握了解编程,让我充足认识了每个指令作用,每个定义含义;为以后学习和制作打下了良好基础。
对编程还是有很多不了解,不懂,以后还是要认真学习,学好编程
五、参考文件
[1] 王忠民.微型计算机原理(第二版).西安:西安电子科技大学出版社,
[2] 马春燕.微机原理和接口技术试验和学习教导.北京:电子工业出版社.
[3] 沈美明,温东婵主编 IBM-PC汇编语言程序设计第二版,清华大学出版社,。
展开阅读全文