单片机音乐中音调和节拍的确定方法:调号-音乐上指用以确定乐曲主音高度的符号。很明显一个八度就有12个半音。A、B、C、D、E、F、G。经过声学家的研究,全世界都用这些字母来表示固定的音高。比如,A这个音,标准的音高为每秒钟振动440周。 升C调:1=#C,也就是降D调:1=BD;277(频率)升D调:1=#D,也就是降E调:1=BE;311升F调:1=#F,也就是降G调:1=BG;369升G调:1=#G,也就是降A调:1=BA;415升A调:1=#A,也就是降B调:1=BB。466,C 262 #C277 D 294 #D(bE)311 E 330 F 349 #F369 G 392 #G415A 440. #A466 B 494 所谓1=A,就是说,这首歌曲的“导”要唱得同A一样高,人们也把这首歌曲叫做A调歌曲,或叫“唱A调”。1=C,就是说,这首歌曲的“导”要唱得同C一样高,或者说“这歌曲唱C调”。同样是“导”,不同的调唱起来的高低是不一样的。各调的对应的标准频率为: 单片机演奏音乐时音调和节拍的确定方法 经常看到一些刚学单片机的朋友对单片机演奏音乐比较有兴趣,本人也曾是这样。在此,本人将就这方面的知识做一些简介,但愿能对单片机演奏音乐比较有兴趣而又不知其解的朋友能有所启迪。 一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。 在音乐中所谓“音调”,其实就是我们常说的“音高”。在音乐中常把中央C上方的A音定为标准音高,其频率f=440Hz。当两个声音信号的频率相差一倍时,也即f2=2f1时,则称f2比f1高一个倍频程, 在音乐中1(do)与 ,2(来)与 ……正好相差一个倍频程,在音乐学中称它相差一个八度音。在一个八度音内,有12个半音。以1—i八音区为例, 12个半音是:1—#1、#1—2、2—#2、#2—3、3—4、4—#4,#4—5、5一#5、#5—6、6—#6、#6—7、7—i。这12个音阶的分度基本上是以对数关系来划分的。如果我们只要知道了这十二个音符的音高,也就是其基本音调的频率,我们就可根据倍频程的关系得到其他音符基本音调的频率。 知道了一个音符的频率后,怎样让单片机发出相应频率的声音呢?一般说来,常采用的方法就是通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将定时器予置不同的定时值就可实现。那么怎样确定一个频率所对应的定时器的定时值呢?以标准音高A为例: A的频率f = 440 Hz,其对应的周期为:T = 1/ f = 1/440 =2272μs 由上图可知,单片机上对应蜂鸣器的I/O口来回取反的时间应为:t = T/2 = 2272/2 = 1136μs这个时间t也就是单片机上定时器应有的中断触发时间。一般情况下,单片机奏乐时,其定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。设振荡器频率为f0,则定时器的予置初值由下式来确定: t = 12 *(TALL – THL)/ f0 式中TALL = 216 = 65536,THL为定时器待确定的计数初值。因此定时器的高低计数器的初值为: TH = THL / 256 = ( TALL – t* f0/12) / 256 TL = THL % 256 = ( TALL – t* f0/12) %256 将t=1136μs代入上面两式(注意:计算时应将时间和频率的单位换算一致),即可求出标准音高A在单片机晶振频率f0=12Mhz,定时器在工作方式1下的定时器高低计数器的予置初值为 : TH440Hz = (65536 – 1136 * 12/12) /256 = FBH TL440Hz = (65536 – 1136 * 12/12)%256 = 90H根据上面的求解方法,我们就可求出其他音调相应的计数器的予置初值。 音符的节拍我们可以举例来说明。在一张乐谱中,我们经常会看到这样的表达式,如1=C 、1=G …… 等等,这里1=C,1=G表示乐谱的曲调,和我们前面所谈的音调有很大的关联, 、 就是用来表示节拍的。以 为例加以说明,它表示乐谱中以四分音符为节拍,每一小结有三拍。比如: 其中1 、2 为一拍,3、4、5为一拍,6为一拍共三拍。1 、2的时长为四分音符的一半,即为八分音符长,3、4的时长为八分音符的一半,即为十六分音符长,5的时长为四分音符的一半,即为八分音符长,6的时长为四分音符长。那么一拍到底该唱多长呢?一般说来,如果乐曲没有特殊说明,一拍的时长大约为400—500ms 。我们以一拍的时长为400ms为例,则当以四分音符为节拍时,四分音符的时长就为400ms,八分音符的时长就为200ms,十六分音符的时长就为100ms。可见,在单片机上控制一个音符唱多长可采用循环延时的方法来实现。首先,我们确定一个基本时长的延时程序,比如说以十六分音符的时长为基本延时时间,那么,对于一个音符,如果它为十六分音符,则只需调用一次延时程序,如果它为八分音符,则只需调用二次延时程序,如果它为四分音符,则只需调用四次延时程序,依次类推。通过上面关于一个音符音调和节拍的确定方法,我们就可以在单片机上实现演奏音乐了。具体的实现方法为:将乐谱中的每个音符的音调及节拍变换成相应的音调参数和节拍参数,将他们做成数据表格,存放在存储器中,通过程序取出一个音符的相关参数,播放该音符,该音符唱完后,接着取出下一个音符的相关参数……,如此直到播放完毕最后一个音符,根据需要也可循环不停地播放整个乐曲。另外,对于乐曲中的休止符,一般将其音调参数设为FFH,FFH,其节拍参数与其他音符的节拍参数确定方法一致,乐曲结束用节拍参数为00H来表示。下面给出部分音符(三个八度音)的频率以及以单片机晶振频率f0=12Mhz,定时器在工作方式1下的定时器高低计数器的予置初值 : C调音符 频率Hz 262 277 293 311 329 349 370 392 415 440 466 494TH/TL F88B F8F2 F95B F9B7 FA14 FA66 FAB9 FB03 FB4A FB8F FBCF FC0BC调音符 1 1# 2 2# 3 4 4# 5 5# 6 6# 7频率Hz 523 553 586 621 658 697 739 783 830 879 931 987TH/TL FC43 FC78 FCAB FCDB FD08 FD33 FD5B FD81 FDA5 FDC7 FDE7 FE05C调音符 频率Hz 1045 1106 1171 1241 1316 1393 1476 1563 1658 1755 1860 1971TH/TL FB21 FE3C FE55 FE6D FE84 FE99 FEAD FEC0 FE02 FEE3 FEF3 FF02
上传时间: 2013-10-20
上传用户:哈哈haha
并行接口电路:微处理器与I/O设备进行数据传输时均需经过接口电路实现系统与设备互连的匹配。并行接口电路中每个信息位有自己的传输线,一个数据字节各位可并行传送,速度快,控制简单。由于电气特性的限制,传输距离不能太长。8255A是通用的可编程并行接口芯片,功能强,使用灵活。适合一些并行输入/输出设备的使用。8255A并行接口逻辑框图三个独立的8位I/O端口,口A、口B、口C。口A有输入、输出锁存器及输出缓冲器。口B与口C有输入、输出缓冲器及输出锁存器。在实现高级的传输协议时,口C的8条线分为两组,每组4条线,分别作为口A与口B在传输时的控制信号线。口C的8条线可独立进行置1/置0的操作。口A、口B、口C及控制字口共占4个设备号。8255A并行接口的控制字工作模式选择控制字:口A有三种工作模式,口B有二种工作模式。口C独立使用时只有一个工作模式,与口A、口B配合使用时,作为控制信号线。三种工作模式命名为:模式0、模式1及模式2。模式 0 为基本I/O端口,模式1为带选通的I/O端口,模式 2 为带选通的双向I/O端口。口A可工作在三种模式下,口B可工作在模式 0与模式 1下,口C可工作在模式0下或作为控制线配合口A、口B工作。
上传时间: 2013-11-07
上传用户:xitai
Keil C51 V8 专业开发工具(PK51) PK51是为8051系列单片机所设计的开发工具,支持所有8051系列衍生产品,,支持带扩展存储器和扩展指令集(例如Dallas390/5240/400,Philips 51MX,Analog Devices MicroConverters)的新设备,以及支持很多公司的一流的设备和IP内核,比如Analog Devices, Atmel, Cypress Semiconductor, Dallas Semiconductor, Goal, Hynix, Infineon, Intel, NXP(founded by Philips), OKI, Silicon Labs,SMSC, STMicroeleectronics,Synopsis, TDK, Temic, Texas Instruments,Winbond等。 通过PK51专业级开发工具,可以轻松地了解8051的On-chip peripherals与及其它关键特性。 The PK51专业级开发工具包括… l μVision Ø 集成开发环境 Ø 调试器 Ø 软件模拟器 l Keil 8051扩展编译工具 Ø AX51宏汇编程序 Ø ANSI C编译工具 Ø LX51 连接器 Ø OHX51 Object-HEX 转换器 l Keil 8051编译工具 Ø A51宏汇编程序 Ø C51 ANSI C编译工具 Ø BL51 代码库连接器 Ø OHX51 Object-HEX 转换器 Ø OC51 集合目标转换器 l 目标调试器 Ø FlashMON51 目标监控器 Ø MON51目标监控器 Ø MON390 (Dallas 390)目标监控器 Ø MONADI (Analog Devices 812)目标监控器 Ø ISD51 在系统调试 l RTX51微实时内核 你应该考虑PK51开发工具包,如果你… l 需要用8051系列单片机来开发 l 需要开发 Dallas 390 或者 Philips 51MX代码 l 需要用C编写代码 l 需要一个软件模拟器或是没有硬件仿真器 l 需要在单芯片上基于小实时内核创建复杂的应用
上传时间: 2013-10-30
上传用户:yy_cn
CPU在处理某一事件时,发生了另一事件请求CPU迅速去处理。CPU暂时中断当前的工作,转去处理事件B。待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A。这一处理过程称为中断。介绍用汇编和C语言两语言的源程序,愿给大家带来帮助。 前面我已经上传了几个程序,没几天却失踪了。但这次的不会失踪,能保留上几天。
上传时间: 2014-12-31
上传用户:dianxin61
最新的HDMI I.3(高清晰度多媒体接口1.3)标准把以前的HDMI 1.0 - 1.2标准所规定的数据传送速度提高了一倍,每对差动信号线的速度达到3.4 Gbps。由于数据传送速度这么高,要求电路板的电容小,确保信号的素质很好,这给电路板的设计带来了新的挑战。在解决这个问题,实现可靠的静电放电(ESD)保护时,这点尤其重要。在HDMI系统设计中增加ESD保护时,如果选用合适的办法,就可以把问题简化。泰科电子的ESD和过电流保护参考设计,符合3.4 GHz的HDMI 1.3规范,达到IEC 61000-4-2关于ESD保护的要求,并且可以优化电路板的空间,所有这些可以帮助设计人员减少风险。本文探讨在HDMI 1.3系统中设计ESD保护的要求和容易犯的错误。 概述 在高清晰度视频系统中增加ESD保护,提出了许多复杂而且令人为难的问题,这会增加成本,会延长产品上市的时间。人们在选择ESD保护方案时,往往是根据解决这个问题的办法实现起来是否容易。不过,最简单的办法也许不可能提供充分的ESD保护,或者在电路板上占用的空间不能让人最满意。有些时候,在开始时看上去是解决ESD保护问题的最好办法,到了后来,会发现需要使用多种电路板材来保证时基信号达到要求。在实现一个充分的静电放电保护时,往往需要在尺寸、静电放电保护的性能以及实现起来是否容易这几方面进行折衷。一直到现在仍然是这样。
上传时间: 2015-01-02
上传用户:zhuimenghuadie
当一个VI A.vi在VI B.vi 中使用,就称A.vi为B.vi的子VI,B.vi为A.vi的主VI。子VI 相当于文本编程语言中的子程序。 在主VI的程序框图中双击子VI的图标时,将出现该子VI 的前面板和程序框图。在前面板窗口和程序框图窗口的右上角可以看到该VI 的图标。该图标与将VI放置在程序框图中时所显示的图标相同。
标签:
上传时间: 2013-10-31
上传用户:jisujeke
利用横向递归算法解决数据组合的问题, 比如数组为a, 长度为len, 横向递归 B display(a,len) b是二维数组,a是一维数组
上传时间: 2015-03-21
上传用户:tb_6877751
一个比较简单的算法程序。输入一些数,计算后按照矩阵的形式输出。设了三个数组a[],b[],c[]。分别实现c[]=a[]+b[],c[]=a[]-b[],c[]=a[]*b[]。
上传时间: 2015-03-23
上传用户:qilin
如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。 *题目分析与算法设计 按照亲密数定义,要判断数a是否有亲密数,只要计算出a的全部因子的累加和为b,再计算b的全部因子的累加和为n,若n等于a则可判定a和b是亲密数。计算数a的各因子的算法: 用a依次对i(i=1~a/2)进行模运算,若模运算结果等于0,则i为a的一个因子;否则i就不是a的因子。 *
标签: 整数
上传时间: 2015-04-24
上传用户:金宜
二分图是一个无向图,它的n 个顶点可二分为集合A和集合B,且同一集合中的任意两个顶点在图中无边相连(即任何一条边都是一个顶点在集合A中,另一个在集合B中)。当且仅当B中的每个顶点至少与A中一个顶点相连时,A的一个子集A 覆盖集合B(或简单地说,A 是一个覆盖)。覆盖A 的大小即为A 中的顶点数目。当且仅当A 是覆盖B的子集中最小的时,A 为最小覆盖。
上传时间: 2015-05-07
上传用户:alan-ee