1.乐谱
2.音符转频率(音符频率对照表)
简谱中是中音和低音,我提升范围使用高音和中音频率(听起来比较明显)
3. 频率转定时器计数次数
要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。
知道音符频率Fr,晶振频率或CPU内部频率Fi,用N = Fi ÷ 2 ÷ Fr
计算计数次数N,从而计算定时器计数初值 (N)补 = 2n - N,其中n为定时器位数(比如工作方式1为16位定时器)。
程序
/*****
程序功能:蜂鸣器演奏《两只老虎》
编 写 人:XXX
时 间:2018年12月20日
硬 件:STC12C32S2 12M晶振 30pF电容×2 蜂鸣器
******/
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define HALFF 6000000 //12M晶振半频
#define MAX 65536 //16位计数器最大计数次数
sbit sound = P1^0;
uint C;
uchar STH0;
uchar STL0;
//C调音频
//#define soo 392 //低音'5'
//#define dao 523 //宏定义中音‘1’频率为523Hz
//#define re 587
//#define mi 659
//#define fa 698
//#define so 784
//#define la 880
//#define xi 987
#define soo 784 //中音'5'
#defin