五首歌曲的音乐门铃Word格式.docx

上传人:b****4 文档编号:16687446 上传时间:2022-11-25 格式:DOCX 页数:17 大小:722.66KB
下载 相关 举报
五首歌曲的音乐门铃Word格式.docx_第1页
第1页 / 共17页
五首歌曲的音乐门铃Word格式.docx_第2页
第2页 / 共17页
五首歌曲的音乐门铃Word格式.docx_第3页
第3页 / 共17页
五首歌曲的音乐门铃Word格式.docx_第4页
第4页 / 共17页
五首歌曲的音乐门铃Word格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

五首歌曲的音乐门铃Word格式.docx

《五首歌曲的音乐门铃Word格式.docx》由会员分享,可在线阅读,更多相关《五首歌曲的音乐门铃Word格式.docx(17页珍藏版)》请在冰豆网上搜索。

五首歌曲的音乐门铃Word格式.docx

关键词:

单片机;

音乐;

外中断

目录

设计要求1

1、设计方案1

2、各功能模块设计1

2.1控制电路设计1

2.2振荡电路设计2

2.3驱动电路设计3

2.4电源电路设计4

2.5音乐播放控制4

3、原理图4

4、软件的设计5

4.1设计流程图5

4.2设计音频脉冲5

4.3设计音乐的节拍6

5、调试与操作说明6

6、元器件及仪器设备明细表7

参考文献8

附录19

附录210

设计要求

T0作为门铃的按钮输入,每按一次,歌曲就改变,按完5次,再重复循环。

1、设计方案

电路仍以STC89C52为主要控制芯片,采用单片机最小系统和外围驱动电路推动扬声器发出声音,此电路比方案一电路更为简单,程序不复杂,通过外中断T0控制音乐的播放,并且五首歌曲能够循环播放。

音乐声音稳定、清晰。

减少了外围电路原件,节约了成本,电路基本框图如图1所示。

图1方案方框图

2、各功能模块设计

2.1控制电路设计

本次设计音乐播放系统是由单片机控制,因此控制电路主要是由STC89C52作为控制芯片,电路如图2所示。

图2控制电路

2.2振荡电路设计

要使单片机能够正常工作,那么就必须在STC89C52单片机的18和19脚之间接上一个振荡电路,因为振荡电路就是为单片机工作提供所需要的时钟脉冲信号,使单片机的内部电路及内部程序开始工作,在单片机最小系统当中我们只需在18和19脚之间接一个石英晶体,给单片机加上工作所需直流电源,振荡器就能开始工作,STC89C52常常外接6MHZ、12MHZ的石英晶体,图3所示的电路中接入的是12MHZ的石英晶体,为了防止单片机自激在18和19脚上分别对地接了一个30pF的电容。

其电路如图3所示。

图3振荡电路

2.3驱动电路设计

由于单片机输出的信号不能够直接驱动扬声器,因此还需要在单片机的最小系统中接一个外围电路,因为本次设计对声音的要求不高,所以不需要做一个功放电路去驱动,只需一个的简单驱动电路就可以实现。

电路如图4所示。

图4驱动电路

2.4电源电路设计

电源电路如图5所示,通过单片机实验板上的电源插座接入6—9V的直流电压,经7805稳压后给整个电路提供5V直流电压。

R2和D1为电源指示电路,通电后D1亮,为了有效消除干扰,输入和输出端并接入了滤波电容。

图5电源电路

2.5音乐播放控制

此部分的设计,我们采用了外中断T0来控制音乐的播放。

每按一次T0单片机就播放一首歌曲。

当播放了五首歌曲后,继续按T0,单片机又重复播放歌曲。

外中断T0的按键部分电路图如图6所示。

图6T0键电路图

3、原理图

综合各个模块可以做出总体电路原理图。

见附录1。

4、软件的设计

4.1设计流程图

软件的设计主要是对STC89C52单片机进行编程,音乐门铃的程序主要是对音符频率的转换,采用定时中断,延时等实现其设计指标,通过外中断T0控制音乐的播放。

程序框图如图7所示。

具体程序见附录2。

图7程序框图

4.2设计音频脉冲

