您的位置 首页 > 数码极客

单片机音乐代码如何得到—单片机音乐代码 小星星…

为了实现“做台基于单片机的电子琴”这个小目标,首先得弄明白频率这个概念,其次得弄清楚如何把频率变成我们能用来发声的代码(或者叫“数字”),下面跟我来。。。

先查找资料,关于乐器频率,在网上找到了一张表格:

钢琴频率对照表

我们取Q4频率,也就是220Hz对应中音“1”,247Hz对应中音“2”,。。。直到“7”。然后再取两个低音,几个高音,这样就基本满足我们的简单制作要求了。

接下来我们还要把频率变成有用的数字代码。

既然我们前面说了用51单片机,那么为了产生声音,就要输出声音信号。声音是由于震动造成的,我们用喇叭纸盆产生震动,用电信号驱动喇叭震动,用单片机产生电信号。为了设计方便,我们采用方波信号,就是高低电平时长相等的信号。

我们要把频率变成方波信号的时间长度,计算方法是这样的,1秒 除以 频率 等于波长,再除以2就等于正脉冲或负脉冲的时间长度。

220Hz频率的方波脉冲时间长度

好了,知道了信号形状和时间长度,就“制作”信号吧,利用51单片机的定时器来完成这个任务。

选择系统时钟12MHz,那么每个时钟周期为1/12000000(秒);

选择定时器时钟12T,那么定时器每(1/ (12000000 / 12))(秒) = 1 us 计数一次;

选择定时器模式16位,满值65536,总时间:65536us;

那么要设置2272us的定时,就要先计算计数值:2272 us = 2272次计数;定时器初装值为65536 - 2272 = 63264,转换成16进制为0xf720。

我们用STC官方工具软件核对了一下,完全相符:

用官方软件设置定时器初值

那么多频率一个个计算比较累,我们就要制作一个工具,做一个简单的计算软件:

自制工具软件计算频率代码

下面是用软件计算得到的频率对应定时器初值列表:

频率对应定时器初值列表

到这里,我们已经得到了我们想要的代码。

我是春天,今天聊到了如何把电子琴的频率转换成单片机定时器的初装值,如果您感兴趣,欢迎在评论里留言讨论,或者分享给更多朋友。。。

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“单片机音乐代码如何得到,单片机音乐代码,小星星,51单片机音乐代码,单片机两只老虎音乐代码”边界阅读