基于单片机的电子琴和音乐播放器设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

北京邮电大学

基于单片机的电子琴和音乐播放器设计

实验报告

学院:信息与通信工程学院

指导老师:葛顺明

摘要

电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容设计为一个基于PIC32MX795F512L单片机的电子琴与音乐播放器,利用单片机上的按键来选择相应功能,利用键盘按键来选择弹奏某一音调或播放某首曲子。能够实时将数据传至液晶屏显示。根据单片机的工作原理,通过硬件电路制作和软件编译,设计出一个能够自由弹奏乐曲及流畅播放内置音乐的电子琴与音乐播放器。该系统主要由液晶显示模块、键盘模块、喇叭模块组成。设计利用MPLAB软件对源程序进行编译和调试。

关键词:

PIC32MX795F512L单片机,模块

一.实验目的

1.通过学习使用单片机PIC32,使学生增进对单片机的感性认识,加深对单片机理论方面的理解。

2. 使学生掌握单片机的内部功能模块的功能和应用,如定时器/计数器、中断、I/O口等。

3使学生理解和掌握单片机应用系统的软件硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好基础。

二.实验分工

本次实验我的队友主要负责的部分是XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

过程期间出现的问题是由我们两个人共同查阅资料完成的,整体合作协调很好,完成的较为顺利。

三.功能简介

1.设计一个电子琴。所能实现的功能如下:

(1).能够实现舒适化菜单,由按键选择菜单中的两个功能:播放乐曲和弹奏乐曲,并实现其功能;

(2).播放乐曲:又初始化菜单选择进入,进入后屏幕提示”SONGPLAYING”,同时事先在程序中存入了8首不同的乐曲,可以一次通过键盘的按键来选择播放各首乐曲。在播放曲目中设置了暂停键,按下即暂停,不按下则继续播放循环播放。

(3).自行弹奏:设计键盘上的13个键能够发出低音部5,6,7,中音部1,2,3,4,5,6,7,高音部1,2,3总共14个音,要求按下按键发声,松开延时一段时间停止,中间再换按其他键则发另一音调的声音。

(4).走马灯:设计了4个蓝光走马灯配合播放音乐和演奏时闪烁。

2.当系统扫描到有键被按下,则快速检测出是哪一个键被按下,然后单片机的定时器被启动,发出一定频率的脉冲,该频率的脉冲输入到蜂鸣器后,就会发出相应的音调如果在前一个按下的键发声的同时另一个键被按下,则启动中断系统,前面键的发音停止,转到后按的发音程序,发出后按的键的音调。

四.实验原理

4.1 音频脉冲的产生

一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。

若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将相应的端口反相,然后重复计时再反相。就可在各对应的引脚上得到此频率的脉冲。

我们小组利用PIC32MX795F512L的80M主频,运用delay函数,改变delay的时间以产生不同频率的方法产生不同音阶。由于主频较高,没有一个音符的频率可以参考,于是我们小组是利用自己的乐理知识将每个音校正。

每个音与delay时间对应如下表所示:

音符Delay 音符Delay

中音Do 8876高音Re 2446

中音Re 7476高音Mi 1936

中音Mi 6456高音Fa 1666

中音Fa 5886高音So 1186

中音So 5036高音La 766

中音La 4036高音Xi 376

中音Xi 3236高音Do 186

高音Do 3006

4.2音乐节拍的产生

每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,表1-2为节拍与节拍码的对照表。如果1拍为0.4s,1/4拍是0.1s,只要设定延时时间就可求得节拍的时间。假设1/4拍为1DELAY,那么1拍应为4DELAY,以此类推。所以只要求得1/4拍的DELAY,其余的节拍就是它的倍数,表1-3为1/4和1/8拍的时间设定。

本小组的节拍是由while函数实现的,在每个节拍delay的时间中播放对应的音符,1/8为1,1/4为2,以此类推。而while循环的时间为节拍*310,这是我们经过反复试验确定的最佳的节拍延时。

五.方案设计

5.1硬件设计

5.1.1电路设计框图

输出模块:

5.1.2 硬件概述

本电路是由PIC32MX795F512L 单片机为控制核心,具有键盘输入、液晶显示屏输出和三极管驱动的喇叭构成的简易电子琴电路。 1.单片机

PIC32MX795F512L 型号单片机具有USB 、CAN 和以太网的高性能32 位闪存,其所拥有的主要资源有:

✧ 80MHz 的主频,1.56DMIPS/MHz ,总线32位; ✧ USB 2.0 接口;

✧ 2个带1024缓存的CAN 2.0接口; ✧ 8通道DMA 通道;

✧ 5级流水线,哈佛架构; ✧ 1个以太网接口;

✧ 512K 的Flash ,外加12k 的启动Flash ; ✧ 128K 的RAM ;

✧ 可编程中断向量控制器; ✧ 16个10位AD 转换器;

✧ UART/SPI/IIC 等串行通信方式;

✧ 带JTAG 调试口,具有休眠功能,节省能耗。

2.输入模块(键盘)

一个简易的电子琴需要键盘15个按键,选择用4*4行列式键盘完成输入。4*4行列式键盘又称为矩阵键盘,它是用4条I/O 线作为行线,4条I/O 线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。这样键盘中按键的个数是4×4个。这种行列式键盘结构能够有效地提高单片机系统中I/O 口的利用率。

而键盘应具有以下几个基本功能:

(1)去抖动:每个按键在按下或松开时,都会产生短时间的抖动。抖动的持续时间与键的质量相关,一般为5—20mm 。所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。去抖问题可通过软件延时或硬件电路解决。

(2)被按键识别:如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方法完成。常用的方法有行扫描法和线反转法两种。行扫描法的基本思想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置入口、输出口一个,该方法在微机系统中被广泛使用。本实验采用扫描法。

(3)键码产生:为了从键的行列坐标编码得到反映键功能的键码,一般在内存区中建立一个键盘编码表,通过查表获得被按键的键码。

PIC32MX795F512L 芯片

输入模块: 4*4键盘 输出模块: 喇叭 输出模块: 走马灯

相关文档
最新文档