基于51单片机的简易电子琴设计

news2025/1/12 1:44:50

目录

摘 要

基于51单片机的简易电子琴设计

一、系统设计

1、项目概要

2.设计任务和基本要求

二、硬件设计

1、硬件设计概要

2、时钟振荡电路模块

3.复位电路模块

5.数码管电路模块

6.蜂鸣器模块

7、乐曲切换电路模块

三、软件原理

四、软件流程图

五、代码实现

六、展望未来

七、注意事项

八、总结

九、参考文献


摘 要

        电子琴的设计以AT89C52单片机作为系统的核心控制部分,通过制作硬件电路和软件的设计编写,然后进行软硬件的调试运行,最终达到设计电路的乐器演奏。设计中应用中断系统和定时/计数原理控制演奏器发声,对音乐发生所必须确定的音符和节拍分别用程序语言实现。可以用它来弹奏。特点是设计思路简单、清晰。

关键词:AT89C52,电子琴,单片机,音乐发生器。

基于51单片机的简易电子琴设计

一、系统设计

1、项目概要

      单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。它的应用必定导致传统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。

      电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本次我们设计的主要内容是用AT89C52单片机为核心控制元件,设计一个可以用14个按键实现单音符的输出,也可单独播放音乐的电子琴。以单片机作为主控核心,与按键、扬声器等模块组成核心主控制模块,在主控模块上设有18个按键和扬声器。

2.设计任务和基本要求

  1. 可以自动播放三首音乐。
  2. 可以用14个按键实现中低音的输出。
  3. 有音乐时可以用数码实时管显示音符。

二、硬件设计

1、硬件设计概要

该设计方案是通过按键随意按下所要表达的音符,作为电平送给主体电路,中央处理器通过识别,解码输出音符,在扬声器中发出有效的声音。通过这样可以不断的弹奏我们想要的音符或者是音调,电路由最小系统电路,数码管电路,和功能按键电路组成,通过功能键可以选择播放音乐或者弹奏音节。

2、时钟振荡电路模块

AT89C52中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器。外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1,C2虽然没有什么严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。在设计中我们选取12MHZ时钟频率,电容使用30PF, 如图2-2。

 

图2-2 时钟震荡电路图

3.复位电路模块

我们设计中采用手动复位。这种方法是将一个开关串联一只电阻后,再并联于电容C的两端,在系统运行过程中需要复位时只要使开关闭合,在RST引脚上就会出现一定时间的高电平信号,从而使单片机实现复位。如图2-3。

图2-3 复位电路图

4.音符按键电路模块

我们在设计中用到14个按键,用P1,P3 I/O口接独立键盘即可满足需要,软件消除抖动处理,并能准确判断所需执行的相应程序。电子琴设14个按键,分别代表低中音符。电路如图2-4所示。

图2-4 音符按键电路图

5.数码管电路模块

单片机系统常用的数码管有共阳和共阴两种。我们在设计中采用共阳极的数码管,其公共极接电源,段选端分别接驱动电路,段选端加低电平时,对应的段发光二极管才亮。共阳极数码管字符及段码表见图2-5,数码管电路图见图2-6.

图2-5 共阳极数码管字符及段码表

图2-6 数码管显示电路图

6.蜂鸣器模块

我们选用P2_4作为蜂鸣器接口。连接图如图2-7。

图2-7 蜂鸣器

7、乐曲切换电路模块

因为本次设计将乐谱直接写进了代码中,因此直接选取了P2口的三个端口来控制三首歌曲的切换。如图2-8。

图2-8 乐曲切换电路图

三、软件原理

一首音乐是由许多不同的音符组成的,而每个音符对应着不同的频率,这样就可以利用不同的频率组合,加以拍数对应的延时,构成音乐。如果单片机要自己播放音乐就必须考虑到节拍的设置。

对于AT89C52而言要产生一定频率的方波一般是先将某口线输出高电平,延迟一段时间后再输出低电平。通过改变延迟时间可以改变单片机的输出频率。单片机的延时主要有两种方式,即软件延时和使用定时/计数器延时。其中软件延时不是很精确,而电子琴电路由于每个音符的频率值要求比较严格,因此我们选用定时/计数器延时。

