51单片机之蜂鸣器弹钢琴

本文介绍了作者在学习51单片机时发现蜂鸣器可以调节音调,进而尝试用蜂鸣器模拟钢琴音调的过程。通过查找钢琴音频对照表,制作Proteus仿真电路图并编写Keil代码,成功实现了A调1到7的音效。这是一个将理论知识应用于实践的有趣项目,展示了单片机控制音频的基础应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

       在学习51单片机的过程中无意发现了蜂鸣器调节不同频率居然可以产生不同的声音!!!!!

具体改的是如下这个地方:
在这里插入图片描述

       于是我突发奇想是不是我能用蜂鸣器不同的音调来弹一首曲子呢♪(^∀^●)ノシ (●´∀`)♪~~~~

钢琴音频对照表

       于是我在网上搜索到了有关钢琴音调频率的图片,如下:
在这里插入图片描述
具体可以看如下链接:https://wenku.baidu.com/view/5da784fd844769eae109ed63.html

仿真测试

       根据音频,我制作了proteus的电路图,并用keil编写代码运行出了钢琴音调的效果(依次是A调的1、2、3、4、5、6、7、1)。

仿真电路图

仿真电路图如下:
在这里插入图片描述

代码

代码如下:

#include<reg51.h>
void delay();
sbit beer1=P3^0;
sbit beer2=P3^1;
sbit beer3=P3^2;
sbit beer4=P3^3;
sbit beer5=P3^4;
sbit beer6=P3^5;
sbit beer7=P3^6;
sbit beer8=P3^7;

int main()
{
	beer1=0;
	delay();

	beer1=1;
	beer2=0;
	delay();

	beer1=1;
	beer2=1;
	beer3=0;
	delay();

	beer1=1;
	beer2=1;
	beer3=1;
	beer4=0;
	delay();

	beer1=1;
	beer2=1;
	beer3=1;
	beer4=1;
	beer5=0;
	delay();

	beer1=1;
	beer2=1;
	beer3=1;
	beer4=1;
	beer5=1;
	beer6=0;
	delay();

	beer1=1;
	beer2=1;
	beer3=1;
	beer4=1;
	beer5=1;
	beer6=1;
	beer7=0;
	delay();

	beer1=1;
	beer2=1;
	beer3=1;
	beer4=1;
	beer5=1;
	beer6=1;
	beer7=1;
	beer8=0;
	delay();

	beer1=1;
	beer2=1;
	beer3=1;
	beer4=1;
	beer5=1;
	beer6=1;
	beer7=1;
	beer8=1;
	delay();
	while(1);
}
void delay()
{
	int i,j;	
	for(i=100;i>0;i--)
		for(j=500;j>0;j--);
}
这次带来的是一款触摸式电钢琴,我用的是电钢琴而不是电子琴,这正是本作品的亮点所在。单片机演奏音乐大家肯定都不会陌生,用单片机内部的定时器,送入不同的频率,每一个频率对应着一个音调,然后按照事先编排好的顺序驱动蜂鸣器发声,就可以演奏出音乐了。至于电子琴只需要把不同的频率映射到对应按键上即可。之所以说是电子琴,是因为这种方法只能演奏出单调的方波音频。想不想让声音不再单调,而是发出动听的钢琴音色呢?且听我慢慢分享。 名称 说明 数量 STC12C5A60S2 单片机主控 1片 40脚芯片座 与单片机配套使用 1片 LM386L 功放芯片 1片 220uf电解电容 功放芯片配套使用 1个 10uf电解电容 功放芯片配套使用 1个 万用电路板 大一点的 1张 LED 任何你喜欢的颜色 1个 耳机插座 3.5毫米 1个 蜂鸣器 功放喇叭 1个 排针 4PIN 1个 长条贴纸 打印好琴键的图案 1张 钉书针 作为触摸点使用 72个 免刮漆包线 飞线连接 1卷 拨动开关 耳机/功放输出切换 1个 0.1uf瓷片电容 电源滤波 1个 制作所需的元器件如上表所示,本着精简制作的原则,用到的都是很普通的元器件,数量也很少,所以硬件制作的难度不是很大。连接部分则是过锡走线加飞线,烙铁温度在350度左右即可。电路图如下所示,值得说明的一点是,图中的矩阵触摸按键这里只画出了一组,其实有三组,共起来的一端分别与 P0.0、P2.2、P2.1连接。剩下部分的电路都很明了,有创造力的朋友看电路图自行发挥就好,新手可以参考下我的布局。 制作过程截图: 制作过程写的比较详细,附在附件里,可以免费下载,程序以及HEX文件也附在附件里,感兴趣的可以下载了,我们一起见证成功的喜悦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜园子里的菜狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值