基于51单片机的电子琴Protues仿真设计

news2024/10/6 14:28:43

一、设计背景

基于51单片机的电子琴是一款由51单片机控制器、音频模块和硬件阵列组成的数字化乐器。它可以模拟各种乐器的音效,同时也具有许多常规电子琴所没有的高级功能。

首先,这种电子琴是以数字信号处理技术为基础的。通过软件编程,将钢琴、电子琴等声音解析成数字信号,用DAC芯片将其转换成模拟音频信号后,再通过功率放大接口输出音量较大的模拟信号。这也意味着,使用者可以利用编程语言对电子琴进行个性化的改进与优化,如在乐曲演奏中添加特殊效果、提升音质、实现音乐合成等。

其次,基于51单片机的电子琴还具有更加灵活的人机交互界面。它不仅能够演奏出丰富多样的符合音律的音乐,还能通过调节参数、变换模式、修改程序,实现可视化、交互化的操作,以满足使用者的不同需求。

另外,基于51单片机的电子琴应用范围广泛,在学校教育、舞台演出、家庭娱乐方面均有不少应用。它不仅能够为初学者提供更加简便的发展通道,还可以激发创新思维、培养音感和节奏感,特别适合音乐人或创客们DIY和制作。

随着技术的成熟以及人们对音乐娱乐需求的日益增长,基于51单片机的电子琴已经成为了一种重要的乐器,为音乐产业带来了巨大的收益。

二、实现功能

本设计以51单片机为控制核心,设计一种基于51单片机的电子琴。整个系统包括MCU、晶振电路、时钟电路、功能按键、琴键键盘、扬声器以及数码管显示。该设计能够实现自然大调音阶do re mi fa sol la si的低、中、高音阶的演奏,能够实现“两只老虎”、“粉刷匠”、“祝你生日快乐”三首经典曲目的播放,并通过按键切换播放的顺序,利用共阴数码管实时显示播放的乐谱序号。可具体实现以下功能:

(1) 按下自然大调音阶do re mi fa sol la si对应的琴键能实现相应音阶的演奏。

(2) 按下功能按键后,开始演奏曲目,通过功能按键按下的次数,在‘’两只老虎‘’、“粉刷匠”、“祝你生日快乐”循环播放。

(3) 共阴数码管实时显示播放的乐谱序号,数字1表示播放‘’两只老虎‘’,数字2表示播放‘’粉刷匠‘’,数字3表示播放‘’祝你生日快乐‘’。

(4) 按下复位按键,系统恢复初始状态。

三、仿真演示

默认上电状态,按下音阶琴键可发出对应音阶,乐谱不播放。

 按下功能按键,开始播放“两只老虎”,数码管显示1。

  再次按下功能按键,开始播放“粉刷匠”,数码管显示2。

   第三次按下功能按键,开始播放“祝你生日快乐”,数码管显示3。

  第四次按下功能按键,系统恢复初始状态。

四、部分源程序


void Keyscans(void)
{
	P1=0x00;
	if(sth==0)
	{
		delay(2);
		if(sth==0)
		{
			m++;
			if(m>=4)m=0;
			while(sth==0);
		}
	}
	if(m) P1=LED[m];
	switch(m)
	{
		case 1:music1();break;
		case 2:music2();break;
		case 3:music3();break;
	} 
}

void main()
{
  Timer0Init();
	while(1)
	{
		Keyscans();
		KeyboardScan();
	}						
} 

后记

部分内容来源于网络资料,若有侵权,请联系博主删除。仿真源文件及完整程序源码百度网盘链接:https://pan.baidu.com/s/1fFok2ls3O-drm3kycpGM7w 
提取码:mvtz

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/552767.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JUC】Java对象内存布局和对象头

【JUC】Java对象内存布局和对象头 文章目录 【JUC】Java对象内存布局和对象头1. 对象的内存布局1.1 对象头1.1.1 对象标记1.1.2 类元信息/类型指针 1.2 实例数据1.3 对齐填充 2. 测试 1. 对象的内存布局 在 HotSpot 虚拟机里,对象在堆内存中的存储布局可以划分为三…

MSP432学习笔记6:中断优先级管理

所用型号:MSP432P401R 今日继续我的MSP432电赛速通之路。 主要学习的是:中断优先级管理、软件挂起中断、屏蔽中断优先级 目录 MSP432具有8级可编程的中断优先级。 中断优先级管理库函数: 软件挂起中断: 屏蔽中断优先级&#…

微信小程序富文本插件mp-html

使用场景: 偏偏后端传过来的数据又要用到富文本标签,然后找了很多组件,要不就是下载量低,要不就是里面功能太少,只有这款mp-html组件深得我心,里面功能丰富,简单实用,真的绝绝子&…

DMA直接存储器存取

目录 存储器映像 寄存器 DMA框图 DMA基本结构 DMA请求映射 数据宽度与对齐 ​编辑 存储器到存储器 ​编辑 外设与存储器 来源b站江科大stm3入门教程 存储器映像 寄存器 DMA框图 AHB从设备(DMA自身的寄存器)连接在总线矩阵右侧的AHB总线上 所以DMA既…

LeetCode:509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

509. 斐波那契数 题目 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) 0,F(1) 1 F(n) F(n - 1) F(n - 2),…

无底线内卷?谈谈如何在职场中实现人生巅峰