要产生相应的音频脉冲,只需要计算出某音频的周期,再除以2。利用计数器计时半周期,计满时使P2.0反向,然后重复计时再反向。在我们的设计中单片机工作在12MHz时钟,使用定时器/计数器T0,工作模式为1,改变计数初值TH0、TL0就可产生不同频率的脉冲信号。

例如低MI音,频率为330Hz,其周期T=1/f=1/330=3030us,计数值N=3030/2=1515,所以每计数1515次P2.0反向。计数初值T=65536-N=64021。C调的各音符频率与计数值T的对照表如表2-1所示。

表2-1 C调各音符频率与定时器初值对照表

音符

频率(HZ)

简谱码(T)

音符

频率(HZ)

简谱码(T)

1 DO

262

63628

# 4 FA#

740

64860

# 1 DO#

277

63731

5 SO

784

64898

2 RE

294

63853

# 5 SO#

831

64934

# 2 RE#

311

63928

6 LA

880

64968

3 M

330

64021

# 6

932

64994

4 FA

349

64103

7 SI

988

65030

# 4 FA#

370

64185

1 DO

1046

65058

5 SO

392

64260

# 1 DO#

1109

65085

# 5 SO#

415

64331

2 RE

1175

65110

6 LA

440

64400

# 2 RE#

1245

65134

# 6

466

64463

3 M

1318

65157

7 SI

494

64524

4 FA

1397

65178

1 DO

523

64580

# 4 FA#

1480

65198

# 1 DO#

554

64633

5 SO

1568

65217

2 RE

587

64684

# 5 SO#

1661

65235

# 2 RE#

622

64732

6 LA

1760

65252

3 M

659

64777

# 6

1865

65268

4 FA

698

64820

7 SI

1967

65283

四、软件流程图

软件是该电子琴控制系统的重要组成部分,在系统的软件设计中我们也才用了模块化设计,将系统的各部分功能编写成子模块的形式,这样增强了系统软件的可读性和可移植性。软件系统流程图见图2-9。

图2-9 软件系统流程图

五、代码实现

我们用C语言编写程序,由Keil5转换成hex文件,最后烧录入单片机。程序代码见附录。

六、展望未来

随着科学技术的发展,人们的生活水平也在不断的提高,当今社会已经进入到了人工智能时代,这种智能并不局限于小的方面,而是在生活中的方方面面都存在,电子琴便是其中生活总的一个小的方面,但它的作用是不容小觑的,很明显,它能帮助我们在生活闲暇之余放松心情。

一首音乐是由许多不同的音符组成的,而每个音符对应着不同的频率,这样就可以利用不同的频率组合,加以拍数对应的延时,构成音乐。这不仅便利了我们享受音乐,同时也在一定程度上反映了时代的发展,科技的进步,虽然电子琴是智能时代的冰山一角,但是它其中蕴含的原理是永远存在的,我们应该根据它的原理,去思考它能否用在更广泛的方面,更好服务于社会,总而言之,电子琴的前景还是很美好的,同时相信它也会与时俱进。

七、注意事项

  1. 密切注意程序代码和装置的匹配,应用于随身携带,一定要调好参数,从而避免因为程序不匹配的原因而导致装置起不到应有的效果。
  2. 合理考虑装置的更多场景,让创意更加具有价值,向用户说明装置的作用,不要引起不必要的麻烦,让游客体会到安全感。
  3. 合理连接线路,防止电源线在较为明显的地方,以免因用户使用时不小心拉扯到电源线发生电线短路或漏电事故。
  4. 组装时,应简便组装,方便用户收藏时方便拆卸清洁。

八、总结

我们用C语言编写程序,由Keil5转换成hex文件,最后烧录入单片机。在实验的过程中遇到的问题及解决方法:

对于代码的整合方面:

一开始和同组的两位同学商量好的变量的名称以解决了变量的问题。前面定义变量和数组,后面再整合主函数。

对于代码烧录方面:

在keil5软件中,一开始选用的默认芯片导致烧录不成功,再将芯片更换为AT89C52后烧录成功,成功导出hex文件。

对于hex文件的导入,一开始并不知道hex文件的使用方法,经过查询资料后则是在编辑原件中导入后可正常运行。

