当前位置:文档之家› 音乐播放器设计与仿真

音乐播放器设计与仿真

科信学院电子信息工程CDIO二级项目(2013/2014学年第二学期)题目:音乐播放器的设计与仿真专业班级:学生姓名:学号:指导教师:设计周数:设计成绩:目录题目:基于Proteus与8253、8255A、8086芯片的音乐播放器 (2)音乐播放器的设计与仿真 (2)1 设计目的 (2)2 设计正文 (2)2.1音乐播放器的设计原理 (2)2.2 8253、8255A以及CPU8086芯片介绍 (3)2.2.1芯片8253简介 (3)1、8253外部引脚介绍 (3)2、8253内部结构介绍 (4)3、8253作为定时器与计数器时的功能介绍 (6)4、方式选择控制字 (7)5、8253的工作方式 (7)2.2.2 芯片8255的介绍 (8)1、8255A外部引脚介绍 (8)2、8255A内部结构介绍 (10)3、8255的工作方式 (12)4、8255A控制字 (12)2.2.3 CPU 芯片8086介绍 (14)1、8086简介 (14)2、8086外部引脚介绍.............................................................................................14.3、8086内部结构介绍 (16)2.2.4音乐播放器的设计流程 (18)1、音乐播放器的总体设计流程图 (18)2、芯片间连接情况以及功能介绍 (19)3、程序设计的总体思路 (21)4、硬件连接电路图 (22)3.设计总结 (22)4.参考文献 (23)基于Proteus与8086、8253、8255芯片的音乐播放器1.设计目的◆掌握接口电路的应用和设计技术。

◆掌握汇编语言的设计思路。

◆学会针对不同的要求设计汇编程序代码。

◆掌握8086的控制流程,以及8255和8253芯片的功能。

◆用汇编程序完成键控音乐播放器的,用8253定时器来产生声音。

2.设计正文2.1音乐播放器的设计原理所有音乐都是由各个不同频率的音阶和其延续时间的长短来实现的。

不同的音乐是由各个音阶按某种排列各自播放一定时间形成的,将各音乐音阶和其延续时间存在数据段中,然后根据不同按键值选择不同的音阶和时间表,再使用计数器产生该音阶频率。

音乐播放器属于接口电路的连接使用,本设计是以8253芯片为核心的发生系统。

8086CPU在形成系统总线后,通过和8253及8255的连接使用可以很好的驱动扬声器发音。

系统初始化后,8255通过B通道,从控制开关读取所需的控制字,并送入8086CPU中进行判断,选择不同的播放音乐。

使8253的通过0号计数器工作在方式3,发出不同频率的方波。

当给定不同的计数初值时可以使扬声器发出不同频率的音响,并根据时间表播放不同的时间,用8255并行接口来控制扬声器的开关,达到播放音乐的功能。

74LS373主要用于所存8086的输出地址。

因为8286引脚0-15是地址与数据复用的因此需要在8086输出地址后对地址进行所存以便更好地传输数据,经74LS373锁存后的地址信号可以在访问存储器操作期间始终保持不变,为外部提供稳定的地址信号。

由上可知本播放器的设计用到的主要芯片有CPU8086,计数器/定时器8253、I/O选择控制器8255A,地址锁存器74LS373。

2.2 8253、8255A以及CPU8086芯片介绍2.2.1 芯片8253简介在计算机应用系统中,计数与定时具有极其重要的作用,有时需要通过定时来实现某种操作,如定时中断、定时检测、定时扫描等;它需要某种外界事件进行计数。

实现定时的方法有两种:软件定时、不可编程的软件定时。

8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的结构完全相同。

每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。

每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。

每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。

1、8253外部引脚介绍8253芯片是具有24个引脚的双列直插式集成电路芯片,其引脚分布如图1所示。

8253芯片的24个引脚分为两组,一组面向CPU,另一组面向外部设备,8253的外部引脚图如图1所示,各个引脚功能介绍如下:图 1 8253外部引脚图(1)D7~D0:双向、三态数据线引脚,与系统的数据线连接,传送控制、数据及状态信息。

(2)RD:来自于CPU的读控制信号输入引脚,低电平有效。

(3)WR:来自于CPU的写控制信号输入引脚,低电平有效。

(4)CS:芯片选择信号输入引脚,低电平有效。

(5)A1、A0:地址信号输入引脚,用以选择8254芯片的通道及控制字寄存器。

(6).VCC 及GND:+5V电源及接地引脚。

(7)CLKi: i=0,1,2,第i个通道的计数脉冲输入引脚,8254规定,加在CLK引脚的输入时钟信号的频率不得高于2.6MHZ,即时钟周期不能小于380ns。

(8)GATEi: i=0,1,2,第i个通道的门控信号输入引脚,门控信号的作用与通道的工作方式有关。

(9)OUTi:i=0,1,2,第i个通道的定时/计数到信号输出引脚,输出信号的形式由通道的工作方式确定,此输出信号可用于触发其它电路工作,或作为向CPU发出的中断请求信号。

2、8253内部结构介绍它由数据总线缓冲器、读/写逻辑、控制字寄存器以及3个独立的16位计数器组成。

