logo资料库

简易电子琴微机原理课程设计.doc

第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
资料共29页,剩余部分请下载后查看
计算机科学与技术系 课程设计报告 2008~2009 学年第 1 学期 课 程 微型计算机原理与接口技术 课 程 设 计 名 称 简易电子琴 学 生 姓 名 学 号 专 业 班 级 指 导 教 师
题义分析及解决方案 1.1 题义需求分析 通过按动 STAR ES598PCI 单板机的 G6 区的 1~7 号键,使用单板机上的 8255A 芯片进行音调的选择,由 8253 芯片控制产生不同频率的方波,输出到单 板机上 D1 区的蜂鸣器,使其对应于 G6 区的 1~7 号键由低到高发出 1~7 的音阶, 并由 8255A 芯片控制 8253 芯片的工作状态,使其能够控制蜂鸣器的发声与否, 从而实现简易电子琴的演奏功能。同时,也可以通过事先设置好的“乐谱”回放 一段音乐,实现简易电子琴的回放功能以及对用户演奏过的一段音乐进行重放功 能。用户可以通过 DOS 界面下的菜单对电子琴的回放和重放或是演奏功能进行 选择。 1.2 解决问题方法及思路 1.2.1 硬件部分 电子琴的主要的器件有一个并行接口 8255 和一个 8253 定时器。输入部分主 要是由 8 个按键和一个并行接口 8255 组成。8 个按键一端接地,另一端接到 8255 的 A 口输入,并且通过一个电阻接到+5V。因此,在按键不按下时,从 8255A 口输入的是高电平,当开关按下时,输入的则是低电平,这样通过低电平触发, 既方便也对芯片起保护作用。如下表,当不同的开关按下时,从 A 口输入就对 应一个 8 位的数据。通过软件检测输入的数据,然后给 8253 送相应频率的计数 值。 电子琴以 8253 的 2 号计数器为核心。系统初始化时,2 号计数器工作在“方 波发生器”方式,CPU 通过对定时器的通道 2 进行编程,使其 I/O 寄存器接收一 个控制声音频率的 16 位计数值,写入顺序为先低后高,端口 61H 的最低位控制通 道 2 门控的开断,,CLK2 为 1MHZ,当计数初值为 3E8H 时,OUT2 输出的方波 大约为 1000 HZ,经过简单的滤波之后,送至蜂鸣器。改变 2 号计数器的计数初 值就可以使蜂鸣器发出不同频率的声音。 在送出频率计数值之前,还要给方式寄存器送一个方式值,该数决定对哪一 个通道编程,采用什么模式,送入通道的计数值是一字节还是两字节,是二进制 码还是 BCD 码。 芯片 8255A 的 A 口工作于基本输入方式下。G6 区的 1~7 号按键(S29~S36) 直接连接到 8255A 芯片的 A 口中,用于控制芯片 8253 的 2 号计数器的计数初值, 从而使 8253 芯片能够对于不同的按键产生与其相对应的方波频率。从定时器输 出的方波信号,经功率放大和滤波后驱动蜂鸣器。 芯片 8255A 的 C 口工作于基本输出方式下。8255A 芯片的 C 口的引脚 PC0
连接至 8253 芯片 2 号计数器的 GATE 引脚上,只有当 PC0 输出高电平至 GATE 引脚时,8253 芯片的 2 号计数器才正常工作,产生方波,从而使蜂鸣器发出有 规则的声音。反之则不会产生任何频率方波,那么蜂鸣器也就不会发出任何的声 音。通过 8255A 芯片对 8253 芯片的控制来达到对蜂鸣器的是否发声的控制。 在设计过程中,采用独立编址时,用地址线的高位部分和控制信号(如 RD、 WR、M/IO)进行组合产生 I/O 接口电路的片选信号(CS),用地址线的低位部 分直接连到 I/O 接口芯片实现端口的选择。在此采用的是译码器译码,经过 74LS138 译码后, 输出作为 8253 的片选信号(CS),即其端口地址为 40H~43H。 输出作为 8255 的片选信号(CS),即其端口地址为 60H~63H。 1.2.2 软件部分 一首乐曲由若干音符组成,一个音符对应一个频率。将与一个频率对应的计 数初值写入 2 号计数器,蜂鸣器就会发出相应的音调,计数初值的计算公式如下: 计数初值=1000000÷输出频率,1MHZ 转换成十六进制数为 3E8H。 程序设计有 DOS 下的功能选择界面,当用户选择演奏时,程序根据 G6 区 1~7 号按键输入到 8255A 芯片 A 口中的 8 位二进制数进行判断并将对应的计数 初值存入 8253 芯片 2 号计数器中,由 8253 芯片根据计数初值产生相应的频率, 输出到 D1 区的 CTRL 口中,从而使蜂鸣器发出有规律的乐声。当用户选择回放 功能时,程序会根据事先设计好的“乐谱”进行演奏,其工作原理与用户演奏的 工作原理相同,只是程序进行频率判断的数据不是由用户实时输入,而是根据“乐 谱”中存有的数据进行音阶的判断并对 8253 芯片 2 号计数器的计数初值进行修 改。 就整个电路而言,接好电路后,通过软件编程不断地采集从 8255 口中输入 的信号数据,由于已知开关未按下时的数据,通过比较检测到的数据和这个数据 就可以判断是否有开关接通,若没有开关接通,则程序就通过 8255A 的 C 口 PC0 输出低电平,这样 8253 芯片的 2 号计数器将不会工作,蜂鸣器接受到固定的电 平,将不会发声。只要有开关按下,程序就会采集到一个不同的数据,由于这个 数据会不同于未按下按钮时 A 口的数据,此时程序会修改 8255A 的 C 口输出数 据,使 PC0 输出高电平,这样 8253 的 2 号计数器即开始正常工作,根据 A 口输 入的数据与事先编好的表对应,得到一个计数值,把这个计数值送给 8253 的通 道 2,8253 的通道 2 工作的方式 3 下,这样就可以产生满足频率要求的发声方波。 这个方波经驱动放大就可以使扬声器发出相应的声音。 设计“乐谱”时,数据段设置两张表,一张为频率表,将与音符对应的频率 值依次写入表中,另一张为时间表,依次存放每个音符的单位时间。当然,频率 表和时间表的表项要一一对应,不能错位,频率表的最后一个表项为 0,作为重 复演奏或者是停止演奏的标志。当用户选择回放功能后,程序会修改 8255A 的 C 口输出数据,使 PC0 输出高电平,这样 8253 的 2 号计数器即开始正常工作,程
序依次取出频率表中的频率值,装换成计数初值写入 8253 的 2 号计数器,再依 次取出时间表中的单位时间和调试参数 N 相乘即可得到延时时间,也就是单个 音符的演奏持续时间。8253 的 2 号计数器在这两个数据的控制下发出有规律的 方波信号至蜂鸣器,蜂鸣器即开始演奏“乐谱”。在频率表的最后会有一个特殊 符号,当程序检测到这个特殊符号时,将会修改 8255A 的 C 口输出数据,使 PC0 输出低电平,这样 8253 的 2 号计数器即停止工作,蜂鸣器也就停止发出声音, 此时回放结束。 一、 硬件设计 2.1 选择芯片 8253 2.1.1 芯片 8253 在本设计中的作用 芯片 8253 在本实验中主要用于输出规定频率的方波,控制蜂鸣器发出规定 频率的声音。 2.1.2 芯片 8253 的功能分析 8253A 是一种可编程的定时器/计数器芯片,它可用于计数、分频、定时器 等的方面。当其工作于“方波发生器”工作方式下,可以从 OUT 引脚得到对称 的方波输出。当装入的计数值 N 为偶数时,则前 N/2 计数过程中,OUT 为高电 平;后 N/2 计数过程中 OUT 为低电平,计数过程连续进行。若 N 为奇数,则(N+1) /2 计数过程中,OUT 保持高电平;而(N-1)/2 计数期间,OUT 为低电平。当 GATE 信号为低电平时,强迫 OUT 输出高电平。当 GATE 为高电平时,OUT 输 出对称方波。在产生方波过程中,若装入新的计数值,本次计数完成后,以新的 计数值开始下一轮的计数。 使用 8253 芯片的 2 号计数器,将其设置为“方波发生器”的工作方式,修 改其计数初值,即可在 8253 芯片的 OUT2 引脚得到不同频率的方波。将不同频 率的方波输出到蜂鸣器便可以使其发出不同音阶的乐声。 2.1.3 芯片 8253 的技术参数 芯片 8253 的控制字端口地址为 43H,通道 2 端口地址为 42H。8253 的主要 性能为:内有三个独立的 16 位计数器,工作方式可编程控制,计数脉冲频率为 0MHZ-2.6MHZ,可以按二进制或 BCD 码计数,使用单一+5 电源。 表 2-1 8253 技术参数 名称参数 符号 测试条件 输入低电压 输入高电压 Vil Vih 典型 最大 0.8 Vcc+0.5 最小 -0.5 2.2 单位 V V
输出低电压 输出高电压 Vol Voh 0.45 2.4 输入负载电流 Iil Vin=Vcc~0 +/-10 输出浮动漏电 Iofl Vout=Vcc~0.45 +/-10 电流 Icc 140 V V uA uA mA 2.2 选择芯片 8255A 2.2.1 芯片 8255A 在本设计中的作用 芯片 8255A 在本实验中主要用于接收 1~7 号按键的输入,控制蜂鸣器的开 关和 8253 芯片的正常工作。 2.2.2 芯片 8255A 的功能分析 8255 是可编程并行接口,内部有 3 个相互独立的 8 位数据端口,即 A 口、 B 口和 C 口。三个端口都可以作为输入端口或输出端口。A 口有三种工作方式: 即方式 0、方式 1 和方式 2,而 B 口只能工作在方式 0 或方式 1 下,而 C 口通常 作为联络信号使用。8255 的工作只有当片选 CS 效时才能进行。而控制逻辑端口 实现对其他端口的控制。 8255A 方式 0 是基本输入/输出方式,A、B、C 三个口中任何一个口都可提 供简单的输入和输出操作,不需要应答联络信号,即可用于无条件传送的场合, 也可以用作查询方式传送。当采用查询方式传送时,原则上可用 A、B 和 C 三个 口的任一位充当查询信号。方式 0 的工作特点:通常不用联络信号,不使用中断, 三个通道中的每一个都有可以由程序选定作为输入或输出。其功能特点为: 1、两个 8 位通道:通道 A、B。两个四位通道:通道 C 高 4 位和低四位; 2、任何一个通道可以作输入/输出; 3、输出是锁存的; 4、输入是不锁存的; 5、在方式 0 时各个通道的输入/输出可有 16 种不同的组合。 使用 8255A 芯片的 A 口,将其设置为基本输入工作方式,通过 A 口的 8 位 数据线连接 G6 区的 8 位按键数据线,接收用户的输入。使用 8255A 芯片的 C 口,将其设置为基本输出工作方式,通过 PC0 输出线连接到芯片 8253 的 GATE2 口,使其 2 号计数器正常工作,从而控制蜂鸣器的发声与否。 由于蜂鸣器本身在输入端含有放大电路,所以无需考虑 8253 输出给蜂鸣器 的驱动电流和电压的大小,只须保证其输出的驱动电流和电压位于蜂鸣器电路的 输入有效范围内即可。 2.2.3 芯片 8255A 的技术参数
芯片 8255A 的口地址为 61H。 表 2-2 8255A 技术参数 参数名称 输入低电平电压 输入高电平电压 符号 VIL VIH 测试条件 最大规范值 最小规范值 -0.5V 2.0V 2.4V 2.4V 1.0MA -10MA -10MA 0.8V Vcc 0.45V 0.45V 输入低电平电压(数据总线) VOL IOL=2.5MA 输入低电平电压(外部端口) VOL IOL=1.7MA 输入高电平电压(数据总线) VOH IOH=-400MA 输入高电平电压(外部端口) VOH IOH=-200MA 达林顿驱动电流 IDAR REXT=750 -0.4MA 电源电流 输入负载电流 ICC IIL VEXT=1.5V I=Vcc—0V 输出浮动电流 IOFL Vout=Vcc--0 120MA +10MA +10MA 2.3 选择器件 蜂鸣器 2.3.1 蜂鸣器在本设计中的作用 在本实验中,蜂鸣器用作将 8253 产生的不同频率装换为不同的音调的声音。 2.3.2 蜂鸣器的功能分析 图 2-1 蜂鸣器电路图 扬声器是将电能转化成声能,并将声能辐射到空气中去的一种电声转换器 件。当输入端输入一定频率的方波时,在 RC 震荡电路的作用下,蜂鸣器会发出 一定频率的声音。 2.3.3 蜂鸣器的技术参数 它一般包括灵敏度、频率响应、额定功率、额定阻抗、指向性、失真、音质 听感评价等。本实验只关心应用电压,其为 5V。 2.4 选择器件 二进制开关
2.4.1 二进制开关在本设计中的作用 在本实验中,二进制开关用于输入不同的数值,确定频率。 图 2-2 二进制开关电路图 2.4.2 二进制开关的功能分析 二进制开关为输入器件,通过电平的不同输入不同的二进制数。 2.4.3 二进制开关的技术参数 参数:K 接 Vcc=+5V 时为 1,接地时输出为 0,保护电阻 R = 100kΩ.GND 为接 地端。 2.5 硬件总逻辑图及其说明 硬件总逻辑图说明:JP74:按键控制接口;按下-0 信号,松开-1 信号; JP80:开关控制接口;闭合-0 信号,断开-1 信号;P75:PB 口;Ctrl:控制接 口,0-蜂鸣;CS:片选信号,低电平有效;A0、A1:地址信号。
图 2-3 硬件总逻辑图 二、 控制程序设计 3.1 控制程序设计思路说明 程序采用模块化设计,分为主程序,回放功能模块,演奏功能模块,菜单模 块,发音模块,延时模块,重放模块等。菜单模块用于显示用户菜单,供用户选 择电子琴的功能以及显示当前电子琴的功能状态。回放功能模块用于从“乐谱” 中读取数据,并装换为计数初值传给 8253 的 2 号计数器。演奏模块则用于接收 用户的按键输入,判断音阶然后传递规定的计数初值给计数器。发音模块则用于 控制蜂鸣器的发声与否,使其能够根据 8253 提供的方波频率发声或停止发声。 在后期的程序编写过程中,会对各个功能模块的功能进行进一步的改进和功能细
分享到:
收藏