我认为此次学习设计充满挑战和机遇,就我自身而言,我认为我存在专业知识不够扎实,工作不够细致等不足之处,还需在实践中不断学习,不断进步。通过此次学习设计,我深刻的认识到了自己身上的不足之处,本身能力的不足,直接导致了我在这个团体当中没有办法做太核心的工作,好在自己能够提出一些独到的见解,以便自己也可以顺利的跟上自己同伴并且进行工作,虽然这次活动确实充满乐趣,但我也深刻明白发展自己才是硬道理的,我相信在我的脑袋里,如果有更加的多的知识时,我对这些设计更加得心应手。

九、参考文献

[1]徐爱钧《单片机原理实用教程-基于Proteus虚拟仿真》电子工业出版社,2018年

[2]周润景《Proteus在MCS-51&ARM7系统中的应用》电子工业出版社,2006年

[3]王守中《51单片机开发入门与典型实例》人民邮电出版社,2007年

[4]陈权昌《单片机原理及应用》华南理工出版社,2007年

[5]胡宴如《模拟电子技术》高等教育出版社,2006年

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

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

相关文章

解析Transformer基本结构与实现

1.基本结构 ​ Transformer总体架构可分为4个部分: 输入部分-输出部分-编码器部分-解码器部分 输入部分包含: 原文本嵌入层(Input embedding)及其位置编码(position encoding)目标文本嵌入层及其位置编码器 文本嵌入层的作…

TCP/UDP协议重温三次握手四次挥手 简单笔记

术语储备: SYN:同步位 ;SYN1,表示进行一个连接请求 ACK:确认位 ;ACK1,确认有效 ACK0,确认无效 ack : 确认号 ;对方发送序号1 seq : 序号 ; 标识从TCP发端向TCP收端发送的数据字节流 …

基于JPA的Repository使用详解

Spring Data JPA Spring Data是Spring提供的操作数据的框架,Spring Data JPA是Spring Data的一个模块,通过Spring data 基于jpa标准操作数据的模块。 Spring Data的核心能力,就是基于JPA操作数据,并且可以简化操作持久层的代码。…

BLOND:ISH VoxEdit 创作大赛来啦!

准备好随着 BLOND:ISH 的节拍释放你们的创造力和节奏,因为我们将举办一场与众不同的刺激比赛。你们可以在 BLOND:ISH VoxEdit 大赛中展示你们的才华并赢得 SAND 奖励! 🏝️ 比赛主题:ABRA 夏日派对 🏝️ 释放你们的想象…

【Python学习】—Python基础语法(二)

文章目录 【Python学习】—Python基础语法(二)一、字面量二、注释三、变量四、数据类型五、数据类型转换六、标识符七、运算符八、字符串扩展九、获取键盘输入 【Python学习】—Python基础语法(二) 一、字面量 字面量&#xff1…

文件类型识别的实现思路

一些网络设备,比如防火墙或者审计系统,一般都有文件过滤的功能,可以对用户上网传输的文件进行过滤,比如可以限制用户通过ftp下载word文档,也就是文件类型为doc或者docx的文件。 那么文件过滤的功能是怎么实现呢&#…

2023年计算机专业还值得无脑梭哈吗——计算机类专业在读一年学生个人分享

长忆观潮,满郭人争江上望。来疑沧海尽成空,万面鼓声中。 弄潮儿向涛头立,手把红旗旗不湿。别来几向梦中看,梦觉尚心寒。 IT 界每隔几年就有一波浪潮或者泡沫,新的一波大潮已经打过来了,躲?能跑多…

【计算机视觉】CVPR 23 新论文 | 异常检测最新改进方法:DeSTSeg

文章目录 一、导读二、背景2.1 主要贡献2.2 网络介绍:DeSTSeg 三、方法3.1 Synthetic Anomaly Generation 合成异常生成3.2 Denoising Student-Teacher Network 去噪教师学生网络3.3 Segmentation Network 分割网络 四、实验结果 一、导读 DeSTSeg: Segmentation G…

数字图像处理【10】直方图反向投影与模板匹配

本篇简单描述直方图在图像处理中典型的应用场景,属于是比较老旧的应用技术,但不妨拿出来再学习,温故而知新,为新知识做一个铺垫。 直方图反向投影(Back Projection) 还记得之前学习过的图像直方图的计算/…

