基于单片机的音乐流水灯设计.docx
《基于单片机的音乐流水灯设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的音乐流水灯设计.docx(45页珍藏版)》请在冰点文库上搜索。
基于单片机的音乐流水灯设计
摘要
随着科技和经济的快速发展,人们对生活质量和生活环境的要求不断的提高,多彩多样的彩灯成了现今装饰和美化的时尚和潮流。
千姿万态的流水灯能给人一种视觉冲击。
拟采用单片机AT89C51去实现这种千变万化的流水灯。
单片机技术是一种传统和典型的技术,具有智能化、体积小、集成度高和价格低廉等许多独特的优点。
而且单片机明显优越于其他电子电路,其硬件电路和软件方面都不是特别复杂。
本设计将所学的单片机的理论和动手实践结合起来,主要利用AT89C51单片机设计并制作一个音乐流水灯。
首先设计一个稳定的直流电源电路,然后设计一个复位电路,为单片机的正常工作提供条件,然后再设计时钟电路和声音驱动电路,可以使单片机能够更好的控制与编译音乐部分,另外还设计一个通信电路以方便单片机和PC机的连接与通信,最后还需要设计按键电路用来控制音乐流水灯。
为了使蜂鸣器能够正常的发生还需设计一个音频电路。
硬件电路设计后要将各模块连接起来进行仿真和调试。
软件设计部分则需要将各电路模块进行编译,并设计音乐频率程序、流水灯程序和按键程序,同时将其进行仿真调试和组合调试。
以实现在播放音乐时LED灯有千变万化的效果,以满足对视觉上的享受。
关键词:
单片机;音乐;流水灯;仿真;
ABSTRACT
Withthescienceandtechnologyandtheeconomytherapiddevelopment,peoplepairsqualityoflifeandlivingenvironmenttherequirementsofcontinuouslyimprove,colorfulanddiverseofthelanternbecameanowadaysdecorativeandbeautify'sfashionandtrend.Zimillion-stateofflowingwaterlampcangiveapersononekindsvisualimpact.IntendstoadoptAT89C51microcontrollertogoachievesuchkaleidoscopicofflowingwaterlights.MCUtechnologyisakindoftraditionandtypicaltechnical,withintelligent,thevolumeissmall,highintegrationandpriceinexpensiveandsoonmanyuniqueadvantages.Moreoversingle-chipobviouslysuperiortootherelectroniccircuit,itshardwarecircuitsandsoftwareaspectsofarenotparticularlycomplicated.
Thesingle-chipdesignwillcombinetheoryandpractice,themainuseAT89C51single-chipdesignofamusicalwaterlights.First,designastableDCpowersupplycircuit,andthendesignaresetcircuitforthemicrocontrollertoprovidenormalworkingconditions,andthendesignaclockcircuitandsounddrivercircuit,willenableMCUtobettercontrolandcompilemusicpart,inadditiontodesignatofacilitatecommunicationcircuitchipandPCconnectivityandcommunication,andfinallyalsoneedtodesignthecircuittocontrolthemusickeyslightwater.Inordertomakethebuzzertonormaldesignanaudiocircuitneedstohappen.Afterthehardwarecircuitdesigntoconnectthemodulesforsimulationanddebugging.Softwaredesignwillneedtobecompiledeachcircuitmodule,andthedesignfrequencyofthemusicprogram,waterlightsandkeyprocedures,anditscombinationofsimulationdebugginganddebugging.WhenplayingmusicinordertoachieveakaleidoscopiceffectLEDlightstomeetthevisualenjoyment.
Keywords:
MCU;Music;Lightwater;Simulation
1.绪论
1.1单片机的概念
单片机是在一块芯片上超大规模集成技术集中了中央处理单元(CPU)、随机存储器(RAM)、只读存储器(ROM)、特殊功能寄存器(SFR)和各种输入/输出(I/O)接口(定时/计数器、中断系统接口、并行和串行I/O接口以及A/D转换接口等)的微型计算机,又称微控制器。
目前最强大的单片机系统可以将声音和图像等复杂的输入输出系统集成在一块芯片上,所以单片机亦被称为微控制器和嵌入式控制器。
AT89C51单片机是由美国Atmel公司生产的具有低电压和低功耗、高性能、多功能的通用型8位单片机,其具有庞大而丰富的内部资源:
1个8位中央处理机CPU、12MHz的片内时钟电路、128+21B的片内数据存储器、4KB的片内程序只读存储器、4KB闪存、4个8位并行I/O接口、1个串行I/O接口、2个16位定时/计数器、5个中断源、具有4.25~5.50V的电压工作范围和0~24MHz的工作频率,另外使用AT89C51单片机时无需外扩存储器。
AT89C51芯片的引脚功能如图1-1所示:
VCC:
电源电压
GND:
接地端
RST:
即RESET,复位输入端。
单片机振荡器工作时,若RST引脚上出现高电平并保持2个时钟周期,则实现复位操作,所有的I/O引脚都将复位为“1”,单片机恢复为初始状态。
XTAL1:
即反向震荡放大器的输入和内部时钟工作电路的输入。
XTAL2:
即反向震荡放大器的输出和内部时钟工作电路的输出。
对于CHMOS芯片,该引脚悬空不接。
ALU:
算数逻辑单元。
可进行加、减、乘、除运算和与、或、非、异或等逻辑运算,另外还可执行增量、减量、左移位、右移位、半字节更换以及位处理等操作。
ACC:
8位累加器。
PSW:
8位程序状态字。
其中存放着当前ALU的一些操作状态特征,详见表1-1,其字节地址是D0H。
表1-1程序状态字内部定义
PSW位
PSW.7
PSW.6
PSW.5
PSW.4
PSW.3
PSW.2
PSW.1
PSW.0
位地址
D7H
D6H
D5H
D4H
D3H
D2H
D1H
D0H
位符号
CY
AC
F0
RS1
RS0
OV
F1
P
PSEN:
片外程序存储器读选通信号输出端。
当从外部程序存储器读取数据或者指令时,PSEN的每个机器周期2次有效,以通过数据总线口读回数据或指令。
DPTR:
16位数据指针。
主要用来存放外部RAM的数据地址和ROM数据表的基地址。
内存中包含DPL和DPH两个8位寄存器,其中DPH存放地址的高8位,DPL存放地址的低8位。
SP:
8位堆栈指针。
用于指出当前堆栈的顶部地址。
当单片机内有入栈操作时,SP自动加1,出栈时SP=SP-1。
PC:
16位程序计数器。
只有中断、跳转和调用指令才能使其作其他变化。
其中单片机开机或者复位时,PC的起始值为0000H。
P0口:
P0.0~P0.7统称为P0口。
当不接外部存储器或不扩展I/O接口时,可作为准双向8位输入/输出接口。
当接有外部存储器或扩展I/O接口时,P0口为地址/数据分时复用口。
分时可提供低8位地址总线和8位双向数据总线。
图1-2P0口内部结构图
P1口:
8位准双向I/O接口,包括P1.0~P1.7。
P1.0和P1.1有第二功能,P0.1可用作定时/计数器2的计数脉冲输入端T2;P1.1则可用作定时/计数器2的外部控制端T2EX。
图1-3P1口内部结构图
P2口:
引脚P2.0~P2.7的统称,一般可作为准双向I/O接口。
当接有外部存储器或扩展I/O接口且寻址范围超过256B时,P2口还可当作是高8位地址总线送出高8位地址。
P3口:
双功能口,包括P3.0~P3.7,可作为一般的准双向I/O接口,同时也可以将每1位用于第2功能,另外P3口的每一条引脚均可独立定义为第1功能的输入/输出或第2功能。
图1-4P2口内部结构图
图1-5P3口内部结构图
表1-2P3口引脚第二功能说明
引脚名
第二功能描述
引脚名
第二功能描述
P3.0
RXD串行口输入
P3.2
外部中断0(低电平有效)
P3.1
TXD串行口输入
P3.3
外部中断1(低电平有效)
P3.4
定时器T0外部输入
P3.6
外部RAM写信号(低电平有效)
P3.5
定时器T1外部输入
P3.7
外部RAM读信号(低电平有效)
1.2单片的历史、发展和应用
单片机包括4位/8位/16/位/32位等,从8位单片机的诞生开始,其发展历史大致可分为以下几个阶段:
(1)第一阶段(1976~1978):
单片机发展的初期阶段,主要是探索计机算机的单芯片集成。
(2)第二阶段(1978~1982):
单片机的完善阶段。
①完善的外部总线。
设置了经典的8位单片机的总线结构,包括8位数据总线、控制总线、16位地址总线以及具有多机通信功能的串行通信接口。
②CPU外围功能单元的集中管理模式。
③设置能体现工控特性的位地址空间和位操作方式。
④指令系统趋于丰富和完善,并且增加了许多突出控制功能的指令。
(3)第三阶段(1982~1990):
微控制器的形成阶段。
此阶段是8位单片机得到巩固与发展以及16位单片机的推出阶段,也是单片机向微控制器方向发展的重要阶段。
(4)第四阶段(1990~):
微控制器的全面发展阶段。
纵观单片机的发展历史,由于单片机不断出现的新的特点,其朝着多功能、多选择、高速度、低价格、扩大存储容量和加强I/O功能及结构兼容等方向发展,大致有以下几个方向:
多功能
高性能
低电压和低功耗
串行扩展总线
由于单片机的智能化、体积小、运用灵活,而且成本低等许多显著的优点,使其涉及到我们生活中的每个领域,如家用电器、智能仪表、工业控制、航空航天、计算机网络和通信等。
但单片机的应用意义远远超过了其应用范畴和由此带来的经济效益,更重要的是它已从根本上改变了传统的电子涉及方法和科技策略,使科技上先前无法实现的理论技术得以实现并转化为现实的生产力,推动了社会进步,改善了人类生活。
2.总体设计
2.1设计要求
本次设计的主要内容是利用单片机设计音乐流水灯,其设计要求如下:
(1)用单片机编译和控制。
单片机是本设计的核心部分,所有的程序、数据和指令都需经过单片机编译和控制。
(2)用8个发光二极管作为显示电路。
通过二极管的亮灭来反应流水灯的效果。
(3)播放5首音乐。
本设计中选取了5首音乐,用来实现其相互切换和顺序播放。
(4)能够根据音乐的节奏控制显示灯的亮灭。
根据音乐的节奏和音符,单片机控制对应端口的电平状态,从而控制LED灯的亮灭。
2.2设计方案选择
音乐流水灯可通过多种电路设计完成,而在这里提供常用的三种方案:
(1)采用FPGA作为系统的控制器,即现场可编程门阵列。
其将所有器件集成在一块芯片上,不仅缩小了体积,提高了稳定性,而且还可用EDA软件进行仿真和调试。
FPGA采用了并行的输入输出方式,具有很高的处理速度。
可用来实现各种规模大,密度高,逻辑功能复杂的程序。
由于本设计中对数据处理的速度要求不高,而FPGA集成度高,成本高,芯片的引脚数较多,为电路的设计和焊接增加了复杂程度。
所以不采用FPGA。
(2)采用可编程控制器,即PLC,是一种数字运算操作的系统。
由于具有可编程的存储器,可存储执行各种逻辑运算、计数、定时、顺序控制等操作,通过模拟或数字输入输出模块,控制各种机械或生产过程。
PLC具有可靠性高、操作简单、编程方便和灵活性强等特点。
虽然PLC可以使用多种程序语言,而且采用非的编程语言包括功能模块、梯形图、功能表图等,但是昂贵的价格,使得设计成本较高,故不采用。
(3)采用单片机编程控制。
单片机不仅可以将软件部分和硬件部分结合起来,还可以再恶劣的环境下应用。
单片机在稳定性和可靠性方面都有很好的保证,而且低电压和低功耗,精度较高,成本低等众多的优点,使得本设计采用单片机最为合适。
2.3整体设计思路
通过利用单片机内部的定时器来定时时间,以产生不同频率的脉冲信号,用来驱蜂鸣器发出不同的音节的声音,同时可利用延时子程序来控制音调的节拍。
不同的频率可产生不同的音调,而每个音调都是由一个节拍和一个音符构成。
音调的高低由音符决定,而节拍则是决定是该音调是多少节拍。
由此可见,一个音调占用的是两个字节。
单片机可根据音符字节产生相应的大小次数的延时,同时声音输出口取相反,就可得到该音调的高低音;同时根据设置单元的延时多少,可控制音乐播放速度。
为了编程的简单和方便,一般可将简单的音符和对应的节拍转换成定时和延时常数,分别控制单片机内部定时器产生的相应的脉冲频率和该频率持续的时间,当持续时间到时,程序则会自动查找下一个音符的定时常数和延时常数。
时间常数可通过查表法获得。
以此类推,并循环,就可听到美妙动听的音乐。
将单片机的一个I/O端口定义为声音输出端,在一定的节拍中,根据音符字节的大小来产生延时,同时可将声音输出口不断的置高或置低(即取反),由此便可获得相应的音调。
简谱中每个音符和对应的脉冲频率可用内部定时器的T0方式产生,同时利用延时常数控制脉冲频率持续的时间。
另外可在单片机上的P0~P8脚接LED灯,用来加强观赏性和实用性。
3.系统硬件设计与部分电路说明
3.1硬件设计框图
本设计中的硬件电路是由七个电路模块和单片机构成,通过将电路模块与单片机连接起来,扩展和加强其功能,使各电路共同工作,用来实现音乐流水灯效果。
其中流水灯在本设计中用8个LED灯来实现。
通过控制每个LED灯对应的单片机接口的电平状态来控制LED灯的亮灭,当P0口的电平为高电平时,对应的LED灯发光,若要使LED灯熄灭,则只需要将对应的P0口的电平变为低电平即可。
完整的硬件系统框架图如图3-1:
图3-1硬件系统框架图
本设计的目的是要实现根据音乐声音的大小和节奏来调节流水灯的流水速度和节奏。
将各电路之间的接线连接正确后,对系统进行通电。
单片机刚通电时,对系统进行初始化,扫描P2.2口,判断按键是否按下,同时扫描出并确定的即将执行的功能。
流水灯的流水效果是通过每个灯的亮灭而实现的。
3.2部分电路说明
3.2.1电源及启动电路
本设计若用普通电池供电,需要串联许多电池,驱动LED灯和蜂鸣器,单片机工作时间会很短,而且电池工作时间久了电压不稳定,甚至达不到工作电压。
故本设计拟采用一个电压转换电路获得稳定的5V电压提供给单片机,从而简单的解决了单片机的工作时间,且降低了设计成本。
电路原理图如图3-2所示:
图3-2供电电路
将220V交流电通过变压器转换成低压交流电,再经过桥式整流电路和滤波电容的整流和滤波,在LM7805的GND端和Vin端形成不稳定的直流电压,再经过LM7805的稳压和滤波电路即可产生稳定度好的直流输出电压。
3.2.2复位电路
单片机启动时需要复位,确保CPU和系统各单元都处于确定的初始状态,并且从初始状态开始工作。
图3-3所示即为单片机的手动按键复位电路原理图.
首先经过上电复位,在按下按键时,复位端口RST通过电阻与VCC连接,为复位提供高电平,同时电容经过电阻放电:
放开按键时,电源对电容进行充电,此时RST依旧为高电平,依然是处于复位状态,当充电结束后,电容相当于断路,若RST处于低电平,系统开始正常工作。
图3-3复位电路
3.2.3时钟电路
本电路利用到单片机内的振荡器的反向放大器,XTAL1为输入端,XTAL2为输出端,这两个引脚之间跨接晶体振荡器和可微调电容,便形成了一个稳定的自激振荡器。
该电路原理如图3-4:
图3-4时钟电路
3.2.4通信电路
本电路用来实现系统和PC机的通信。
由于系统和PC机连接进行通信时,通过MAX232电路将PC机串口电平进行转换变成TTL电平。
其电路原理图为:
图3-5通信电路
MAX232具有电平转换功能,内部结构可分为:
电荷泵电路,包括1、2、3、4、5、6引脚和4个电容,提供给RS-232串口±12V两个电源。
数据转换通道,包括7、8、9、10、11、12、13、14引脚,而7脚(T2OUT)、8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)为第一数据通道,11脚(T1IN)、12脚(R1OUT)、13脚(R1IN)、14脚(T1OUT)为第二数据通道;T1IN、T2IN将TTL/CMOS数据转换为RS-232数据,通过T1OUT和T2OUT传送到电脑DP9端口,反之,RS-232数据通过R1IN和R2IN输入转换为TTL/CMOS数据,再从R1OUT、R2OUT输出。
最后一部分则是供电部分,即15脚GND和16脚VCC。
3.2.5键盘电路
本设计采用独立键盘,负责实现任务过程中的任务切换和选择,分别控制单片机的P3.0~P3.5端口,其电路原理图如下:
图3-6键盘电路
按下按键,将低电平连接到I/O口上,通过软件程序对数据进行采集处理分析,便可得到单片机下一步将要执行的操作。
部分代码如:
JNBP3.1,YY1;由按键控制直接跳转到音乐1
JNBP3.2,YY2;由按键控制直接跳转到音乐2
JNBP3.3,YY3;由按键控制直接跳转到音乐3
JNBP3.4,YY4;由按键控制直接跳转到音乐4
JNBP3.5,YY5;由按键控制直接跳转到音乐5
3.2.6流水灯电路
本电路采用8个LED灯,依次接在P1.0~P1.7端口,公共端接地。
若P1口输出高电平,则LED灯亮,若输出的是低电平,则LED灯灭。
其电路原理图如:
图3-7流水灯电路
3.2.7音频电路
本电路负责音乐的播放和停止,如果直接用单片机的输出电压和信号驱动蜂鸣器,发出的声音不仅微弱,而且不清晰。
因此,必须给蜂鸣器附加一个PNP晶体管来作为驱动,其电路原理图为:
图3-8音频电路
当P2.O端口的电平为高电平时,蜂鸣器不发出声音,当P2.0端口的电平为低电平时,才会发出声音。
而本设计中利用单片机处理不同频率的音调后在P2口产生不同频率的信号,从而使蜂鸣器播放出一首完整连续的音乐。
3.3电路原理图及说明
本设计的完整电路原理图如附录一,将电路及启动电路、复位电路、时钟电路、通信电路、键盘电路、流水灯电路和音频电路完整的连接在一起,灵活的工作,同时将整个电路的功能进行扩展,从而完成本设计的任务和要求。
4.系统软件电路设计与分析
4.1音乐程序设计
用程序控制单片机输出端口的电平状态,则在该端口上可产生一定频率的矩形波,接上蜂鸣器就可发出相应的声音;再用延时程序控制电平的持续时间,就可改变输出的频率,从而可改变音调。
同样,音乐音符的节拍用定时器控制,不同的初值会产生不同的定时时间。
将定时器定义为以10ms为时间基准,设置一个中断计数器,单片机可通过判断终端计时器的值控制节拍的时间。
音乐的效果是由每一个音符的时间常数和对应的节拍作为一组,按照一定的顺序将一首音乐里的常数排列而产生。
每个音符用1个字节表示,字节的高4位表示音符的高低,音符的节拍则用低4位表示。
表4-1音符频率对应表
音符
频率/Hz
半周期/us
频率/Hz
半周期/us
频率/Hz
半周期/us
低音区
中音区
高音区
1
262
1908
523
0956
1046
0478
1#
277
1805
554
0903
1109
0451
2
294
1700
578
0842
1175
0426
2#
311
1608
622
0804
1245
0402
3
330
1516
659
0759
1318
0372
4
349
1433
698
0716
1397
0358
4#
370
1350
740
0676
1480
0338
5
392
1276
784
0638
1568
0319
5#
415
1205
831
0602
1661
0292
6
440
1136
880
0568
1760
0284
6#
466
1072
932
0536
1865
0268
7
494
1012
988
0506
1976
0253
注:
“#”表示半音,及上升或下降时的半音,乘以2就提升该声音一个八度音阶,减半就降一个八度音阶。
表4-2节拍码对照表
1/4节拍
1/8节拍
节拍码
节拍数
节拍码
节拍数
1
1/4拍
1
1/8拍
2
2/4拍
2
1/4拍
3
3/4拍
3
3/8拍
4
1拍
4
1/2拍
5
1又1/4拍
5
5/8拍
6
1又1/2拍
6
3/4拍
7
1又3/4拍
7
7/8拍
8
2拍
8
1拍
9
2又1/4拍
9
1又1/8拍
A
2又1/2拍
A
1又1/4拍
B
2又3/4拍
B
1又3/8拍
C
3拍
C
1又1/2拍
D
3又1/4拍
D
1又5/8拍
E
3又1/2拍
E
1又3/4拍
F
2又3/4拍
F
1又7/8拍
表4-3各调节拍的时间表设定
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.1音乐程序流程图
图4-1音乐程序流程图
4.1.2音乐程序
本设计的主要目的是将5首音乐进行顺序播放,并且可以相互切换,每首歌曲播放结束后有一定的间隔时间,详细程序见附录二.
部分