可编程电子音乐自动演奏电路设计.docx
《可编程电子音乐自动演奏电路设计.docx》由会员分享,可在线阅读,更多相关《可编程电子音乐自动演奏电路设计.docx(33页珍藏版)》请在冰豆网上搜索。
可编程电子音乐自动演奏电路设计
第1章技术指标
1.1系统功能要求
可编程电子音乐演奏电路可以通过开关选择预先设定好的音乐曲目,曲目选定后则自动演奏所选曲目。
1.2系统结构要求
可编程电子音乐自动演奏电路的系统结构要求如图1-1所示。
图中K1用于选择预先设置在电路中的乐曲,选中某一乐曲后对应的发光二极管亮,音乐演奏电路反复自动演奏所选的乐曲,经功率放大后由喇叭播出,直至选中下一首为止。
1.3基本指标
1.3.1乐曲要求
(a)乐曲数目3首。
(b)每首乐曲长度20s~30s。
(c)所选择的乐曲应在4个8度内,以第6个8度作为最高的8度。
(d)乐曲演奏速度为100拍/min~120拍/min..
1.3.2演奏要求
第1页
(a)用1个自复键K1选择所需的曲目,用3个LED表示选中对应曲目,当3个LED都不亮时,表示没有选中,电路没有乐曲输出。
(b)一旦选中某一首乐曲,电路将自动循环放送所选的乐曲。
1.3.3电气指标
(a)音频功放输入为方波。
(b)音阶频率误差E≤5生。
(c)负载(喇叭)阻抗为8Ω,功率为1/8W。
(d)输出音量可调。
1.4设计条件
1.4.1电源电压为5V。
1.4.2电路设计,不允许采用试凑法,必须采用系统设计方法画出ASM图,并根据ASM图设计控制电路。
1.4.3可供选择的元器件范围如表1-1所示。
序号
元件型号
数量
序号
元件型号
数量
1
1/8W喇叭
1只
11
74LS161
2片
2
LED发光二极管
3只
12
74LS163
2片
3
10K电位器
1个
13
74LS393
1片
4
74LS00
1片
14
74LS174
1片
5
74LS04
1片
15
GAL16V8
1片
6
74LS20
1片
16
28C64B
1片
7
74LS74
2片
17
LM555
2片
8
74LS132
1片
18
单刀单位自复开关
1片
9
74LS138
1片
19
LM386
1片
10
74LS153
1片
表1-1
第2页
第2章整体方案设计
2.1设计分析
电子乐器模仿各种乐器的基本原理是:
先将某种乐器的声音转换为电信号,再分析该乐器的电信号的波形和频谱,最后利用电子技术产生与该乐器相仿的电信号。
仅从电子乐器发出的信号电特性来看,其表现力主要体现在4个方面:
音高(基本频率),长短,强弱(信号的电压幅度或输出功率)和音色(信号的波形和频谱)。
由于本课程设计所研究的电子乐器在演奏时,它所产生的信号是方波,其波形是占空比为50%的脉冲波,频谱中仅含有基频和其奇次谐波。
所以,再设计本课程设计时,在保证输出信号是方波的前提之下,主要考虑如何用电子电路控制音高(频率),长短(音的时值)和强弱(信号幅度)这3个电子乐器的基本特性。
2.1.1乐器的标准频率
乐器的整个音域范围分成108个音高,相邻两个音高的频率比为1.0595,如果两个信号的频率值相差1倍,则称这两个音相差8度。
将108个音高分为9组8度音程,每个8度音程里含有12个音调(C,#C,D,#D,E,F…,B),如表2-1所示,相邻之间的音调差被称为半音。
表中“#”号为半音符号。
国际上将440Hz作为标准音高。
8度编号
音调
C
#C
D
#D
E
F
#F
G
#G
A
#A
B
0
16.351
17.324
18.354
19.445
20.601
21.827
23.124
24.499
25.956
27.5
29.135
30.867
1
32.703
34.648
36.708
38.891
41.203
43.654
46.249
48.999
51.913
55
58.27
61.735
2
65.406
69.296
73.416
77.782
82.407
87.307
92.499
97.999
103.83
110
116.54
123.47
3
130.81
138.59
146.83
155.56
164.81
174.61
184.99
195.99
207.65
220
233.08
246.94
4
261.62
277.18
293.67
311.13
329.63
349.23
369.99
391.99
415.31
440
466.16
493.88
5
523.25
554.36
587.33
622.25
659326
698.46
739.99
783.99
830.61
880
932.32
987.76
6
1046.5
1108.7
1174.7
1244.5
1318.5
1396.9
1479.9
1567.9
1661.2
1760
1864.7
1975.5
7
2093
2217.5
2349.3
2489
2637
2739.8
2959.9
3136.9
3322.4
3520
3729.3
3951.1
8
4186
4434.9
4698.6
4978
5274
5587.7
5919.9
6271.9
6644.9
7040
7458.6
7902.1
表2-1
第3页
2.1.2音名和唱名
音名和唱名之间的对应关系如下表2-2所示。
表2-2
音名的音高是固定不变的,一切乐器和人声发出的C音,D音等,其音高相同。
唱名的高度因调号的不同而异。
例如,对于调号1=C来说,把标准的1(do)唱成和C4音一样高,把2(re)唱成和D4音一样高,把3(mi)唱成和E音一样高。
其中,音名的E-F,B-C
第4页
是半音,其余为全音。
唱名的3-4,7-1是半音,其余为全音。
2.1.3音的长短
简朴中用短横线表示音的长短,不带短横线的基本音符为四分音符,如1。
短横线在基本音符右侧时称为增时线,每增加一个增时线表示延长一个4分音符如1-。
短横线在基本音符下面时称为减时线,每增加一条减时线表示原来的音缩短一半的时间。
另外,还可以用附点表示音的长短,附点表示延长其前面音值的一半。
2.2整体方案
2.2.1整体电路结构
根据图1-1所示,将整体电路分为“选取电路”,“音乐演奏电路”和“功率放大”3个主要部分。
2.2.2音阶信号产生方案
在设计电路之前,应选择3首乐曲,乐曲的音域应尽量符合指标要求,在4个8度内。
根据一个8度组内有12个音阶的特点,相邻两个8度组同名音名为8度关系,可以采用图2-1或图2-2来产生12个音阶和8度变化,使输出信号f为唱名所对应的频率值。
第5页
(1)振荡电路
振荡电路应能产生一个时钟信号CP。
选择CP的频率时,应考虑经过12音阶分频电路和8度分频电路后,输出信号频率f应满足要求。
考虑到乐曲的音域应在4个8度内,即乐曲的所有音域在第3,4,5,和6个8度内,故取第7个8度内的最低频率2093Hz,再乘以256(两级74161级联后的计数器模值),这样就得到了应该产生的振荡器的频率535808Hz。
(2)12音节分频电路
音阶分频电路应能在分频控制电路的控制下,产生12个音阶频率中的一个。
当CP信号确定后,应考虑寻求能够比较方便地控制分频比的分频方法。
分频方法不同,分频控制电路的结构不同。
(3)8度分频电路
2个8度信号就是2分频的关系,4个8度信号就是4个有2分频关系的信号。
设计这一点路试,应考虑用何种方式可以使分频电路和8度分频的控制电路最为简便。
第6页
(4)控制电路
数字系统,按其定义可分为控制器和数据处理器两部分,图2和图3中控制器已标出,其余的均为数据处理电路。
演奏器的控制电路的逻辑操作可参考图2-3所示的逻辑流程图。
它的逻辑流程可概括为:
开机启动后进入“等待”状态,此状态下不演奏乐曲;如果此时有乐曲信号,则根据选取信号的编码得到乐曲在EEPROM中的首地址;得到某一乐曲首地址后,进入演奏状态,每奏出一个最小时值单位的乐符判断一次是否有演奏结束信号;若未结束,则ROM地址加1,从下一个字节中取出分频控制信号;若从ROM取出的信号有结束标志,则返回“等待”状态。
如果此时选取信号未取消,则按上述逻辑操作进行操作。
此数字系统的时钟,若与乐曲中最小的时值相同,则可以使电路简化。
第7页
设计分频控制信号应考虑如下因素:
(a)首先分析乐曲中最短的音符,以该音符的长度作为演奏过程中最小的时间单位Tmin,其它音的音值长度都是最小时间单位的整数倍。
(b)分频控制电路应能产生一个可控制12音阶分频电路作相应的音频的音阶控制码,同时还应能产生一个可控制8度分频电路产生相应的8度分频的8度控制码。
(c)将一首乐曲每一个音的两个控制码存在EEPROM中,按乐曲演奏的顺序逐个取出,从而得到演奏过程中的信号。
(d)演奏的乐曲中如果有休止符,此时没有输出信号,在设计控制码时,应考虑休止符的产生。
(e)为了使乐曲能够自动循环演奏,应考虑识别某一曲目的结尾以及如何控制电路返回到该乐曲的开始点。
2.2.3音频功率放大器
设计音频功率放大器时,应考虑负载(喇叭)的额定功率,一是功率放大器输出应能够驱动负载,二是输出功率不能大于负载(喇叭)的额定功率,否则就将烧坏负载(喇叭)。
2.3整体方框图
整体方框图如图2-4所示:
第8页
第3章单元电路设计
3.1节拍发生器的设计
用555定时器来实现8Hz的节拍发生器,如图3-1所示。
基本指标中要求乐曲的演奏速度为100~120拍/min,,现取演奏速度为120拍/min。
如果乐曲中的音全为4分音符,则节拍发生器产生的频率应为f=120拍/1min=120拍/60s=2Hz,但考虑到一首乐曲中最短的音为16分音符,故f=120拍/60s*4=8Hz。
由于图3-1产生的频率为f=1/T=1.43/(RA+2RB)C,故取C=47uF,RB=lK,RA=1.8K。
3.2消抖开关设计
采用D触发器来设计消抖动电路,如图3-2所示:
第9页
图中电阻R的值取1K。
3.3地址计数器的设计
采用74393来构成M=256的地址计数器,如图3-3所示。
第10页
图3-3中CR的具体接法见方框图3-5曲尾识别电路设计。
3.4选曲电路和曲目显示电路设计
图3-4中用74163构成2位二进制计数器,由于地址计数器电路3-3中已经占用了28C64的A0~A7地址端,故只能用A9和A8两个地址端来选择乐曲。
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
16进制数
0
1
0
0
0
0
0
0
0
0
100
1
0
0
0
0
0
0
0
0
0
200
1
1
0
0
0
0
0
0
0
0
300
表3-1
由表3-1可见,第一首歌曲在存储器中的地址应从16进制的100开始,第二首歌曲在存储器中的地址应从16进制的200开始,第
第11页
三首歌曲在存储器中的地址应从16进制的300开始。
3.5存储器中8度音选择信号,12音阶预置数的设计,曲尾识别设计和歌曲编码
8度音选择信号和12音阶预置数的设计原理可以用下表3-2来解释。
表中的fo=535808Hz(推理过程见2.2.2
(1))。
表3-2
第12页
表3-2中,分频预置数是通过计算得到的。
现以C7为例,说明分频预置数的由来。
首先,Tc7=1/fc7=1/2093=477.78us,Tcp=Tc7/256=1.87us,故得到C7的分频预置数Xc7=256—Tc7/Tcp≈0。
表3-2中的其它分频预置数可以依此类推得到。
为了使乐曲能够自动循环演奏,应考虑识别某一乐曲的结尾以及如何控制电路返回到该乐曲的开始点。
现规定当存储器的I/Oo~I/O4输出都为1时,则此时已经到了乐曲的结尾,应该返回到乐曲的开头重新演唱。
曲尾识别电路的方框图见下图3-5。
乐曲编码格式说明:
每个唱名的代码由3个数组成,从左往右:
第一位是8度音编号,用16进制数的0,1,2,3分别代表8度音编码中的第6,5,4,3度编号,存放在EEPROM的D5D4位。
第二位是音调编号,用16进制数的1,2,3,4,5,6,7,8,9,A,B和C分别代表12音阶C,#C,D,#D,E,F,#F,G,#G,A,#A和B,用0代表休止符,用16进制数F代表乐曲的结尾。
第三位指出前两位码值在EEPROM存放的次数。
三首歌的编码见附录三。
3.64-8线译码器的设计
第13页
用GAL16V8来实现4-8线译码器。
GAL的输入输出关系见下表3-3。
经图3-6卡诺图化简后,F0=!
D3&!
D2&!
D0#!
D3&D2&!
D1#D2&D1&D0;
同理可得:
F1=!
D3&!
D2&!
D0#D3&!
D2&!
D1&D0#D2&D1&D0;
第14页
F2=!
D3&!
D2&!
D0#!
D3&!
D2&D1#!
D3&D2&!
D1&D0#D3&!
D2&!
D1#D3&D2&D1&D0;
F3=!
D3&!
D2&!
D0#!
D3&D1&D0#D3&!
D2&!
D1&D0#!
D2&D1&!
D0#D2&!
D1&!
D0#D2&D1&!
D0;
F4=!
D3&D2&!
D1&D0#!
D2&!
D1&!
D0#D3&!
D2&!
D1#!
D2&D1&D0#D3&!
D1&!
D0#D3&D1&D0;
F5=!
D3&!
D1&!
D0#!
D3&D2&!
D1#D3&!
D2&D1#D2&!
D1&!
D0#D3&D1&D0;
F6=!
D2&!
D1&!
D0#!
D3&D2&D1#D3&!
D2#D3&!
D1&D0#D2&D1&D0;
F7=!
D3&!
D2&!
D1&!
D0#D3&D2&D1&D0;
图3-7为GAL16V8的输入输出关系图。
3.712音阶分频器及其时钟设计
时钟用施密特触发器来设计,产生535808Hz的振荡器,如图3-8所示。
第15页
图3-8中,C=330pF,由于要得到的f=535808Hz,可得R=2.8K。
12音阶分频器采用2个74161同步级联来构成0~256的分频器,如图3-9所示。
第16页
3.88度分频器电路设计
采用一片74163来构成8度分频器,如图3-10所示。
3.98度输出选择电路设计
用74153来控制正确的8度输出,如图3-11所示。
第17页
3.10功放电路设计
用LM386构成放大器,如图3-12所示。
3.11整体电路图
整体电路的方框图见下图3-13。
第18页
具体的整体电路见附录一。
3.12整机元件清单
序号
元件型号
数量
序号
元件型号
数量
1
1/8W喇叭
1只
13
74LS74
1片
2
LED发光二极管
3只
14
74LS132
1片
3
10K电位器
3个
15
74LS138
1片
4
1K电阻
1个
16
74LS153
1片
5
100Ω电阻
1个
17
74LS161
2片
6
0.01uF电容
1个
18
74LS163
2片
7
47uF电容
2个
19
74LS393
1片
8
330pF电容
1个
20
GAL16V8
1片
9
74LS00
1片
21
28C64B
1片
10
74LS04
1片
22
LM555
1片
11
74LS20
1片
23
单刀自复开关
1只
12
LM386
1片
表3-4
第19页
第四章测试与调整
4.1节拍发生器的调测
目标:
产生8Hz振荡器。
测试方法:
用信号发生器的计数输入端测量,因为1.3.3(b)中要求频率误差小于5生,而示波器的测量误差已有5%,故必须用频率计测试。
测试结果:
(经调整)输出频率f=8.09,基本符合要求。
4.2消抖开关的调测
目标:
开关“按下”和“弹起”分别呈现2个不同的状态,且机械开关在完成一次开关动作后产生的机械抖动,没有使电路造成逻辑混乱。
测试方法:
把D触发器的Q输出端接到示波器上(或用万用表),观测开关“按下”和“弹起”时Q的状态。
测试结果:
按下时:
弹起时:
图4-1
第20页
波形完好,可见达到了消抖开关的目的。
4.3地址计数器的调测
目标:
74393的8个输出端构成M=256的计数器。
测试方法:
先把8Hz振荡器输入和74393的1QA输出一起接到示波器的两个通道,比较一下,1QA是否是8Hz的2分频,然后再逐一比较1QA和1QB,1QB和1QC,1QC和1QD,1QD和2QA,2QA和2QB,2QB和2QC,2QC和2QD。
测试结果:
在它们的比较中,后者总是前者的2分频,例如图4-2表示了CP和1QA的波形关系:
显然.,其构成了M=256的计数器。
4.4选取电路和曲目显示电路设计的调测
目标:
(a)开关不按时,3个LED都不亮;
(b)第一次按下开关时,只有第1个LED亮;
(c)第二次按下开关时,只有第2个LED亮;
(d)第三次按下开关时,只有第3个LED亮;
(e)第四次按下开关时,3个LED都不亮。
依次往复。
测试方法:
人工按开关调测。
测试结果:
符合要求。
第21页
4.5存储器中曲尾识别,8度音选择信号,12音阶预置数的调测
曲尾识别调测。
目标:
乐曲能够自动循环演奏。
测试方法:
待一首乐曲演奏完之后,观察是否循环演奏。
测试结果:
乐曲能够自动循环演奏
8度音选择信号和12音阶预置数的调测(只能定性地判断):
目标:
存储器28C64的I/Oo~I/O3,I/O4和I/O5的输出都应在0,1之间变化,而不可能始终出高,或者始终出低。
测试方法:
用示波器(或万用表)调测。
测试结果:
存储器28C64的I/Oo~I/O5的输出都在0,1之间变化。
4.64-8线译码器的调测(只能定性地判断)
目标:
GAL16V8的8个输出F7~F0都应在0,1之间变化,而不可能始终出高,或者始终出低。
测试方法:
用示波器(或万用表)调测。
测试结果:
GAL16V8的8个输出F7~F0都在0,1之间变化。
4.712音阶分频器及其时钟电路的调测
时钟电路的调测;
目标:
产生535808Hz振荡器。
测试方法:
用信号发生器的计数输入端测量,因为1.3.3(b)中要求频率误差小于5生,而示波器的测量误差已有5%,故必须用频率计测试。
测试结果:
(经调整)输出频率f=535510Hz,基本符合要求。
12音阶分频器的调测:
目标:
2个74161级联后的8个输出Q7~Q0构成0~256的分频器。
测试方法:
先把525808Hz振荡器输入和2个74161级联后8个输出中的1QA输出一起接到示波器的两个通道,比较一下,1QA是否是535808Hz的2分频,然后再逐一比较1QA和1QB,1QB和1QC,1QC和1QD,1QD和2QA,2QA和2QB,2QB和2QC,2QC和2QD。
测试结果:
在它们的比较中,后者总是前者的2分频,例如图
第22页
4-3表示了CP和1QA的波形关系:
显然.,其构成了0~256的分频器。
4.88度分频器电路的调测
目标:
74163的4个输出端构成M=16的计数器。
测试方法:
先把输入CP和74163的QA输出一起接到示波器的两个通道,比较一下,QA是否是CP的2分频,然后再逐一比较QA和QB,QB和QC,QC和QD。
测试结果:
在它们的比较中,后者总是前者的2分频,
第23页
例如图4-4表示了CP和QA的波形关系:
显然.,其构成了M=16的计数分频器。
4.98度输出选择电路的调测(只能定性地判断)
目标:
74153的输出1Y应在0,1之间变化,而不可能始终出高,或者始终出低。
测试方法:
用示波器(或万用表)调测。
测试结果:
74153的输出1Y在0,1之间变化。
4.10功放电路调测
目标:
通过改变电位器的阻值使得输出音量可调。
测试方法:
人工改变电位器的阻值。
测试结果:
改变电位器阻值的同时,喇叭输出音量大小跟着变化。
4.11整体指标测试
目标:
(a)开关不按时,3个LED都不亮,没有乐曲演奏;
(b)第一次按下开关时,只有第1个LED亮,演奏第一首乐曲,并且循环演奏;
(c)第二次按下开关时,只有第2个LED亮,演奏第二首乐曲,并且循环演奏;
第24页
(d)第三次按下开关时,只有第3个LED亮,演奏第三首乐曲,并且循环演奏;
;
(e)第四次按下开关时,3个LED都不亮,没有乐曲演奏。
依次往复。
测试方法:
人工按开关调测。
测试结果:
符合要求。
第25页
第五章设计小结
5.1设计任务完成情况
在老师的分析帮助下,理论实现较快,硬件电路实现较迟。
5.2问题及改进
(1)起初有些芯片的管脚接错了,后来纠正。
(2)其它电路模块都正常工作,但喇叭没有发出声音,怀疑接触不良,后来把功放电路模块挪了一下位置,立即由乐曲奏出。
(3)乐曲演奏有杂音,音调不正确。
发现用GAL16V8作4-9线译码器时,由于卡诺图化简错误导致了逻辑方程错误,后来修正之后,乐曲演奏无杂音,音调正确。
5.3心得体会
(1)深刻体会到了电路调测对一个电路硬件实现的关键性,学会处理电子电路故障也是十分重要的。
作为电子信息工程专业的学生,我觉得自己在这些方面应该好好加强。
(2)两周的课程设计对我的意义是重大的,由于我的硬件电路实现较晚,故实现之前的那些天,我都很焦急。
但我一次次地告诉自己:
“千万不要慌!
”所以我就一遍又一遍地检查各个模块。
所以,从中让我学到了所谓的“临危不乱”,让原本有些浮躁的我开始变得沉得住气,变得做事更有耐心了,我认为,这对我而言,是终