基于单片机的数字音乐盒的设计.docx
《基于单片机的数字音乐盒的设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字音乐盒的设计.docx(45页珍藏版)》请在冰豆网上搜索。
基于单片机的数字音乐盒的设计
基于单片机的数字音乐盒的设计
摘要这次的数字音乐盒是建立在At89C51单片机程序上设计的,利用一系列单片机智能化设计的多功能实体。
用Proteus软件对所有系统进行仿真制作,而音乐盒源程序的C语言编译部分则是利用Keil软件来实现的。
本系统设计的音乐盒能产生不同的频率波形,主要是通过单片机控制定时器,使喇叭发出不同的音阶音律。
喇叭发出的音调定时常数被转化为乐谱,从而使音乐设备能够演唱出非常动听的音乐节律。
关键词:
数字音乐盒;数码管;单片机;Proteus;Keil
TheDesignationOfControllableDigitalMusicBox
BasedOn51Scm
ABSTRACTDigitalmusicboxthatisbuiltinAt89C51chipdesignprocedure,usingaseriesofsingle-chipdesignofintelligentmultifunctionentity.ForallthesystemsimulationusingProteussoftware,andthemusicboxsourceprogramofClanguagecompileristouseKeilsoftwaretoimplement.Themusicboxdesignofthesystemcanproducedifferentfrequencywaveform,ismainlycontrolledbysinglechipmicrocomputertimer,thehornofdifferentscaletemperament.Timingconstantpitchhornwastransformedintothemusic,whichmakesmusicequipmentcansingverypleasantmusicrhythm.
Keywords:
Digitalmusicbox;Digitaltube;AT89C51;PROTEUS;KEIL
第1章前言
1.1课题背景
21世纪的科技是属于单片机的科技时代,现在单片机应用极其普遍,技术也愈来愈成熟,基本上现如今各行各业都能看到单片机的存在。
所以必然的,单片机起着不可磨灭的功用[1]
单片机是一种集成在一个小型的硅电路芯片上,进而形成一个小小的控制计算机系统。
该集成的电路具有微处理器,程序存储器,数据存储器,串、并行输入/输出接口,定时器/计数器等结构功能。
另外,还可以集成在模数转换电路,多谐震荡电路,显示屏驱动电路等多种控制系统。
伴随着经济水平社会文化的不断提高与建设,人们的对精神文明提出了更高要求,尤其是对视听方面的饥渴更有待拔高。
而最传统的音乐盒是机械的类型,大小,和重,发音单调,不甜,没有大规模生产的实现,因此很难满足当代人的需求。
包括本人也是个对音乐有很高依赖的人。
这次设计的数字音乐盒就是要依靠单片机来作为核心来驱动。
单片机的主要优点是体积小、能耗低、易控制、深扩展、微型化。
因此,数字音乐盒还具有体积小,重量轻的优点,可以播放所有类型的音乐,功能多,外观美,使用方便等优点。
而且具有一定的开发价值。
1.2课题研究的目的及意义
音乐是现代人们休闲娱乐必不可少的方式之一,它是一种听觉的享受,而各种播放音乐的设备层出不重,如何做出更好的不损坏音乐本质的优良设备是当今的发展方向。
而传统的VCD、DVD等已不符合时代的发展需要,不能满足人们的听觉需求。
急需要一种更先进的制作设备来更方面,更快捷,更智能化的享受音乐带来的乐趣。
而单片机正好处在当今时代发展的大潮中,我们有理由把单片机的作用最大化,让它服务于我们的日常生活,相信它的独一无二一定能够带来传统播放模式的飞越转变。
同时结合最新的LED技术,又是另外一种视觉盛宴,只要几个I\O端口,数码管,多种播放模式,多种播放选择,比传统的按部就班的播放模式有着革命性的提升。
仅仅只需要两三个软件控制,而且不易受干扰。
1.3论文的主要任务和所做的工作
这次课题主要是设计一个由晶振复位电路提供一定频率的方波,驱动蜂鸣器发出最后音乐效果的数字音乐盒系统,另外增加了数码管显示部分,而且为了达到视觉效果加入了LED灯闪光器件。
总体来说是一种性价比很高,功能相对不错的单片机控制播放音乐的理论设计,包括硬件电路和主要程序,采用我们之前接触过的KEIL、PROTEUS来完成设计,C语言编写程序。
整个设计完成后会有暂停,前进,后退,播放这些基本功能。
准备过程中查阅相关资料,编写时钟定时响应程序,编写音乐播放程序,最后要对整个系统进行仿真,不断的查缺补漏,反复分析修改。
第2章单片机和音乐盒硬件的功能
单片机经过50多年的快速发展,功能是愈来愈强大,而我们这里设计选用的到的AT89C51单片机,是一款性价比十分高的单片机。
2.1AT89C51芯片的功能
AT89C51是一种低电压的4K字节的闪存可编程只读存储器,高性能CMOS8微处理器。
俗称单片机。
如图:
图2-189C51单片机引脚图
图2-2At89C51单片机实物
AT89C51是一种高性能CMOS8位处理器,有4K字节的闪存存储器,可擦除、可编程,简称单片机。
AT89C2051有2K字节的闪存编程只读存储器[6],可重复擦写存储器是ATMEL公司的制造技术,命令集和输出管脚兼容MCS和标准功能8位单片机CPU功能组合,FLASH存储器,和AT89C2051、AT89C51相比,AT89C51是一个简洁版本的单片机。
AT89C单片微型计算机做出了一个计划,是灵活性高,嵌入式控制体系并且价钱很便宜。
主要特性:
.闪烁存储器为4K字节可编程
.能够和MCS-51相兼容
.使用寿命:
1000写/擦循环
.可以保留的数据时间:
10年
.三级程序存储器锁定
.全静态工作:
0Hz-24MHz
.中断源有5个
.内部RAM为128×8位
.定时器/计数器有两个16位
.串行通道是可编程的
.可编程I/O线为32位
.时钟电路与片内振荡器
.闲置和掉电模式是低功耗的
管脚说明:
GND:
接地。
VCC:
供电电压。
P0口:
P0口是一个双向I/O口,含有8位TTL门电流、漏级开路,各个管脚能够汲取。
高阻输入为P1口的管脚第一次写1。
P0端口可以使用外部程序数据存储器,为数据/地址的第八位使用。
P0口输入作为原始代码编程快闪,检查闪光,P0口输出图元,然后P0外部必须被拉。
P1口:
P1口是一个8位双向I/O口,在里面有上拉电阻,起到缓冲器的功用。
里面拉高是因为P1口引脚写1,能够用作输入,外部拉低P1口,由于里面上拉,可以输出电流。
在FLASH编程和校验的时,可作第八位地址。
P2口:
P2端口是一个8位双向I/O端口与上拉电阻,接收机,输出电流是4TTL门P2口缓冲区,P2写“1”,电阻已上拉,用作输入[]。
输出电流是因为P2口作为输入引脚是外部拉低。
因为内部上拉[]。
外部程序、数据存储器地址在P2端口地址高8位输出。
写“1”时,由于内部上拉的优点,当外部数据存储器读写8个地址,P2口输出的特殊功能寄存器的内容。
收到高八地址信号和控制信号时,P2端口FLASH编程和验证。
P3口:
双向I/OP3端口引脚内部上拉电阻是8口,可接收4个TTL大门的输出电流。
作为时间的输入,“1”是写在P3口在里面,然后拉到较高水平作为输入,由于外部拉低,因为P3引起出口将输出电流。
P3口还有其他功能,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
应该保持RST脚两个机器周期的高电平时间在振荡器复位器件时。
ALE/PROG:
访问外部存储器,存储器地址锁状态字节地址锁存输出级存储器允许。
在这个引脚输入编程脉冲,FLASH编程。
通常,具有稳定的输出正脉冲信号端,是六分之一频振荡器。
因此,它可以用于定时目的。
这个引脚会被拉高。
无效的由于外部执行ALE禁止微处理器。
/PSEN:
外部程序内存闪光灯。
它有两次有效的外部程序存储器进行存取。
他们不会呈现在可以访问外部数据存储器。
/EA/VPP:
保持在/EA的一个较低的水平,在外部程序存储器(0000h-ffffh),带或不带内部程序存储器。
当加密方法1,/EA将内部锁复位;当/EA端一直停留在高电平,那么会出现在内部程序存储器中。
振荡器特性:
XTAL1、XTAL2分别代表反向放大器的输入和输出。
同时也可做片内振荡器。
陶瓷振荡和振荡可以通过在石井。
XTAL2不应满足,如果一个外部时钟源驱动装置。
陶瓷振荡和振荡可以通过在石井。
XTAL2不应满足,如果一个外部时钟源驱动装置。
2.2音乐盒的硬件及其功能
这次制作的数字音乐盒,用到的硬件有:
AT89C51芯片:
主控制器;
LED灯:
闪光灯,LED灯P1.0—P1.7控制八路LED彩灯;
数码管:
主要用于显示音乐序号,在实物中单片机P0.0-P0.6口接数码管的端口控制;
晶振:
11.0592M赫兹的晶振频率提供电路稳定的时钟信号,电路中电容C1、C2容值均为22PF。
电容:
保持一个恒定的偏执电压供给;
喇叭:
播放音乐,由P3.7控制;
电源:
给系统电路供电;
电阻:
控制电路;
开关:
控制播放停止音乐按钮,通过端口P3.2来控制LED灯进行各种各样的颜色变换。
芯片端口P3.3控制程序中音乐的切换,即播放下一首歌。
第3章数字音乐盒的主体设计方案
3.1音乐盒的主体结构
要想使喇叭播放出不同的音符调,产生不同的音乐,通过单片机定时器控制时间频率,产生不同音调的频率波形。
控制音乐电路图
图3-1音乐盒结构框图
单片机程序中放置了五首《劳动最光荣》、《唯一》、《同桌的你》、《小小葫芦娃》、《旗开得胜》不同流行的歌曲风格,同时八个LED颜色不同的灯随着播放歌曲不同的音调变化而变化,另外,数码管将显示该播放歌曲是第几首歌,以P3.3口来切换下一首歌曲。
八个LED灯在不演奏的时候可以随意变化三种模式,带来不一样的享受。
3.2主设计软件的介绍
本设计主要采用两种软件,一种是用以C语言源代码,KEIL软件,另一个是用来模拟的PROTEUS软件。
3.2.1编程软件KEIL的简介
Keil软件是美国公司生产的以C语言开发软件平台系统,C语言的可移植性,灵活应用、可读性的优势,所以很适合初级者学习和使用的软件。
本设计的软件程序使用C语言编写,并在开发环境为KeiluVision4下进行编译、调试。
KeiluVision4和同类发展环境相比包含下列优势:
(1)窗口管理系统的柔和,可以任意拖动视图中的任何地方,包括支持多窗口显示;
(2)增加了众多强大软硬件调试手段,在keiluvision3IDE的基础上,增加了更多大众化的功能;
(3)新的使用界面能够更加方便的使用界面空间构建其余多个窗口,提供清洁,高效的环境来研制需要使用的程序语言。
(4)此款新版本支持更多最新的嵌入式系统的芯片,并且又新添了一些其他的新功能,使得该软件的应用范围更加宽广。
(5)新的版本支持触屏操作,如若想要观察变化中的值,则可以直接触屏操作就可以了,使得用户使用起来更加舒适,既方便又快捷;
(6)此新版本具备功能十分强大的查看窗口,全部的数据类型都能够支持;
(7)新版本中能够对源程序直接进行修改、编译以及调试,还能够对错误编码进行定位。
3.2.2仿真软件PROTEUS的简介
除了编译软件之外,仿真软件PROTEUS也是必不可少的,同样是款非常实用强大的软件,用它可以节省我们不少时间,通过电脑就能模拟我们想要的东西,直到满足我们自己的要求。
PROTEUS软件不仅具有其它EDA工具软件的仿真功能,尤其是能对单片机的仿真效果极佳。
目前已经受到从事单片机相关工作者的青睐。
要完成PCB的设计,就要从原理图布图、然后进行代码调试,再到到单片机与外围电路的协同仿真,这其实是一阵套的从概念到产品的完整设计。
可以说是跨时代的,它可以很好的将电路仿真软件、印刷电路版设计软件和虚拟仿真软件联系到一起的设计平台,其支持8051、PIC、ARM、等多个型号的处理器模型,2010年此软件系统又增添了Cortex和DSP两个系列的处理器模型,相信以后还会持续有其他版本的处理器模型补充。
程序编译上,主要由Keil等编译器支持。
绘制好Proteus原理图后,再双击单片机芯片出现一个对话框,在对话框中点击Keil软件生成的.Hex文件,烧进到芯片中,这时点击Proteus软件播放菜单就可以看到画的原理图仿真状态变化。
PROTEUS是可以被当作课堂单片机教学的优秀典范。
之所以这样说,是因为它的元器件、连接线路等是和单片机所做实验用的是对应的,所以很好的避免的原来单纯的单片机实验的弊端,现在元器件选择、电路连接、软件调试、运行结果等多个中间过程现在都可以仿真监测。
第4章音乐盒硬件设计
4.1总设计框图
经过前文的描述,这次的系统电路实现设计概念已经非常清晰明了,系统设计电路单元总设计框图如下:
图4-1总设计框图
4.2各部分硬件的作用
硬件除了AT89C51芯片外,主要的就是时钟振荡电路、LED彩灯以及数码管的设计。
4.2.1时钟振荡电路
AT89C51包含一个反相放大器的高增益硬件。
引脚XTAL1是放大器的输入端,XTAL2是反相放大器的输出端,此放大器是组成芯片内部电路必不可少的。
外部石英晶体和电容C1,C2连接在反馈回路中的放大器并联振荡电路形式。
一个外部电容C1,C2,电容的大小会对振荡频率有一定的影响,当然,稳定性、振荡振荡器工作的难度和温度稳定性受到影响,所以选择要谨慎些。
如果利用石英晶体,使用容值为15pF到30pF之间容值为22pF的晶体是比较好的选择。
也可以使用外部时钟。
如图所示的外部时钟电路。
从图中看出,内部时钟输入端悬空端子,XTAL2则不连接任何端口。
我们这里产生内部时钟信号通过用一个双分频触发器,然后在连接在外部时钟信号上来完成的。
所以时钟信号的占空比不需要做太多考虑。
振荡器电路图如下:
图4-2单片机各部分振荡电路
4.2.2LED和数码管的设计
(1)8个颜色各异的LED灯,八个端口分别接在P1.0-P1.7,采用共阳极连接在一起,规定当端口都处于低位,LED灯是亮的。
音阶的变化带动发光二极管发生亮或熄的变化,当然是具有一定规律的了。
8个LED颜色灯分别接在单片机P1端口。
LED电路设计如下图:
图4-3LED设计图
(2)数码管连接到P0口,数码管中常用的阴极数码管,数码管和端口连接上拉电阻之间使数码管能正常工作。
如图所示:
图4-4数码管设计图
4.2.3LED发光二极管的优点
发光二极管与其它发光物体相比的优势:
(1)工作需要的电压和电流都比较低这样起到了节约电能源的作用。
(2)可靠性高,抗冲击性能好,不会因为强雷或地震而发生爆破。
(3)寿命长,发光二极管的寿命是家用白炽灯的6—10倍。
发光二极管LED由于工作电流小、低电压,寿命长、使用方便等特点,被人们在生活中广泛使用。
通过调节电流的变化来改变发光二极管LED发光的强弱。
发光二极管LED经常用做光源或者显示板。
通常还将发光二极管的管心做成条状,以来构成显示0~9的10个阿拉伯数字的LED数码管,或者用来构成A、B、C、D、E、F六个大写字母的数码管和a、b、c、d、e、f六个小写字母的数码管,如图所示:
这是一个七段两位带小数点10引脚的LED数码管
第5章音调和节拍的设计
5.1音调和节拍的设计以及音乐基础知识
单片机设计成的音乐没有谐波控制部分,主要由“音调”和“节拍”来表示,音乐能唱多长时间就是靠这两部分[6]。
人们常说低音,中音,高音,其实在音乐上是用a、b、c、d、e、f、g,就像英文名由26个字母组成,音乐由这7个命的名音乐,就是音谱上do,re、mi、fa、so、la、si于是人们又发明了简谱,用阿拉伯数字1、2、3……。
“哆唻咪发梭啦兮”的读音就是这样来的,“音调”,即乐谱上怎样发音,调高调低。
人们把7个组音在拉开距离,切成12等分,一小等分就叫“半个音”。
所以两个半音就是一个全音了。
有时也把7个音叫作自然音,加上#号,就加半音,变高,属于升记音,当然又有降记音,人们就在左上角加个b字母,降低半音,两者合称变化音。
哆音的最顶音高音频率是1046HZ,中间音中音频率是523HZ,能看出成倍数关系,最下面低音音频率是266HZ。
频周期(1/频率)除以2就等于音乐频率脉冲,单片机定时器此时发挥定下这个时间的作用,准确计下这个时间周期,刻下时间后将输出端立刻要反相,再重复上面的操作,就能记下半个周期的时间,最终我们就可以得到脉冲频率了。
把单片机定时器调到计数模式,不断调th0和tl0记下不同频率。
此外,终结和休息[7]可以由00H和跳频码表示,如果为00H查找结果,说这首歌结束;若是FFH查找结果,就会有停顿出现。
数字一点是8度,两个点代表16度以上,一般表示高的部分在数字上面,表示低的部分在数字下面。
做音乐,不能只有调子,节拍也是很重要的,让音乐有节奏感,可以随时调节音乐的快慢。
“节拍”,即Beat,简单说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚。
如果1膜是0.5s,然后1/4拍为0.125s。
至于1拍范畴是多少秒,目前还没有统一,如人的心脏,大多数人有72次每分钟,有的人快一点,慢一些,只要悦耳就行了。
声音的持续时间值,就意味着节拍数,休止表示停止发音。
音乐符号是与脉冲频率息息相关的,是对应关系,所以乐谱就是由这些音符构成的。
没选择一个频率,就要对应的数字来产生音乐。
音乐就是要这些脉冲鼓动变化。
我们一直了解单片机有这方面强大的输出脉冲功能,实验室所做的实验都是围绕定时器,计时器来产生方波频率。
因此,明确音符,频率,一级单片机定时器,计数器几者之间的关系尤为重要。
每一个音符划归一个单独字节,高4位为高低音符,低4位为节拍。
现在设置1拍为1秒,1\4拍就是0.25秒,已知延迟时间就能求出节拍时间。
如果1/2拍为2个延迟则1拍应为4个延迟。
5.2音调和节拍的编码
DOREMIFASOLASI被编码为1,2,3,4,5,6,7,现在重级音DO编号为8,重级音RE编为9,重音MI编为A,重级音FA编为B,重级音SO系列编为C,重级音LA编为D,重级音SI编为E,休止自然为0。
播放长度设置为156ms本程序,4音符十六单位,编号为3,其它的播放时间依次而来。
音调编码高4位,播放时间编码低4位,把音调和节拍整合在一个编码中,以0xff作为曲谱的结束标志。
例1:
做为基调,一拍的分音长度,即一个音符,为0x9。
例2:
发音长度为1\4拍,即四分音符,为0x11。
歌曲播放的设计。
将简谱的编码,存储在一个无符号字符里面。
程序从多个阵列中读出数,从中选出高4位的音调,把值赋给单片机定时器,定时控制喇叭,就会发出一定的音乐;选出低4位,延时时间,然后调用软件延时。
第6章C源程序设计
6.1音乐程序
通过音阶的改变来编写音乐程序,如以用歌曲《回忆的沙漏》为例,编写出的代码(见附录A)
6.2LED花样程序
LED彩灯一共有三种花样:
(1)第一种花样:
先从左到右灯亮、淬火,然后在从右到左灯亮、淬火。
如图:
图6-1LED花样一
程序如下:
ucharcodehuayang1[]=
{0x8d,0x7d,0x7d,0xad,0x9d,0x9d,0xab,0xae,0x9e,0x7e,0x5e,0x6d,0xad,0x77};//花样一
(2)第二种花样:
从左右两边同时亮,淬火,聚向中心,再从中心散到两边亮,淬火。
如图:
图6-2LED花样二
程序如下:
ucharcodehuayang2[]=
{0x81,0x21,0x24,0x18,0x24,0x24,0x81,0x24,0x24,0x18,0x24,0x24,0x81};//花样二
(3)第三种灯亮花样方式:
当奇数灯被点亮时且保持亮不熄灭,到最后一个奇数灯亮后,这些奇数灯全灭。
再然后偶数灯亮也同样的保持亮,到最后一个偶数灯亮后,同奇数灯一样全灭,然后每隔2个LED灯一起亮,并有方向的依次灯亮,再同时灯灭,到最后所有的LED灯一起亮、一起灭。
这种方式的过程如下图:
图6-3LED花样三
程序如下:
ucharcodehuayang3[]=
{0x80,0xa0,0xa8,0xaa,0x40,0x50,0x54,0x55,0xc0,0x30,0x0b,0x03,0xff};//花样三
6.3数码管程序
数码管用来显示正在播放的歌曲序号,如播放第一首歌曲时数码管上有‘1’出现,播放第二首歌曲时数码管上有‘2’出现,同样的,播放第三首歌曲时数码管上有‘3’出现,如此类推。
但当不播放歌曲时数码管只出现‘0’。
如图所示:
图6-4数码管仿真运行图
程序如下:
ucharcodenum[6]={0xc0,0xf9,0xa3,0xa0,0x99,0x94};
switch(count2)
{case0:
P0=num[0];break;
case1:
P0=num[1];break;
case2:
P0=num[2];break;
case3:
P0=num[3];break;
case4:
P0=num[4];break;
case5:
P0=num[5];break;
}
第7章数字音乐盒总设计图与总程序
7.1仿真总图设计图
:
图7-1仿真总设计图
7.2音乐播放切歌部分程序
(见附录B)
第8章结论
本文中数字音乐盒是建立在At89C51单片机程序上设计的,利用一系列单片机智能化设计的多功能实体。
用Proteus软件对所有系统进行仿真制作,而音乐盒源程序的C语言编译部分则是利用Keil软件来实现的。
本系统设计的音乐盒能产生不同的频率波形,主要是通过单片机控制定时器,使喇叭发出不同的音阶音律。
喇叭发出的音调定时常数被转化为乐谱,从而使音乐设备能够演唱出非常动听的音乐节律。
此外,音乐盒不仅收录了几首歌曲,还设计了LED灯的变化规律。
音乐盒播放音乐的同时,彩灯会随着歌曲音调的变化产生不同花样的闪烁。
歌曲和彩灯花的序号不断跳动,数码管同时变化着数字。
在结束播放歌曲时,彩灯也会产生三种不同的闪烁,而且歌曲与花样之间可以转换。
参考文献
[1]王玉凤/刘湘黔/杨欣.51单片机应用从零开始.北京:
清华大学出版社,2008
[2]陈卫兵.单片机技术与应用基础.北京:
人民邮电出版社,2010
[3]张毅刚/彭喜元.单片机原理及接口技术.北京:
人民邮电出版社,2008
[4]杜树春.基于Proteus和KeilC51的单片机设计与仿真.北京:
电子工业出版社,2012
[5]郭