收藏 分享(赏)

电子音乐盒设计论文.doc

上传人:dzzj200808 文档编号:2262827 上传时间:2018-09-08 格式:DOC 页数:41 大小:3.77MB
下载 相关 举报
电子音乐盒设计论文.doc_第1页
第1页 / 共41页
电子音乐盒设计论文.doc_第2页
第2页 / 共41页
电子音乐盒设计论文.doc_第3页
第3页 / 共41页
电子音乐盒设计论文.doc_第4页
第4页 / 共41页
电子音乐盒设计论文.doc_第5页
第5页 / 共41页
点击查看更多>>
资源描述

1、 本 科 毕 业 设 计 第 页 共 页目 录1 引言 .12 系统总体设计 .221 系统组成框图 .222 电子音乐盒功能框图 .223 设计软件 .33 硬件设计 431 AT89S51 简介 532 复位电路和时钟电路 .633 按键电路 .834 LED 显示电路 84 软件设计 .941 电子音乐的产生 .1042 音乐播放 .1743 花样灯 .1944 源程序代码 .215 仿真 .2151 硬件电路的仿真 .2152 软件电路的仿真 .2153 联调 .2154 仿真结果 .216 电路板焊接与调试 .2261 元器件处理 .2262 电路焊接 .2263 电路调试 .237

2、 程序烧录、调试与运行结果 .24结 论 .26致 谢 .27参 考 文 献 .28附 录 .29本 科 毕 业 设 计 第 1 页 共 38 页1 引言电子技术是十九世纪末才开始发展起来的新兴技术,二十世纪发展最迅速,应用最广泛,成为近代科学技术发展的一个重要标志。特别是集成电路的出现和应用,标志着电子技术发展到了一个新的阶段。而计算机技术的高速发展把我们带入了信息社会,同时也加速了电子技术的发展,现在电子技术与计算机技术的结合,为我们的生活带来了翻天覆地的变化,其中单片机在其中扮演着一个重要的角色。单片微型计算机简称单片机,是典型的嵌入式微控制器。单片机简单的说是一种集成电路芯片,具有强大

3、的处理数据能力,从上世纪 80 年代开始出现以来,根据市场的需要,正朝着高性能和多品种方向发展趋势发展,进一步向着低功耗、CMOS 化、小体积、低价格、高性能、大容量以及外围电路内装化等发展。 现在的单片机已经不仅仅是应用于用来实现数据采集,对象的控制和信号的检测等的工业控制领域,现在在电子玩具、家用电器、通信、机器人、汽车、计算机、图形图像处理等等与我们日常生活息息相关的方面都能看到它的影子,我们的生活离不开它,已经成为生活的“必需品” 。现在随着社会的发展,人类物质文明的提高,对精神文明的要求也已提上日程,音乐可以改变我们的心情,可以改变我们对生活的看法,可以影响我们的命运,音乐也是我们生

4、活中的必需品。小小的音乐盒可以影响我们的心情,可以给我们带来愉悦的精神享受,有时甚至可以改变我们的一生。传统的音乐盒大多是机械式的,体积大,发音单调,不能多次载入歌曲,比较单调。而单片机的出现为我们解决了这一难题,本文设计的音乐盒就是以单片机为核心的电子式音乐盒,具有体积下,重量轻,可多次写入不同的歌曲,存储量大,外观美观等的特点,使用方面,趣味性强,有一定的商业价值。音乐盒又称八音盒。音乐盒的起源,可追溯至中世纪欧洲文艺复兴时期。当时为使教会的的钟塔报时,而将大小的钟表上机械装置,被称为“可发出声音的组钟” 。 1796 年由瑞士钟表匠安托法布尔发明,转动盒内的链环,可自动演奏音乐。这是最古

5、老的音乐盒。1992 年,中国第一台具有知识产权的八音琴在韵升诞生。音乐盒悠扬的乐声,经常勾起人们对美好往事的回忆,甚至魂牵梦萦,坠入时光岁月的追忆中。300 多年来席卷全球市场的音乐盒的最大魅力,也许就在于它能将抽象的音乐,凝固成具象的艺术品。成为人们表达美好情感,追思逝去岁月的最佳选择。本 科 毕 业 设 计 第 2 页 共 38 页现代科技的发展为我们提供了更方便快捷的制作音乐盒的方式,不用经过繁琐的工艺,可以利用单片机自己制作一个简单的电子音乐盒,很用意义。本文设计的电子音乐盒,就是基于单片机芯片设计制作的电子音乐盒。体积小巧,音质优美且能演奏和弦音乐。电子音乐盒以点为动力,制作工艺简

