按键或者串口驱动蜂鸣器播放编制音乐.docx

按键或者串口驱动蜂鸣器播放编制音乐.docx

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

PAGE10

PAGE10

/ 18

《微机接口与应用课程设计》

结题报告

按键或者串口驱动蜂鸣器播放编制音乐

项目简介

本设计是在Linux系统下以ARMS3C2440芯片的电路为基础,利用开发板上的蜂鸣器,通过软件编程对蜂鸣器进行发音频率、时间等的控制,进而利用按键或者串口驱动蜂鸣器来播放音乐。本设计播放的为编制音乐,即对音乐先进行解码后再播放。

系统软、硬件结构设计

系统通过开发板上相应的定时器,产生不同的频率信号,驱动蜂鸣器发出不同的音频信号。通过按键或键盘输入,选择播放不同的音乐。整体设计框架如图1所示。

系统硬件组成

图1:系统整体设计

本设计利用KDLAB-I型微机原理与接口技术实验装置ARM部分,由核心板、主板、底板共同构成。其中蜂鸣器的位置如图2所示:

图2:ARMS3C2440开发板

蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器与共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成。当接通电源后,多谐振荡器起振,输出1.5-2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片与外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性的振动发声。

本实验开发板使用的蜂鸣器为电磁式蜂鸣器。

其中主板上的蜂鸣器是通过PWM来控制的,原理图如图3所示。

图3:蜂鸣器原理图

蜂鸣器是通过GPB0IO口使用PWM信号来驱动工作的,其中GPB0可通过软件设置为PWM输出。PWM即脉冲宽度调制,是靠改变脉冲宽度来控制输出电压,通过改变周期来控制其输出频率。由S3C2440手册可知,S3C2440内部有5个16位定时器,定时器0、1、2、3都带有脉冲宽度调制功能,定时器0、1共享一个时钟分频器,定时器2、3、4共享一个时钟

分频器,这两个时钟分频器都能产生5种不同的分频信号值,即1/2、1/4、1/8、1/16和TCLK。每个定时器模块从时钟分频器接收自己的时钟信号,其分频器从相应的预分频器接收时钟。预标定器是可以编程且根据装载的值来分频PCLK的。

改变定时器中的分频器值即可产生不同的频率,因此PWM可利用芯片内部的定时器电路很方便产生。

系统软件组成

程序的开发是在LinuxFedora9系统的arm-linux-gcc-4.3.2编译环境进行的,主要包括音乐播放部分和键盘控制部分。软件整体设计思路如图4所示。

图4:系统整体设计

音乐播放软件设计

要利用蜂鸣器播放出音乐,必须知道音乐构成中的音调和相应的节拍。一首乐曲是由很多音符组成的,将每个音符中包含的音调和节拍信息进行编码,作用于蜂鸣器上即可产生动听的音乐。

乐曲简谱中1、2、3、4、5、6、7,即DO、RE、MI、FA、SO、LA、SI,不同的低音、中音、高音对应的频率如表1所示:

表1:不同音调对应的频率表

低音

频率

中音

频率

高音

频率

Do

262

Do

523

Do

1046

Re

294

Re

587

Re

1175

Mi

330

Mi

659

Mi

1318

Fa

349

Fa

698

Fa

1397

So

392

So

784

So

1568

La

440

La

880

La

1760

Si

494

Si

988

Si

1976

利用数组将对应的高低频率存储下来,

intfreq[]={262,294,330,349,392,440,494,523,587,659,698,784,880,988,

1046,1175,1318,1397,1568,1760,1976},则当使用某一音调时调用相应

数组中的元素即可。

将一首歌的简谱中的音调和节拍信息按照一个音符三个数字进行编码,其中第一位代表DO、RE、MI、FA、SO、LA、SI不同的音调,第二位代表低、中、高音,第三位代表半拍数。如1,1,2代表2个半拍的低音Do,3,2,3代表3个半拍的中音Mi,7,3,4代表4个半拍的高音Si。则利用该编码方式则可将一首歌如《新年好》编码如下,歌曲以音符0,0,0代

表结束。

doublemusic[]={1,2,1,1,2,1,1,2,2,5,1,5,3,2,1,3,2,1,3,2,2,1,2,5,

1,2,1,3,2,1,5,2,2,5,2,5,4,2,1,3,2,1,2,2,6,2,2,1,3,2,1,4,2,2,

4,2,5,3,2,1, 2,2,1,3,2,2,

文档评论(0)

tianya189 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体阳新县融易互联网技术工作室
IP属地湖北
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档