版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上精选优质文档-倾情为你奉上专心-专注-专业专心-专注-专业精选优质文档-倾情为你奉上专心-专注-专业单片机演奏音乐一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。在音乐中所谓“音调”,其实就是我们常说的“音高”。在音乐中常把五线谱中央C 上方的A 音定为标准音高,其频率f=440Hz。当两个声音信号的频率相差一倍时,也即f2=2f1时,则称f2比f1 高一个倍频程, 在音乐中1与
2、 .1(1前面的点应在1的上面),2与 .2正好相差一个倍频程,在音乐学中称它相差一个八度音。在一个八度音内,有12个半音。以1i 八音区为例, 12 个半音是:11、12、22、23、34、44,45、5 一5、56、66、67、7i。其中“#”表示半音,用于升高或降低半个音。这12 个音阶的分度基本上是以对数关系来划分的。如果我们只要知道了这十二个音符的音高,也就是其基本音调的频率,我们就可根据倍频程的关系得到其他音符基本音调的频率。知道了一个音符的频率后,常采用的方法就是通过一个延时程序,延时对应频率周期的二分之一周期(即t=1/2f)后,将单片机上连接蜂鸣器的I/O (P3.7)口来回
3、取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将不同的延时时间值t赋给延时程序即可实现。例:我门以440Hz的声音频率来计算,其对应的时间 t=1/2f=1/2*440=1136us 但在实际程序中常采用查表的方式来取的t值,而为了节约存储器空间则将t值以字节来进行存储,由于大部分t值都大于256。所以,需将t值除以一个常数(t/x)使其小于256。那么,在查表取得t 值后就要再乘上该常数后再赋给延时程序。以下为常用音符对应的频率和二分之一周期值t :低音音符频率Hz周期/2周期/2/20中音音符频率Hz周期/2周期/2/20126219080 x5
4、f15239560 x2f1#27718040 x5a1#5539040 x2d229317060 x5525868540 x2a2#31116080 x502#6218060 x28332915200 x4c36587600 x26434914360 x4746977180 x244#37013520 x434#7396760 x22539212760 x3f57836380 x205#41512040 x3c5#8306020 x1e644011360 x3868795680 x1c6#46610720 x356#9315360 x1b749410120 x3279875060 x19高音
5、音符频率Hz周期/2周期/2/20110454780 x17注:在音符的底部加一点表示低音,在音符的顶部加一点表示高音。表中的20为方便查表而除以的一个常数。1#11064520 x16211714260 x152#12414020 x124#14763400 x11515633200 x105#16583020 x0f617552840 x0e6#18602680 x0d719712540 x0c一首乐曲的每一个音符除了频率之外,还会有不同的节拍,确定节拍的方法有以下几种:在一张乐谱中,我们经常会看到这样的表达式, 等等,这里1=C,1=G
6、表示乐谱的曲调,和我们前面所谈的音调有很大的关联,就是用来表示节拍的。以为例加以说明,它表示乐谱中以四分音符为节拍,每一小结有三拍。比如:其中1 、2 为一拍,3、4、5 为一拍,6为一拍共三拍。1 、2的时长为四分音符的一半,即为八分音符长,3、4的时长为八分音符的一半,即为十六分音符长,5 的时长为四分音符的一半,即为八分音符长,6的时长为四分音符长。那么一拍到底该唱多长呢?一般说来,如果乐曲没有特殊说明,一拍的时长大约为400500ms 。我们以一拍的时长为400ms 为例,则当以四分音符为一节拍时,四分音符的时长就为400ms,八分音符(即1/2拍)的时长就为200ms,十六分音符(1
7、/4拍)的时长就为100ms。若知道了一首歌曲的每分钟的节拍数,也可求出每一节拍的时间。以每分钟94拍为例:一拍的时间=60/94=0.64s=640ms节拍时间S节拍时间 1/40.16 1/20.32 3/40.48 1 0.64 1又1/40.80 1又1/20.96 1又3/41.12 2 1.28 2又1/41.44 2又1/21.60 2又3/41.76 3 1.92 3又1/42.08 3又1/22.24 3又3/42.40 4 2.56 当知道了每一节拍的时长后,就可利用单片机的定时器产生一个基准时间,比如说以10ms的时长为基本延时时间,那么,对于一个音符,如果它为1/4拍1
8、00ms的时长,则只需调用10次延时程序,如果它为2/4拍200ms,则只需调用20次延时程序,如果它为1拍400ms,则只需调用40次延时程序,依次类推。在简谱中,1、2、3、4、5、6、7这七个基本音符,不仅表示音的高低,而且还是表示时值长短的基本单位,称为四分音符,其他音符均是在四分音符的基础上,用加记短横线-和附点表示。1.单纯音符在简谱中,如果音符时值的长短用短横线 -表示,就称为单纯音符。单纯音符除四分音符外,有以下两种形式: 在基本音符右侧加记一条短横线,表示增长一个四分音符的时值。这类加记在音符右侧、使音符时值增长的短横线,称为增时线。增时线越多,音符的时值越长。 在基本音符下
9、方加记一条短横线,表示缩短原音符时值的一半。这类加记在音符下方、使音符时值缩短的短横线,称为减时线。减时线越多,音符的时值越短。单纯音符的名称以全音符为标准而定。如:全音符的二分之一称为二分音符,全音符的四分之一称为四分音符,其余类推。常见的单纯音符的名称、写法及时值长短列表如下: 从上表可以看出,相邻两种音符之间的时值比例为21。现将单纯音符之间的时值比例列表(如右图) 2.附点音符在简谱中,加记在单纯音符的右侧的使音符时值增长的小圆点,称为附点加记附点的音符称为附点音符。附点本身并无一定的长短,其长短由前面的单纯音符来决定。附点的意义在于增长原音符时值的一半,常用于四分音符和小于四分音符的
10、各种音符之后。例如:附点四分音符: 附点八分音符: 附点十六分音符: 在简谱中,大于四分音符的单纯音符通常不加记附点,而用增时线来表示。例如;附点二分音符: 不用 表示。带有两个附点的单纯音符称为复附点音符,第二个附点表示增长第一个附点时值的一半,即音符时值的四分之-。例如: 复附点常用于器乐曲中,在歌曲中很少使用。通过上面关于一个音符音调和节拍的确定方法,我们就可以在单片机上实现演奏音乐了。具体的实现方法为:将乐谱中的每个音符的音调及节拍变换成相应的音调参数和节拍参数,将他们做成数据表格,存放在存储器中,通过程序取出一个音符的相关参数,播放该音符,该音符唱完后,接着取出下一个音符的相关参数,
11、如此直到播放完毕最后一个音符,根据需要也可循环不停地播放整个乐曲。另外,对于乐曲中的休止符,一般用FFH表示,乐曲结束音符用00H来表示。例:程序1: /* 歌曲选择时应按住设置间3秒以上,然后按上或下键进行选择,然后再按设置键退出 */#includesbit spek=P37; /声音输出端sbit set=P32; /设定及退出键,按奇数次为设定功能;偶数次为退出功能sbit up=P31; /上一曲sbit down=P30; /下一曲bit flag1,flag2; /按键扫描标志位,新键值标志位unsigned char f_t,n,i,key,k_max; /音符频率对应的二分之
12、一周期值,节拍常数值,查表用计数器,键值,最大键值unsigned char *p_music; /指向音乐数据数组的指针void timer_ms(unsigned char tim); /毫秒级延时函数声明void timer_us(unsigned char t); /微秒级延时函数void key_scan(void); /按键扫描函数void key_manage(); /键值处理函数/格式为:频率常数,节拍常数,频率常数,节拍常数unsigned char code music_table1=0 x18,0 x30,0 x1c,0 x10,0 x20,0 x40,0 x1c,0 x
13、10,0 x18,0 x10,0 x20,0 x10,0 x1c,0 x10,0 x18,0 x40,0 x1c,0 x20,0 x20,0 x20,0 x1c,0 x20,0 x18,0 x20,0 x20,0 x80,0 xff,0 x20,0 x30,0 x1c,0 x10,0 x18,0 x20,0 x15,0 x20,0 x1c,0 x20,0 x20,0 x20,0 x26,0 x40,0 x20,0 x20,0 x2b,0 x20,0 x26,0 x20,0 x20,0 x20,0 x30,0 x80,0 xff,0 x20,0 x20,0 x1c,0 x10,0 x18,0 x
14、10,0 x20,0 x20,0 x26,0 x20,0 x2b,0 x20,0 x30,0 x20,0 x2b,0 x40,0 x20,0 x20,0 x1c,0 x10,0 x18,0 x10,0 x20,0 x20,0 x26,0 x20,0 x2b,0 x20,0 x30,0 x20,0 x2b,0 x40,0 x20,0 x30,0 x1c,0 x10,0 x18,0 x20,0 x15,0 x20,0 x1c,0 x20,0 x20,0 x20,0 x26,0 x40,0 x20,0 x20,0 x2b,0 x20,0 x26,0 x20,0 x20,0 x20,0 x30,0 x
15、80,0 x20,0 x30,0 x1c,0 x10,0 x20,0 x10,0 x1c,0 x10,0 x20,0 x20,0 x26,0 x20,0 x2b,0 x20,0 x30,0 x20,0 x2b,0 x40,0 x20,0 x15,0 x1f,0 x05,0 x20,0 x10,0 x1c,0 x10,0 x20,0 x20,0 x26,0 x20,0 x2b,0 x20,0 x30,0 x20,0 x2b,0 x40,0 x20,0 x30,0 x1c,0 x10,0 x18,0 x20,0 x15,0 x20,0 x1c,0 x20,0 x20,0 x20,0 x26,0 x
16、40,0 x20,0 x20,0 x2b,0 x20,0 x26,0 x20,0 x20,0 x20,0 x30,0 x30,0 x20,0 x30,0 x1c,0 x10,0 x18,0 x40,0 x1c,0 x20,0 x20,0 x20,0 x26,0 x40,0 x13,0 x60,0 x18,0 x20,0 x15,0 x40,0 x13,0 x40,0 x18,0 x80,0 x00; /八月桂花香unsigned char code music_table2=0 x26,0 x20,0 x20,0 x20,0 x20,0 x20,0 x26,0 x10,0 x20,0 x10,
17、0 x20,0 x80,0 x26,0 x20,0 x30,0 x20,0 x30,0 x20,0 x39,0 x10,0 x30,0 x10,0 x30,0 x80,0 x26,0 x20,0 x20,0 x20,0 x20,0 x20,0 x1c,0 x20,0 x20,0 x80,0 x2b,0 x20,0 x26,0 x20,0 x20,0 x20,0 x2b,0 x10,0 x26,0 x10,0 x2b,0 x80,0 x26,0 x20,0 x30,0 x20,0 x30,0 x20,0 x39,0 x10,0 x26,0 x10,0 x26,0 x60,0 x40,0 x10,
18、0 x39,0 x10,0 x26,0 x20,0 x30,0 x20,0 x30,0 x20,0 x39,0 x10,0 x26,0 x10,0 x26,0 x80,0 x26,0 x20,0 x2b,0 x10,0 x2b,0 x10,0 x2b,0 x20,0 x30,0 x10,0 x39,0 x10,0 x26,0 x10,0 x2b,0 x10,0 x2b,0 x20,0 x2b,0 x40,0 x40,0 x20,0 x20,0 x10,0 x20,0 x10,0 x2b,0 x10,0 x26,0 x30,0 x30,0 x80,0 x18,0 x20,0 x18,0 x20,
19、0 x26,0 x20,0 x20,0 x20,0 x20,0 x40,0 x26,0 x20,0 x2b,0 x20,0 x30,0 x20,0 x30,0 x20,0 x1c,0 x20,0 x20,0 x20,0 x20,0 x80,0 x1c,0 x20,0 x1c,0 x20,0 x1c,0 x20,0 x30,0 x20,0 x30,0 x60,0 x39,0 x10,0 x30,0 x10,0 x20,0 x20,0 x2b,0 x10,0 x26,0 x10,0 x2b,0 x10,0 x26,0 x10,0 x26,0 x10,0 x2b,0 x10,0 x2b,0 x80,
20、0 x18,0 x20,0 x18,0 x20,0 x26,0 x20,0 x20,0 x20,0 x20,0 x60,0 x26,0 x10,0 x2b,0 x20,0 x30,0 x20,0 x30,0 x20,0 x1c,0 x20,0 x20,0 x20,0 x20,0 x80,0 x26,0 x20,0 x30,0 x10,0 x30,0 x10,0 x30,0 x20,0 x39,0 x20,0 x26,0 x10,0 x2b,0 x10,0 x2b,0 x20,0 x2b,0 x40,0 x40,0 x10,0 x40,0 x10,0 x20,0 x10,0 x20,0 x10,
21、0 x2b,0 x10,0 x26,0 x30,0 x30,0 x80,0 x00; /祝你平安unsigned char code music_table3=0 x20,40,0 x26,20,0 x20,20,0 x17,80,0 x1c,40,0 x17,40,0 x20,80,0 x20,40,0 x2f,20,0 x2a,20,0 x26,40,0 x2a,20,0 x2f,20,0 x2a,80,0 xff,0 x20,40,0 x26,20,0 x20,20,0 x17,60,0 x19,20,0 x1c,40,0 x17,40,0 x20,80,0 x20,40,0 x2a,2
22、0,0 x26,20,0 x24,60,0 x32,20,0 x2f,80,0 xff,0 x1c,40,0 x17,40,0 x17,80,0 x19,40,0 x1c,20,0 x19,20,0 x17,80,0 x1c,20,0 x19,20,0 x17,20,0 x1c,20,0 x1c,20,0 x20,20,0 x26,20,0 x2f,20,0 x2a,80,0 xff,0 x20,40,0 x26,20,0 x20,20,0 x17,60,0 x19,20,0 x1c,40,0 x17,40,0 x20,80,0 x20,40,0 x2a,20,0 x26,20,0 x24,6
23、0,0 x32,20,0 x2f,80,0 xff,0 x20,40,0 x26,20,0 x20,20,0 x17,80,0 x1c,40,0 x17,40,0 x20,80,0 x20,40,0 x2f,20,0 x2a,20,0 x26,40,0 x2a,20,0 x2f,20,0 x2a,80,0 xff,0 x20,40,0 x26,20,0 x20,20,0 x17,60,0 x19,20,0 x1c,40,0 x17,40,0 x20,80,0 x20,40,0 x2a,20,0 x26,20,0 x24,60,0 x32,20,0 x2f,80,0; /送别main() spe
24、k=0; P3=0 x7f; TMOD=0 x01; /T0工作于方式1,即16位定时器模式 IE=0 x82; /开总中断,T0中断 flag2=0; / flag1=0; key=1; k_max=3; /最大键值(取值范围1254) n=0; i=0;p_music=music_table1; /指针赋初值 while (1) switch (p_musici) case 0 x00: i=0; /歌曲完,则停止0.5S后重新开始 timer_ms(250); /延时0.25ms timer_ms(250); break; case 0 xff: i+; /遇到休止符则停止100us t
25、imer_ms(250);timer_ms(250); break; default: f_t=p_musici+; n=p_musici+; spek=1; TR0=1; while (n!=0) spek=spek; timer_us(4*f_t); /改变f_t前面的系数可以调整音符频率的高低 TR0=0; spek=0;if(set=0)key_scan();key_manage(); /*函数名称: 定时器0的中断处理程序函数功能: 完成10毫秒定时入口参数: 出口参数: 其 它: */void timer0() interrupt 1 using 2 TH0=(65536-1000
26、0)/256; /定时10毫秒 TL0=(65536-10000)%256; n-;/*函数名称: 延时程序函数功能: 完成微秒级的延时入口参数: t为需延时的时间(取值范围1255;延时时间51275us)出口参数: 其 它: */void timer_us(unsigned char t) while (-t); /本语句执行一次需5us的时间/*函数名称: 按键扫描函数函数功能: 完成按键扫描处理入口参数: 应为在中断函数中被调用,所以不能有参数传递出口参数: 其 它: */void key_scan(void) timer_ms(10); /延时10ms等待按键状态稳定 if (set=0) /再次确认 while (set=0); /等待按键松开 flag1=1; /该位为1,表示进入按键扫
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 乡村一体化工作制度
- 五四八小时工作制度
- 乡安办分管工作制度
- tdk公司工作制度
- 代煎工作制度及流程
- 办公室办文工作制度
- 加拿大政府工作制度
- 劳动法课堂工作制度
- 医学生实习工作制度
- 医药办公室工作制度
- 智慧树知到《形势与政策》2026春章节测试附答案
- 污水处理厂设备拆除技术安全管理方案
- 2026中考语文作文高频主题预测(附写作思路)
- 吉林省吉林市2026年中考语文模拟试卷五套附答案
- AQ 3067-2026 《化工和危险化学品生产经营企业重大生产安全事故隐患判定准则》解读
- 基层中医药工作考核制度
- 【初中地理】白山黑水-东北三省第1课时课件-2025-2026学年八年级地理下学期(人教版2024)
- 【期末】《生成式人工智能应用基础》(杭州电子科技大学)期末考试慕课答案
- 常熟介绍教学课件
- 金融服务企业合规操作手册
- 发改局安全生产培训课件
评论
0/150
提交评论