在竞争激烈的职场上,各种职场难题时常出现,如何进行有效沟通、如何应对工作压力、如何提升职业能力等,这都是需要去克服的问题。 1. 尝试人际沟通A:TO 企业B:TO 员工 2. 适应工作压力A:原因B:TO…

ROS2 入门应用 创建启动文件(C++)

ROS2 入门应用 创建启动文件(C) 1. 创建功能包2. 添加依赖关系3. 添加编译信息4. 创建启动文件4.1. Python4.2. XML4.3. YAML 5. 编译和运行 1. 创建功能包 用Python、XML或YAML编写的启动文件可以启动和停止不同的节点,以及触发和处理各种事…

法规标准-GB/T 39323标准解读(2020版)

GB/T 39323是做什么的? GB/T 39323全称为乘用车车道保持辅助(LKA)系统性能要求及试验方法,其中主要描述了LKA系统的功能要求及测试要求 一般要求 1.系统应能在状态良好的车道边线环境下识别车辆与车道边线的相对位置,辅助驾驶员将车辆保持…

76.建立一个主体样式第二部分

上节课的时候我们完成的页面是这个样子! ● 之后我们通过绝对定位来解决位置定位的问题 .header-container {width: 1200px;margin: 0 auto;position: absolute;left: 50%;top: 50%; }header {height: 100vh;background-color: orange;position: relative; }● 之…

通过Python的PyPDF2库提取pdf中的文字

文章目录 前言一、PyPDF2库是什么?二、安装PyPDF2库三、查看PyPDF2库版本四、使用方法1.引入库2.定义pdf路径3.打开PDF文件4.创建PDF阅读器对象5.获取PDF文件中的页数6.遍历每一页7.获取当前页内容8.提取当前页文本9.打印当前页文本10.效果 总结 前言 一、PyPDF2库…

【2023 · CANN训练营第一季】初识新一代开发者套件 Atlas 200I DK A2---介绍Atlas 200I DK A2的基本使用

1.Atlas 200I DK A2开发者套件板介绍 应用场景:昇腾AI开发者上手学习、实践创新场景,提供配套软硬件 关键特性规格描述形态135mm120mm44mmAI 算力整数精度(INT8):8 TOPS 半精度(FP16): 4 TFLOPS摄像头接口2* MIPI - CSI 支持两个…

研报精选230521

目录 【行业230521山西证券】煤炭行业周报:量减需增进口倒挂,煤炭价格企稳反弹 【行业230521东吴证券】大炼化周报:油价弱势震荡,下游表现疲软 【行业230521东海证券】4月社零报告专题:低基数下创新高,实质…

MyBatisX

文章目录 MyBatisXMybatis带参方法 动态条件查询多条件查询多条件-动态条件查询ifchoose(when,otherwise) 添加添加-主键返回 修改修改全部字段修改动态字段 删除MyBatis参数传递多个参数单个参数 MyBatis注解完成增删改查 MyBatisX pojo类中的属性名要和数据库中的一致才能实现…

ARM学习笔记_2 模式,寄存器,流水线

ARM arm体积小功耗低性能高,支持thumb ARM双指令集,兼容8/16位器件;大量使用寄存器,指令定长,寻址简单。 ARM是32位架构,Word 32bit, half Word 16bit. 模式 用户模式是用户程序的模式&#…

RK3568平台开发系列讲解(驱动基础篇)RK平台IR的使用

🚀返回专栏总目录 文章目录 一、红外遥控配置二、内核驱动2.1 DTS 定义键值表2.2 内核用户码和IR键值的获取2.3 编译 IR 驱动进内核2.4 Android 键值映射三、IR 波形沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将对RK IR的使用进行学习。 一、红外遥控配置 …

解决插件加载动态库的冲突问题

最近发给用户的插件在使用过程中,UI界面一直未能加载成功,分析后发现和其他的插件发生冲突了,同时用到了一个UI库:MahApps.Metro(自己改造过的版本)。 分析过程中使用ProcessExplorer查看Revit运行过程中所…

二叉树最大宽度-广度优先方式 -队列应用_20230520

二叉树最大宽度-广度优先(BFS)方式 -队列应用 前言 上一遍介绍了求解二叉树最大宽度的DFS解法,求解的核心主要是对根节点、左孩子及右孩子的宽度取最大值,通过赋值给根节点后,然后通过递归栈层层返回,当返回至树的根节点上的时候…

数字图像处理—图像分割算法详解(边缘检测、阈值处理)

前言 令R表示一幅图像占据的整个空间区域。图像分割:把R分为n个子区域R1,R2,…,Rn的过程,满足 点、线、边缘检测 背景知识 一阶导数的近似要求: (1)在恒定灰度区域必须为零 (2)在灰度台阶或…

【连续介质力学】张量值张量函数

张量值张量函数 张量值张量函数有以下类型:标量,向量和高阶张量 标量值张量函数: Ψ Ψ ( T ) det ⁡ T Ψ Ψ ( T , S ) T : S \Psi \Psi(T) \det T \\ \Psi \Psi(T,S) T:S ΨΨ(T)detTΨΨ(T,S)T:S 其中, T , S T, S …

【JavaEE】MyBatis + 单元测试

目录 MyBaits项目的创建使用 引入相关依赖 配置文件设置 数据库连接 配置XML路径 映射器文件模板 业务代码实例 创建实体类 添加Mapper接口创建映射器 验证是否成功 MyBatis原理 什么是MyBatis 为什么学习MyBatis MyBatis工作原理 单元测试 前置工作 生成测试…