77范文网 - 专业文章范例文档资料分享平台

基于单片机的音乐器设计(4)

来源:网络收集 时间:2020-06-06 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

3软件设计

软件设计是指在硬件电路的基础上,以程序的形式实现算法,进而实现音乐播放器的功能。软件是整个控制系统设计的核心,采用模块化设计,具有充分的灵活性,在硬件结构不变的情况下,只需要改变软件就能实现一些不同的功能,满足用户多样性需求。

本系统采用模块化的编程思想,把整个软件系统化分为多个功能模块,主程序通过调用各个子程序来完成各个功能的实现。软件的程序主要由主程序、发声模块程序、控制模块程序、LCD1602显示程序组成。

本设计使用Keil μVison3软件完成程序的编写和调试。

3.1软件开发平台

Keil μVison系列是德国Keil Software公司推出的51系列兼容单片机软件开发系统。μVison3是集成的可视化Windows操作界面,其提供了丰富的库函数和各种编译工具,能够对51系列单片机以及和51系列兼容的绝大部分类型的单片机进行设计。Keil μVison系列可以支持单片机C51程序设计语言,也可以直接进行汇编语言的设计与编译。

目前,Keil公司已经被ARM公司收购,成为ARM旗下的产品。Keil μVison系列的集成开发环境最高版本是μVison3,版本号为V8.08。Keil μVison系列是一个非常优秀的编译器,受到广大单片机设计者的广泛使用。

其主要特点如有:支持汇编语言、C51语言等多种单片机设计语言;可视化的文件管理,界面友好;支持丰富的产品线,除了51及其兼容内核的单片机外,还新增加了对ARM内核产品的支持;具有完善的编译连接工具;具备丰富的仿真调试功能,可以仿真串口、并口、A/D、D/A、定时器/计数器以及中断等资源,同时也可以和外部仿真器联合进行在线调试;内嵌RTX-51实时多任务操作系统;支持在一个工作空间中进行多项目的程序设计。支持多级代码优化。

图3-1为在μVision3中编写程序时的界面。

12

图3-1 μVision3的界面

3.2单片机发音原理

声音的频谱范围约在几十到几千赫兹,利用单片机定时器的中断功能,可以从I/O口线上形成一定频率的脉冲,经过滤波和功率放,接上蜂鸣器就可以发出一定频率的声音,若再利用延时程序控制输出各个频率脉冲的时间,即可实现音乐发生器功能。使用单片机配合蜂鸣器来发音,只需弄清楚两个概念即可,也就是“音调”和“节拍”。其中,音调表示一个音符唱多高的频率;节拍表示一个音符唱多长的时间。下面分别介绍音调和节拍的相关知识,以及如何使用单片机来实现音调和节拍。

3.2.1音调

音调表示一个音符唱多高的频率,和平时所说的“音高”十分类似。这是音乐学中的名词,在音乐中常把中央C上方的A音定为标准音高,其频率f=440Hz。其余音均通过和其比较获得。

如果f1和f2两个音符的频率相差一倍时,也即f2=2×f1时,则称f2比f1高一个倍频程。音符1(低音do)与音符i(中音do),??,等之间正好相差一个倍频程,在音乐学中一般称其相差一个八度音。

音乐中规定,在一个八度音内,共有12个半音。以1—八音区为例,这12个半音分别是:1—#1、#1—2、2—#2、#2—3、3—4、4—#4,#4—5、5—

13

#5、#5—6、6—#6、#6—7、7—i。由于人耳的听觉效果是非线性的,因此这12个音阶的分度基本上是以对数关系来划分的。

要让单片机产生音频脉冲,只要计算出某一音频的周期,将此周期除以2得到半周期,利用定时器对此半周期进行定时,每当定时时间到,将P1.7口线上的电平取反,从而得到所需要的音频脉冲。产生音频的定时器初值计算公式如下:

式中,k根据单片机工作方式确定,可为13(方式0)、16(方式1)、8(方式2),

fosc为单片机工作频率,

为希望产生的音频。

例如中音DO的频率为523Hz,若单片机的工作频率为12MHz,定时器T0设置为工作方式1,按以上公式计算得定时器初值为64580;高音DO的频率为1047Hz,计算定时器初值为65058。

3.2.2节拍

节拍表示一个音符唱多长的时间,同样是音乐学中的名词。在一张完整乐谱的开头,都有如1=C 、1=G ?? 等的标识。例如图3-2所示为1=C 的节拍示意图。

这里的、用来表示节拍,而1=C、1=G表示一个乐谱的曲调,简单地说就是跟音调有关系。

图3-2 节拍示意图

可以通过延时程序来产生不同的节拍。如果1拍为0.4秒,则1/4为0.1秒,只要设定延时时间就可以求得节拍时间。例如一段延时程序Delay为1/4拍,则一拍只要调用4次Delay程序,依此类推。

14

3.2.3音符码表的编制

编写一段音乐的音符码表时,先把乐谱的音符找出,按表3-1建立对应的音调码码及定时器初值表,按表3-2建立节拍码表。每个音符使用1个字节,字节的高4位存放音符的音调码,低4位存放音符的节拍码。 表3-1 与音符对应的音调码表和定时器初值表(fosc=12MHz) 简谱 5 6 7 1 2 3 4 5 6 7 1 2 3 4 5 发声 低音SO 低音LA 低音SI 中音DO 中音RE 中音ME 中音FA 中音SO 中音LA 中音SI 高音DO 高音RE 高音ME 高音FA 高音SO 不发音 音调码 1 2 3 4 5 6 7 8 9 A B C D E F 0 定时器初值 FB04 FB90 FC09 FC44 FCAC FD09 FD34 FD82 FDC8 FE06 FE22 FE56 FE85 FE9A FEC1 用C语言将音调码表和定时器初值表表示出来即为: uchar code TABLE[ ]={ //音符对应的定时器初值表

0xfb,0x04,0xfb,0x90,0xfc,0x09,0xfc,0x44, 0xfc,0xac,0xfd,0x09,0xfd,0x34,0xfd,0x82, 0xfd,0xc8,0xfe,0x06,0xfe,0x22,0xfe,0x56, 0xfe,0x85,0xfe,0x9a,0xfe,0xc1};

15

表3-2节拍码表 节拍码 1 2 3 4 5 6 8 A C F 节拍数 1/4拍 2/4拍 3/4拍 1拍 1又1/4拍 1又2/4拍 2拍 2又2/4拍 3拍 3又3/4拍 按照上述原理可以编写出“Amazing Grace”乐曲的音符码表。“Amazing Grace”的简谱如下:

5.|1 - 31 |3- 2| 1 - 6. |5.- 5.|1-31|3-2|5--|5-| 3 |5·3 53|1-5.| 6·1 16.|5.-5.|1-31|3-2|1--|1-| 对应的音符码表为:

uchar code GRACE[ ]={ //《奇异恩典》音符码表

0x14,0x48,0x62,0x42,0x68,0x54,0x48,0x24,0x18, 0x14,0x48,0x62,0x42,0x68,0x54,0x8c,0x88

0x64,0x86,0x62,0x82,0x62,0x48,0x14,0x26,0x42,0x42,0x22,0x18,

0x14,0x48,0x62,0x42,0x68,0x54,0x4c,0x48,0x00};

16

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于单片机的音乐器设计(4)在线全文阅读。

基于单片机的音乐器设计(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/1094371.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: