基于PC机的电子琴设计

上传人:平*** 文档编号:11340838 上传时间:2017-10-12 格式:DOC 页数:5 大小:61.78KB
返回 下载 相关 举报
基于PC机的电子琴设计_第1页
第1页 / 共5页
基于PC机的电子琴设计_第2页
第2页 / 共5页
基于PC机的电子琴设计_第3页
第3页 / 共5页
基于PC机的电子琴设计_第4页
第4页 / 共5页
基于PC机的电子琴设计_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《基于PC机的电子琴设计》由会员分享,可在线阅读,更多相关《基于PC机的电子琴设计(5页珍藏版)》请在金锄头文库上搜索。

1、基于 PC 机的电子琴设计一、实验目的掌握利用 pc 机扬声器发出声音的方法。学习利用系统功能调用从键盘上读取字符的方法。二、实验内容与要求利用 PC 机和扬声器实现简易电子琴的功能。基本要求(1)电子琴功能,编写程序,程序运行时使 pc 机成为一架可弹奏的“钢琴”。当按下 PC 机键盘数字键 1-8 时,依次发出 1,2,3,4,5,6,7,i 八个音调。(2)音乐盒功能,内部存储至少 2 首以上的乐曲,根据菜单选择播放。提高要求(1)使一组放光二极管随音调变化而改变,实现音乐彩灯(2)能够实现高、中、低音的选择。(3)能够存储弹奏的内容,进行回放。三、实验报告要求设计目的和内容总体设计硬件

2、设计:原理图(接线图)及简要说明软件设计框图及程序清单设计结果和体会(包括遇到的问题及解决的方法)四、设计原理要使扬声器发出不同的音调,就得输入不同频率的波形。通过给 8253 定时/计数器装入不同的计数值,可以使其输出不同频率的方波。经过放大器的放大作用,便可驱动扬声器发出不同的音调,只要插入一段延时程序之后,再将扬声器切断,音调的声音就可以持续一端时间。通过计算机的不同按键输出不同的音调,需要使用系统调用功能以接收键入字符,并且要建立一张表,使键入字符与频率构成一个对应关系。按键 1 2 3 4 5 6 7 8音符 1 2 3 4 5 6 7 I频率值 524 588 660 698 78

3、4 880 988 1048乐曲是由不同的频率和节拍的音调组成的,因此控制驱动脉冲的频率和持续时间就是编写乐曲程序的关键。频率对应8253的计数初值,而乐曲中的节拍决定了各音频持续的时间。五、总体设计1用PC机的键盘数字键对应电子琴的8个琴键。28255 和 8253 配合构成音频发生器。8255 的 PA0 口控制扬声器的开关,8253 控制扬声器的发声频率。3音频信号经LM386放大后,驱动扬声器。4系统运行时,首先显示主菜单,选择子菜单后进行相应的操作。六、硬件设计利用实验板上的 8253 计数/定时器和 8255 并行接口,定时器 8253 利用工作方式 3 产生一定频率信号,通过可编

4、程的并行外围接口芯片 8255 控制频率信号的通断。8255 的 A 口设置为输出,8255 的 A 口的低两位用来控制扬声器驱动,当输出端口的PA0 位为“ 1”或为 “0”时,将使控制驱动器的与门电路接通或关闭,使 8253 所发出的音频信号能到达驱动器或被阻断。这样通过控制 PA0 的变化,可使扬声器接通和断开,控制扬声器是否能发出声音。此外,通过控制 PA0 的通断时间,就能发出不同的音长。8255 的PA1 位为“ 1”时,控制 8253 定时器产生驱动扬声器发声的音频信号,该位为“ 0”则不发信号。8253 有三个定时器,分为 0 号、1 号和 2 号定时器,驱动扬声器的是 0 号

5、定时器,该定时器工作在方式 3,是一个频率发生器,它负责向扬声器发送指定频率的脉冲信号。当8255 的 PA0 和 PA1 都为 1 时, 8253 发出指定频率的声音信号的前提下,声音信号通过与门到达驱动器驱动扬声器发声。硬件原理图如图 1 所示:图 1 硬件原理图扬声器驱动电路如图 2 所示。8253计数器与门 扬声器驱动扬声器8255 PA08255 PA1门控控制喇叭Q0图 2 扬声器驱动电路七、软件设计系统要求实现2个功能,电子琴和音乐盒的功能。两者发声的方法一样,只是一个数据是从键盘读取的,另一个是已经保存好的数据。首先我们可以用一个子程序实现单个音调的产生,对8253输入不同的计

6、数初值生成不同频率的波形,然后延时一段时间。电子琴程序主要是读取键盘按键,根据键值产生不同的音调即可。而乐曲的播放先将乐曲的音符编码表和节拍编码表建立好的,然后在播放时读取数据。1. 单音调子程序SOUND单音调子程序的调用前需要进行以下几个方面工作:1)确定相应的音调所对应的频率,查表可以得到,再由频率得到对应的8253计数初值。2)确定音长,即一个音符所持续的时间。在单音调子程序中实现发出一个音符的声音,持续所需的时间,流程图如图 3 所示:读取 8253 计数初值和音长8253 置初值开启与门和 8253GATE延时关闭与门和 8253GATE返回图 3 单音调子程序流程图2电子琴程序由

7、于是用键盘的数字键 1-8,要先读取键盘的输入,判断输入是否在 1-8 之间,不在就退到主菜单,若是就根据键值查表找出相应的频率,计算初值,调用发音子程序即可,此时的音长固定。初值的计算方法是用输入的 clk 频率除以音符的频率。程序流程图如图 4 所示。YNYN显示提示信息等待键盘按键放入 ALAL30AL查表 FREQ 得频率计算初值,置音长返回主菜单调用 SOUNDAL 小于1AL 大于8图 4 电子琴程序流程图3音乐盒程序音乐盒的乐曲播放程序中需要有两组数据支持:一组是频率数据,一组是节拍时间数据。音符的频率可以通过简谱从频率表中查得。节拍时间就是音符的持续时间,取决于乐曲的速度和每个

8、音符的节拍数据。如 4/4(四四拍)中,每小节包括 4 拍,全音符持续 4 拍,二分音符持续 2 拍,四分音符持续一拍,八分音符持续半拍等。有了音调与频率和时间的关系后,就可以按照乐曲的曲谱将每个音符的频率和持续的时间定义成两组数据表,然后编程依次取出表中的频率值和节拍值,调用单音调子程序就可依次产生各个音调,播放出乐曲。在程序中存储几个乐曲数据,根据音乐盒子菜单选择相应的乐曲演奏,读取对应的数据输出。乐曲两只老虎的简谱如下:两只老虎1=C 4/41 2 3 1 | 1 2 3 1 | 3 4 5 - |3 4 5 - | 3 1 | 3 1 |6462 5 1 - | 2 5 1 - |对应

9、的频率数据表Freq、节拍数据表 Time如下:TWOTIGERS_FRE DW 2 DUP(524,588,660,524,0) ;乐曲的频率表DW 2 DUP(660,698,784,0)DW 2 DUP(784,880,784,698,660,524,0)DW 2 DUP(588,392,524,0),1TWOTIGERS_TIME DW 10 DUP(100),200,100,100,200 ;乐曲的时间表DW 2 DUP(50,50,50,50,100,100)DW 2 DUP(100,100,200)其他乐曲的数据将频率数据表Freq、节拍数据表Time 和乐曲名修改就可以实现其他乐曲的播放。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号