0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于STM32单片机的简易电子琴设计(1)

CHANBAEK 来源:高级嵌入式软件 作者:高级嵌入式软件 2023-07-24 10:46 次阅读

第一章 总体设计

1.1 系统功能

按照设计要求,本系统具有以下功能:

共有三个基本模式:电子琴模式、录音模式、播放器模式

电子琴模式:7个基本按键控制产生7种音调,功能键实现调节音阶和音量

录音模式:可分为录音和放音两个模块,录音状态下会记录弹奏的音调以及时间;放音模式调用音乐播放器某些模块,实现相同的功能。

音乐播放器模式:可以实现音乐的播放、暂停、切歌、调速、顺序播放、单曲循环、随机播放、以及进度条显示。

有两个全局按键中断,可控制模式切换和全局静音/暂停。

1.2 主要技术性能指标

基本按键:7个;

功能按键:6个;

全局中断按键:2个;

扬声器:1个;

扬声器功率:1w;

LCD1602:1块;

主要模式:3个;

曲库:8首;

音域范围:262Hz~2217Hz;

音量阶数:3阶;

速度阶数:4阶;

循环模式:3种;

第二章硬件设计

总体系统设计上在硬件上共分为3个区域:基本按键区、功能按键区、LCD显示区。在软件的设计上共分为3个主要模式:电子琴模式、录音模式、播放器模式。主控模块选择使用STM32f103rbt6芯片,进行编程、控制、实现电子琴以及播放器功能。

2.1 整体硬件图

图片

2.2 按键模块

按键模块分为两部分:基本按键和功能按键

图片

图片

俩个部分按键分别接在单片机的PC0-PC6以及PC8-PC13接口上。

2.3 扬声器模块

图片

扬声器模块接在单片机的PC07接口上。

2.4 显示模块

图片

将LCD1602的D0 ~ D7分别连接到单片机的 PA0~7,使能端 E、 RW、 RS分别连接到单片机的 PA8、 PA11、 PA12。

2.5 主控模块

图片

第三章 软件设计

3.1 主要工作原理

设计的主要工作原理是利用STM32所内置的定时器TIM3产生一个PWM信号驱动扬声器产生特定频率的声音。通过改变定时器TIM3的分频预置数改变PWM信号的频率从而产生不同音调的声音。通过改变占空比,从而产生不同音量的声音。

相关流程图如下:

图片

3.2 PWM发生器

图片

3.3 music播放器模块

music模块包含了产生声音,静音,音乐播放,音乐切换,进度条展示等相关函数,全都由本人编写

静音模块:通过调用TIM_SetTIM3Compare2()函数让占空比为0,进而达到静音效果。

void buzzerQuiet(void)//停止发声

{

      TIM_SetTIM3Compare2(0);

}

发声函数:通过调用TIM_SetTIM3Autoreload设置TIM3的自动装载值实现产生特定频率PWM信号,传入的参数为声音频率和音量参数。

图片

进度条显示函数:可以显示播放进度以及全局状态,如当前曲目、暂停状态、音量、播放速度等。

图片

下一首函数:根据传入nextmode参数不同进行顺序,单曲,随机下一首。

图片

音乐播放函数:传入乐谱(由结构体数组实现),调用弹奏音符函数,实现音乐自动播放。

图片

3.4 exti外部中断

本设计使用了PC8,PC9口的按键作为两个外部中断,控制全局切换模式,以及全局暂停/静音。

3.5 按键相关驱动

图片

通过函数判断按键值,mode参数可调节是否支持连按。

3.6 LCD1602驱动

LCD初始化相关代码采用例程,只列出关键代码:

void LCD_SHOW(u8* tab0,u8* tab1)

{

      if(tab0)

        LCD1602_Show_Str(0, 0, tab0);

      if(tab1)

         LCD1602_Show_Str(0, 1, tab1);

}

定义函数LCD_SHOW,传入字符串显示,在避免直接调用LCD的显示函数,通过tab0和tab1的锁存,实现更丰富需求。

第四章 整体实现功能

单片机下载完成后,显示Mode Selection Please Press 1-3表示初始化完成等待选择模式。

按下key1,进入Piano模式,可以开始弹奏。

按下key13可进行音量调节,key12可以调节音调

按下key8切换模式,进入录音模式

