基于51单片机的电子琴设计_论文(编辑修改稿)内容摘要:

部分功能编写成子模块的形式,这样增强了系统软件的可读性和可移植性。 基于 51 单片机的电子琴设计 13 音乐相关知识 在人类还没有产生语言时,就已经知道利用声音的高低、强弱等来表达自己的思想和感情。 声带、琴弦等物体振动时会发出声波,声波通过空气传播进入人耳, 人们就听到了声音。 声音有噪音和乐音之分振动有规律的声音是乐音,音乐中所用的声音主要是乐音。 乐音听起来有的高、有的低,这就叫做音高。 音高是由发声物体振动频率的高低决定的,频率高声音就高,频率低声音就低。 音持续时间的长短即时值,一般用拍数表示。 休止符表示暂停发音。 一首音乐是由许多不同的音符组成的,而每个音符对应着不同的频率 ,这样就可以利用不同的频率组合,加以拍数对应的延时,构成音乐。 如果单片机要自己播放音乐就必须考虑到节拍的设置。 对于 AT80C51 而言要产生一定频率的方波一般是先将某口线输出高电平 ,延迟一段时间后再输出低电平。 通过改变延迟时间可以改变单片机的输出频率。 单片机的延时主要有两种方式,即软件延时和使用定时 /计数器延时。 其中软件延时不是很精确,而电子琴电路由于每个音符的频率值要求比较严格,因此我们选用定时 /计数器延时。 由于本课程设计是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。 因此,我们只需弄清楚音乐中的音符和对应的频率,利用单片机的定时 /计数器来产生方波频率信号即可。 要产生相应的音频脉冲,只需要计算出某音频的周期,再除以 2。 利用计数器计时半周期,计满时使 反向 ,然后重复计时再反向。 本例中,单片机工作在 12MHz 时钟 , 使用定时器 /计数器 T0,工作模式为 1,改变计数初值 TH0、 TL0 就可产生不同频率的脉冲信号。 例如低 3MI 音,频率为 330Hz,其周期 T=1/f=1/330=3030us,计数值N=3030/2=1515,所以每计数 1515 次 反向。 计数初值 T=65536N=64021。 C调的各音符频率与计数值 T 的对照表如表 1 所示。 基于 51 单片机的电子琴设计 14表 1 C 调各音符频率与计数值 T 对照表 音符 频率 (HZ) 简谱码 (T 值 ) 音符 频率 (HZ) 简谱码 (T 值 ) 低 1 DO 262 63628 4 FA 740 64860 1 DO 277 63731 中 5 SO 784 64898 低 2 RE 294 63853 5 SO 831 64934 2 RE 311 63928 中 6 LA 880 64968 低 3 M 330 64021 6 932 64994 低 4 FA 349 64103 中 7 SI 988 65030 4 FA 370 64185 高 1 DO 1046 65058 低 5 SO 392 64260 1 DO 1109 65085 5 SO 415 64331 高 2 RE 1175 65110 低 6 LA 440 64400 2 RE 1245 65134 6 466 64463 高 3 M 1318 65157 低 7 SI 494 64524 高 4 FA 1397 65178 中 1 DO 523 64580 4 FA 1480 65198 1 DO 554 64633 高 5 SO 1568 65217 中 2 RE 587 64684 5 SO 1661 65235 2 RE 622 64732 高 6 LA 1760 65252 中 3 M 659 64777 6 1865 65268 中 4 FA 698 64820 高 7 SI 1967 65283 /计数器的设计和状态字定义: 若要产生音频脉冲,只要算出某一音频的周期( 1/频率),再将此周期除以2,即为半周期的时间。 利用定时器计时半周期时间,每当计时终止后就将 反相,然后重复计时再反相。 就可在。 利用 AT89C51的内部定时器使其工作计数器模式( MODE1)下,改变计数值 TH0 及 TL0 以产生不同频率的方法产生不同音阶,例如,频率为 523Hz,其周期 T= 1/523= 1912μs ,因此只要令计数器计时 956μs/1μs = 956,每计数 956 次时将 I/O 反相,就可基于 51 单片机的电子琴设计 15得到中音 DO( 523Hz)。 计数脉冲值与频率的关系式是: N= fi247。 2247。 fr , 式中, N是计数值; fi 是机器频率(晶体振荡器为 12MHz 时,其频率为 1MHz); fr 是想要产生的频率。 其计数初值 T 的求法如下: T= 65536- N= 65536- fi247。 2247。 fr 例如:设 K= 65536, fi= 1MHz,求 中 音 DO( 261Hz)。 T= 65536- N= 65536-fi247。 2247。 fr = 65536- 1000000247。 2247。 fr = 65536- 500000/fr, 中音 DO 的 T= 65536- 500000/523= 64580。 单片机 12MHZ 晶振,中音符与计数 T0相关的计数值如表所示 : 表 2 音符表 音符 频率 ( HZ) 简谱码( T值) 音符 频率( HZ) 简谱码( T值) 低 1 DO 262 63628 4 FA 740 64860 1 DO 277 63731 中 5 SO 784 64898 低 2 RE 294 63835 5 SO 831 64934 2 RE 311 63928 中 6 LA 880 64968 低 3 M 330 64021 6 932 64994 低 4 FA 349 64103 中 7 SI 988 65030 4 FA 370 64185 高 1 DO 1046 65058 低 5 SO 392 64260 1 DO 1109 65085 5 SO 415 64331 高 2 RE 1175 65110 低 6 LA 440 64400 2 RE 1245 65134 6 466 64463 高 3 M 1318 65157 低 7 SI 494 64524 高 4 FA 1397 65178 基于 51 单片机的电子琴设计 16中 1 DO 523 64580 4 FA 1480 65198 1 DO 554 64633 高 5 SO 1568 65217 中 2 RE 587 64684 5 SO 1661 65235 2 RE 622 64732 高 6 LA 1760 65252 中 3 M 659 64777 6 1865 65268 中 4 FA 698 64820 高 7 SI 1967 65283 采用查表程序进行查表时,可以为这个音符建立一个表格,有助于 单片机 通过查表的方式来获得相应的数据: 低音 0- 19 之间,中音在 20- 39 之间,高音在 40- 59 之间 用单片机播放音乐,或者弹奏电子琴,实际上是按照特定的频率,输出一连串的方波。 为了输出合适的方波,首先应该知道音符与频率的关系。 单片机发出不同频率的方波,人听起来,就是不同的音调。 上表中的频率数值,有些过多,去掉不常用的黑键频率,只是把白键对应的数据存放在单片机中,即可满足绝大部分的应用需求。 定义音调数据表的程序如下: DW 63628,63835,64021,64103,64260,64400,64524。 64580,低音区 :1 2 3 4 5 6 7 DW 64580,64671,64777,64820,64898,64968,65030 65058中音区 :1 2 3 4 5 6 7 DW 65058,65110,65157,65178,65217,65252,65283 65312高音区 :1 2 3 4 5 6 7 把这个数据表,放在程序中,需要播音的时候,就从表中取出一个数据送到定时器,当定时器溢出中断的时候,再对输出引脚取反,那么,在扬声器中,即可听到上表中频率的声音。 音乐的音拍,一个节拍为单位( C 调): 基于 51 单片机的电子琴设计 17表 3 节奏表 曲调值 DELAY 曲调值 DELAY 调 4/4 125ms 调 4/4 62ms 调 3/4 187ms 调 3/4 94ms 调 2/4 250ms 调 2/4 125ms 图 本系统单片机软件在设计中是用 C 语言编写。 电子琴控制系统控制和播放内容的程序。 见附录。 基于 51 单片机的电子琴设计 18 四、电路的仿真 Proteus 的 ISIS 事一款 Labcenter 出品的电路分析实物仿真系统,可仿真各种电路和 IC,并支持单片机,元件库齐全,使用方便,可以给我们做电路设计提供方便快捷的仿真效果,让我们事半功倍。 目前支持的单片机类型有: 680 以及各种外围芯片 0 系列、 8051 系列、 AVR系列、 PIC12 系列、 HC11 系列。 直接播放音乐: 基于 51 单片机的电子琴设计。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。