8253内部结构如图2所示图2 8253内部结构图(1)数据总线缓冲器数据总线缓冲器与系统总线连接,8位双向,与CPU交换信息的通道。

这是8253与CPU之间的数据接口,它由8位双向三态缓冲存储器构成,是CPU与8253之间交换信息的必经之路。

(2)控制寄存器控制寄存器用来保存来着CPU的控制字。

每个计数器都有一个控制命令寄存器,用来保存该计数器的控制信息。

控制字将决定计数器的工作方式、计数器形式以及输出方式,亦决定计数器的工作方式、计数形式以及输出方式,亦决定如何装入计数初值。

8253的3个控制寄存器只占用一个地址号,而靠控制字的最高两位来决定将控制信息送入哪个计数器的控制寄存器中保存。

控制寄存器只能写入不能读出。

(3)读/写逻辑读/写逻辑的任务是接受来着CPU的控制信号,完成对8253内部的操作控制。

这些控制信号包括读信号/RD、写信号/WR、片选信号/CS以及用于片内寄存器寻址的地址信号A0、A1。

当片选信号有效,即/CS=0时,读写逻辑才能正常工作。

该控制逻辑根据读/写命令即送来的地址信息,决定3个计数器和控制寄存器中哪一个工作,并控制内部总线上数据传送的方向。

8253共占用4个I/O端口,CPU可对写操作。

这4个端口地址由最低2位地址码A1A0来选择。

如表一所示。

表一8253端口地址以及内部操作3、8253作为定时器与计数器时的功能介绍(1)作计数器时,应将要求计数的次数预置到该通道的计数器中、被计数的事件应以脉冲方式从CLK端输入,每输入一个计数脉冲,计数器内容减“1”,待计数值计到“0”。

OUT端将有输出。

表示计数次数到。

当某个通道用作定时器时。

由CLK输入一定频率的时钟脉冲。

根据要求定时的时间长短确定所需的计数值。

并预置到计数器中,每输入一个时钟脉冲,计数器内容减“1”,待计数值计到“0”。

OUT将有输出,表示定时时间到。

允许从CLK输入的时钟频在1~2MHz范围内。

因此,任一通道作计数器用或作定时器用,其内部操作完全相同,区别仅在于前者是由计数脉冲进行减“1”计数。

而后者是内时钟脉冲进行减“1”计数。

作计数器时,要求计数的次数可直接作为计数器的初值预置到减“1”计数器中。

(2)作定时器时,计数器的初值即定时系数应根据要求定时的时间进行如下运算才能得到:定时系数=需要定时的时间/时钟脉冲周期①设置通道:向方式控制字寄存器端口写入方式选择控制字,用于确定要设置的通道及工作方式;②计数/定时:向通道写入计数值,启动计数操作;③读取当前的计数值:向指定通道读取当前计数器值时,8253将计数器值存入锁存器,从锁存器向外提供当前的计数器值,计数器则继续作计数操作。

④计数到:当计数器减1为0时,通过引脚OUTi向外输出“到”的脉冲信号。

计数初值输入存放在初值寄存器中,计数开始或重装入时被复制到计数器中。

锁存器在非锁存状态,其值随计数器的变化而变化;一旦锁存了计数器的当前值,直到锁存器值被读取后才能解除锁存状态。

4、方式选择控制字8253的方式控制字如图3所示图3 8253的方式控制字5、8253的工作方式(1) 方式0:计数结束产生中断方式当写入控制字后,OUT变为低电平,当写入初值后立即开始计数,当计数结束时,变成高电平。

(2) 方式1:可编程单次脉冲方式当初值装入后且GATE由低变高时,OUT变为低电平,计数结束变为高电平。

(3) 方式2:频率发生器方式当初值装入时,OUT变为高;计数结束,OUT变为低。

该方式下如果计数未结束,但GA TE为低时,立即停止计数,强制OUT变高,当GATE再变高时,便启动一次新的计数周期。

(4) 方式3:方波发生器当装入初值后,在GA TE上升沿启动计数,OUT 输出高电平;当计数完成一半时,OUT输出低电平。

方式3与方式2的工作方式类似,也是在初始化完成后能重复循环计数,只是输出的波形不同。

(5)方式4:软件出发选通方式进入工作方式4,OUTi输出高电平。

装入计数值n后,如果GATE为高电平,则立即开始减“1”计数,直到计数值减到“0”为止,OUTi输出宽度为一个CLKi周期的负脉冲。

由软件装入的计数值只有一次有效,如果要继续操作,必须重新置入计数初值n。

如果在操作的过程中,GATE变为无效,则停止减“1”计数,到GA TE再次有效时,重新从初值开始减“1”计数。

(6)方式5:硬件触发方式计数进入工作方式5,OUTi输出高电平,硬件触发信号由GATE端引入。

因此,开始时GATE应输入为0,装入计数初值n后,减“1”计数并不工作,一定要等到硬件触发信号由GATE端引入一个正阶跃信号,减“1”计数才会开始,待计数值计到“0”,OUTi将输出负脉冲,其宽度固定为一个CLKi周期,表示定时时间到或计数次数到。

2.2.2 芯片8255的介绍8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。

具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。

1、8255A外部引脚介绍8255A外部引脚图如图4所示图4 8255A外部引脚图RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。

相关主题