电子音乐播放器课程设计.docx
- 文档编号:5828603
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:35
- 大小:381.33KB
电子音乐播放器课程设计.docx
《电子音乐播放器课程设计.docx》由会员分享,可在线阅读,更多相关《电子音乐播放器课程设计.docx(35页珍藏版)》请在冰豆网上搜索。
电子音乐播放器课程设计
一.电子音乐播放器
一、设计的任务和目的
题目目的:
学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。
通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。
设计要求:
利用8253作为音阶频率发生器,应先对一段音乐进行编码后存入音符表,并建立好音阶表(只建立一个8度即可,音阶表见附录),音符长度不能少于60个,连续播放3遍后停止。
二8253芯片介绍
1芯片介绍
8253可编程定时/计数器是Intel公司生产的通用外围芯片之一,有3个独立的十六位计数器,技术频率范围为0~2MHZ,它所有的技术方式和操作方式都通过编程控制。
8253的功能用途是:
(1)延时中断
(2)
可编程频率发生器
(3)事件计数器
(4)二进倍频器
(5)实时时钟
(6)数字单稳
(7)复杂的电机控制器
8253有六种工作方式:
(1)方式0:
计数结束中断
(2)方式1:
可编程频率发生器
(3)方式2:
频率发生器
(4)方式3:
方波频率发生器
(5)方式4:
软件触发的选通信号
(6)方式5:
硬件触发的选通信号
8253引脚图如图所示,各引脚功能如下。
D7~D0——八条双向数据线;
WR(低电平有效)——写输入信号;
RD(低电平有效)——读输入信号;
CS(低电平有效)——片选输入信号;
A0、A1——片内寄存器地址输入信号;
CLK——计数输入,用于输入定时基准脉冲或计数脉冲;
OUT——输出信号,以相应的电平指示计数的完成,或输出脉冲波形;
GATE——选通输入(门控输入),用于启动或禁止计数器的操作,以使计数器和计测对象同步。
2控制字
三.程序框图
通过给8253定时器装入不同的计数值,可以使其输出不同频率的波形。
当与门打开后,经过放大器放大的作用,便可驱动扬声器发出不同频率的音调,要使该音调的声音持续一段时间,只要插入一段延时程序,之后再将扬声器(关闭与门)即可。
流程图
四、电路连接
五、程序设计
SSEGSEGMENTPARASTACK'stack'
dw100hdup(0);Resizethestackbychangingthenumber'100'
SSEGENDS
DSEGSEGMENT
INFO1DB0DH,0AH,'--------------------------',0DH,0AH,'THEREARE3SONGS:
',0DH,0AH,0DH,0AH,'$'
INFO2DB'1.HAPPYBIRTHDAY',0DH,0AH,'$'
INFO3DB'2.SHEEP',0DH,0AH,'$'
INFO4DB'3.RIVER',0DH,0AH,'$'
INFO5DB'0.EXIT',0DH,0AH,'$'
INFO6DB'YOUHAVECHOSEN:
$'
INFO7DB'THANKYOUFORYOURUSE',0DH,0AH,'$'
INFO8DB'---------------------------',0DH,0AH,'PRESSTHEKEYTOSELECTSONG!
',0DH,0AH,'$'
INFO9DB0DH,0AH,'-------------------',0DH,0AH,'|INVALIDSELECTION|',0DH,0AH,'-------------------',0DH,0AH,'$'
FREG1DW2dup(262),294,262,349,262,262,294,262,392,249,262,262,523,440,349;曲1的频率
DW330,294,466,266,440,349,392,349,-1
TIME1DW1,1,2,2,2,4,1,1,2,2,2,4,1,1,2,2,2,2,4,1,1,2,2,2,4;曲1的时间
FREG2DW330,294,262,294,3DUP(330);曲2的频率
DW3DUP(294),330,392,392
DW330,294,262,294,4DUP(330)
DW294,294,330,294,262,-1
TIME2DW6DUP
(1),2;曲2的时间
DW2DUP(1,1,2)
DW12DUP
(1),4
FREG3DW330,392,330,294,330,392,330,294,330,330,392,330,294,262,294,330,392,294;曲3的频率
DW262,262,220,196,220,262,294,332,262,-1
TIME3DW3DUP
(2),1,1,2,1,1,4;曲3的时间
DW2DUP(2,2,1,1),4
DW3DUP(2,1,1,1),4
DSEGENDS
CSEGSEGMENT
assumecs:
CSEG,ds:
DSEG,es:
DSEG,ss:
SSEG
INITPROC;初始化程序
movax,dseg
movds,ax
moves,ax
INITENDP
MAINPROC;程序入口
callINIT
RE:
MOVDX,28BH;关闭扬声器
MOVAL,89H
OUTDX,AL
MOVDX,28AH
INAL,DX
MOVDX,288H
OUTDX,AL
LEADX,INFO1;输出说明信息
MOVAH,09H
INT21H
LEADX,INFO2
INT21H
LEADX,INFO3
INT21H
LEADX,INFO4
INT21H
LEADX,INFO5
INT21H
LEADX,INFO8
INT21H
MOVAH,01H;读取按键
INT21H
CMPAL,'1';根据不同的按键播放不同的曲子
JEMUSIC1
CMPAL,'2'
JEMUSIC2
CMPAL,'3'
JEMUSIC3
CMPAL,'0'
JEEXIT
LEADX,INFO9;无效选择,输出错误提示
MOVAH,09H
INT21H
JMPRE
MUSIC1:
MOVSI,OFFSETFREG1;指向曲1的表
MOVBP,OFFSETTIME1
CALLPLAY
JMPRE
MUSIC2:
MOVSI,OFFSETFREG2;指向曲2的表
MOVBP,OFFSETTIME2
CALLPLAY
JMPRE
MUSIC3:
MOVSI,OFFSETFREG3;指向曲3的表
MOVBP,OFFSETTIME3
CALLPLAY
JMPRE
EXIT:
MOVDX,28BH;关闭扬声器
MOVAL,89H
OUTDX,AL
MOVDX,28AH
INAL,DX
MOVDX,288H
OUTDX,AL
LEADX,INFO7;输出欢迎使用信息,增加界面友好度
MOVAH,09H
INT21H
movax,4c00h;Theendoftheprogram,returntothesystem
int21h
MAINENDP
PLAYPROC;PLAY子程序,功能上面介绍过
L1:
MOVBX,DS:
[SI];取频率
CMPBX,-1;看是否有效
JEL0;无效就退出
MOVCX,DS:
[BP];读取时间
MOVDL,CL;保存时间
ADDDL,30H
MOVAH,02H
INT21H
MOVDX,0FH;计算计数初值,1M的十六进制为0F4240H
MOVAX,4240H
DIVBX
MOVBX,AX
MOVDX,283H;设置计数器工作方式
MOVAL,36H
OUTDX,AL
MOVDX,280H;输入计数初值
MOVAX,BX
OUTDX,AL
MOVAL,AH
OUTDX,AL
MOVDX,28BH;开扬声器
MOVAL,89H
OUTDX,AL
MOVDX,28AH
INAL,DX
NOTAL
MOVDX,288H
OUTDX,AL
ROD:
CALLDELAY;延时
LOOPROD
MOVDX,28BH;关扬声器
MOVAL,89H
OUTDX,AL
MOVDX,28AH
INAL,DX
MOVDX,288H
OUTDX,AL
CALLDELAY_OFF;音节间延时
ADDSI,2
ADDBP,2
JMPL1
L0:
RET
PLAYENDP
DELAYPROC;延时子程序
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVBX,09FH
LL1:
MOVCX,0FFFFH;循环这么多次
LOP:
LOOPLOP
DECBX
JNZLL1
POPDX
POPCX
POPBX
POPAX
RET
DELAYENDP
DELAY_OFFPROC
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVBX,0FH
LL2:
MOVCX,0CFFFH
LOP2:
LOOPLOP2
DECBX
JNZLL2
POPDX
POPCX
POPBX
POPAX
RET
DELAY_OFFENDP
CSEGENDS
ENDMAIN
五、试验结果截屏:
初始界面:
如果按错了键,会出现如下界面:
如果选择正确,将出现如下界面:
六,设计总结
1.实验过程中碰到了很多的难题和障碍,我认识到平时基础知识的重要性,只有能够熟练的掌握才能在实验过程中得心应手,否则一步错则整个试验都会陷入困境,因而,严谨的态度是试验成功的重要保障!
2.通过这次课程设计,我们对各个芯片有了进一步的了解,对各个芯片的功能有了更深刻的认识和体会,平时上课的理论知识只是停留在理论的层面,只有通过了这样的试验才能更好的体会到,做到了理论和实际的相结合,使理论知识真正运用到了实践中去。
在课程设计过程中,同组人员之间相互合作,共同研究使我更加坚信了团体的力量。
在团体的共同协作和努力下,任何的难题都可以被解决!
3.我们大家在实验的时候都团结合作,遇到问题时候一起探讨,增强了我们的合作精神。
二.电子时钟设计
一.设计的任务和目的:
1.通过设计,培养和提高解决工程具体问题,动脑动手的技术工作能力,还要逐步建立科学正确的设计和科研思想,培养良好的设计习惯,牢固树立实事求是和严肃认真的工作态度。
具体要求任务如下:
1、中断工作原理,定时计数原理,并行通信原理工作原理。
2、掌握8259芯片,8254芯片,8255芯片功能,结构。
3、掌握8259芯片,8254芯片,8255芯片的编程。
4、能运用所提到的芯片,设计系统并进行程序开发,满足用户需求。
2.设计要求
1、总体内容:
设计一电子时钟,能在数码管上显示时间并计时。
2、接口设计:
根据题目和所用的接口电路芯片设计出完整的接口电路,并在实验系统上完成电路的连接和调试通过.
3、程序设计:
要求画出程序框图,设计出全部程序并给出程序设计说明和程序注释。
4、前期完成的实验有:
8259A中断控制器实验,8254定时计数器实验,8255并行接口实验。
二概要设计
2.1电路原理与主要芯片功能
2.1.1电路原理
首先利用程序硬性规定分、秒的起始时间为零。
然后通过8254计时器分频,并将以分得的频率接通8259中断控制器,进而通过CPU响应可屏蔽中断达到按秒计时的效果。
具体做法是将四个七段管显示器接到两片可并行接口8255芯片上,以此来控制七段管显示器的位操作以及段操作。
并为之在数据段开辟一处空间,专门存放将要显示的数位代码。
8254计时器将由PC机给定的频率加以分频,得到的新频率加到8259中断控制器的中断请求输入端。
主程序为此可屏蔽中断设置专门的中断向量码。
CPU获取此中断向量码后转向待需解决的程序进行操作。
而这个程序便是整个主程序的心脏。
通过它将使电子钟的显示时以秒为进位,达到秒、分的增加。
2.2.18255主要功能
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。
用+5V单电源供电,能在以下三种方式下工作:
方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。
8255的内部结构及引脚如图2.1所示:
图2.1内部结构及引脚
8255工作方式控制字和C口按位置位/复位控制字格式如图2.2所示:
图2.2置位/复位控制字格式
2.2.28259主要功能
中断控制器8259是Intel公司专为控制优先级中断而设计开发的芯片。
它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。
同时,在不需增加其他电路的情况下,通过多片8259A的级连,能构成多达64级的矢量中断系统。
它的管理功能包括:
1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向CPU传送中断类型号。
8259A的内部结构和引脚如图2.3所示:
图2.3内部结构和引脚
8259的命令共有7个,一类是初始化命令字,另一类是操作命令。
8259A的编程就是根据应用需要将初始化命令字ICW1-ICW4和操作命令字OCW1-OCW3分别写入初始化命令寄存器组和操作命令寄存器组。
OCW1-OCW3各命令字格式如图2.4所示,其中OCW1用于设置中断屏蔽操作字,OCW2用于设置优先级循环方式和中断结束方式的操作命令字,OCW3用于设置和撤销特殊屏蔽方式、设置中断查询方式以及设置对8259内部寄存器的读出命令。
图2.4OCW1-OCW3各命令字格
2.2.38254主要功能
8254是Intel公司生产的可编程间隔定时器。
是8253的改进型,比8253具有更优良的性能。
8254具有以下基本功能:
●有3个独立的16位计数器;
●每个计数器可按二进制或十进制(BCD)计数;每个计数器可编程工作于6种不同工作方式;每个计数器允许的最高计数频率为10MHz;
●8254有读回命令,除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容。
●计数脉冲可以是有规律的时钟信号,也可以是随机信号。
计数初值公式为n=fCLKi÷fOUTi,其中fCLKi是输入时钟脉冲的频率,fOUTi是输出波形的频率。
图2.5内部结构框图和引脚图
上图是8254的内部结构框图和引脚图,它是由与CPU的接口、内部控制电路和三个计数器组成。
8254的工作方式如下述:
(1)方式0:
计数到0结束输出正跃变信号方式。
(2)方式1:
硬件可重触发单稳方式。
(3)方式2:
频率发生器方式。
(4)方式3:
方波发生器。
(5)方式4:
软件触发选通方式。
(6)方式5:
硬件触发选通方式。
8254的控制字有两个:
一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。
这两个控制字共用一个地址,由标识位来区分。
当读回控制字的D4位为0时,由该读回控制字D1~D2位指定的计数器的状态寄存器内容将被锁存到状态寄存器中。
状态字格式如图2.6所示:
图2.68254状态字格式
三程序接线图及流程图
3.1实验接线图
系统的连线图主要由五个部分构成。
8259中断控制器、8255并口控制器、8254定时计数器、键盘及数码管显示单元、开关及LED显示单元构成。
如下图所示:
芯片8254系统总线芯片8255LED数码管
D0PB0
D1PB1
D2PB2
D3PB3
D4PB4
D5PB5
D6PB6
D7PB7
WR
RDPA0
CSPA1
A0PA2
A1PA3
XD0
XD1
XD2
XD3
XD4
XD5
XD6
XD7
IOW#
IOR#
IOY3IOY0
XA1
XA2
Clk
Mir7
+5V
A
B
C
D
E
F
G
H
X1
X2
X3
X4
D0
D1
D2
D3
D4
D5
D6
D7
WR
RD
CS
A0
A1
CLK0
OUT0
GATE0
图3.4实验接线图
3.2主程序流程图
主程序的流程图是对整个程序的逻辑的图象表示。
首先是设置8254、8255、8259的各个端口地址。
接着初始化各个芯片,开始计时,并通过8259中断控制时间的正确显示。
在整个过程中都在检测是否有铵键响应。
有则停止,没有则返回继续执行。
图3.3系统实现流程图
四电子钟设计源程序
;*********用两个74LS373进行数码管的动态显示;一个做段(要显示的笔画)选,一个做位选
PORTSEQU211H;数码管显示地址(选管)
PORTBEQU210H;数码管显示内容控制
;*********在8253的定时中断中,通过8255的8个PA口,3个PB口进行扫描
PAEQU220H;8255CS选择信号端
TC0EQU230H;8253CS选择信号端
;*********数据段
DATASEGMENT
COUNT1DB12;扫描键盘中断口标志CM读数码管
COUNT2DB13;延世13次中断标志
KREPDB0;防止连击标志,krep=0:
无键按下
KSHAKEDB0;键盘防抖
KFLAGDB0;功能键标志位kflag=1,2,3--key(A\B\C)pressed,4--key(F)pressed
SYMBLDB0;显示标志位0--displaybufer,1--displaytemp
FIRSTDB0;修改标志位check2digit0--hight,1--low
ENTERDB0;在缓冲区里有新的数字?
有则为1
TABLDW57FH,5BFH,5DFH,5EFH,5FEH,5FDH,5FBH,5F7H
DW67FH,6BFH,6DFH,6EFH,6FEH,6FDH,6FBH,6F7H
DW37FH,3BFH,3DFH,3EFH,3FEH,3FDH,3FBH,3F7H
;键盘扫描码
ASCIDB"0123456789ABCDEFGMPRWXYS"
;键盘顺序码
MASEGDB"THEKEY_PREESEDISERROR!
",13,10,'$'
;按键出错提示字符串
NUMERRDB13,10,"THEENTEREDDIGITISERROR,INPUTAGAIN!
",13,10,'$'
;无效时间提示字符串
LED8DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,67H
DB77H,7CH,39H,5EH,79H,71H,80H,76H,38H,05CH
;显示编码表
POINTDW?
ORDERDW0
BUFERDB11H,0EH,12H,12H,0H,13H
;hh:
mm:
ss;'HELLOo'-atstarts;LED初始显示状态
TEMPDB6DUP(0);时间缓存区
SELECTDB1,2,4,8,10H,20H
OLDSEGDW0;保持初始中断向量段地址
OLDOFFDW0;保存偏移地址
DATAENDS
;**************代码段********************
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA
MAIN:
MOVAX,DATA
MOVDS,AX
MOVDX,PORTB
MOVAL,00
OUTDX,AL;熄灭所有数码管
MOVAH,35H;保存原来的中断向量
MOVAL,11
INT21H
MOVOLDSEG,ES
MOVOLDOFF,BX
MOVAX,SEGKEYLED;写入新的中断向量
MOVDS,AX
LEADX,KEYLED;取偏移地址
MOVAL,11;IRQ3中断向量类型号
MOVAH,25H
INT21H;写入IRQ3中断向量
STI
MOVAX,DATA;CSH数据段
MOVDS,AX
MOVES,AX;CSH堆栈段(inHDYmovsb要重新设定堆栈段)
MOVDX,PA+3;8255控制字
MOVAL,10010000B;PA口输入,PB口输出
OUTDX,AL
MOVPOINT,OFFSETTEMP;输入HCQ
INAL,21H;读8259中断寄存器
ANDAL,0F7H;11111011b
OUT21H,AL;开IRQ3
MOVDX,TC0+3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子音乐 播放 课程设计