单片机电子琴设计
单片机电子琴设计
目 录
电子琴的设计(摘要) ……………………………………………… 3
绪论…………………………………………………………………… 4
一 设计原理 …………………………………………………… 5
二 硬件电路图 …………………………………………………… 6
三 软件设计 ……………………………………………………… 7
(一) 延时程序编写………………………………………………… 11
(二) T值表的建立 ………………………………………………… 12
(三) 键盘扫描程序编写 ………………………………………… 13
四 电子琴程序设计 ……………………………………………… 14
五 结束语 …………………………………………………………15
六 参考文献…………………………………………………………16
电子琴设计
摘要:按照设计要求利用单片机设计微型电子琴。完成电路原理图、程序,并进行分析。
关键词:单片机,电子琴,程序。
1设计原理
乐音实际上是有固定周期的信号,要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用定时器计时这个半周期的时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间对I/O反相,就可以在I/O脚上得到此频率的脉冲。
利用8051(晶振12HZ)的内部定时器使其工作在MODE1下,改变计数值TH0及TL0以产生不同频率的方法。
例如:要发出中音DO的音,首先知道中音DO的频率是523Hz(查表可以得知),其周期是T=1/523=1912us,因此只要令计数器计时956us/1us=956, 在每计数956次时将I/O反向,就可得到中音DO。
其T值的计算方法如下:
T=65536 — N;
N= Fi / 2 / Fr; N: 计数值;
Fi: 内部计时一次为1us, 故其频率为1MHz;
Fr:要产生的频率;
中音DO的T=65536 — 500000/523=64580。
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 63835 # 5 SO # 831 64934
# 2 RE # 311 63928 中 6 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. 先把乐谱的音符找出,然后按照上表建立T值表的顺序。
2. 把T值表建立在TABLE1,构成发音符的计数值放在“TABLE”。
3. 简谱码为一个字节,节拍为一个字节,音符的节拍码放在 “TABLE”处。
4. 节拍时间的设定,如果1拍的时间是0.4秒,1/4拍的时间就是0.1秒,只要设定延时时间就可以求得节拍的时间。假如1/4拍为1DELAY,则1拍应为4DELAY。以此类推。所以只要求得1/4拍的时间DELAY时间,其余的节拍就是它的倍数。
2 硬件电路图
如图,按键1—7表示发中音1—7,按键8表示唱一首完整的歌曲,当在唱歌时需要进行按键发音则按一下按键9即可。LM386为音频小功放,输出到扬声器。晶振选择12MZ,采用开关复位方式。LM386功放电路参阅《8051单片机实践与应用》。745