基于单片机的微型电子琴建模

news2024/12/26 7:29:17
摘 要: 游戏是儿童的天性,同时也在孩子们的童年中扮演着“启蒙老师”的角色,对儿童的身也发展起到至关重要的作用。当前电子玩具在市场上供不应求,电子琴玩具就是一个非常好商机。电子琴经过上百年的发展,其设计生产技术已经趋于成熟。近几年儿童玩具的微型电子琴研究具有广阔的市场前景。该文通过单片机AT89C1发声原理制定微型电子琴系统设计方案。首先,通过编程控制单片机产生不同频率来获取音阶。其次,设计基于单片机的微型电子琴的整体模型。最后,对整个系统进行仿真测试和调试。系统运行过程中可以演奏不同乐曲以及模拟各种大自然音响,如生日快乐歌、两只老虎、雨滴声、叮咚门铃声等,取得了较好的控制效果。
关键词: 单片机 电子琴 Proteus 音阶
单 片 机 又 称 单 片 微 控 制 器 ( S i n g l e - C h i pMicrocomputer),就是将微处理器、存储器(程序存储器ROM或数据存储器RAM)、总线、定时器/计数器、输入/输出接口(I/O口)和其他多种功能器件集成在一块芯片上。由于它具有重量轻、体积小、功能强、可靠性高、性价比高等特点,因此几乎渗透到工业和日常生活的各个领域,如,数据传输与通讯、数据处理、仪表控制、实时控制以及程控玩具等。
随着人们对精神生活越来越重视,音乐渐渐进入了人们的生活。传统乐器是由机械振动产生的声音的,如空腔谐振、膜的振动、弦的振动等;而电子琴是通过控制脉冲信号的频率来产生音源。电子琴因其操作简单,携带方便,价格较低廉,且能逼真地模拟各种传统乐器的音色以及各种大自然音响,如钢琴、雨滴声、叮咚门铃声等,而深受音乐爱好者和消费者的喜欢。如今电子技术和电子计算机技术的快速发展,为电子乐器的产生和发展,提供了广阔的空间。特别是大规模集成电路技术的高度发展,使得电子琴在音域上超出钢琴、风琴、小提琴等传统乐音电子琴成为可能。可以说,电子琴是是音乐和计算机技术相结合的产物,既满足人们对精神生活的追求,又符合科技发展的规律。
该文设计一种微型电子琴模型及其演奏系统,采用单片机AT89C51作为控制芯片,并配以键盘和蜂鸣器实现该系统。其主要原理为:通过编程控制单片机的定时/计数器T0 产生各种不同频率的脉冲信号来驱动蜂鸣器发声,并通过控制蜂鸣器驱动信号的变化规律,即可实现的微型电子琴的演奏功能。

1 仿真环境

Proteus软件是英国著名的EDA工具(仿真软件),由LabCenter Electronics公司出版。是由PCB设计、实时交互仿真及电子应用系统设计组成的最先进的平台 ,集EDA工具软件的仿真功能和单片机及外围器件的仿真为一体。
从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
Proteus软件的功能特点为主要有下几点。
(1)不仅能仿真单片机的工作情况,还能仿真单片机外围电路或没有单片机参与的其他电路的工作情况。因此,这种仿真弥补了实验和工程应用间脱节的矛盾
(2)同时支持模拟电路和数字电路仿真,可以利用系统提供的虚拟的输入输出器件或设备,如开关、按钮、键盘、发光二极管、数码管、LCD 显示器及图形仪表等直观实现信息的输入输出交互。
(3)支持第三方集成编译软件,如IAR、Keil和MPLAB等多种编译器,进行高级语言的源码级仿真和调试[6]
综上所述,Proteus软件具有开发周期短、设计成本低、实现效率好和竞争力强等特点,是目前比较好的仿真单片机及外围器件的工具,很大程度上为电子产品的开发提供了帮助。该控制系统采用Proteus8.7进行仿真。

2 控制系统建模与仿真

2.1 控制系统模型建立

通过分析微型电子琴控制系统的设计要求,硬件电路选用单片机AT89C51作为核心器件,建立单片机最小系统电路,然后设计出完整的控制系统原理框图及仿真模型。该控制系统是采用单片机AT89C51作为控制芯片,通过定时/计数器T0 产生各种不同频率的脉冲信号,来实现的微型电子琴的演奏功能,单片机时钟频率为12MHz。系统中通过按下S1~S8共8个按钮开关来演奏乐曲,单片机通过键盘扫描电路判断出是哪个按钮被按下,并通过查表得到相应按钮的频率,然后通过编程实现不同的音阶,最后通过扬声器播出音乐。

2.2 键盘扫描电路

