项目五简易电子琴的设计
任务三
单片机发“哆瑞咪”
任务描述
利用所给键盘的1,2,3,4,5,6,7的7个键,能够对应发出7个不同的“哆瑞咪发梭拉西”音。
知识链接
单片机实现音乐的节拍
单片机音乐中音调和节拍的确定方法
因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。
如果我们只要知道了每个音符的音高,也就是其基本音调的频率,我们就可根据倍频程的关系得到其他音符基本音调的频率。
单片机音乐中音调和节拍的确定方法
一般说来,常采用的方法就是通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将定时器予置不同的定时值就可实现。
单片机音乐中音调和节拍的确定方法
以标准音高“A”为例:
“A”的频率f=440Hz,其对应的周期为:
T=1/f=1/440=2272μs
单片机音乐中音调和节拍的确定方法
单片机音乐中音调和节拍的确定方法
简谱中音名与频率、N值的关系
音符
频率(Hz)
N值
音符
频率(Hz)
N值
音符
频率(Hz)
N值
低1
262
63628
中1
523
64580
高1
1046
65058
低2
294
63835
中2
587
64684
高2
1175
65110
低3
330
64021
中3
659
64777
高3
1318
65157
低4
349
64103
中4
698
64820
高4
1397
65178
低5
392
64260
中5
784
64898
高5
1568
65217
低6
440
64400
中6
880
64968
高6
1760
65252
低7
494
64524
中7
988
65030
高7
1976
65283
任务实施
1.硬件电路
2.程序设计
1.硬件电路
2.程序设计
#includereg51.h
#defineuhcarunsignedchar
#defineuintunsignedint
sbitsound=P2^0;
voiddelay(intm){
uintn;
for(n=0;nm;n++);}
voidbofang(unsignedintm,unsignedintn)
{uinti;
for(i=0;in;i++)
{
sound=0;
delay(m);
sound=1;
delay(m);}}
知识总结
演奏一个音符,是通过引脚,周期性的输出一个特定频率的方波。每一个不同的频率对应不同的声音。这就需要单片机,在半个周期内输出低电平、另外半个周期输出高电平,周而复始。
综合评价
课后作业
如图所示,4×4键盘,按下键K1-K7按键,依次发出“哆瑞咪发梭拉西”7个音符。
谢谢观看
《单片机技术及应用》课程