6、单,且可批量生产,因此价格便宜。基于单片机芯片制作的电子式音乐盒,控制功能很强大,可根据需要选歌,使用方便。根据存储容量的大小,可以尽可能多的存储歌曲。另外,可以设计彩灯外观效果,使小小的音乐盒达到愉悦身心的目的。2 系统总体设计21 系统组成框图本设计的系统以 AT89S51 为核心,和按键电路,复位电路,时钟电路,蜂鸣器,LED 流水灯电路共同组成。以单片机为核心模块,完成按键的输入,音调的产生,蜂鸣器和 LED 灯的输出等,系统组成框图如下图 2.1 所示。A T 8 9 S 5 1单片机蜂鸣器L E D按键电路复位电路时钟电路图 2.1 系统组成框图22 电子音乐盒功能框图本次设计主要

7、设计了三个标志位,count1、count2 和 count3,对应按键电路的key1、 key2 和 key3,key1 用来选择播放不同的歌曲,key2 用来改变 LED 流水灯的显示花样,key3 用来暂停和播放歌曲。功能结构图如下图 2.2 所示。本 科 毕 业 设 计 第 3 页 共 38 页单片机Key1 播放歌曲 Key2 流水灯显示 Key3 暂停/播放歌曲图 2.2 电子音乐盒功能框图23 设计软件本设计主要使用三个软件,proteus、keil 和 SLISP。用 proteus 进行硬件电路设计,用 keil 进行软件设计,使用 proteus 和 keil 进行联调,等

8、程序功能都实现且调试好了之后,在使用 USB-ISP 软件将程序烧入制作好的实物中,实现电子音乐盒的设计与制作。2.3.1 proteusProteus 软件是英国 Labcenter electronics 公司出版的 EDA 工具软件。它不仅具有其它 EDA 工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。Proteus 是世界上著名的 EDA 工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到 PCB 设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB 设计软件和虚拟模型仿真软件三合一的设计平

9、台。且在编译方面,它支持 IAR、Keil 和 MPLAB 等多种编译器。可以与他们进行联调,结合使用。2.3.2 keilKeil C51 是美国 Keil Software 公司出品的 51 系列兼容单片机 C 语言软件开发系统,与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil 提供了包括 C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。使用 C 语言编程,Keil 是很好的选择。Keil 公司是一家业界领先的微控制器(MCU)软件开发工具的独立供应商。

10、Keil公司由德国慕尼黑的 Keil Elektronik GmbH 和美国 德克萨斯的 Keil Software Inc 公司联合运营。Keil 公司制造和销售种类广泛的开发工具,包括 ANSI C 编译器、宏汇编程序、调试器、连接器、库管理器、固件和实时操作系统核心(real-time kernel) 。本 科 毕 业 设 计 第 4 页 共 38 页Keil C51 编译器自 1988 年引入市场以来成为事实上的行业标准,并支持超过 500 种8051 变种。Keil 公司在 2005 年被 ARM 公司收购。而后 ARM Keil 推出基于 uVision 界面,用于调试 ARM7,

11、ARM9,Cortex-M 内核的 MDK-ARM 开发工具,用于为控制领域的开发。在使用单片机 C 语言开发时,大多使用 keil 编程,与 proteus 进行联调,达到软硬件结合的目的。2.3.3 SLISPSLISP 是一款单片机下载编程烧录软件。支持 USB1.1 或 USB2.0 通信,支持WIN98,WINME,WIN2K,WINXP 等操作系统,采用 USB 口供电,供电输出有 500MA 自恢复,可有效防止外面短路对 USB 影响,目标板亦可同时与 USB 一起供电,下载完成不影响目标板的运行。支持 AT89S51 及 AVR 芯片的烧录,速度比并口 ISP 要快,更稳定,是

