简易电子琴的设计文档格式.docx
- 文档编号:20262024
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:15
- 大小:207.52KB
简易电子琴的设计文档格式.docx
《简易电子琴的设计文档格式.docx》由会员分享,可在线阅读,更多相关《简易电子琴的设计文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
4、打印出实验报告,并分析实验结果
二、系统方案与论证
2.1系统总体方案
方案一:
采用555定时器构建电路,采用一个555集成定时器组成简易电子琴。
整个电路由主振荡器,颤音振荡器,扬声器和琴键按钮等部分组成。
主振荡器由555定时器,电阻,按键及电容组成。
系统框图如图2-1所示:
图2-1方案一系统框图
典型电路图如图2-2所示:
图2-2方案一电路图
555定时器电路电路较为简单,但得到的效果不怎么好,无法得到标准的频率。
而且电阻必须要非常精确,一般无法达到。
方案二:
采用AT89C51单片机为核心,通过按键控制单片机的P3^0口产生一定频率的方波,从而驱动扬声器发声。
系统方框图如图2-3所示:
图2-3方案二系统框图
系统电路图如图2-4所示:
图2-4方案二电路图
电路较为简单,而且程序易编写,输出的波形稳定,产生的频率准确,容易控制,能够达到预期效果。
综上所述,选择方案二。
程序流程图如图2-5所示:
图2-5方案二程序流程图
2.2按键开关控制部分
采用查询加中断的方式,共8个按键,先对8个按键进行扫描,若有键按下则产生该键值对应的频率的方波,来推动扬声器发音。
这8个按键为8个音符即do,re,mi,fa,so,la,si和高音do。
2.3扬声器驱动部分
2.3.1扬声器选择
压电式蜂鸣片:
片状发声元件。
有普通型(厚度0.4毫米)、薄型(厚度0.2毫米)、超薄型(厚度0.1毫米以下)和偏心、方形、唤醒、双面形、反馈形等各种异型产品。
能满足500Hz—20kHz不同频率发生的要求,可开发厚度3毫米的卡片式扬声器。
小型扬声器(喇叭):
是动圈式发生器件,其构造有外磁、内磁、塑架、铁架、纸盒、膜片、大磁、薄型等不同类别。
音频电能通过电磁、压电或静电效应,使其纸盒或膜片振动周围空气造成音响。
按换能机理和结构分动圈式(电动式)、电容式(静电式)、压电式(晶体或陶瓷)、电磁式(压簧式)、电离子式和气动式扬声器等,电动式扬声器具有电声性能好、结构牢固、成本低等优点,应用广泛;
按声辐射材料分纸盆式、号筒式、膜片式;
按纸盆形状分圆形、椭圆形、双纸盆和橡皮折环;
按工作频率分低音、中音、高音,有的还分成录音机专用、电视机专用、普通和高保真扬声器等;
按音圈阻抗分低阻抗、高阻抗;
按效果分直辐和环境声等。
经过综合比较,电子琴用扬声器为保证其优质的重放效果,不仅要满足其较高的技术性能指标,而且更要注重其实际试听效果,选择了动圈式发生器件,0.5W的扬声器,在空旷的房间里一般能够听得到。
2.3.2扬声器驱动选择
采用双晶体管串联驱动扬声器,电路简单,无噪声。
三、理论分析与计算
3.1按键模块
设计中共用到了10个按键,其中八个(K1到K8)与单片机的P2口相连,分别是产生do,re,mi,fa,so,la,si和高音do,另外两个(K9、K10)分别接P3.2和P3.3,其中K10是自动连续播放do,re,mi,fa,so,la,si和高音do,si,la,so,fa,mi,re,do;
K9为自动播放生日歌。
他们的另一端都接地,电路图如图3-1所示:
图3-1按键部分电路
3.2扬声器驱动模块
扬声器接单片机的P1^0口,通过在P1^0口产生一定频率的方波,电路图如图3-2所示:
图3-2扬声器驱动电路
要想产生方波信号,需要算出某一音频的周期,然后将此周期除以2,即半周期的时间。
利用单片机定时器定时这个半周期的时间,每当计时时间到后将输出脉冲的I/O口反相,然后重复计时半周期时间再次反相,这样就可以在I/O口得到此频率的方波。
产生的中音频率如下表所示:
音调
DO
RI
MI
FA
SO
LA
SI
频率(Hz)
523
587
659
698
784
880
987
定时时间
64580
64484
64777
64820
64898
64968
65030
设计中,利用8个按键控制单片机的输出口产生不同频率的方波;
利用定时器0使其工作在工作模式1下,改变计数初值TH0和TL0来产生不同频率的方波。
初值的计算方法如下:
计数脉冲值与时钟的关系为
式中,
为机器频率,其中
,
为想要产生的频率。
其计数初值的求法如下:
假设外部晶振为12M,则时钟周期为1us,则上式可以化为:
对于频率为523Hz的方波,
对于频率为587Hz的方波,
对于频率为659Hz的方波,
对于频率为698Hz的方波,
对于频率为784Hz的方波,
对于频率为880Hz的方波,
对于频率为987Hz的方波,
接下来就是将T值赋给TH0和TL0,计算公式如下:
四、测试结果分析与总结
4.1测试结果分析
每按下一个键,会听到扬声器发出一定频率的声音,而且7种声音各不相同,频率越小,周期越大,信号宽度越大。
用示波器在P3^0口测每个按键按下后的波形,如下图4-1所示。
由于本设计的仿真效果主要靠耳朵来听,所以很难较好的表达成可以看出的现象,在这里用所对应的频率来表示该音阶。
图4-1第一阶do
测出波形的频率为523.23Hz
图4-2第二阶re
测出波形的频率为587.47Hz
图4-3第三阶mi
测出波形的频率为659.43Hz
图4-4第四阶fa
测出波形的频率为698.32Hz
图4-5第五阶so
测出波形的频率为784.62Hz
图4-6第六阶la
测出波形的频率为880.85Hz
图4-7第七阶si
测出波形的频率为987.54Hz
4.2实验总结
设计中用独立按键设置7种不同的频率,模拟7种音阶,电路简单,达到了实验的预期效果。
在设计过程中遇到了一些的问题,例如在写程序的过程中出现多次编译错误,经过了很多次的调试,问了很多同学和参考了很多资料后才调好。
虽然程序没有问题了,但是仿真的效果不是很理想,音质没有想象中那么清晰。
时间间隔控制的挺慢的。
不过总的来说这个设计还是到达并超过了设计要求。
参考文献:
【1】新概念51单片机C语言程序教程郭天祥编:
哈尔滨工业大学出版社
【2】农业装备技术(AgriculturalEquipment&
Technology)第36卷第5期2010年10月
【3】中国高新技术企业2010年第36期(总第171期)
【4】单片机开发与应用,刘建超:
【用单片机制作简单电子琴】
附录:
源程序代码
#include<
reg51.h>
#defineshumaguanP0//定义数码管段码输出
sbitLED=P1^1;
sbitSPK=P1^0;
//定义方波输出口
unsignedinttone1,tone2;
/*****标准音符表*****/
//用于使定时器初值变化以产生相应频率的定时
unsignedcharcodeyinfu[]={0xfb,0xe9,//Do
0xfc,0x5c,//Re
0xfc,0xc1,//Mi
0xfc,0xef,//Fa
0xfd,0x45,//So
0xfd,0x92,//La
0xfd,0xd0,//Si
0xfd,0xee,//高音Do
0x00,0x00};
//音符之间的间隔,只要间隔时间小于65ms时,喇叭不会发出声音,用作拍子之间的短暂停顿
/*****生日快乐歌音调表*****/
unsignedcharcodeshengri_tone[]={1,0,1,2,1,4,3,0,
1,0,1,2,1,5,4,0,
1,0,1,8,6,4,3,2,0,
7,0,7,6,4,5,4,0
};
//0代表不发声,即停顿;
数字即为音调
/*****生日快乐歌节拍表*****/
unsignedcharcodeshengri_beat[]={24,1,24,48,48,48,72,5,
24,1,24,48,48,48,72,5,
24,1,24,48,48,48,48,72,
5,24,1,24,48,48,48,72,5
//节拍,即tone表各音调的延时
/*****自动演示音调表*****/
unsignedcharcodeyanshi_tone[]={1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,
8,0,7,0,6,0,5,0,4,0,3,0,2,0,1,0};
/*****自动演示节拍表*****/
Unsignedcharcodeyanshi_beat[]={48,1,48,1,48,1,48,1,48,1,48,
1,48,1,48,2,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,2};
/*****15ms延时子程序,用于节拍*****/
voiddelay(void)
{
unsignedcharn=15;
while(n--)
{
unsignedchari;
for(i=0;
i<
125;
i++);
}
}
/*****定时器0初始化*****/
voidinitTimer(void)
TMOD=0x01;
//定时器0,工作方式1;
定时器1,工作方式1
TH0=tone1;
TL0=tone2;
/*****定时器0中断服务程序*****/
voidtimer0(void)interrupt1
SPK=~SPK;
//取反,以产生方波
/*****演奏子程序1*****/
voidplay1(void)
unsignedcharm=0;
unsignedchars;
unsignedchara=1;
while
(1)
EA=0;
LED=0;
a=shengri_tone[m];
//取音符
shumaguan=a;
s=shengri_beat[m];
//取节拍
tone1=yinfu[2*a-2];
tone2=yinfu[2*a-1];
EA=1;
while(s--)
delay();
LED=1;
m++;
if(m>
=33)return;
//数值是shengri相关表中的元素数量
}
/*****演奏子程序2*****/
voidplay2(void)
a=yanshi_tone[m];
shumaguan=a;
s=yanshi_beat[m];
=32)return;
/*****按键检测*****/
voidcheck_key(void)
P2=0xff;
P3=0xff;
//设置为输入状态
switch(P2)//检测按键,输出数码管、载入定时器初值、允许中断
case0xfe:
shumaguan=0x1;
tone1=0xfb;
tone2=0xe9;
EA=1;
break;
case0xfd:
shumaguan=0x2;
tone1=0xfc;
tone2=0x5c;
case0xfb:
shumaguan=0x3;
tone2=0xc1;
case0xf7:
shumaguan=0x4;
tone2=0xef;
case0xef:
shumaguan=0x5;
tone1=0xfd;
tone2=0x45;
case0xdf:
shumaguan=0x6;
tone2=0x92;
case0xbf:
shumaguan=0x7;
tone2=0xd0;
case0x7f:
tone2=0xee;
default:
SPK=0;
shumaguan=0x00;
}//没有键按下则关闭中断和数码管
switch(P3)
play1();
play2();
/*****主程序*****/
voidmain(void)
initTimer();
shumaguan=0x00;
TR0=1;
ET0=1;
SPK=0;
check_key();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 电子琴 设计