音乐盒播放器
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、演奏一首音乐
//各种音符频率所对应的、半周期的定时时间初始值。
// 频率-半周期数据表 高八位
code unsigned char FREQH[] = {
0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8, //低音1234567
0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC,//1,2,3,4,5,6,7,i
一、单键演奏一组音符
1、单片机是如何发出音乐声 原理: 声音是通过震动产生的。单片机对某一I/O引脚以一定 的频率循环置1 和清0,这一引脚便产生一定频率的方 波,该方法通过放大后作用于扬声器便产生一定频率 的声音。若改变输出方波的频率,产生的声音也就改 变了。通过控制输出方波的时间长短,声音的长短也 就得到控制,因此,根据乐谱,单片机就可以产生音 乐。音乐中最关键的两个要素是音调和节拍。 音调表示一个音符唱多高的频率, 节拍表示一个音符唱多长的时间。
三极管 蜂ຫໍສະໝຸດ Baidu器
一、单键演奏一组音符
一、单键演奏一组音符
二、演奏一首音乐
节拍的实现: 在一张乐谱中,我们经常会看到这样的表达式,如1=C (4/4) 、1=G(3/4) …… 等等,这里1=C (4/4),1=G(3/4) 表示乐谱的曲调,与前面所谈的音调 有很大的关联,4/4、3/4 就是用来表示节拍的。以 3/4 为例加以说明,它表示乐谱中以四分音符为节拍, 每一小结有三拍。
二、演奏一首音乐
据此就可以写出《送别》前二小节的数据表: code unsigned char sszymmh[] = { 5, 2, 2, 3, 2, 1, 5, 2, 1, 1, 3, 4, //嗦,中音,2个半拍; 咪,中音,1个半拍; 嗦,中音,1 个半拍; 哆,高音,4个半拍 6, 2, 2, 1, 3, 2, 5, 2, 4, //啦,中音,2个半拍; 哆,高音,1个半拍;嗦,中音,4个 半拍 0, 0, 0};
二、演奏一首音乐
单片机演奏音乐的电路只需要单片机和声音播放电路, 电路原理图如图所示。
二、演奏一首音乐
/*演奏“世上只有妈妈好”*/ #include <reg52.h> sbit speaker = P3^0; unsigned char timer0h, timer0l, time; //-------------------------------------//单片机晶振采用11.0592MHz
一、单键演奏一组音符
2、音调的确定 例如:中音DO的频率为523Hz,周期为:T=1/f=1912us 单片机上对应蜂鸣器的I/O 口来回取反的时间应即半个 周期为:t=T/2=956us 这个时间t 就是单片机上定时器应有的中断触发时间。 只要将定时器的定时时间设置为956us,就可以产生频 率为523Hz的方波信号。 一般情况下,单片机奏乐时,其定时器为工作方式1, 设振荡器频率为f,则定时器的予置初值由下式来确定 : t=(216-X)*(12/f)
0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE,
//中音 234567
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF}; //高音 1234567
二、演奏一首音乐
其中1 、2 为一拍,3、4、5为一拍,6为一拍共三拍。 1 、2的时长为四分音符的一半,即为八分音符长,3、 4的时长为八分音符的一半,即为十六分音符长,5的时 长为四分音符的一半,即为八分音符长,6的时长为四 分音符长。
二、演奏一首音乐
乐曲的数据,一般写入数据表,表中每三个数字,说明了 一个音符,它们分别代表: 第一个数字是音符的数值1234567之一,代表多来咪...; 第二个数字是123之一,代表低音、中音、高音; 第三个数字是时间长度,以半拍为单位。 乐曲数据表的结尾是三个0。 乐谱中数字上面带点表示高音,下面带点表示低音。什么 都不带表示中音。 下划线:单个数字是四分音符,两个数字下画一条线是八 分音符了。 感兴趣的同学应该去查看乐谱相关的知识。
一、单键演奏一组音符
1、单片机是如何发出音乐声 一首音乐是由很多音符组合而成的,一个音符代表了一 种频率的乐声,通过不同频率乐声的组合,就可以产生 一首音乐了。这就是电子音乐的基本方法。 单片机可以通过定时器生成不同频率的信号,按照音乐 音符的频率来生成各种频率的信号,并将其按照音乐构 建好,然后将信号通过电声器件转换为声波,这样单片 机就能发出一段音乐的声音了。
一、单键演奏一组音符
2、音调的确定 因此定时器的高低计数器的初值为: TH =X/ 256 = ( 216– t* f/12) / 256 TL = X % 256 = (216–t* f/12) %256
C调各音符频率与计数值T的对照表如图所示:
一、单键演奏一组音符
2、音调的确定 一般我们要为这个音符建立一个表格,有助于单片机通 过查表的方式来获得相应的数据。 uint code tab[]={63628,63835,64021,64103,
64260,64400,64524,64580, 64684,64777,64820,64898, 64968,95030,65058,65110};
一、单键演奏一组音符
实例演示: 要求:用一只单键产生一组音符的声音,发声从低音阶 向高音阶进展,可以通过虚拟示波器观察到单片机产生 的方波的周期变化。单片机演奏音乐的电路只需要单片 机和声音播放电路,电路原理图如图所示。
一、单键演奏一组音符
2、音调的确定 音调就是我们常说的音高。它是由频率来确定的!我们 可以查出各个音符所对应的相应的频率,那么现在就需 要我们来用51来发出相应频率的声音! 我们常采用的方法就是通过单片机的定时器定时中断, 将单片机上对应蜂鸣器的 I/O口来回取反,或者说来回 清零,置位,从而让蜂鸣器发出声音,为了让单片机发 出不同频率的声音,我们只需将定时器预置不同的定时 值就可实现。那么怎样确定一个频率所对应的定时器的 定时值呢?