当前位置:文档之家› 数字音乐盒

数字音乐盒

图1 AT89C51引脚排列图
2.2音调的产生
不同的音调对应着不同的物理频率,而若要产生一定频率的声音,我们只需用一定频率的方波来驱动蜂鸣器即可。对于固定频率的产生方法,本系统中用定时器0设置为工作方式1(TMOD=0x01),对不同的音调依据频率装入对应的计数初值,定时器计数完时将输出端取反(编程中采用异或),进而产生对应的方波。具体计算如下:
(3)具体代码见附录
5仿真调试
(1)运行结果
图6 运行结果
由运行时的电路变化可以看出LS1相连的端口电压不断变化,这是由于定时器产生了驱动电流驱动其发声,当按下与K2相连的按钮时开始唱歌,按与K1相连的按钮时唱歌暂停,再次按下时继续播放,并且无论歌曲是否暂停,如果当前播放不为最后一首音乐,当按下K2相连按钮时系统将播放下一首音乐,如果为最后一首则停止播放,系统恢复至初始化之后状态。
由计数初值表可以看到,如果采用将每一个音符的所对应的计数初值都直接编入音乐的码流中,每个码占两个字节,并且不易记忆,因此我们采用将不同音符的频率写入一个如下所示码表中,通过查表确定计数初值。
uchar code yd[]={
0xff,0xff,//占位
0xFC,0x8E,//中央C调1-7
0xFC,0xED,
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
964968C3拍7中音TI
A
表1 计数初值表
低音
频率
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
[5]薛峰,朱晓骏.单片机原理及应用,北京理工大学出版社,2011.
7附录(代码)
#include"reg51.h"
#include"stdio.h"
#define uchar unsigned char
#define uint unsigned int
sbit p3_2=P3^3;
sbit fout=P2^3;
void delay(uint p)
{uint j;
uint k,l;
for(l=0;l<p;l++)
for(k=165;k>0;k--)
for(j=0;j<160;j++);
}
通过此程序,每一拍为107ms,可以实现要求,对于节拍没有固定的时间,也可以通过调节循环初值进行延时修改。
2.4音符的编码
课程论文
题 目:数字音乐盒电路的设计与仿真
学生姓名:
学生学号:
系 别:电子工程学院
专 业:通信工程
年 级:2013级
任课教师:
数字音乐盒电路的设计与仿真
学生:
指导教师:
电子工程学院 通信工程专业
1项目概括
本设计是一个基于AT89C51系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能音乐盒。该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。使用两个按键控制音乐盒,一个用来切换歌曲。播放歌曲时,蜂鸣器发出某个音调,与之对应的LED亮起。本设计利用KEILC编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,节约了设计时间。
(2)程序调试中出现的问题及解决的办法:
编程时要注意,在程序开始时,要写入各定时器中断的入口地址。编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或更改。程序的结构要设计的合理,避免上下乱调用的现象,这样会使程序更加清晰化。编程前要加流程图,这样会使思路清晰,例如数字音乐盒的设计思路完全可以按着MP3的工作方式列写流程图。
sbit key=P3^7;
sbit p0_2=P2^0;
//p0_2=0;
uchar fout1=0;
uint i;
uint id=0;
uchar t1;
uchar t2;
uint count=0;
uchar S;
//
uchar code S1[]={
0x34,0x62,0x74,0x62,0x74,0x82,0x36,
如对于编码为1的低音SO,其频率为392HZ,我们实验中采用的为12M晶振,因此机器周期为1us,那么该音调对应的计数初值为:65536-1000000/(2*392)=65536-1276=64270
解释:由于工作方式0中计数器的THO和TL0所有位均用于装载计数初值,因此最大计数值为256*256=65536,周期为1x s,频率为392HZ,每定时一次对输出取反,因此计数初值应除以2。以下为所有音调标准频率及其在本设计中的的计数初值表。
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
对照乐谱编码时,可以查上表进行对应的编码
3硬件电路
3.1电路图
图2 数字音乐盒电路图
电路参数:
芯片:AT89C51C1:10uF
C2:30pFC3:30pF
R1:200ΩR2:1KΩ
0x34,0x62,0x74,0x62,0x96,0xa6,
0xb3,0xa1,0x91,0x81,0x72,0x82,0x92,0xa3,0x91,0x81,0x71,0x66,
0x73,0x81,0x71,0x61,0x73,0x81,0x71,0x61,
0x76,0x02,0x71,0x81,0x91,0xa1,0xff};
0xFD,0x43,
0xFD,0x6A,
0xFD,0xB3,
0xFD,0xF3,
0xFE,0x2D,
0xFE,0x47,//高八度1-7
0xFE,0x76,
0xFE,0xA1,
0xFE,0xC7,
0xFE,0xD9,
0xFE,0xF9,
0xFF,0x16
};
表2 编码表
简谱
发音
简谱码
T值
节拍码
节拍数
(1)利用I/O口产 生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲
(2)可通过功能键选择乐曲,暂停,播放。
2系统原理
2.1芯片AT89C51的介绍
AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM-FlashProgrammable and Erasable Read Only Memory)的低电压,高性能CMOS-8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
(2)中断服务子程序流程图
外部中断服务0:暂停与继续播放
图4 暂停与继续播放流程图
外部中断服务1:开始、停止、切歌子程序流程图
图5开始、停止、切歌子程序流程图
流程图说明:由于外部中断服务执行与否来取决于外部硬件,并且可能在执行主程序的任何一个时刻发生,因此在此单独列出两个中断服务子程序,执行完之后将自动跳回主程序中继续执行。
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﹟
相关主题