键盘电路的原理图包括S1~S8共8个按钮开关,按钮-音阶对照关系为:按钮S1-S8分别对应中音Do、中音Re、中音Mi、中音Fa、中音So、中音La、中音Si、中音Si、高音Do。键盘扫描电路扫描方式有两种:
(1)常用的行扫描法;
(2)速度较快的线反转法。该系统采用行扫描法,需要完 的工作如下。
(1)采用软件延时,调用延时子程序实现去抖处理,并判断是否有键按下。
(2)根据反馈给单片机的信号确定是哪个按钮被按下,并发送给主程序,以实现相应的功能。

2.3 晶振电路

晶振电路的原理图包含一个晶振和两个电容。其中电容是帮助振荡器起振和微调振荡器的频率,一般情况下其值均为30pF。

2.4 复位电路

复位电路的原理图包括电源,0.1微法电容,100K电阻和复位按钮。

2.5 仿真测试

在Keil C51中编写微型电子琴的软件控制程序。首先,编写源程序(微型电子琴. c),对源程序进行调试、编译。直至编译通过后,在Keil C51中点击“option for target”按钮,打开相应对话框,选择“Outpu”选项卡,勾选“Creat HEXfile”选项,以生成可执行HEX文件(微型电子琴. hex)。其次,在Proteus中搭建微型电子琴控制系统仿真模型,并将Keil C51产生的HEX文件(微型电子琴. hex)下载到单片机中,选中 AT89C51芯片,单击左键从编辑属性窗口中增加“微型电子琴. hex”文件即可。最后,点击Proteus工具栏的“Debug”下拉菜单中的“Run simulation”按钮或点击左下角的快捷键,开始运行仿真系统。
运行过程中演奏不同乐曲以及模拟各种大自然音响,如生日快乐歌、两只老虎、雨滴声、叮咚门铃声等,取得了较好的控制效果。

3 结语

该文建立了一种基于单片机的微型电子琴模型,该微型电子琴控制系统包括AT89C51模块电路、键盘扫描模块电路、复位电路、晶振电路、电源模块电路等。采用KeilC51编写微型电子琴控制程序,并下载到单片机中,最后利用Proteus8.7软件对控制系统电路进行仿真测试和调试。通过演奏不同乐曲以及模拟各种大自然音响,表明该微型电子琴有较好的控制效果,实现了电子琴的简单、低成本的控制方法。

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

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

相关文章

ARM 嵌入式处理器内核与架构深度剖析:解锁底层技术逻辑

目录 一、ARM架构概述 1.1. 优势与特点 1.2. 应用领域 二、ARM内核的主要系列及特点 2.1. ARM内核与架构的关系 2.2. Cortex-A系列 2.2.1. 应用场景 2.2.2. 特点 2.3. Cortex-R系列 2.3.1. 应用场景 2.3.2. 特点 2.4. Cortex-M系列 2.4.1. 应用场景 2.4.2. 特点 …

数据结构 (21)树、森林和二叉树的关系

一、树 定义:树是由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为树的结点,所定义的关系称为父子关系。当集合为空时,是一棵空树;当集合非空时,有且仅有一个特定的称为根的结点。树中的每个结点可以有…

探索温度计的数字化设计:一个可视化温度数据的Web图表案例

随着科技的发展,数据可视化在各个领域中的应用越来越广泛。在温度监控和展示方面,传统的温度计已逐渐被数字化温度计所取代。本文将介绍一个使用Echarts库创建的温度计Web图表,该图表通过动态数据可视化展示了温度值,并通过渐变色…

计算机网络——数据链路层Mac帧详解

目录 前言 一、以太网 二、Mac帧 三、MTU——最大传输单元 四、Mac帧的传输过程 1.ARP协议 2.RARP协议 前言 在之前,我们学习过网络层的IP协议,了解到IP协议解决了从哪里来,到哪里去的问题,也就是提供了将数据从A到B的能力…

LabVIEW将TXT文本转换为CSV格式(多行多列)

在LabVIEW中,将TXT格式的文本文件内容转换为Excel格式(即CSV文件)是一项常见的数据处理任务,适用于将以制表符、空格或其他分隔符分隔的数据格式化为可用于电子表格分析的形式。以下是将TXT文件转换为Excel(CSV&#x…

响应式编程一、Reactor核心

目录 一、前置知识1、Lambda表达式2、函数式接口 Function3、StreamAPI4、Reactive-Stream1)几个实际的问题2)Reactive-Stream是什么?3)核心接口4)处理器 Processor5)总结 二、Reactor核心1、Reactor1&…

Vue3之弹窗

文章目录 第一步、引入JS第二步、弹框 在前端开发语言Vue3&#xff0c;在管理端如何进行弹窗&#xff1f;下面根据API实现效果。 Element API文档&#xff1a; Element-plus文档 搭建环境可参考博客【 初探Vue3环境搭建与nvm使用】 第一步、引入JS <script lang"ts&…

w~大模型~合集24

我自己的原文哦~ https://blog.51cto.com/whaosoft/12707697 #Time Travelling Pixels (TTP) 一种名为“时空旅行”&#xff08;TTP&#xff09;的新方法&#xff0c;该方法将SAM基础模型的通用知识整合到变化检测任务中。该方法有效地解决了在通用知识转移中的领域偏移问题…

