1. 实验任务
(1. 由4X4组成16个按钮矩阵,设计成16个音。
(2. 可随意弹奏想要表达的音乐。
2. 电路原理图
图4.22.1
3. 系统板硬件连线
(1. 把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上;
(2. 把“单片机系统“区域中的P3.0-P3.7端口用8芯排线连接到“4X4行列式键盘”区域中的C1-C4 R1-R4端口上;
4. 相关程序内容
(1. 4X4行列式键盘识别;
(2. 音乐产生的方法;
一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。现在以单片机12MHZ晶振为例,例出高中低音符与单片机计数T0相关的计数值如下表所示
音符 |
频率(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 |
|
中 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之间
TABLE: DW 0,63628,63835,64021,64103,64260,64400,64524,0,0
DW 0,63731,63928,0,64185,64331,64463,0,0,0
DW 0,64580,64684,64777,64820,64898,64968,65030,0,0
DW 0,64633,64732,0,64860,64934,64994,0,0,0
DW 0,65058,65110,65157,65178,65217,65252,65283,0,0