蜂鸣器演奏《两只老虎》

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
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值