Knowledge Distillation of Large Language Models

这是大模型系列模型的文章,针对《Knowledge Distillation of Large Language Models》的翻译。 大模型的知识蒸馏 摘要1 引言2 方法2.1 MiniLLM:利用逆向KLD进行知识蒸馏2.2 策略梯度优化2.3 训练算法 3 实验3.1 实验设置3.2 结果3.3 分析3.4 消融实验 …

源码编译安装LAMP——LAMP+DISCUZ论坛搭建

文章目录 一.Apache1.什么是apache2.apache的主要特点3.apache的软件版本4.编译安装优点5.安装服务的一般步骤 二.LAMP简介与概述1.LAMP平台概述2.构建LAMP平台顺序3.各组件的主要作用 三.LAMPDISCUZ论坛搭建1.部署Apache1.1 下载apache相关安装包放入服务器中1.2 解压apache的…

数学公式识别(Mathpix + pix2tex)

文章目录 数学公式识别(Mathpix pix2tex)1. 下载安装2. 如何使用3. 限制4. 替代品4.1 pix2tex - LaTeX OCR4.2 pix2tex(网页版)4.3 Simple Tex OCR 数学公式识别(Mathpix pix2tex) 当我们看论文时&#…

2023软件工程中各种图在现代企业级开发中的使用频率

概览 系统流程图 ✔ 数据流图 不常用 ER图 ✔ 状态转换图 ✔ Warnier图 不常用 IPO图 不常用 Petri网 不常用 层次方框图 不常用 层次图 a.k.a. H图 ✔ 1,层次图描绘软件的层次结构.层层次方框图描绘的是数据结构。 2,层次图的方框表示模块或子模块。层次方框图的方框表示数据结…

C++基础(12)——STL(vector和deque)

前言 本文主要介绍C中STL中的vector和deque容器 7.3:vector容器 7.3.1:vector容器基本概念、特点和构造函数 vector和数组的区别:数组是静态空间,一旦指定大小,之后就不能发生改变。vector可以动态扩展&#xff0c…

(秋招准备)三角化复习

用SVD分解继续宁特征点三角化 三角化又叫三角测量,本质是用相机的运动估计特征点的空间位置,发生在估计得到帧间运动之后(单目情况)。三角测量是指,通过在两处观察同一个点的夹角,确定该点的距离。由于双目本身就能得到视角不同的…

Java集合与数组概述

Java 集合可分为Collection 和Map 两种体系 实线是继承 虚线是实现类 1.Collection接口:单列数据,用来存储一个一个的对象。定义了存取一组对象的方法的集合 ​ List:元素有序、可重复的集合 -->(动态数组) ​ ----…

B2B2C多用户商城系统是怎么报价的?

买东西的时候,喜欢先问商品的价格,更不用说多用户商城系统的高成本了,现在有很多多用户商城系统,但是价格不一样。所以很多商家朋友都在问,开发一个多用户商城系统的价格是多少,下面jsudo小编一起来看看吧。…

【机器学习】树模型的三种序列化方式的区别(模型存储大小、序列化所用内存、序列化速度)

文章目录 一、导读二、模型运行例子三、运行内存计算四、保存和加载4.1 jsonpickle4.2 pickle4.3 模型自带 五、实验5.1 模型存储大小对比实验5.2 运行的memory对比实验 六、序列化时间对比七、源代码八、总结 一、导读 本文总结常用树模型: rf,xgboost…

【操作系统】进程概述

目录 1.进程的概念和定义 2.进程的特征 3.进程的状态 4.进程状态转换 5.进程的构成 5.1进程控制块(PCB) 5.1.1PCB的组织方式 5.2程序段 5.3数据段 6.如何控制进程 6.1进程的创建 6.2进程的终止 6.3进程的阻塞和唤醒 7.进程之间的通信手段 …

OceanBase—02(入门篇——使用obd安装OceanBase的几种方式)

OceanBase—02(入门篇——使用obd安装OceanBase的几种方式) 1. 一键部署1.1 下载并安装 all-in-one 安装包1.2 单机部署 OceanBase 数据库1.2.1 部署命令 1.3 使用 OBClient 客户端连接 OceanBase 数据库1.3.1 两种连接方式1.3.2 遇到的问题1.3.2.1 通过…