12、没有并口的笔记本和电脑使用的最佳选择。使用标准是 IDC10 接口。3 硬件设计本设计主要是以单片机 AT89S51 芯片为核心,由复位电路,时钟电路,按键电路,蜂鸣器和 LED 流水灯电路组成,实现的功能如下,电路图如图 3.1 所示。a) P3.2,P3.3,P3.5 控制按键b) P1.0P1.7 控制 LED 流水灯c) P3.7 控制蜂鸣器d) RST 键控制复位e) XTAL1、 XTAL2 接晶振本 科 毕 业 设 计 第 5 页 共 38 页图 3.1 电路图31 AT89S51 简介AT89S51 是一个低功耗,高性能 CMOS8 位单片机,片内含 4k Bytes ISP(

13、In-system programmable)的可反复擦写 1000 次的 Flash 只读程序存储器,器件采用ATMEL 公司的高密度、非易失性存储技术制造,兼容标准 MCS-51 指令系统及 80C51 引脚结构,是 C 系列的升级版。芯片内集成了通用 8 位中央处理器和 ISP Flash 存储单元,实现了 ISP 下载功能,故而取代了 AT89C 系列的单片机,在众多嵌入式控制应用系统中得到广泛应用。AT89S51 的管脚图如图 3.2 所示。图 3.2 AT89S51 管脚本 科 毕 业 设 计 第 6 页 共 38 页AT89S51 的主要功能特性a) 4k Bytes Flash

14、 片内程序存储器b) 128 bytes 的随机存取数据存储器(RAM)c) 32 个外部双向输入/输出(I/O)口d) 2 个中断优先级、2 层中断嵌套中断e) 5 个中断源f) 2 个 16 位可编程定时器/计数器g) 2 个全双工串行通信口h) 看门狗(WDT)电路i) 片内振荡器和时钟电路j) 与 MCS-51 兼容k) 全静态工作:0Hz-33MHzl) 三级程序存储器保密锁定m) 可编程串行通道n) 低功耗的闲置和掉电模式。32 复位电路和时钟电路时钟电路和复位电路共同组成了单片机的最小系统,即最少的元件组成的单片机可以工作的系统。是单片机应用中不可缺少的一部分,若没有最小系统,好

15、多的设计将不能完美运行。图 3.3 为本设计的复位电路和时钟电路。图 3.3 复位电路和时钟电路3.2.1 复位电路在上电或复位过程中,控制 CPU 的复位状态,这段时间内让 CPU 保持复位状态,而不是一上电或刚复位完毕就工作,防止 CPU 发出错误的指令,执行错误操作,也可本 科 毕 业 设 计 第 7 页 共 38 页以提高电磁兼容性能。所以说单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。若不设置复位电路,或设置不可靠,在程序运行时,可能出现死机、程序跑飞等现象。单片机在启动时都需要复位,以使 CPU 及系统各部件处于确定的初始状态,并从初始状态开始工作。89 系列单片机的复

16、位信号是从 RST 引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果 RST 引脚上有一个高电平并维持 2 个机器周期以上,则 CPU 就可以响应并将系统复位。单片机主要有手动复位和上电复位两种复位方式。本设计使用的是手动复位方式,在 RST 端与正电源 VCC 之间接一个按钮,当按下按钮时,在复位输入端 RST 上加入一个高电平,由于人的动作再快也会使按键保持接通数十毫秒,完全能满足复位时间的要求。3.2.2 时钟电路单片机晶振的作用是为单片机系统提供基本的时钟信号,单片机晶振提供的时钟频率越高,单片机的运行速度就越快,单片机的一切指令的执行都是建立在单片机

17、晶振提供的时钟频率。没有晶振,就没有时钟周期,没有时钟周期,就无法执行程序代码,单片机就无法工作。89 系列的时钟信号由两种方式产生,一种是利用芯片内部的震荡电路,产生时钟信号的内部方式,一种是时钟信号有外部引入的外部方式。内部时钟方式为:89 系列单片机内部有一个用于构成内部振荡器的高增益反相放大器,引脚 XTAL1 和 XTAL2 分别是该放大器的输入端和输出端,其频率范围为 1.212MHz,这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器。89 系列单片机虽然有内部震荡电路,但要形成时钟,必须外接元件.外接晶振以及电容 C2,C3 构成并联谐振电路,接在放大器的反

18、馈回路中,这种方式称为内部时钟方式。对外接电容 C2,C3 没有严格的要求,石英晶体的电容值一般使用 30PF 10PF,陶瓷振荡器一般选择 40PF 10PF。本设计的晶振选择 11.0592MHz,而不是 12MHz,是因为在进行通信时,12M 频率进行串行通信时不容易实现标准的波特率,而 11.0592M 计算时正好可以产生理论误差为零的波特率时钟。基于本设计对串口的要求,选用 11.0592MHz 的晶振。电容值选择30pF。若采用外部时钟,外部时钟脉冲接到 XTAL1 端,即内部时钟发生器的输入端,本 科 毕 业 设 计 第 8 页 共 38 页XTAL2 则悬空。33 按键电路AT

