微机原理与接口技术基于某PROTEUS实现音乐播放器地设计.docx
《微机原理与接口技术基于某PROTEUS实现音乐播放器地设计.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术基于某PROTEUS实现音乐播放器地设计.docx(12页珍藏版)》请在冰点文库上搜索。
![微机原理与接口技术基于某PROTEUS实现音乐播放器地设计.docx](https://file1.bingdoc.com/fileroot1/2023-7/7/4998cd45-a005-472b-a0a6-f73405d4fa48/4998cd45-a005-472b-a0a6-f73405d4fa481.gif)
微机原理与接口技术基于某PROTEUS实现音乐播放器地设计
信息科学与技术学院
微机原理与接口技术课程设计报告
题目名称:
基于PROTEUS实现音乐播放器的设计
学生姓名:
王浩宇关问鼎徐然冉启幸
学号:
2013508305201350825120135082242013508278
专业班级:
13电信
指导教师:
刘恩博
2015年7月9日
一.课程设计题目
基于PROTEUS实现音乐播放器的设计
二.课程设计任务及要求
设计要求:
1.实现播放音乐;
2.实现多首音乐连续播放和选择播放;
3.要求通过PROTUES完成此项功能,并完成PCB电路图。
三.总体方案与设计说明
3.1每个音符的对应频率
表1每个音符的对应频率
音符
频率/HZ
半周期/us
音符
频率/HZ
半周期/us
低1DO
262
1908
#4FA#
740
0676
#1DO#
277
1805
中5SO
784
0638
低2RE
294
1700
#5SO#
831
0602
#2RE#
311
1608
中6LA
880
0568
低3M
330
1516
#6LA#
932
0536
低4FA
349
1433
中7SI
988
0506
#4FA#
370
1350
高1DO
1046
0478
低5SO
392
1276
#DO#
1109
0451
#5SO#
415
1205
高2RE
1175
0426
低6LA
440
1136
#2RE#
1245
0402
#6LA#
466
1072
高3M
1318
0372
低7SI
494
1012
高4FA
1397
0358
中1DO
523
0956
#4FA#
1480
0338
#1DO#
554
0903
高5SO
1568
0319
中2RE
578
0842
#5S0#
1661
0292
#2RE#
622
0804
高6LA
1760
0284
中3M
659
0759
#6LA#
1865
0268
中4FA
698
0716
高7SI
1976
0253
3.2设计说明
该音乐播放器通过用8086中央处理器、74LS373地址锁存电路、74LS138译码电路、定时/计数器8253A来实现功能。
8086中央处理器输出地址码A16-A19和数据AD0-AD15,将AD0-AD7输入地址锁存器输出A0-A7,再将A0-A7通过译码器进行译码输出作为8253的片选信号,8253产生不同频率的脉冲来模拟音符,通过时间的长短来模拟音长,从而设计出一个功能完整的音乐播放器。
四.硬件电路设计及描述
4.1芯片介绍
(1)8086中央处理器
8086中央处理器是Intel系列的16位微处理器,有16根数据线和20跟地址线。
它主要由执行部件EU(ExecutionUnit)和总线接口部件BIU(BusinterfaceUnit)两部分组成。
8086拥有四个16位的通用寄存器,也能够当作八个8位寄存器来存取,以及四个16位索引寄存器(包含了堆栈指标)。
资料寄存器通常由指令隐含地使用,针对暂存值需要复杂的寄存器配置。
它提供64K8位元的输出输入(或32K16位元),以及固定的向量中断。
大部分的指令只能够存取一个内存位址,所以其中一个操作数必须是一个寄存器。
运算结果会储存在操作数中的一个。
为了能够简单有效地进行对8086操作,故采用最小模式进行工作。
要使8086处于最小模式,首先要将MN/MX端置为高电平。
(2)74LS373地址锁存电路
74LS373为D锁存器,AD0-AD7为输入数据,输出Ao0-Ao7。
74LS373的输出端O0~O7可直接与总线相连。
当三态允许控制端OE为低电平时,O0-O7为正常逻辑状态,可用来驱动负载或总线。
当OE为高电平时,O0-O7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。
当锁存允许端LE为高电平时,O随数据D而变。
当LE为低电平时,O被锁存在已建立的数据电平。
引出端符号:
D0~D7数据输入端
OE三态允许控制端(低电平有效)
LE锁存允许端
O0-O7输出端
表274LS373真值表
Dn
LE
OE
On
H
H
L
H
L
H
L
L
X
L
L
Q0
X
X
H
高阻态
(3)74LS138译码电路
A0-A7通过译码电路输出作为8253的片选信号。
其工作原理如下:
a.当一个选通端E1为高电平,另两个选通端E2和E3为低电平时,可将地址端(A0、A1、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出。
比如:
A0A1A2=110时,则Y6输出端输出低电平信号。
b.可用在8086的译码电路中,扩展内存。
在该电路中,除了A2A1其他几位是11110**0的时候才能给CS送一个有效电平,而当A1A2=00,01,10,11之时即为F0H,F2H,F4H,F6H分别对应的是通道0,1,2,3的运行。
(4)定时/计数器8253A
主要功能:
a.每片上有3个独立的16位的减计数器通道。
b.对于每个计数器,都可以单独作为定时器或计数器使用,并且都可以按照二进制或十进制来计数。
c.每个通道都有6种工作方式,都可以通过程序设置或改变。
8253的内部结构如图所示,它主要包括以下几个主要部分:
图3.2.58253的内部结构
a.数据总线缓冲器
实现8253与CPU数据总线连接的8位双向三态缓冲器,用以传送CPU向8253的控制信息、数据信息以及CPU从8253读取的状态信息,包括某时刻的实时计数值。
b..读/写控制逻辑
控制8253的片选及对内部相关寄存器的读/写操作,它接收CPU发来的地址信号以实现片选、内部通道选择以及对读/写操作进行控制。
c.控制字寄存器
在8253的初始化编程时,由CPU写入控制字,以决定通道的工作方式,此寄存器只能写入,不能读出。
d.计数通道0#、1#、2#:
这是三个独立的,结构相同的计数器/定时器通道,每一个通道包含一个16位的计数寄存器,用以存放计数初始值,一个16位的减法计数器和一个16位的锁存器,锁存器在计数器工作的过程中,跟随计数值的变化,在接收到CPU发来的读计数值命令时,用以锁存计数值,供CPU读取,读取完毕之后,输出锁存器又跟随减1计数器变化。
音乐播放器工作于方式3:
方波发生器
当装入初值后,在GATE上升沿启动计数,OUT输出高电平;当计数完成一半时,OUT输出低电平。
计数过程:
当把方式3的控制字写入控制字寄存器后,输出端OUT变成高电平,作为初始电平。
再将计数初值写入计数初值寄存器CR中,再经过一个时钟周期,计数初值被移入计数执行单元CE中,从下一个时钟脉冲开始作减1计数,方式3的计数过程分为两种情况:
第一种情况:
计数初值为偶数,当作减1计数减到N/2时,输出端OUT端变成低电平,减到0时,输出端OUT变成高电平,并重新从初值开始新的计数过程。
若GATE为高电平,则一直重复同样的计数过程。
可见,输出端OUT输出连续的方波,故称方波发生器。
第二种情况:
计数初值为奇数,当作减1计数减到(N+1)/2以后,输出端OUT变成低电平,减到0时,输出端OUT又变成高电平。
并重新从初值开始新的计数过程。
这时输出端的波形为连续的近似方波。
门控信号的影响
工作在方式3时,门控信号GATE的功能与工作方式2一样,即GATE为高电平时,允许计数;GATE为低电平时停止计数。
GATE引脚上的信号从低电平跳到高电平时,将会重新把计数初值寄存器CR中的内容移入计数执行单元CE中,并以新装入的值重新开始计数。
五.软件设计流程(模块流程图)及描述
通过给8253定时器装入不同的计数值,可以使其输出不同频率的波形。
便可驱动扬声器发出不同频率的音调,要使该音调的声音持续一段时间,只要插入一段延时程序。
SI指向曲中的频率,BP指向曲中的时间节拍。
从SI的指向的音节表中取一个频率,只要不是0,即有效就再读取时间,然后转到start子程序,计算计数初值送入计数器,产生各种频率信号,再送至扬声器。
程序流程图
硬件电路图
图1电路仿真图
六.源程序代码(要有注释)
codesegment
assumecs:
code
;;;;;;;;;;;;;;;;;;;音乐文件;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
freqdw2dup(262,294,330,262)
dw2dup(330,349,392)
dw2dup(392,440,392,349,330,262)
dw2dup(294,196,262),0;歌曲频率
timedw8dup(10000)
dw2dup(10000,10000,20000)
dw12dup(9000)
dw6dup(18000);歌曲时间节拍值
dw10000
regdw3
;;;;;;;;;;;;;;;;;;;;;;计数器3遍;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
start1:
movch,2
jmpstart
start:
decreg;减一计数
cmpreg,0
jeendd;循环三次结束
leasi,freq
leabp,time
leasp,reg
movdi,cs:
[si];频率
movbx,[bp]
jmpmusic
music:
;;;;;;;;;;;;;;;;;;;;;;送控制字;;;;;;;;;;;;;;;;;;;;;;;;;;;
movdx,0F6h;控制端口
moval,10010110B;控制字
outdx,al
;;;;;;;;;;;;;;;频率计算并送8253;;;;;;;;;;;;;;
movdx,00h;设置被除数
movax,5000
divdi
movdx,0F4h
outdx,al
;;;;;;;;;;;;;;;;;;;;;;
movax,1;频率
outdx,ax
movbx,20000;时间
wait1:
movcx,6;设循环次数6
delay1:
loopdelay1
decbx;循环持续bx次,即传进来的节拍时间
jnzwait1
;;;;;;;;;;;;;;;;;;定位到下一个音符;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
decbx
jnzwait1
addsi,2
addbp,2
movdi,cs:
[si]
cmpdi,0
jestart
movbx,[bp]
jmpmusic
;;;;;;;;;;;;;;;;;;程序结束;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
endd:
movdx,0F6h
moval,10010110B
outdx,al
codeends
endstart
七.课程设计体会
经过一个星期的课程设计,完成任务的效果和预想中有很大的出入,虽然中间遇到了一些问题,但经过我们的努力,还是把问题给解决了。
这次课程设计对我综合运用所学知识的能力的提高有不小的帮助,之前做的实验都是很简单的编程,跟硬件结合也没有这么复杂,实现的功能都比较简单,可是这次要实现的功能相对来说比较复杂,要求掌握的知识比较全面。
我们第一次做硬件设计,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说8255A芯片的使用,PROTUES软件的应用技巧,对汇编语言掌握得不好……通过这次课程设计之后,我们把以前所学过的知识又重新温故了一遍,起到了课程设计的预期效果。
参考文献
[1]史嘉权•微型计算机及应用•第四版•清华大学出版社,2008
[2]沈美明•IBM-PC汇编语言程序设计•第二版•清华大学出版社,2001
[3]付家才•微型计算机及其接口技术指导与题典[M]•化学工业出版社,2004