资源描述
目录
一. 设计的目的与意义………………………………2
二. 设计的内容与要求………………………………2
三. 系统的硬件设计…………………………………3
3.1所用芯片的功能介绍………………………3
3.2系统原理与硬件电路………………………5
四. 系统的软件设计…………………………………6
4.1软件控制流程………………………………6
4.2程序清单……………………………………7
五. 系统调试与运行 ………………………………16
六. 设计收获 ………………………………………16
七. 主要参考文献 …………………………………17
一.设计的目的与意义
本课程设计主要是通过汇编语言用软件编程的方法实现简单的PC仿真电子琴。通过在《微机原理与接口技术》课程上所学的汇编知识和相关芯片知识,来完成本课程设计。
学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。
二. 设计内容与要求
设计一个利用DAC0832的输出数字声音的接口电路(可参考实验台原理图),DAC0832的输出接至有源音箱,编程实现如下功能:
1、按键发声:
(1)当从键盘上敲击Q ~ U键时,音箱发出1 ~ 7的高音阶;
(2)当从键盘上敲击A ~ J键时,音箱发出1 ~ 7的中音阶;
(3)当从键盘上敲击Z ~ M键时,音箱发出1 ~ 7的低音阶;
(4)按ESC键,程序结束。
2、屏幕上方显示课程设计题目、使用方法、作者姓名、单位及版权等信息
3、屏幕下方显示钢琴键盘形状,当按动不同音阶的键时,相应的乐键要呈现被按下的形态。
三. 系统的硬件设计
3.1所用芯片的功能介绍
1.DAC0832芯片介绍
DAC0832是由8位输入锁存器、8位DAC寄存器、8位D/A转换电路组成,采用二次缓冲方式,这样可以在输出的同时,输入下一个数据,以提高转换速度。更重要的是能够在多个转换器同时工作时,有可能同时输出模拟量。其内部逻辑结构如图所示。
DAC0832为20引脚芯片,各引脚功能如下:
DI0~DI7:数据输入线,TLL电平。
ILE:数据锁存允许控制信号输入线,高电平有效。
CS:片选信号输入线,低电平有效。
WR1:为输入寄存器的写选通信号。
XFER:数据传送控制信号输入线,低电平有效。
WR2:为DAC寄存器写选通输入线。
Iout1:电流输出线。当输入全为1时Iout1最大。
Iout2: 电流输出线。其值与Iout1之和为一常数。
Rfb:反馈信号输入线,芯片内部有反馈电阻.
Vcc:电源输入线 (+5v~+15v)
Vref:基准电压输入线 (-10v~+10v)
AGND:模拟地,摸拟信号和基准电源的参考地.
DGND:数字地,两种地线在基准电源处共地比较好.
2.DAC0832工作原理
当输入锁存信号ILE为高电平时,而 与 同时为低电平时,由图可知 =1,输入锁存器的内容随数据总线DI0~DI7而变化。当 变为高电平时, =0,8位输入数据被锁存在输入寄存器中。当 与 同时为低电平时, =1,8位DAC寄存器内容随输入锁存器而变化。此时若 变为高电平, =0,则将输入锁存器中数据锁存在8位DAC寄存器中,并开始D/A转换。
对于要求多片DAC0832同时转换的系统,鉴于各芯片的片选信号不同,可用片选信号 与 分时地将数据分别输入到每个芯片的输入锁存器中。各芯片的 与 分别连接在一起,共用一组信号。 与 同时为低电平时,数据将在同一时刻由8位输入寄存器传送到对应的8位DAC寄存器中,在 上升沿将数据锁存到DAC寄存器中。与此同时,多个DAC0832芯片开始同时进行D/A转换,因此可以达到多路模拟量同时输出的目的。
3.DAC0832的主要技术指标
电流稳定时间:1 s
分辨率:8位
线性误差:0.2%
功耗:20mw
3.2 设计原理与硬件电路
采用DAC0832作PC仿真电子琴的电路如图所示,运算放大器LF351的输出接至有源音箱,当按动键盘上的数字键1~7时音箱能发出音阶1~7。要求根据接口电路编程(设端口地址为228H)。
音箱发音的高低与DAC0832输出方波频率的高低有关,故每个按键应与不同的频率建立关系,方法是按动不同的键时输出方波(模拟量),方波高低电平的持续时间代表频率高低,该值由循环程序实现不同次数的循环完成。
DAC0832输出电压值的高低与音调无关,但与音量高低有关。
图 采用DAC0832作音乐发声器
采用DAC0832做PC仿真电子琴
四.系统的软件设计
4.1 软件控制流程
开始
键盘读入一个字符
是ESC键吗?
Y
N
返回DOS
N
是Q~U,A~J,Z~M键吗?
Y
求出音阶值保存
赋相应频率值
延时
4.2 程序清单
DATA SEGMENT
;MODE DB ?
MIU_F DW 1140,1020,920,880,780,690,600
DW 570,510,460,440,390,345,300
DW 285,255,230,220,195,173,150
MODE DB ?
MESS6 DB '****************************************'
MESS7 DB ' TITLE: THE PC PIANO',0DH,0AH
MESS8 DB ' STUDENT: Zhang Liyan',0DH,0AH
MESS9 DB ' TEACHER: WANG YUEXIAO',0DH,0AH
MESS10 DB 'THE COMPUTER OF WEIFANG COLLEGE',0DH,0AH
MESS1 DB ' WELCOME TO USE THE PIANO',0DH,0AH
MESS2 DB 'HIGH [1-7]: KEY Q-U',0DH,0AH
MESS3 DB 'NOMAL [1-7]: KEY A-J',0DH,0AH
MESS4 DB 'LOW [1-7]: KEY Z-M',0DH,0AH
MESS5 DB 'PRESS ESC TO QUIT',0DH,0AH
MESS12 DB '****************************************'
LL DW 144H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV BH,0
MOV AH,0FH
INT 10H
MOV MODE,AL ;保存当前界面
MOV AH,0 ;设置新界面
MOV AL,13H
INT 10H
MOV BP,SEG MESS6
MOV ES,BP
MOV BP,OFFSET MESS6
MOV CX,LL
MOV DX,1
MOV BL,44H
MOV AL,0
MOV AH,13H
INT 10H
MOV CX,21 ;展示21个键
MOV BX,2
NEXT: CALL DISPLAY
ADD BX,15
LOOP NEXT
MOV BX,2
LL0:
MOV DI,OFFSET MIU_F
MOV AH,00H
INT 16H
CALL DISPLAY
CALL UPPER
CMP AL,1BH
JZ EXIT0
JMP GOON
EXIT0: JMP EXIT
GOON: CMP AL,'Z'
JNZ QQQ
ADD DI,0
CALL CHANGE
JMP MUSI
QQQ: CMP AL,'X'
JNZ WWW
ADD DI,2
CALL CHANGE
JMP MUSI
WWW: CMP AL,'C'
JNZ EEE
ADD DI,4
CALL CHANGE
JMP MUSI
EEE: CMP AL,'V'
JNZ RRR
ADD DI,6
CALL CHANGE
JMP MUSI
RRR: CMP AL,'B'
JNZ TTT
ADD DI,8
CALL CHANGE
JMP MUSI
TTT: CMP AL,'N'
JNZ YYY
ADD DI,10
CALL CHANGE
JMP MUSI
YYY: CMP AL,'M'
JNZ UUU
ADD DI,12
CALL CHANGE
JMP MUSI
UUU: CMP AL,'A'
JNZ AAAA
ADD DI,14
CALL CHANGE
JMP MUSI
AAAA: CMP AL,'S'
JNZ SSS
ADD DI,16
CALL CHANGE
JMP MUSI
SSS: CMP AL,'D'
JNZ DDD
ADD DI,18
CALL CHANGE
JMP MUSI
DDD: CMP AL,'F'
JNZ FFF
ADD DI,20
CALL CHANGE
JMP MUSI
FFF: CMP AL,'G'
JNZ GGG
ADD DI,22
CALL CHANGE
JMP MUSI
GGG: CMP AL,'H'
JNZ HHH
ADD DI,24
CALL CHANGE
JMP MUSI
HHH: CMP AL,'J'
JNZ JJJ
ADD DI,26
CALL CHANGE
JMP MUSI
JJJ: CMP AL,'Q'
JNZ ZZZ
ADD DI,28
CALL CHANGE
JMP MUSI
ZZZ: CMP AL,'W'
JNZ XXX
ADD DI,30
CALL CHANGE
JMP MUSI
XXX: CMP AL,'E'
JNZ CCC
ADD DI,32
CALL CHANGE
JMP MUSI
CCC: CMP AL,'R'
JNZ VVV
ADD DI,34
CALL CHANGE
JMP MUSI
VVV: CMP AL,'T'
JNZ BBB
ADD DI,36
CALL CHANGE
JMP MUSI
BBB: CMP AL,'Y'
JNZ NNN
ADD DI,38
CALL CHANGE
JMP MUSI
NNN: CMP AL,'U'
JNZ COO
ADD DI,40
CALL CHANGE
MUSI: CALL MUSIC
COO: JMP LL0
EXIT: MOV AL,MODE
MOV AH,0
INT 10H
MOV AH,4CH
INT 21H
UPPER PROC NEAR
CMP AL,'a'
JB OVER
CMP AL,'z'
JA OVER
SUB AL,20H
OVER: RET
UPPER ENDP
MUSIC PROC NEAR
PUSH SI
PUSH CX
PUSH AX
PUSH DX
MOV SI,0FH
PPP: INC SI
MOV CX,[DI]
MOV DX,228H
LLL: MOV AL,20H
OUT DX,AL
INC DX
OUT DX,AL
DEC DX
LOOP LLL
MOV CX,[DI]
MOV DX,228H
LLL1: MOV AL,00H
OUT DX,AL
INC DX
OUT DX,AL
DEC DX
LOOP LLL1
CMP SI,5FH
JNZ PPP
POP DX
POP AX
POP CX
POP SI
RET
MUSIC ENDP
DISPLAY PROC NEAR
PUSH DX
PUSH DI
PUSH AX
PUSH CX
PUSH SI
MOV DX,140
MOV DI,40
MOV AL,80
NEXT1:
MOV CX,BX
MOV SI,14
MOV AH,0CH
NEXT2: INT 10H
INC CX
DEC SI
JNZ NEXT2
INC DX
DEC DI
JNZ NEXT1
POP SI
POP CX
POP AX
POP DI
POP DX
RET
DISPLAY ENDP
DISPLAY0 PROC NEAR
PUSH DX
PUSH DI
PUSH AX
PUSH CX
PUSH SI
MOV DX,140
MOV DI,40
MOV AL,68
NEXT10:
MOV CX,BX
MOV SI,14
MOV AH,0CH
NEXT20: INT 10H
INC CX
DEC SI
JNZ NEXT20
INC DX
DEC DI
JNZ NEXT10
POP SI
POP CX
POP AX
POP DI
POP DX
RET
DISPLAY0 ENDP
CHANGE PROC NEAR
PUSH DX
PUSH AX
SHR DI,1
MOV AX,DI
MOV BX,15
MUL BL
MOV BX,AX
ADD BX,2
CALL DISPLAY0
POP AX
POP DX
RET
CHANGE ENDP
CODE ENDS
END START
五.系统调试与运行
在本次程序设计过程中,按照设计要求,在界面上显示课程设计题目、使用方法、作者姓名、单位及版权等信息,并在屏幕下方显示键盘形状,当安不同的音阶时,相应的乐键将呈现黄色。当从键盘上敲击Q ~ U键时,音箱发出1 ~ 7的高音阶;敲击A ~ J键时,音箱发出1 ~ 7的中音阶; 敲击Z ~ M键时,音箱发出1 ~ 7的低音阶
设计界面
六.设计收获
通过两个周的编程和查资料,我完成了微机原理和接口技术的课程设计。设计过程中碰到了很多的难题和障碍,我认识到平时基础知识的重要性,只有能够熟练的掌握才能在实验过程中得心应手,否则一步错则整个试验都会陷入困境,因而,严谨的态度是试验成功的重要保障!
通过这次课程设计,我对各个芯片的功能有了更深刻的认识和体会,平时上课的理论知识只是停留在理论的层面,只有通过了这样的试验才能更好的体会到,做到了理论和实际的相结合,使理论知识真正运用到了实践中去。
七.主要参考文献
1.李长青. 微机原理与接口技术. 徐州:中国矿业大学出版社,2006
2.沈美明. 汇编语言程序设计实验教程. 北京:清华大学出版社,2002年
3.周明德. 微机原理与接口技术. 北京:人民邮电出版社,2002年
展开阅读全文