19、89S51 系列单片机有五个中断源,引脚与中断源的对应关系如表 3.1 所示表 3.1 AT89S51 中断源与引脚的对应关系中断源 对应的管脚外部中断 0 P3.2/INT0外部中断 1 P3.3/INT1定时/计数器 T0 中断 P3.4 T0定时/计数器 T1 中断 P3.5 T1串口中断 P3.6/WR串口中断 P3.7/RD本设计按键电路有三个按键 key1,key2 和 key3 组成,分别接单片机的P3.2,P3.3 和 P3.5 口。三个按键分别对应程序中的三个标志位 count1,count2 和count3。P3.2 口控制 LED 流水灯的花样,P3.3 口控制歌曲的选择

20、,P3.5 口控制歌曲的暂停与继续。按键电路如图 3.4 所示图 3.4 按键电路34 LED 显示电路由 8 个 LED 发光二极管组成,连接方式为共阳极,由于加 10K 上拉电阻 LED 灯的亮度太低,最终使用 4.7K 的电阻。LED 接到单片机的 P1 口,低电平时,LED 亮起。发光二极管的亮、灭由内部程序控制,8 个 LED 发光二极管分别对应不同的音阶,所以LED 会随着音阶的变化按规律亮、灭。LED 流水灯电路如图 3.5 所示。本 科 毕 业 设 计 第 9 页 共 38 页图 3.5 LED 流水灯电路图4 软件设计本设计中,相对于简单的硬件电路设计,程序设计的重要性不言而

21、喻。在本程序中设置了 3 个标志count1,count2 和 count3,分别初始化为 1,0和 0。key1 使得 count1 在 1 和 4 之间切换,key2 使得 count2 在 15 之间切换。Key3使得 count3 在 12 之间切换。程序检测 count1 的值,count1 等于 1 时流水灯执行花样一,值为 2 时,执行花样 2 程序,共四种花样程序,所以 count1 的值在 14 之间切换。而 count2 的值控制着歌曲的播放,count2 等于 1 时播放第一首歌曲,等于 2 时播放第二首,以此类推。在播放音乐的过程中,检测 count3 的值,等于 1

22、时,暂停播放,等于 2 时,继续播放。另一方面根据 count2 的高四位值来切换 LED 的花样。count1和 count2 的值是互斥的,设置 count1 等于 14 时,count2 同时设置为 0;设置count2 等于 15 时,count1 也同时设置为 0。从上面的描述可以看出,程序的设计主要可分为这几个模块。音乐产生模块,音乐播放模块,蜂鸣器发声模块,音乐暂停/继续模块,流水灯花样模块,按键与中断模块和延时模块。通过这些模块的相互联系,与硬件相结合,组成一个完整的多功能电子音乐播放系统。主程序主要完成了程序的标志位的赋值,中断的开启,定时/计数器初值以及花样灯程序和音乐程序

23、的调用。程序流程图如下图 4.1 所示。本 科 毕 业 设 计 第 10 页 共 38 页开始赋值 c o u n t 1 = 0c o u n t 2 = 1开 E A , I N T 0 , I N T 1 ,T 0 , T 1 中断T 0 作定时器工作在方式 1T 1 作计数器工作在方式 2T 0 初值全 0T 1 初值全 1T 1 高优先级C o u n t 1 ! = 0音乐播放花样灯程序否是结束图 4.1 主程序流程图在本程序设计时,音乐的实现是关键。41 电子音乐的产生单片机演奏音乐基本是单音频率,不包含相应幅度的谐波频率,不能像电子琴那样能奏出多种音色的声音。单片机奏乐只需弄清

24、楚两个概念即可,也就是“音调”和“节拍”表示一个音符唱多长的时间。4.1.1 音频脉冲的产生音乐的产生主要是通过单片机的 I/O 口输出高低不同的脉冲信号来控制蜂鸣器的发音,要产生音频脉冲信号,只要算出某一音频的周期,然后将此周期除以 2,即为半周期的时间,利用定时器定时这半周期的时间,每当计时到,就将输出脉冲的 I/O 端口反相,然后重复计时此半周期时间再对 I/O 口反相,这样就能在此 I/O 口上得到此频率的脉冲。不同音调的乐音是用 C、D、E、F、G、A、B 来表示,这 7 个字母就是音乐的音名,它们一般依次唱成 DO、RE、MI、FA、SO、LA、SI,对应的简谱为1、2、3、4、5