对于单片机而言,产生不同频率的脉冲非常方便,可以利用他的定时计数器来产生这样方波频率信号。

因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。

本例中,单片机工作在12MHz时钟,使用其定时计数器T0,工作模式为1,改变计数值TH0和TL0可以产生不同频率的脉冲信号。

在此情况下,C调的各音符频率与计数值T的对照表如表所示。

T的值决定了TH0和TL0的值,其关系如下。

TH0=T/256,TL0=T%256。

C调各音符频率T(12MHz单片机,T0工作模式1)对照表

音符

频率

简谱码(T值)

低1D0

262

63628

#4FA#

740

64860

低#1DO#

277

63731

中5SO

784

64898

2RE

294

63835

中#5SO#

831

64934

#2RE#

311

63928

6LA

880

64968

低3MI

330

64021

6

932

64994

低4FA

349

64103

中7SI

988

65030

370

64185

高1DO

1046

65058

低5SO

392

64260

#1DO#

1109

65085

#5SO

415

64331

高2RE

1175

65110

低6LA

440

64400

1245

65134

#6

466

64463

高3MI

1318

65157

低7SI

494

64524

高4FA

1397

65178

中1DO

523

64580

1480

65198

#1DO#

554

64633

高5SO

1568

65217

中2RE

587

64684

#5SO#

1661

65235

622

64732

高6LA

1760

65252

中3MI

659

64777

1865

65268

中4FA

698

64820

高7SI

1967

65283

4.3设计音乐的节拍

除了音符以外,节拍也是音乐的关键组成部分。

节拍实际上是音持续时间的长短,在单片机系统中可以用延时来实现。

如果1/4拍的延时设为47m秒,则1拍的延时是188m秒。

只要知道1/4拍的延时时间,其余的节拍延时时间就是它的倍数。

5、调试与操作说明

在Keil平台上进行单片机系统程序设计、编辑、编译、调试,最后生成目标代码文件(*.hex)。

启动单片机,将生成的目标代码文件下载到单片机中去。

下载完成后按下T0,这时通过扬声器我们可以听到有音乐播放,再按一次T0可以听到单片机所播放的音乐换成了不同的歌曲。

当播放了五首不同的歌曲后,继续按下T0,单片机又开始播放第一首歌曲。

6、元器件及仪器设备明细表

表1元器件及仪器设备明细表

元件序号

设计参数

备注

U1

STC89C52

C1

30pF

无极性瓷片电容

C2

C3

220uF

有极性电解电容

C4

100uF

Y1

12MHZ

石英晶体

R1

1KΩ

R2

D0

整流二极管

D1

发光二极管

Q1

9015

参考文献

[1]朱永金,成友才编著.单片机应用技术.北京:

中国劳动社会保障出版社,2007

[2]陈振源编著.电子技术基础.北京:

高等教育出版社,2001

[3]李朝青编著.单片机原理及接口技术(第3版).北京:

航空航天大学出版社,2005

[4]范风强编著.单片机语言C51应用实战集锦.北京:

电子工业出版社,2003

[5]张鑫编著.单片机原理及应用.北京:

电子工业出版社,2005

[6]陈家俊,郑滔编著.程序设计教程.北京:

机械工业出版社,2004

附录1

附录2

文件名:

MusicPlay.c

描述:

单片机演奏音乐;

程序结构描述:

main()函数在初始化后即进入while

(1);

功能主要在两个中断中完成;

定时器0中断主要输出一定频率的方波,初始值在于FreqTab中获取;

定时器1中断完成音长的控制,在完成特定音符的音长后读取下一个

音符,并且更新定时器0的初始设置值;

补充音乐知识:

音乐主要由音频和音长;

换个角度,

要输出一首音乐即用一个IO口输出特定时间长度和频率的方波

|<

-------音长1(节拍)--------->

|<

----音长2(节拍)------>

|...

___________________

|__||__||__||__||__||___||___||___||___

|音符1(频率1)|音符2(频率2)|...

**************************************************************/

#include<

reg52.h>

voiddelay(inti){while(i--);

}

unsignedcharvolatileFlagBeat;

//基本节拍单位计数变量

