表1 音阶与频率关系表
音 阶 频 率(Hz) 定时器初值 音 阶 频 率(Hz) 定时器初值 音 阶 频 率(Hz) 定时器初值
1 131 0F85EH 1 262 0FC2FH 1 523 0FE17H
2 147 0F933H 2 294 0FC99H 2 587 0FE4CH
3 165 0F9F0H 3 330 0FCF8H 3 659 0FE7CH
4 175 0FA49H 4 349 0FD22H 4 698 0FE91H
5 196 0FAE6H 5 392 0FD73H 5 784 0FEB9H
6 220 0FB74H 6 440 0FDBAH 6 880 0FEDDH
7 247 0FBF4H 7 494 0FDFAH 7 988 0FEFDH
0 0 0100H 0 0 0100H 0 0 0100H
低八度音 中音 高八度音
注:0表示简谱中的空拍
用节拍数可以表示音调的长短,不同节拍数的不同音符组合形成乐谱。音的节拍在程序中可由延时子程序来实现。如果延时子程序设定为1/4拍,由此设定的节拍值只能是它的整数倍。
利用单片机的内部的定时器令其工作在计数器模式下,通过改变计数值TH0、TL0可以产生不同频率。
例如,频率为523Hz,其周期天/523 S=1912uS,因此只要令计数器计时956uS/1us=956,在每计数956次时就将I/O反接,就可得到中音DO(532Hz)。
计数脉冲值与频率的关系公式如下:
N=Fi/2/Fr (2)
(N:计数值,Fi:内部计时一次为1uS,故其频率为1MHz,Fr:要产生的频率)
计数值的求法如下:
T=65536-N=65536-Fi/2/Fr
计算举例:
设K=65536,F=1000000=Fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。
T=65536-N=65536-Fi/2/Fr=65536-1000000/2/Fr=65536-500000/Fr
低音DO的T=65536-500000/262=63627
中音DO的T=65536-500000/523=64580
高音DO的T=65536-500000/1047=65059
C调单个音符频率与计数值T的对照表如表2所示。
表2 C调各音符频率与计数值T的对照表
音 符 频率(Hz) 简谱码(T值) 音 符 频率(Hz) 简谱码(T值)
低1DO 262 63628 #4FA# 740 64860
#1DO# 277 63731 中5SO 784 64898
低2RE 294 63835 #5SO# 831 64923
#2RE# 311 63928 中6LA 880 64968
低3M 330 64103 #6LA# 932 64994 AT89C55单片机的数字音乐盒设计+仿真图+电路原理图+源码 (6):http://www.youerw.com/zidonghua/lunwen_1331.html