25、、6、7,相当于汉字“多来米发梭拉西”的读音,这是唱曲时乐音的发音,所以叫“音调” ,即 Tone。把 C、D、E、F、G、A、B 这一组音的距离分成 12 个等本 科 毕 业 设 计 第 11 页 共 38 页份,每一个等份叫一个“半音” 。两个音之间的距离有两个“半音” ,就叫“全音” 。通常唱成 1、2、3、4、5、6、7 的音叫自然音,那些在它们的左上角加上号或者 b 号的叫变化音。叫升记号,表示把音在原来的基础上升高半音,b 叫降记音,表示在原来的基础上降低半音。例如高音 DO 的频率(1046Hz)刚好是中音 DO 的频率(523Hz)的一倍,中音 DO 的频率(523Hz)刚好是

26、低音 DO 频率(266 Hz)的一倍;同样的,高音 RE 的频率(1175Hz)刚好是中音 RE 的频率(587Hz)的一倍,中音 RE 的频率(587Hz)刚好是低音 RE 频率(294 Hz)的一倍。通常利用 AT89S5X 单片机的内部定时器 0,在工作方式 1 下,改变计数初值 TH0和 TL0 来产生不同的频率。例如,若采用 12MHz 的晶振,要产生频率为 587Hz 的音频脉冲时,其音频脉冲信号的周期 T=1/587=1703.5775us,半周期的时间为 852us,因此只要令计数器计数 852us/1us=852,在每次计数 852 次时,将 I/O 口反相,就可得到 C调

27、中音 Re。计数脉冲值与频率的关系公式如下:N=Fi 2 Fr 式(1)N:计算值; Fi:内部计时一次为 1us,故其频率为 1MHz;那么计数值 T 的求法如下:T=65536-N=65536-Fi 2 Fr例如:设 K=65536,F=1000000=Fi=1MHz,低音 DO(261Hz) 。中音 DO(523Hz) 。高音的 DO(1046Hz)的计算值T=65536-N=65536-Fi 2 Fr=65536-1000000 2 Fr=65536-500000/Fr低音 DO 的 T=65536-500000/262=63628低音 DO 的 T=65536-500000/523=

28、64580低音 DO 的 T=65536-500000/1047=65058综上所述,在 11.0592MHz 频率下,C 调音符频率计数值 T 的关系如下表 4.1 所示本 科 毕 业 设 计 第 12 页 共 38 页表 4.1 C 调音符频率计数值 T 的关系低音 频率 T 中音 频率 T 高音 频率 TDo 262 62018 Do 523 63773 Do 1046 64654Re 294 62401 Re 587 63965 Re 1175 64751Mi 330 62491 Mi 659 64137 Mi 1318 64836Fa 349 62895 Fa 698 64215 F

29、a 1397 64876So 392 63184 So 784 64360 So 1568 64948La 440 63441 La 880 64488 La 1760 65012Si 494 63506 Si 988 64603 Si 1976 65067本设计中,在 11.0592MHz 频率下,中央 C 调 17 和高 8 度 17 的计数值 T 即初值的十六进制数数值为:uchar code chuzhi=0xff,0xff,/占位0xFC,0x8E,0xFC,0xED,0xFD,0x43,0xFD,0x6A,0xFD,0xB3,0xFD,0xF3,0xFE,0x2D, 0xFE,0x

30、47,0xFE,0x76,0xFE,0xA1,0xFE,0xC7,0xFE,0xD9,0xFE,0xF9,0xFF,0x16;4.1.2 音乐节拍若要构成音乐,光有音调是不够的,还需要节拍,让音乐具有旋律(固定的律动) ,而且可以调节各个音的快满度。Beat,简单说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚。若 1 拍实 0.5s,则 1/4 拍为 0.125s。至于 1 拍多少 s,并没有严格规定,只要听的悦耳就好。音持续时间的长短即时值,一般用拍数表示。休止符表示暂停发音。在音乐中,最小的音符为十六分音符,即四分之一拍,所以只要延时函数设置为十六分音符的时间(165MS) ,其他的音

31、符延时其的整数倍,就可得到相应的节拍。十六分音符的延时函数为void delay(uint z) uint x,y;for(x=z;x0;x-)for(y=19000;y0;y-);一首音乐是由许多不同的音符组成的,而每个音符对应着不同频率,这样就可以利用不同的频率的组合,加以与拍数对应的延时,构成音乐。了解音乐的一些基础知识,我们可知产生不同频率的音频脉冲即能产生音乐。对于单片机来说,产生不同频率的脉冲是非常方便的,利用单片机的定时/计数器来产生这样的方波频率信号。因此,本 科 毕 业 设 计 第 13 页 共 38 页需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。每个音符使

