1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 单片机 89c52rc C语言设计 蜂鸣器变频 实现音乐播放

单片机 89c52rc C语言设计 蜂鸣器变频 实现音乐播放

时间:2024-03-24 17:17:28

相关推荐

单片机 89c52rc C语言设计 蜂鸣器变频 实现音乐播放

单片机 89c52rc C语言设计 蜂鸣器变频

最近在制作一个单片机音乐播放器,遂查询网上的实例,但发现都不是特别全面。所以在自研了一段时间后的出实例,发表此文用以记录,以防忘记。诸位也可拿去参见。若有不足,请谅解。

1.首先了解声音是一种波,声波。波有周期和频率,其关系为:

f(频率)=1/t(周期)

2.其次在多数电子设备设备中也存在着(机器)周期和(时钟)频率,89c52rc 的默认频率为11.0592MHz ,一个默认的计算周期为12T。

3.所以得出结论:

T(声)=f(时钟)/12t

依靠每一次计算的时差,累加得到音频周期,启动一次蜂鸣器。

制作出如下流程图。

#include "reg52.h"#define Fosc 110592L //时钟频率typedef unsigned charu8;typedef unsigned intu16;typedef unsigned long u32;sbit P23=P2^3;//连接蜂鸣器阳极的针脚void buzzer(u8 f,u8 time_ms);void main(void){buzzer(1,10);}void buzzer(u8 f,u8 time_ms){u16 time = (Fosc / 2400)*time_ms;u16 C = 110592/(72*f),x=0;for(;time>=0;time--){if(x>=C){P23=0;x=0;}else{x++;P23=1;}}}

参照以下

音符频率对照表

翻译乐谱

BPM为184拍,每60/184=0.326秒一拍。

得出以下程序

buzzer(784,163);buzzer(698,163);buzzer(440,326);buzzer(494,326);buzzer(659,163);buzzer(578,163);buzzer(349,326);buzzer(392,326);buzzer(578,163);buzzer(523,163);buzzer(330,326);buzzer(392,326);buzzer(523,978);

仓库地址

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。