这个需要自己把乐谱转换为十六进制数据: 相关知识:1
要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除 以 2,即为半周期的时间
利用定时器计时这个半周期时间,每当计时到后就将 输出脉冲的 I/O 反相,然后重复计时此半周期时间再对 I/O 反相,就可在 I/O 脚 上得到此频率的脉冲
利用 8051 的内部定时器使其工作在计数器模式 MODE1 下,改变计数值 TH0 及 TL0 以产生不同频率的方法
例如频率为 523Hz,其周期 T=1/523=1912us,因此只要令计数器计时 956us/1us=956,在每计数 956 次时将 I/O 反相,就可得到中音 DO ( 523Hz )
计数脉冲值与频率的关系公式如下:N=Fi:2Tr N:计数值;Fi:内部计时一次为 1us,故其频率为 12MHz ;Fr:要产生的频率;4
其计数值的求法如下:T=65536-N=65536-Fi: 2Tr例如:设 K=65536 , F=1=Fi=1MHz ,求低音 DO (261MHz )、中 音 DO ( 523MHz )、高音 DO ( 1046MHz )的计数值
T=65536-N=65536-Fi: 2Tr=65536-1 : 2Tr=65536-50/Fr低音 DO 的 T=65536-50/262=63627中音 DO 的 T=65536-50/523=64580高音 DO 的 T=65536-50/1047=650595
C 调各音符频率与计数值 T 的对比表如下:表 1C 调各音符频率与计数值 T 的对比表 音符低 1DO 频率(Hz )简谱码(T 值)音符频率(Hz )简谱码(T 值)262 63628 #4FA# 740 64860#1DO# 277 63731 中 5SO 784 64898低 2RE#2RE# 294 63