32、用 1 个字节,字节的高 4 位代表音符的高低,低 4 位代表音符的节拍,表 4.2 为节拍码的对照。如果 1 拍为 0.4 秒,1/4 拍实 0.1 秒,只要设定延迟时间就可求得节拍的时间。假设 1/4 拍为 1DELAY,则 1 拍应为 4DELAY,以此类推。所以只要求得 1/4 拍的 DELAY 时间,其余的节拍就是它的倍数,如表 4.3 为 1/4 和 1/8 节拍的时间设定。表 4.2 节拍码的对照节拍码 节拍数 节拍码 节拍数1 1/4 拍 1 1/8 拍2 2/4 拍 2 1/4 拍3 3/4 拍 3 3/8 拍4 1 拍 4 2/1 拍5 1 又 1/4 拍 5 5/8 拍6

33、81 又 1/2 拍2 拍683/4 拍1 拍A 2 又 1/2 拍 A 1 又 1/4 拍C 3 拍 C 1 又 1/2 拍F 3 又 3/4 拍表 4.3 1/4 和 1/8 节拍的时间设定1/4 节拍的时间设定 1/8 节拍的时间设定曲调值 DELAY 曲调值 DELAY调 4/4 125 毫秒 调 4/4 62 毫秒调 3/4 187 毫秒 调 3/4 94 毫秒调 2/4 250 毫秒 调 2/4 125 毫秒4.1.3 移调一般的歌曲有 3/8、2/4、3/4、4/4 等节拍类型,但不管有几拍,基本上是在 C 调下演奏的。如果是 C 调,则音名唱 Do,音名 D 唱 Re,音名 E

34、 唱 Mi,音名 F 唱 Fa,音名 G 唱 So,音名 A 唱 La,音名 B 唱 Ti 等。但并不是所有的歌曲都是在 C 调下演奏的,还有 D 调,E 调,F 调,G 调等。D 调是将 C 调各音符上升一个频率实现的,即 C 调下的音名 D 在 D 调下唱 Do,C 调下的音名 E 在 D 调下唱 Re,C 大调各音名 F 在 D 调下升高半音符 F#唱 Mi,C 调下的音名 G 在 D 调下唱 Fa,C 调下的音名 A 在 D 调下唱 So,C调下的音名 B 在 D 调下唱 La,C 调下的音名 C 在 D 调下升高半音符 C#唱 Ti。这种改变唱法成为移调。E 调是在 D 调的基础上进

35、行移调的,而 F 调是在 E 调的基础上进行移调的各大本 科 毕 业 设 计 第 14 页 共 38 页调音符与音名的关系如表 4.4 所示。表 4.4 各大调音符与音名的关系音调 Do Re Mi Fa So La TiC 调 C D E F G A BD 调 D E F# G A B CE 调 E F# G# A B C DF 调 F G A B C D EG 调 G A B C D E F#A 调 A B C# D E F# G#B 调 B C D E F G A4.1.4 音乐编码本设计以音乐简谱进行编码。简谱中的 17,分别编码为 17,重音 17,分别编码 8、9、A、B、C、D、

36、E。停顿编为 0,结束标志为 FF。简谱节拍的对应关系也是编码的关键。在简谱中,全音符是在数字后面加三根延时线的音符,其时值等于四分音符的四倍,打满四拍就得一个全音符。若延时函数为165ms,即十六分音符的时间,则一个全音符需要 16 次延时。可分为两个 8 次延时。可编码为 0x08,0x08。二分音符是在数字后面加了一根延时线的音符,分音符时值是四分音符的两倍,打两拍得一个二分音符。将其编码为 8。而四分音符在简谱里就是不带延时线,没有减时线单单的一个音符,以四分音符为一拍,也就是手打一拍就是一个四分音符的时值。将其编码为 4。八分音符是在数字下面划了一根减时线的音符;八分音符时值等于四分

37、音符的一半,而以四分音符为一拍的话,那八分音符也就是半拍。在本次设计中将其编码为 2。十六分音符在简谱里是在数字下面划了两根减时线的音符;十六分音符时值等于四分音符的四分之一,也就是四分之一拍。将其编码为 1。符点音符在音符后面加个符点,等于把这个音符的时值再延长它本身时值的一半。比如符点四分音符,时值等于四分音符加八分音符的时值。休止符最好的理解就是你把它当一个音符看待,但是是没有音高的音符,因为它时值也是跟一般音符一样标记的。可编码成 0。 举例 1:音调 do,发音长度为两拍,即二分音符,将其编码为 0x18。举例 2:音调 re,发音长度为半拍,即八分音符,将其编码为 0x22本 科

