电子琴单片机编程相关知识
音频脉冲的产生:音乐的产生主要是通过单片机的I/O口输出高低不同的脉冲信号来控制蜂鸣器发音,要想产生音频脉冲信号,需要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用单片机定时器计时这个半个周期时间,每当计时到后就将输出脉冲的I/O口反相,然后重复计时此半周期时间再对I/O口反相,这样就能在此I/O口上得到此频率的脉冲。
通常,利用单片机的内部定时器0,工作在方式1下,改变计数初始值THO和TLO来产生不同的率。
例如,若单片机采用12MHz晶振,要产生频率为587Hz的音频脉冲时,其音频信号的脉冲周期 T=1/587=1703.5775μs,半周期的时间为852μs,因此只要令计数器计数=852μs/1μs=852,在每计数852时将I/O口反相,就可得到C调中音Re。
计数脉冲值与频率的关系如下:
符
频率Hz
周期us
简谱码(定时初值)
音符
频率Hz
周期
us
简谱码(定时初值)
低1Do
262
3816
63628
高1Do
1047
955
65058
低2Re
294
3401
63835
高2Re
1175
851
65110
低3Mi
330
3030
64021
高3Mi
1319
758
65157
低4Fa
349
2865
64103
高4Fa
1397
751
65160
低5So
392
2551
64260
高5So
1568
637
65217
低6La
440
2272
64400
高6La
1760
568
65252
低7Si
494
2024
64524
高7Si
1967
508
65282
中1Do
523
1912
64580
中2Re
587
1703
64684
中3Mi
659
1517
64777
中4Fa
698
1432
64820
中5So
784
1275
64898
中6La
880
1136
64968
中7Si
988
1012
65030
音符的节拍我们可以举例来说明。在一张乐谱中,我们经常会看到这样的表达式,如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。
可见,在单片机上控制一个音符唱多长可采用循环延时的方法来实现。首先,我们确定一个基本时长的延时程序,比如说以十六分音符的时长为基本延时时间,那么,对于一个音符,如果它为十六分音符,则只需调用一次延时程序,如果它为八分音符,则只需调用二次延时程序,如果它为四分音符,则只需调用四次延时程序,依次类推。
单片机编程实训任务:多音阶电子琴
1. 制作一个多音阶电子琴,由4X4键盘和功放模块组成,设计成16个音符,可随意弹奏想要表达的音乐,音符和按键对应关系如下图所示。点在数字下面表示低音,点在数字上面表示高音,无点的数字表示中音。
画出接线图和流程图,并根据流程图编写代码,仿真实现功能。
2. 制作一个音乐播放器,循环播放歌曲《两只老虎》。该歌曲简谱如下图所示。
简谱知识:无下划线的音符为四分音符;有一个下划线的音符为八分音符,如5;有两条下划线的音符为十六分音符,如6;有点的音符为附加音符,如5· ,为1.5个八分音符。一拍的时长为400ms,以四分音符为节拍,四分音符的时长就为400ms,八分音符的时长就为200ms,十六分音符的时长就为100ms。
相关问答
单片机电子琴 音调怎么调?要调整单片机电子琴的音调,首先需要明确所用单片机芯片类型和音频输出方式。然后通过编程软件设置音频输出引脚的频率值,根据所需的音调进行调整。一般来说,...
基于AT89s52 单片机 的8键 电子琴设计 的c语言程序怎么编啊(蜂鸣器)?蜂鸣器出不同音调的声音是由于震动的频率不同,你可以先定义八个不同的函数分别是八个音(通过定时或循环达到)然后将按键分别与对应的音调函数对应,按哪个按键...
英语翻译摘要本文介绍了一种由Mega16 单片机 、ISD4004语音芯...SummaryThispaperpresentsasinglechipbytheMega16,ISD4004voicechip,7805andLM317regulato...