git的简单使用与gdb

版本控制器git 为了能够更方便管理这些不同版本的文件&#xff0c;有了版本控制器&#xff0c;可以了解一个文件的历史&#xff0c;以及它的发展过程的系统&#xff0c;通俗的说就是一个可以记录工程的每一次改动和版本迭代的一个管理系统&#xff0c;同时也方便多人协作。 三…

从0开始学PHP面向对象内容之常用设计模式(策略,观察者)

PHP设计模式——行为型模式 PHP 设计模式中的行为模式&#xff08;Behavioral Patterns&#xff09;主要关注对象之间的通信和交互。行为模式的目的是在不暴露对象之间的具体通信细节的情况下&#xff0c;定义对象的行为和职责。它们常用于解决对象如何协调工作的问题&#xff…

解决windows下php8.x及以上版本,在Apache2.4中无法加载CURL扩展的问题

本文已首发于&#xff1a;秋码记录 若你也想搭建一个个人博客&#xff0c;可参考&#xff1a;国内 gitee.com Pages 下线了&#xff0c;致使众多站长纷纷改用 github、gitlab Pages 托管平台 在日新月异的信息化下&#xff0c;软件也在跟随着互联网的脚步&#xff0c;逐步推进…

git 常用命令及问题

一、常用命令 git add filename git add . git commit -m "messge" git commit --amend 修改最近一次的提交 git push origin HEAD:refs/for/master git clone url git checkout branchname 切换分支 git branch -r 查看远程仓库分支列表 git branch br…

【Gitlab】gitrunner并发配置

并发介绍 涉及到并发控制的一共有4个参数: concurrent , limit ,request_concurrency,parallel 全局的配置: [rootiZ2vc6igbukkxw6rbl64ljZ config]# vi config.toml concurrent 4 #这是一个总的全局控制&#xff0c;它限制了所有pipline&#xff0c;所有runner执行器…

利用Python爬虫精准获取淘宝商品详情的深度解析

在数字化时代&#xff0c;数据的价值日益凸显&#xff0c;尤其是在电子商务领域。淘宝作为中国最大的电商平台之一&#xff0c;拥有海量的商品数据&#xff0c;对于研究市场趋势、分析消费者行为等具有重要意义。本文将详细介绍如何使用Python编写爬虫程序&#xff0c;精准获取…

NFT Insider #157:The Sandbox 开启新一期 VoxEdit 比赛

市场数据 加密艺术及收藏品新闻 Artnames 项目上线&#xff0c;将用户姓名转化为个性化 NFT 艺术品 由知名数字艺术家 Arrotu 发起的生成艺术项目「Artnames」正式上线&#xff0c;利用区块链技术将用户姓名转化为独一无二的 NFT 艺术品。该项目于 11 月 14 日启动&#xff0…

Mysql数据库基础篇笔记

目录 sql语句 DDL——数据库定义语言&#xff08;定义库&#xff0c;表&#xff0c;字段&#xff09; 数据库操作&#xff1a; 表操作&#xff1a; DML 增删改语句 DQL 语法编写顺序&#xff1a; 条件查询 DCL 用户管理&#xff1a; 权限管理&#xff1a; 函数 常见字符串内置函…

基于单片机的频率测量电路设计

摘 要&#xff1a; 传统的频率测量设备大多因硬件电路庞大&#xff0c;导致设备整体体积相对较大&#xff0c;且测量频率信号的精确度低&#xff0c;测量范围较小&#xff0c;运行速度较慢。 据此&#xff0c;介绍了一种以 AT89C51 单片机为控制核心&#xff0c;由放大整形模块…

解决Ubuntu DNS覆盖写入127.0.0.53

ubuntu22.04解析网址时报错如图所示&#xff1a; 因为/etc/resolve.conf中存在 nameserver 127.0.0.53回环地址造成循环引用 原因&#xff1a; ubuntu17.0之后特有&#xff0c;systemd-resolvd服务会一直覆盖 解决方法&#xff1a; 1、修改resolv.config文件中的nameserver…

IDEA报错: java: JPS incremental annotation processing is disabled 解决

起因 换了个电脑打开了之前某个老项目IDEA启动springcloud其中某个服务直接报错&#xff0c;信息如下 java: JPS incremental annotation processing is disabled. Compilation results on partial recompilation may be inaccurate. Use build process “jps.track.ap.depen…

C++20: 像Python一样逐行读取文本文件并支持切片操作

概要 逐行读取文本文件&#xff0c;并提取其中连续的几行&#xff0c;这对于 Python 来说是小菜一碟。 C 则很笨拙&#xff0c; 语言不自带这些。 这次我来拯救 C boys & girls&#xff0c; 在 C20 环境下&#xff0c;山寨一个 Python 下的逐行读文本文件、支持 slice 操作…