unsignedintvolatileFreqTemp;

unsignedcharvolatilemusic_temp;

//暂时存放从MusicTable数组中读出的变量

unsignedcharvolatilebeat;

//

unsignedcharvolatilefreq;

//简谱码对应T值数组的下标

unsignedcharvolatile*pmusic;

unsignedintflag=0,k=0;

sbitPin_Buzzer=P3^3;

unsignedintcodeFreqTab[]={//值

65535,

64260,64400,64524,64580,64684,

64777,64820,64898,64968,65030,

65058,65110,65157,65178,65217

};

//音符节拍码

unsignedcharcodesong1[]={//生日快乐

0x82,0x01,0x81,0x94,0x84,

0xb4,0xa4,0x04,

0xc4,0xb4,0x04,

0x82,0x01,0x81,0xf4,0xd4,

0xb4,0xa4,0x94,

0xe2,0x01,0xe1,0xd4,0xb4,

0x00

};

unsignedcharcodesong2[]={0x42,0x42,0x42,0x52,0x64,0x04,//哈巴狗

0x62,0x62,0x62,0x72,0x84,0x04,

0x92,0x92,0x82,0x72,0x64,0x04,

0x82,0x82,0x52,0x62,0x44,0x04,

0x42,0x42,0x42,0x52,0x64,0x04,

0x00};

unsignedcharcodesong3[]={0x84,0x94,0x88,//不倒翁

0x64,0x54,0x68,

0x84,0x64,0x54,

0x44,0x52,0x42,

0x52,0x62,0x48,

0x84,0x94,0x88,

unsignedcharcodesong4[]={//两只老虎

0x44,0x54,0x64,0x44,

0x44,0x54,0x64,0x44,

0x64,0x74,0x88,

0x82,0x92,0x82,0x72,

0x64,0x44,0x82,0x92,

0x82,0x72,0x64,0x44,

0x44,0x14,0x48,

0x44,0x14,0x48,0x00

};

unsignedcharcodesong5[]={//三只小猫

0x62,0x82,0x82,0x62,0x98,

0x92,0xb2,0xb2,0x82,0x98,

0x62,0x82,0x82,0x52,0x68,

0x62,0x82,0x82,0x62,0x92,

0x92,0x94,0x92,0xb2,0xb2,

0x92,0x84,0x94,0xb8,0xb4,

0x04,

0x00};

voidwai()interrupt0//中断优先级最高

{flag=1;

TR0=0;

TR1=0;

if(k<

5)

k=k+1;

else

k=1;

delay(100000);

}

//产生FreqTab表中对应的频率即产生不同的脉冲对应不同的音调

voidtimer0()interrupt1using1

{

TR0=0;

TL0=FreqTemp;

TH0=FreqTemp>

>

8;

TR0=1;

Pin_Buzzer=~Pin_Buzzer;

//用于控制音长的定时中断,每1/4拍变量FlagBeat加1

//47ms中断一次

voidtimer1()interrupt3using2

FlagBeat++;

TR1=0;

TL1=0x68;

//定为4.7ms

TH1=0x48;

TR1=1;

if(*pmusic==0x00){TR0=0;

{if(FlagBeat==beat)

{

FlagBeat=0;

music_temp=*pmusic;

beat=music_temp&

0x0F;

//取得节拍数低四位

beat=beat*4;

freq=music_temp>

4;

//取得音符编码高四位

pmusic++;

if(freq==0)TR0=0;

FreqTemp=FreqTab[freq];

}

voidmain()

beat=1;

TMOD=0x11;

//定时器0,1都工作16位计数方式

ET0=1;

//允许定时器0溢出中断;

ET1=1;

//允许定时器1溢出中断

EA=1;

TL1=0xF0;

TH1=0xFF;

EX0=1;

IT0=0;

while

(1)

{if(flag==1)

{TR1=1;

TR0=1;

if(k==1){pmusic=song1;

flag=0;

TR0=1;

TR1=1;

}

if(k==2){pmusic=song2;

if(k==3){pmusic=song3;

if(k==4){pmusic=song4;

if(k==5){pmusic=song5;

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

当前位置:首页 > 求职职场 > 简历

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

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