38、毕 业 设 计 第 15 页 共 38 页4.1.5 歌曲播放设计将歌曲的简谱进行编码后,储存在一个数据类型为 unsigned char 的数组中。音乐播放程序从数组中取出一个数,然后分离出高 4 位得到音调,接着找出相应的值赋给定时器 0,使之定时操作蜂鸣器,得出相应的音调;接着分离出该数的低 4 位,得到延时时间,这样就建立了音乐库。表 4.5 为简谱对应的简谱码、T 值及节拍数。表 4.5 简谱对应的简谱码、T 值和节拍数简谱 发音 简谱码 T 值 节拍码 节拍数5 低音 SO 1 64260 1 1/4 拍6 低音 LA 2 64400 2 2/4 拍7 低音 TI 3 64524

39、3 3/4 拍1 中音 DO 4 64580 4 1 拍2 中音 RE 5 64684 5 1 又 1/4 拍3 中音 MI 6 64777 6 1 又 1/2 拍4 中音 FA 7 64820 8 2 拍5 中音 SO 8 64898 A 2 又 1/2 拍6 中音 LA 9 64968 C 3 拍7 中音 TI A 65030 F 3 又 3/4 拍1 高音 DO B 650582 高音 RE C 651103 高音 MI D 651574 高音 FA E 651785 高音 SO F 65217本次设计一共可播放 5 首歌曲,分别为千年之恋 、 寂寞沙洲冷 、 蝴蝶泉边 、同桌的你和老男

40、孩 ,在这里我以千年之恋为例,说明一下简谱与编码的对应关系,其他四首歌曲的数据编码将在附录中显示。图 4.2 为歌曲千年之恋的简谱。本 科 毕 业 设 计 第 16 页 共 38 页图 4.2 歌曲千年之恋简谱根据上述规则, 千年之恋的简谱编码为uchar code qnzl= /千年之恋0x12, 0x22, 0x34, 0x84, 0x74, 0x54, 0x38, 0x42, 0x32, 0x22, 0x42, 0x34, 0x84, 0x72, 0x82, 0x94, 0xA8, 0x08, /前奏0x32, 0x31, 0x21, 0x32, 0x52, 0x32, 0x31, 0x

41、21, 0x32, 0x62, /竹林的灯火 到过的沙漠0x32, 0x31, 0x21, 0x32, 0x82, 0x71, 0x81, 0x71, 0x51, 0x32, 0x22, /七色的国度 不断飘逸风中0x32, 0x31, 0x21, 0x32, 0x52, 0x32, 0x31, 0x21, 0x32, 0x62, /有一种神秘 灰色的旋涡0x32, 0x31, 0x21, 0x32, 0x83, 0x82, 0x71, 0x72, 0x02, /将我卷入了迷雾中0x63, 0xA1, 0xA2, 0x62, 0x92, 0x82, 0x52, /看不清的双手0x31, 0x5

42、1, 0x63, 0x51, 0x63, 0x51, 0x63, 0x51, 0x62, 0x82, 0x7C, 0x02, /一朵花传来谁经过的温柔0x61, 0x71, 0x82, 0x71, 0x62, 0xA2, 0x71, 0x76, /穿越千年的伤痛0x61, 0x71, 0x82, 0x71, 0x62, 0x52, 0x31, 0x36, 本 科 毕 业 设 计 第 17 页 共 38 页/只为求一个结果0x61, 0x71, 0x82, 0x71, 0x62, 0xA3, 0x73, 0x62, 0x53, /你留下的轮廓 指引我0x42, 0x63, 0x83, 0x83,

43、 0x91, 0x91, /黑夜中不寂寞0x61, 0x71, 0x82, 0x71, 0x62, 0x0A2, 0x71, 0x76, /穿越千年的哀愁0x61, 0x71, 0x82, 0x71, 0x62, 0x52, 0x31, 0x36, /是你在尽头等我0x61, 0x71, 0x82, 0x71, 0x62, 0xA3, 0x73, 0x62, 0x53, /最美丽的感动 会值得0x42, 0x82, 0x88, 0x02, 0x74, 0x93, 0x89, 0xff/结束标志/用一生守候42 音乐播放音乐播放涉及到音调初值的调用,音乐代码的调用,延时函数的调用,流水灯随着音符

