可编程音乐演奏器.docx

上传人:b****5 文档编号:7748021 上传时间:2023-01-26 格式:DOCX 页数:13 大小:174.77KB
下载 相关 举报
可编程音乐演奏器.docx_第1页
第1页 / 共13页
可编程音乐演奏器.docx_第2页
第2页 / 共13页
可编程音乐演奏器.docx_第3页
第3页 / 共13页
可编程音乐演奏器.docx_第4页
第4页 / 共13页
可编程音乐演奏器.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

可编程音乐演奏器.docx

《可编程音乐演奏器.docx》由会员分享,可在线阅读,更多相关《可编程音乐演奏器.docx(13页珍藏版)》请在冰豆网上搜索。

可编程音乐演奏器.docx

可编程音乐演奏器

 

单片机原理与接口技术

——课程设计报告

 

名称:

可编程音乐演奏器

姓名:

*******

学号:

*******

班级:

********

指导教师:

********

完成时间:

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]北京航空航天大学出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1