录音模式下,按key0进行开始录音

录音会记录音调以及持续时间,按下key13停止录音

录音完成后按下key13放音,可以听到记录的曲子

按下key13切换模式进入播放器模式

按下key0-key7选择曲目,也可以直接按key13开始播放

播放时,按下key13下一首,key12调音量,key11调速度,key10调节下一首。 按下key9可暂停。

播放时有进度条显示。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6002

    文章

    43981

    浏览量

    620891
  • lcd
    lcd
    +关注

    关注

    34

    文章

    4278

    浏览量

    164145
  • 播放器
    +关注

    关注

    5

    文章

    383

    浏览量

    36834
  • STM32
    +关注

    关注

    2240

    文章

    10675

    浏览量

    348846
  • 电子琴
    +关注

    关注

    4

    文章

    148

    浏览量

    30104
收藏 人收藏

    评论

    相关推荐

    简易电子琴仿真

    我用555定时器做了一个简单的电子琴 有八个音节 但是声音出不来 有哪位高人有简易电子琴的proteus仿真啊
    发表于 05-25 11:35

    基于AT89C51单片机简易电子琴

    基于AT89C51单片机简易电子琴
    发表于 08-14 18:53

    单片机制作简易电子琴

    单片机制作简易电子琴
    发表于 09-08 10:28

    怎样连接单片机电子琴 ~~~~~

    按过了?(灯的电路已经做好,单片机程序也已编好,就是没有可行,实用的办法使单片机电子琴连接。)自己有几种思路:1 .测出每个键键码,把键盘下的电线接入
    发表于 04-02 19:22

    电子琴

    我想做个基于51单片机简易电子琴,能不能提供电路图和源程序啊?拜托拜托了
    发表于 07-29 09:26

    怎样去设计一种基于51单片机的液晶显示电子琴

    怎样去设计一种基于51单片机的液晶显示电子琴?基于51单片机的液晶显示电子琴的电路是如何去设计的?怎样去编写基于51单片机的液晶显示
    发表于 07-06 07:39

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

    基于51单片机设计的简易电子琴
    发表于 07-21 06:37

    求基于51单片机电子琴程序

    求基于51单片机电子琴程序
    发表于 10-18 08:22

    基于51单片机电子琴制作

    基于51单片机电子琴制作(播放+弹奏)制作的电子琴具有播放一段音乐和自我弹奏两种工作模式,可通过按键来切换模式。程序如下:#include #define uchar unsigned
    发表于 11-18 09:00

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

    本设计主要研究基于AT89C52单片机简易电子琴设计。它是以单片机作为主控核心,设置键盘、蜂鸣器等外围器件;另外还用到一些简单器件如:两位数码管,和NPN型三极管及电阻...
    发表于 11-19 08:23

    如何利用单片机设计简易电子琴

    本次设计首先对单片机设计简易电子琴仔细分析,接着制作硬件电路和编写软件的程序,最后进行软硬件的调试运行。并且从原理图,主要芯片,各模块的原理和各个模块的程序调试来阐述。利用单片机产生不
    发表于 12-10 06:17

    基于单片机+蓝牙HC-05模块的简易电子琴设计资料分享

    单片机实践项目》之基于单片机+蓝牙HC-05模块的简易电子琴设计与制作(七十五)链接:添加链接描述
    发表于 01-17 06:26

    如何利用51单片机实现电子琴系统的设计?

    如何利用51单片机实现电子琴系统的设计?
    发表于 01-17 06:17

    跪求ATmega16简易电子琴的源代码和线路图

    实验一 简易电子琴设计一、目的与任务目的:1、掌握单片机定时/计时器的工作原理;2、了解音乐发声的工作原理; 3、掌握矩阵按键工作原理;任务:设计一个
    发表于 06-07 20:53

    基于STM32单片机简易电子琴设计(2)

    摘要: 本次设计是课程设计,利用单片机设计简易电子琴。 其主要功能为:按下不同按键,发出不同1 、2 、3、4 、5 、6 、7 七个音符并且用LED 或LCD显示当前按键。选用
    的头像 发表于 07-24 10:46 3385次阅读
    基于<b class='flag-5'>STM32</b><b class='flag-5'>单片机</b>的<b class='flag-5'>简易</b><b class='flag-5'>电子琴</b>设计(2)