44、闪烁,暂停/继续程序的调用等。音调初值,音乐代码和延时函数上面已做介绍,下面依次介绍一下 LED 与音符的对应,暂停/继续程序以及音乐子程序。4.2.1 LED与音符的对应在本设计中,LED 流水灯会随着音调的不同相应的亮起。程序会从音乐数组中取出一个数,分离出高 4 位得到音调,将其值赋值给流水灯音乐花样数组,将 P1 口相应的位置 0,LED 灯亮起。表 4.5 列出了音调与 LED 灯及 P1 口的对应关系。表 4.5 C 调各音符与 LED 灯及 P1 口的对应关系C 调简谱音符 P1 口低电平 LED 灯亮 编码1 P1.0 D0 0xfe2 P1.1 D1 0xfd3 P1.2 D

45、2 0xfb4 P1.3 D3 0xf75 P1.4 D4 0xef6 P1.5 D5 0xdf7 P1.6 D6 0xbf本 科 毕 业 设 计 第 18 页 共 38 页8 P1.7,P1.6 D.7,D.6 0x3f9 P1.6,P1.5 D.6,D.5 0x9fA P1.5,P1.4 D.5,D.4 0xcfB P1.4,P1.3 D.4,D.3 0xe7C P1.3,P1.2 D.3,D.2 0xf3D P1.2,P1.1 D.2,D.1 0xf9E P1.1,P1.0 D.1,D.0 0xfc4.2.2 音乐子程序音乐播放首先要判断 count3(暂停的标志位)的值,由于在定义 c

46、ount3 时,已将其初始化为零,对下面的程序没有影响,检测 count2(由中断函数控制)的值,count2 的值决定歌曲的选择。选定 count2 的值后,就是与音乐程序相关函数的调用。程序流程图如下图 4.3 所示。在音乐播放过程中,若有中断产生,则会执行中断程序。当 key2 键按下时,产生外部中断 1 中断,控制 count2 的值,而 count2 的值控制歌曲的切换,外部中断 1 的流程图如图 4.4 所示,当 key3 键按下时,产生定时/计数器 T1 溢出中断,控制 count3的值,而 count3 的值控制歌曲的暂停/继续。定时/计数器 T1 的溢出中断流程图如图 4.5

47、所示,暂停/继续程序的流程图如图 4.6 所示。本 科 毕 业 设 计 第 19 页 共 38 页开始初始化 i = 0C o u n t 3 = 0C o u n t 2 = 0从相应的值选择相应的编码表结束标志取高 4 位点亮相应的 L E D高四位 = 0T 0 置入初值关蜂鸣器 , 停顿一次取低 4 位 , 调用延时函数结束N oY e sN oY e sN oY e si + +关 T 0 , 蜂鸣器开始关总中断C o u n t 1 , i 赋值为零C o u n t 2 加 1C o u n t 2 = 6C o u n t 2 赋值为 1开总中断是否结束图 4.3 音乐播放流程

48、图 图 4.4 外部中断 1 流程图本 科 毕 业 设 计 第 20 页 共 38 页开始C o u n t 3 加 1C o u n t 3 = 3C o u n t 3 赋值为 1是结束否C o u n t 3 = 1 关 T 0C o u n t 3 = 0 或 2开 T 0音乐播放否是是否开始音乐播放结束图 4.5 T1 中断流程图 图 4.6 暂停/继续程序流程图43 花样灯随着人们生活水平的提高,在物质生活满足的同时,精神生活的要求也越来越高,音乐盒不仅仅要会播放音乐,视觉享受同时也很重要,因此本设计为来增加美观性和多样性,还增加了流水灯的花样功能。上面已经提到音乐播放时 LED

49、灯会随着音符的变化而变化,而花样灯也是要 LED灯随着一定的规律变化,所以在使用花样灯这个功能时,要确保音乐程序关闭,即置count2 为零,以免程序发生冲突。本设计一共设计了 4 种流水灯花样第一种:从开始 D0 亮一下,D1 亮一下,D1 亮起的同时,D0 熄灭;紧接着 D2 亮一下,D3 亮起的同时,D2 熄灭,以此类推,依次循环点亮。第二种:从两边向中间移动,首先从 D0 移向 D7,再从 D7 移向 D1,以此类推,往复循环。第三种:从 D1 移向 D2,再从 D2 移向 D3,以此往复循环。与第一种方式的不同之处为:当 D1 移向 D2 时,D1 不熄灭, 再从 D2 移向 D3 时, D2 也不熄灭,以此类推,往复循环。第四种:一次同时亮四个,开始时 D0 和 D2,D4 和 D6 同时亮,然后依次向右移动,即 D1 和 D3,D5 和 D8 同时亮,以此类推,往复循环。四种花样灯的移动示意图如下图 4.7 所示。本 科 毕 业 设 计 第 21 页 共 38

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报