音乐流水灯产品设计报告.docx
- 文档编号:7078185
- 上传时间:2023-01-17
- 格式:DOCX
- 页数:34
- 大小:363.15KB
音乐流水灯产品设计报告.docx
《音乐流水灯产品设计报告.docx》由会员分享,可在线阅读,更多相关《音乐流水灯产品设计报告.docx(34页珍藏版)》请在冰豆网上搜索。
音乐流水灯产品设计报告
音乐流水灯产品设计报告
项目名称:
音乐流水灯
院校:
漳州职业技术学院
系别:
计算机工程系
班级:
10嵌入式2班
小组成员:
吴为超、林情、薛萌
日期:
2012年12月
摘要
本作品是一种基于AT89S52单片机音乐播放并控制彩灯的设计。
它实现单片机演奏音乐,并且使LED彩灯随音符频率的不同而闪烁发光。
本作品以AT89S52单片机作为主控核心,通过利用三极管来放大电流,单片机控制蜂鸣器播放音乐。
利用编程实现在有4块LED8X8点阵屏上实现闪烁,根据用户需求可以编写若干种亮灯模式.例如左右闪烁,隔几个亮灭,蜂鸣器可以根据用户需求改写编程播放各种音乐。
该设计方案设计及其简单,典型的89S52单片机,灯光花样多,播放各种类型的音乐,具有体积小、价格低、低能耗等优点。
在美丽的都市夜晚,彩灯的循环亮灭,播放动人的音乐,衬托出美丽的氛围,音乐流水灯具有更广阔的发展天地。
关键字:
AT89S52单片机;8X8LED点阵屏;音乐
Abstract
ThisproductionisadesignwhichisbasedonAT89S52SCMmusicplayandcontrollantern.ItmakesSCMplaymusicandtheLEDlightsflashwiththedifferentfrequencyofnotes.AT89S52SCMisdesignedasthecontrolcenterforthework.TheworkusestriodetomagnifythecurrentandSCMtocontrolbuzzertoplaymusic.Theworkusesprogramtoflashinfour8X8dot-matrixLCDscreen.Severalkindsoflightmodelcouldbeadaptedaccordingusers’needs,forexample,flashingaround,lightingonandoffeveryseverallanterns.Thebuzzercanbeadaptedaccordingtouserrequirementstoplayavarietyofmusic.Thisdesignproposalisverysimpleandhastypical89S52SCM,whichcanplayvariousmusic.Itpossessessomeoutstandingadvantages,forexample,asmallsize,lowpriceandlowpowerconsumptionandsoon.Inthebeautifulurbannights,itcouldcreatebeautifulatmospherewiththeon-and-offlightsandpleasingmusic.Theoutlookoftheflowingmusiclightisbright.
Keyword:
AT89S52singlechip;8X8dot-matrixLCDscreen;Music
目录
摘要-1-
第一章绪论-3-
1.1引言-3-
1.2设计方案-3-
第二章系统总体方案介绍-4-
2.1系统组成框图-4-
2.2音乐流水灯的功能结构图-4-
第三章硬件设计-5-
3.1总体设计框图-5-
3.2LED显示电路设计与原理-5-
3.3硬件电路图及功能-5-
第四章软件设计-6-
4.1音调、节拍以及编码的确定方法-6-
4.1.1音调的确定-6-
4.1.2节拍的确定-8-
4.1.3编码-8-
4.2软件程序设计-9-
4.2.1程序流程图及相应代码块-9-
第五章测试结果-16-
5.1.总体运行图-16-
附录程序源代码及注释-17-
第一章绪论
1.1引言
现当今单片机的应用无处不在.利用单片机控制音乐播放也多不胜举.音乐芯片也相当之多,而利用单片机存储音乐,控制播放最为广泛.它有功能多﹑价格优﹑外围电路简单的特点,备受音乐爱好者及音乐芯片制造商的青昧.用89S52单片机及少数外围电路控制MUSIC播放,就可以产生美妙的音乐,又有流水灯设计即显得美观大方又经济实惠。
随着社会经济的飞速发展,人们在追求物质文明的同时,更加注重精神文明的追求。
音乐给人带来的意义就是追求完美,用完美带给所有人无上的快乐和享受。
现代人的生活离不开音乐,音乐已成为人类日常文化生活中不可或缺的部分。
研究表明,音乐可以开发儿童的智力,甚至植物在优美的音乐环境中也会生长得更好。
虽说现在有各式各样的音乐播放器,而且随着科学技术的发展功能已经很全面了的,体积更加小巧,携带更加方便,设计更加人性化,但任何的设计都是在不断地研究中得到改进的,因此有必要对音乐的播放控制进行研究和学习,而且对于以后电子设计有极大的裨益。
1.2设计方案
本设计基于AT89S52系列单片机的音乐流水灯,利用按键切换演奏出不同的乐曲。
蜂鸣器发出某个音调,与之相对应的LED亮起。
使用两个按键,一个用来切换歌曲,另一个切换8X8LED点阵屏的变化花样。
1)电路有两种工作模式:
演奏音乐模式和花样灯模式。
演奏音乐模式:
演奏完整的一首的歌曲,8X8LED点阵屏随着音乐变化。
花样灯模式:
8X8LED点阵屏变化出各种花样。
2)按下按键1进入演奏音乐模式,再按切换歌曲,共两首歌曲。
3)按下按键2进入花样灯模式,再按切换LED花样,共五种花样。
第二章系统总体方案介绍
2.1系统组成框图
音乐流水灯的系统结构以AT89S52单片机位控制核心,加上2个按键、时钟复位电路、蜂鸣器、LED模块组成。
单片机负责接收按键的输入,根据输入控制音乐播放曲目和音乐花样灯的显示样式以及蜂鸣器发音。
系统组成框图如图2.1所示。
图2.1系统组成框图
2.2音乐流水灯的功能结构图
音乐流水灯的功能结构如图2.2所示。
Key1负责切换播放歌曲,播放歌曲共2首,分别是千年之恋和寂寞沙洲冷。
Key2负责切换LED显示花样,显示花样共五种。
图2.2音乐流水灯功能结构图
第三章硬件设计
3.1总体设计框图
图3.1总体设计框图
3.2LED显示电路设计与原理
LED显示电路是由4个8X8LED点阵屏组成,LED接到单片机的P1口,并通过74LS154芯片译码从而控制32条LED线路且用ULN2003芯片取反,使其形成通路达到发光的效果。
3.3硬件电路图及功能
总体硬件电路实现功能如下,如图3.4所示
电路中用P3.2、P3.3控制按键。
P1.0~P1.7控制LED。
P2.7控制蜂鸣器。
电路为11.0952MHZ晶振频率工作,起振电路中C1、C2均为30PF。
图3.4硬件电路图
第四章软件设计
在本程序中设置了两个标志——count1和count2,分别初始化为1和0。
按键1使得count1在1和2之间切换,按键2使得count2在1~4之间切换。
程序检测count1的值,count1等于1时播放第一首歌曲,等于2时播放第二首。
另一方面根据count2的值来切换LED的花样。
count1和count2的值是互斥的,设置count1等于1、2时,count2同时设置为0;设置count2等于1~4时,count1也同时设置为0。
4.1音调、节拍以及编码的确定方法
一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能像电子琴那样能奏出多种音色的声音。
因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和节拍表示一个音符唱多长的时间。
4.1.1音调的确定
不同音高的乐音是用C、D、E、F、G、A、B来表示,这7个字母就是音乐的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成简谱的1、2、3、4、5、6、7,相当于汉字“多来米发梭拉西”的读音,这是唱曲时乐音的发音,所以叫“音调”,即Tone。
把C、D、E、F、G、A、B这一组音的距离分成12个等份,每一个等份叫一个“半音”。
两个音之间的距离有两个“半音”,就叫“全音”。
在钢琴等键盘乐器上,C–D、D–E、F–G、G–A、A–B两音之间隔着一个黑键,他们之间的距离就是全音;E–F、B–C两音之间没有黑键相隔,它们之间的距离就是半音。
通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它们的左上角加上﹟号或者b号的叫变化音。
﹟叫升记号,表示把音在原来的基础上升高半音,b叫降记音,表示在原来的基础上降低半音。
例如高音DO的频率(1046Hz)刚好是中音DO的频率(523Hz)的一倍,中音DO的频率(523Hz)刚好是低音DO频率(266Hz)的一倍;同样的,高音RE的频率(1175Hz)刚好是中音RE的频率(587Hz)的一倍,中音RE的频率(587Hz)刚好是低音RE频率(294Hz)的一倍。
1)要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。
利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。
2)利用AT89C51的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0以产生不同频率的方法。
此外结束符和休止符可以分别用代码00H和FFH来表示,若查表结果为00H,则表示曲子终了;若查表结果为FFH,则产生相应的停顿效果。
3)例如频率为523Hz,其周期T=1/523=1912us,因此只要令计数器计时956us/1us=956,在每次技术956次时将I/O反相,就可得到中音DO(523Hz)。
计数脉冲值与频率的关系公式如下:
N=Fi
2
Fr
N:
计算值;Fi:
内部计时一次为1us,故其频率为1MHz;
4)其计数值的求法如下:
T=65536-N=65536-Fi
2
Fr
例如:
设K=65536,F=1000000=Fi=1MHz,球低音DO(261Hz)。
中音DO(523Hz)。
高音的DO(1046Hz)的计算值
T=65536-N=65536-Fi
2
Fr=65536-1000000
2
Fr=65536-500000/Fr
低音DO的T=65536-500000/262=63627
低音DO的T=65536-500000/523=64580
低音DO的T=65536-500000/1047=65059
5)C调各音符频率与计数值T的对照表如表4.1所示。
表4.1C调各音符频率与计数值T的对照表
低音
频率
T
参数
中音
频率
T
参数
高音
频率
T
参数
Do
262
1908
229
Do
523
956
115
Do
1046
57
57
Do﹟
277
1805
217
Do﹟
554
903
108
Do﹟
1109
54
54
Re
294
1701
204
Re
587
852
102
Re
1175
51
51
Re﹟
311
1608
193
Re﹟
622
804
97
Re﹟
1245
48
48
Mi
330
1515
182
Mi
659
759
91
Mi
1318
45
45
Fa
349
1433
172
Fa
698
716
86
Fa
1397
43
43
Fa﹟
370
1351
162
Fa﹟
740
676
81
Fa﹟
1480
41
41
So
392
1276
153
So
784
638
77
So
1568
38
38
So﹟
415
1205
145
So﹟
831
602
72
So﹟
1661
36
36
La
440
1136
136
La
880
568
68
La
1760
34
34
La﹟
464
1078
129
La﹟
932
536
64
La﹟
1865
32
32
Si
494
1012
121
Si
988
506
61
Si
1976
30
30
4.1.2节拍的确定
若要构成音乐,光有音调是不够的,还需要节拍,让音乐具有旋律(固定的律动),而且可以调节各个音的快满度。
“节拍”,即Beat,简单说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚。
若1拍实0.5s,则1/4拍为0.125s。
至于1拍多少s,并没有严格规定,就像人的心跳一样,大部分人的心跳是每分钟72下,有些人快一点,有些人慢一点,只要听的悦耳就好。
音持续时间的长短即时值,一般用拍数表示。
休止符表示暂停发音。
一首音乐是由许多不同的音符组成的,而每个音符对应着不同频率,这样就可以利用不同的频率的组合,加以与拍数对应的延时,构成音乐。
了解音乐的一些基础知识,我们可知产生不同频率的音频脉冲即能产生音乐。
对于单片机来说,产生不同频率的脉冲是非常方便的,利用单片机的定时/计数器来产生这样的方波频率信号。
因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。
表4.2节拍与节拍码对照
节拍码
节拍数
节拍码
节拍数
1
1/4拍
1
1/8拍
2
2/4拍
2
1/4拍
3
3/4拍
3
3/8拍
4
1拍
4
2/1拍
5
1又1/4拍
5
5/8拍
6
1又1/2拍
6
3/4拍
8
2拍
8
1拍
A
2又1/2拍
A
1又1/4拍
C
3拍
C
1又1/2拍
F
3又3/4拍
每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,图5.2为节拍码的对照。
如果1拍为0.4秒,1/4拍实0.1秒,只要设定延迟时间就可求得节拍的时间。
假设1/4拍为1DELAY,则1拍应为4DELAY,以此类推。
所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如图5.3为1/4和1/8节拍的时间设定。
表4.31/4和1/8节拍的时间设定
曲调值
DELAY
曲调值
DELAY
调4/4
125毫秒
调4/4
62毫秒
调3/4
187毫秒
调3/4
94毫秒
调2/4
250毫秒
调2/4
125毫秒
4.1.3编码
doremifasolasi分别编码为1~7,重音do编为8,重音re编为9,停顿编为0。
播放长度以十六分音符为单位(在本程序中为165ms),一拍即四分音符等于4个十六分音符,编为4,其它的播放时间以此类推。
音调作为编码的高4位,而播放时间作为低4位,如此音调和节拍就构成了一个编码。
以0xff作为曲谱的结束标志。
举例1:
音调do,发音长度为两拍,即二分音符,将其编码为0x18。
举例2:
音调re,发音长度为半拍,即八分音符,将其编码为0x22
歌曲播放的设计。
先将歌曲的简谱进行编码,储存在一个数据类型为unsignedchar的数组中。
程序从数组中取出一个数,然后分离出高4位得到音调,接着找出相应的值赋给定时器0,使之定时操作蜂鸣器,得出相应的音调;接着分离出该数的低4位,得到延时时间,接着调用软件延时。
表4.4简谱对应的简谱码、T值、节拍数
简谱
发音
简谱码
T值
节拍码
节拍数
5
低音SO
1
64260
1
1/4拍
6
低音LA
2
64400
2
2/4拍
7
低音TI
3
64524
3
3/4拍
1
中音DO
4
64580
4
1拍
2
中音RE
5
64684
5
1又1/4拍
3
中音MI
6
64777
6
1又1/2拍
4
中音FA
7
64820
8
2拍
5
中音SO
8
64898
A
2又1/2拍
6
中音LA
9
64968
C
3拍
7
中音TI
A
65030
F
3又3/4拍
1
高音DO
B
65058
2
高音RE
C
65110
3
高音MI
D
65157
4
高音FA
E
65178
5
高音SO
F
65217
4.2软件程序设计
4.2.1程序流程图及相应代码块
主程序流程图
图4.1主程序流程图
主程序代码:
main()
{ucharx,w,timeLed,ad=0;//,
count1=0;//流水灯无花样
count2=1;//唱第一首歌
//P34=0;//选取矩阵键盘的一列
EA=1;//开总中断
EX0=1;//开外部中断0
IT0=1;//外部中断0下降沿触发方式
EX1=1;//开外部中断1
IT1=1;//外部中断1下降沿触发方式
TMOD=0x01;//定时器0工作在方式1
TH0=0;
TL0=0;
ET0=1;
while
(1)
{
if(count1!
=0)
{
switch(count1)
{
case1:
for(w=0;w<23;w++)
{
for(timeLed=0;timeLed<100;timeLed++)
{for(x=0;x<=ad;x++)
{
//duan=1;
P1=huayang1[w][x];
//duan=0;
if(count1!
=1)
break;
}
}
if(w<7)
ad++;
if(w>14)
ad--;
if(w==22)
ad=0;
}
ad=0;
break;
case2:
for(w=0;w<23;w++)
{
for(x=0;x<=ad;x++)
{
//duan=1;
P1=huayang1[w][x];
//duan=0;
delay1(300);
if(count1!
=2)
break;
}
if(w<7)
ad++;
if(w>14)
ad--;
if(w==22)
ad=0;
}
ad=0;
break;
case3:
for(w=22;w>=0;w--)
{
for(timeLed=0;timeLed<100;timeLed++)
{for(x=0;x<=ad;x++)
{
//duan=1;
P1=huayang1[w][x];
//duan=0;
if(count1!
=3)
break;
}
}
if(w<8)
ad--;
if(w>15)
ad++;
if(w==0)
ad=0;
}
ad=0;
break;
case4:
for(x=0;x<8;x++)
{
//duan=1;
P1=huayang4[x];
beep();
delay1(300);
//duan=0;
if(count1!
=4)
break;
}
break;
}
}
else
{
song();
delay1(1000);
}
}
}
播放音乐子程序流程图:
图4.2播放音乐子程序流程图
播放音乐子程序代码:
voidsong()
{
uinttemp;
ucharjp;//jp是简谱
i=0;
while
(1)
{if(count2==0)
{
break;
}
if(count2==1)//选曲
temp=qnzl[i];
if(count2==2)
temp=jmszl[i];
if(temp==0xff)
break;
jp=temp/16;//取数的高4位
//duan=1;//不知何物
P1=yinyue[jp];//将音乐转化成相应的LED档?
//duan=0;
if(jp!
=0)
{
timeh=cuzhi[jp*2];
timel=cuzhi[jp*2+1];
}
else
{
TR0=0;
fm=1;//关蜂鸣器
}
delay_led(temp);//取数的低4位
TR0=0;//唱完一个音停10MS
fm=1;
delay1(10);
TR0=1;
i++;
}
TR0=0;
fm=1;
}延时程序代码:
voiddelay_led(uinttemp){
uintx,y;
for(x=temp%16;x>0;x--)
for(y=19000/18;y>0;y--){
if(temp/16==0x00){
P1=P1+0X10;
P1=(P1/0X10)*0X10+0X01;
}
if(temp/16==0x01){
P1=P1+0X10;
P1=(P1/0X10)*0X10+0X0F;
}
if(temp/16==0x02){
P1=P1+0X10;
P1=(P1/0X10)*0X10+0X
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 音乐 流水 产品设计 报告