可编程音乐演奏器.docx
- 文档编号:7748021
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:13
- 大小:174.77KB
可编程音乐演奏器.docx
《可编程音乐演奏器.docx》由会员分享,可在线阅读,更多相关《可编程音乐演奏器.docx(13页珍藏版)》请在冰豆网上搜索。
可编程音乐演奏器
单片机原理与接口技术
——课程设计报告
名称:
可编程音乐演奏器
姓名:
*******
学号:
*******
班级:
********
指导教师:
********
完成时间:
2013年6月22日
一、设计原因3
二、设计思路3
1、总体方案3
2、硬件部分3
(1)、硬件电路图4
(2)、电路分析4
(3)、所需器件5
3、软件部分5
(1)程序及分析5
(2)音符频率表8
三、程序流程图9
四、心得体会10
五、参考文献10
一、设计原因:
随着科技的进步,各种高科技玩具应运而生,各种智能玩具层出不穷。
如果给玩具添加更多功能,那么,此种玩具就具有更强的竞争力。
故此,给玩具添加音乐演奏功能不失为良策。
此外,音乐演奏器还可以应用于多种领域,比如可应用于门铃、闹铃等各种系统。
总之,音乐演奏器有广泛的用途,且具有很强的生命力。
用单片机来实现音乐演奏的功能,既简单轻便,又易于实现,并且成本比古典乐器低廉许多。
最重要的是,基于单片机控制的音乐演奏器能发出一般乐器难以实现的音效。
在网上搜各种曲谱均可以用单片机来实现其音效。
二、设计思路
1、总体方案
音乐演奏器的主体由单片机构成,通过控制定时器时间的不同可以产生不同频率的方波,用于驱动喇叭发出不同的音符,再利用延时来控制发音时间的长短,即可控制节拍,把乐谱中的音符和相应的节拍变换成时常数和延迟常数,做成数据表格存放在存储器中。
由程序查表得到定时常数和延迟常数,分别用以控制定时器产生方波的频率和发出该方波的持续时间。
当延迟时间到时,再查下一个音符的定时常数好延迟常数,依次进行下去。
利用定时器T0以方式1工作,产生各音符对应频率的方波,由P3.0输出驱动喇叭发音。
节拍控制通过改变调用延时子程序D200(延时200ms)的次
数来实现,以每拍800ms为例,一拍需循环调用D200延时子程序4次,同理,半拍就需要调用两次,设晶振频率为12Mhz,乐曲中的音符、频率、定时常数的关系可以参照有关表格。
2、硬件部分
(1)、电路图:
(2)电路分析:
此电路主要包括了单片机最小系统、按键电路及发声电路三部分,单片机采用的是ATMEL公司生产的AT89C51型号芯片,最小系统采用12MHZ的晶振,运行速度快,EA接高电平,P1口接八个按键并分别接上拉电阻,每当按键按下的时候,所对应的I/O口就接地;P3.3口接蜂鸣器,用以输出音频信号,三极管的作用是对单片机的输出信号进行放大,一边人耳能听到清晰的声音,准确分辨出声音的频率高低、节奏变化。
(3)、所需器件:
AT89C51单片机一片
12MHZ晶振一个
22pF电容2个
微动按键9个
蜂鸣器1个
电阻若干
3、软件部分
(1)程序及分析
#include
#defineuintunsignedint
#defineucharunsignedchar
sbittone=P3^3;定义P3.3口为音频的输出口
unsignedchartimer0h,timer0l,time;
ucharcodekey[]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf定义P1口,分别表示八个按键
};
ucharcodetab[]={
0xfc,0x43,
0xfc,0xab,
0xfd,0x08,
0xfd,0x32,
0xfd,0x81,
0xfd,0xc7,
0xfe,0x05,
};以上为7个音符的初值
codeunsignedcharyf[]=
{
3,2,2,6,2,2,7,2,2,5,2,2,3,2,2,6,2,2,7,2,2,5,2,2,7,2,2,1,3,2,2,3,4,
7,2,2,1,3,2,2,3,4,2,3,1,3,3,1,2,3,1,1,3,1,7,2,2,5,2,2,
2,3,1,3,3,1,2,3,1,1,3,1,7,2,2,5,2,2,6,2,2,2,2,2,5,2,4,6,2,2,2,2,2,5,2,4,
0,0,0};为要播放的音乐曲谱
codeunsignedcharFREQH[]={
0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,
0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC,
0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,
0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,};
频率-半周期数据表高八位
本软件共保存了四个八度的28个频率数据
codeunsignedcharFREQL[]={
0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F,
0xEE,0x44,0x6B,0xB4,0xF4,0x2D,
0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,
频率-半周期数据表低八位
};
ucharj;
voiddelay0()延时程序
{
uchara,b,c;
for(a=5;a>0;a--)
for(b=100;b>0;b--)
for(c=100;c>0;c--);
}
voiddelay(unsignedchart)
{unsignedchart1;
unsignedlongt2;
for(t1=0;t1 { for(t2=0;t2<2000;t2++) } TR0=0;} voidsong() { TH0=timer0h; TL0=timer0l; TR0=1; delay(time); } voidmain() { unsignedchark,i; P1=0xff; P3=0x00; TR0=0; if(P1==0x7f) { TR0=1; TMOD=0x01; EA=1; ET0=1; while (1) { i=0; while(i<55){ k=yf[i]+7*yf[i+1]-1; timer0h=FREQH[k]; timer0l=FREQL[k]; time=yf[i+2]; i=i+3; song();}}} else { TMOD=0x10; EA=1; ET1=1; P1=0xff; while(P1! =0xff) { delay0(); for(j=0;j<7;j++) if(P1==key[j]) { break; } TH1=tab[2*j]; TL1=tab[2*j+1]; TR1=1; while(P1! =0xff); TR1=0;}}} voidt0int()interrupt1中断响应 { TR0=0; tone=! tone; TH0=timer0h; TL0=timer0l; TR0=1; } voidt1int()interrupt3中断响应 { TH1=tab[2*j]; TL1=tab[2*j+1]; tone=! tone;} (2)音符频率表 音符频率表 音符 频率(HZ) 简谱码(T值) 音符 频率(HZ) 简谱码(T值) 低1 DO 262 63628 #4FA# 740 64860 #1 DO# 277 63731 中5SO 784 64898 低2 RE 294 63835 #5SO# 831 64934 #2RE# 311 63928 中6LA 880 64968 低3M 330 64021 #6 932 64994 低4FA 349 64103 中7SI 988 65030 #4FA# 370 64185 高1DO 1046 65058 低5SO 392 64260 #1DO# 1109 65085 #5SO# 415 64331 高2RE 1175 65110 低6LA 440 64400 #2RE# 1245 65134 #6 466 64463 高3M 1318 65157 低7SI 494 64524 高4FA 1397 65178 中1DO 523 64580 #4FA# 1480 65198 #1DO# 554 64633 高5SO 1568 65217 中2RE 587 64684 #5SO# 1661 65235 #2RE# 622 64732 高6LA 1760 65252 中3M 659 64777 #6 1865 65268 中4FA 698 64820 高7SI 1967 65283 三、程序流程图 硬件自动TF1=0 四、心得体会 (1)学习单片机的课时不多,对单片机的硬件设计,软件设计掌握的深度不够,但通过此次课程设计,明显的改善了,首先对于硬件电路的工作原理有了进一步的学习,同时有了一个提升;软件方面,在程序的设计,程序的调试方面都有了很大的进步。 (2)在一个好的氛围里才能踏下心来做东西,在这一段时间里,寝室成员都认真对待这次课程设计,除了自己做好自己的课题外,在遇到不懂的地方互相讨论,查阅资料,互助解决问题。 另外在编程中出现问题时,一定要戒骄戒躁,脚踏实地,认真看书,仔细分析,仔细调试,就一定会发现错误。 我们也是这么做的,这一点在这次的课程设计中十分重要。 (3)通过这次课程设计,我体会到了成功的喜悦,听着自己设计的程序下载到单片机中播放出音乐,心理非常自豪。 这次的课程设计在一定程度上改变了我学习单片机这门课程的态度,从最初的认为学它没有什么实际意义,到如今爱上单片机学习,并希望能将理论运用到实践,设计出更好更完整的系统。 我明白了一个人要想做好一件事,就必须具备自信心,耐心,还要有毅力,要胆大心细,要勇于尝试,要手脑并用,最后才能交出一份令人满意的答卷。 五、参考文献 [1]许珉.单片机原理及应用[M].北京: 中国电力出版社,2007.08 [2]三恒星科技.MCS-51单片机原理与应用实例[M].北京: 电子工业出版社,2008.01 [3]王为青,程国钢.单片机KeilCx51应用开发技术[M].北京: 人民邮电出版社,2007.02 [4]JohnMarkus.电子电路大全[M].北京: 计量出版社,1995 [5]阎石.数字电子技术基础[M].北京: 高等教育出版社,1998.12,第4版[6]邓元庆.数字电路与逻辑设计[M].北京: 电子工业出版社,2001 [5]陈海宴51单片机原理及应用[M]北京航空航天大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 可编程 音乐 演奏