五首歌曲的音乐门铃.docx
- 文档编号:3781167
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:17
- 大小:722.66KB
五首歌曲的音乐门铃.docx
《五首歌曲的音乐门铃.docx》由会员分享,可在线阅读,更多相关《五首歌曲的音乐门铃.docx(17页珍藏版)》请在冰豆网上搜索。
五首歌曲的音乐门铃
湖南人文科技学院
设计名称:
单片机开发与设计工程师考试文档
设计题目:
五首歌曲的音乐门铃
学校:
湖南人文科技学院
系别:
通信与控制工程系
专业:
电子信息工程
班级:
07级电信一班
学生姓名:
谭勇傅家卜海庭
学号:
074091050740913807409149
起止日期:
2010-06-15~2010-6-25
引言
在1974年美国仙童公司研制的世界第一台单片微型机F8,该机有两块集成电路芯片组成,结果奇特,具有与众不同的系统指令,深受民用电器和仪器仪表领域的欢迎和重视,从此单片机开始迅速发展,应用领域也在不断扩大,现已成为微型计算机的重要分支。
所谓单片机就是在一块硅片上集成了中央处理器(CPU),存储器(RAM、ROM、EEPROM、FlashMemory)和输入、输出接口(并行I/O、串行通信口)、振荡电路、计数器等电路的一块集成电路,这样的一块集成电路具有一台计算机得基本功能,因而被成为单片机微型计算机,简称单片机(MCU).随着单片机在我国的发展,许多传统的人工控制已经渐渐地被单片机控制所取代,使单片机应用在控制领域占据了不可取代的地位。
尤其是现在单片机种类越来越多,分类也越来越细,由于它还具有体积小、功能强、成本低、功耗小等优点,使得其在工业控制、智能仪表、通信技术、信号处理及家用电器产品中广泛应用。
现在的单片机从功能上已突破微型计算机得传统功能,向着以单片机为核心、外接各种控制单元的专业单片机方向发展。
由于单片机功能的强大,它在不同的电路中可以起着不同的作用,本次课程设计就是利用单片机的最小系统来实现的,所谓单片机最小系统就是能让单片机工作起来的一个最基本的组成电路。
该单片机的最小系统是以STC89C52为核心AT89C52的18、19引脚端外接石英晶体振荡电路,9引脚外接S17、R2、C1组成的复位电路,20脚接地,40脚接电源Vcc,就构成了以STC89C52为核心的单片机最小系统。
本次设计音乐门铃系统就是利用STC89C52单片机的最小系统和一个简单的驱动电路而设计的。
那么单片机是怎么产生音乐的呢?
产生音乐后又如何控制其播放呢?
其实对于单片机产生音乐,关键是控制频率的输出。
我们知道,不同的声音对应不同的频率,产生有规律的频率输出就可以得到相应规律的声音。
音乐中,有8个基本音符:
do﹑re﹑mi﹑fa﹑so﹑la﹑xi﹑do,八个不同的音符对应着不同的频率。
只要我们对照音符输出相对应的频率,就可以产生美妙的音乐了。
本次设计中采用了定时中断的方法产生不同频率,通过一个简单的驱动电路使扬声器发出音乐。
它能播放五首歌曲,并且能够使其重复播放。
摘要
本次设计的音乐门铃系统是利用STC89C52单片机定时中断实现输出不同频率的方波,通过一个简单的驱动电路使扬声器发出音乐,并通过外中断T0控制音乐播放,每按一次T0播放一首不同的音乐,使其能够播放五首歌曲后又循环播放。
其电路是由:
STC89C52单片机最小系统电路和一个由电阻和三极管组成的驱动电路及扬声器再加上控制音乐播放的外中断T0。
关键词:
单片机;音乐;外中断
目录
设计要求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值)
音符
频率
简谱码(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
#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
高3MI
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
中3MI
659
64777
#6
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
30pF
无极性瓷片电容
C3
220uF
有极性电解电容
C4
100uF
有极性电解电容
Y1
12MHZ
石英晶体
R1
1KΩ
R2
1KΩ
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
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,
0x82,0x01,0x81,0x94,0x84,
0xc4,0xb4,0x04,
0x82,0x01,0x81,0xf4,0xd4,
0xb4,0xa4,0x94,
0xe2,0x01,0xe1,0xd4,0xb4,
0xc4,0xb4,0x04,
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,
0x62,0x62,0x62,0x72,0x84,0x04,
0x92,0x92,0x82,0x72,0x64,0x04,
0x82,0x82,0x52,0x62,0x44,0x04,
0x00};
unsignedcharcodesong3[]={0x84,0x94,0x88,//不倒翁
0x64,0x54,0x68,
0x84,0x64,0x54,
0x44,0x52,0x42,
0x52,0x62,0x48,
0x84,0x94,0x88,
0x64,0x54,0x68,
0x84,0x64,0x54,
0x44,0x52,0x42,
0x52,0x62,0x48,
0x00};
unsignedcharcodesong4[]={//两只老虎
0x44,0x54,0x64,0x44,
0x44,0x54,0x64,0x44,
0x64,0x74,0x88,
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,
0x92,0xb2,0xb2,0x82,0x98,
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;TR1=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;
else
{
TR0=0;
FreqTemp=FreqTab[freq];
TL0=FreqTemp;
TH0=FreqTemp>>8;
TR0=1;
}
}
}
}
voidmain()
{
beat=1;
FlagBeat=0;
TMOD=0x11;//定时器0,1都工作16位计数方式
ET0=1;//允许定时器0溢出中断;
ET1=1;//允许定时器1溢出中断
EA=1;
TL1=0xF0;
TH1=0xFF;
TR1=0;
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;
flag=0;
TR0=1;
TR1=1;
}
if(k==3){pmusic=song3;
flag=0;
TR0=1;
TR1=1;}
if(k==4){pmusic=song4;
flag=0;
TR0=1;
TR1=1;}
if(k==5){pmusic=song5;
flag=0;
TR0=1;
TR1=1;
}
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 首歌曲 音乐 门铃