- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于单片机的音乐盒设计与实现.doc
基于单片机的音乐盒设计与实现 摘要:通过以STC89C52单片机为核心,设计一款数字音乐盒。该音乐盒主要由以下几部分组成:STC89C52单片机的最小系统,蜂鸣器电路,12864LCD显示电路,4*4矩阵键盘电路,LED灯闪烁电路;功能上实现读取乐谱上的信息并转化为单片机可用数据,通过驱动蜂鸣器实现音乐的播放。在矩阵键盘上使用按键来选择十首歌曲的播放及相关控制,同时在液晶屏上显示音乐的相关信息。硬件电路图布局以Altium Designer为设计平台,进行PCB设计,完成数字音乐盒的整体设计、实现。 关键词:单片机;音乐盒;蜂鸣器;LCD;PCB 中图分类号:TP338 文献标识码:A 文章编号:1009-3044(2016)16-0234-03 音乐是由人们在长期发展中为了表达各种情感而特别挑选出来的,并组成一个固定的系统[1]。音乐以其具有大众的魅力,吸引着来自不同地域的人们共同欣赏着优美的音乐,激发调动人们埋藏在内心那已久的悸动。同时,在21世纪,电子技术进入了辉煌的发展时期,其产生的电子产品也遍布社会的各个领域,在各行各业中单片机都在发挥着核心作用,如何将电子技术与音乐相融合,亦是研究热点之一。本文通过利用单片机及音乐相关知识,设计一个以52单片机为核心元件的电子音乐盒,以满足功能多样、低成本、方便使用、小巧灵活等需求。 1 音乐盒设计框图及流程 该音乐盒是以STC89C52单片机为核心,加上外围电路如:矩阵键盘电路、蜂鸣器电路、LCD电路、USB供电电路以及LED灯闪烁电路所组成的[2]。音乐盒设计框图和流程图如图1、图2所示: 2 系统软件设计 2.1 音乐程序设计 已知不同的音调有着不一样的频率,每个音调都有着不同的时间周期常数[3]。用定时器T0对单片机进行定时,通过输出不同周期的方波给蜂鸣器来控制、发出需要的音调[4]。从低音到高音每一个音调都有定时器T0对应的一个初值,由此当晶振为12MHz,可以列出音调与定时器T0初值的表1: 通过表1,可以读出音乐简谱上每个音符对应的音调,读出对应的定时器T0的初值,让定时器T0工作在定时模式1,当计数从初值到最大值65536时溢出,并触发单片机某个管脚信号取反,所产生的就是所需要的音调频率,再通过蜂鸣器发出对应音调的声音。 在本设计中以延时函数控制每个音符的时长来实现,以十六分音符的时长编写一个延时函数,做为其他音符时长的一个基准,所以调用一次就是十六分音符的时长,循环调用该函数两次就是八分音符,循环调用四次就是四分音符,循环调用该函数八次就是二分音符。根据以上所述,在程序中本设计是这样处理的:把各个音调所对应定时器T0的初值化为十六进制数,取每个音调初值的高八位、低八位依次放在两个数组中。音阶频率表高八位数组code uchar FREQH[] 0xF8, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC, 0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF ; 音阶频率表低八位数组code uchar FREQL[] 0x8C, 0x5B, 0x15, 0x67, 0x04, 0x90, 0x0C, 0x44, 0xAC, 0x09, 0x33, 0x82, 0xC8, 0x06, 0x22, 0x57, 0x85, 0x98, 0xC1, 0xE4, 0x03 。 音调和节拍关系处理:从简谱可以读出每个音符的音调和节拍存在数组中,每三个表示一个音符:第一个数字表示音符名1 2 3 4 5 6 7;第二个数字表示音调所在音区:0是重音,1是中音,2是高音;第三个数字表示延时函数的调用次数: 1是16分音符调用次数;2是8分音符调用次数;4是4分音符调用次数;8是2分音符调用次数;16是全音符调用次数。通过这样就可以构成一首音乐的数组,下面就表示《欢乐颂》在本设计中数组的表示: 以此简谱为标准说明从简谱到音乐的编码:数组第一个数字3表示第一个音符是3,第二个数字是1表示第一个音符是中音,第三个数字4表示这是个四分音符,所以第一个音就是四分音符的中音3。 2.2 LCD显示程序设计 LCD显示之前,需进行初始化,之后才能对它进行写指令或数据,下面图3是LCD初始化过程: 本设计采用8位数据并行方式, DL取1,RE取0,向LCD写入0x30指令。功能设定写入指令0x30。显示开关的控制指令: D 1,B 1,C 1,向LCD写入0x0f指令,等待时间大于100us。清除显示指令,向LCD写入0x01指令,等待时间大于10ms,进入模式设置,向LCD写入0x06指令。完成初始化设置,根据控制端使用单片机向LCD写入指令和写入数据。 3
文档评论(0)