基于单片机的可控数字音乐盒设计基于51单片机的可控数字音乐盒设计摘要本文是一篇基于AT89C51单片机的可控数字音乐盒的程序设计。该音乐盒是一个依据单片机技术原理,通过PROTEUS仿真软件对硬件电路进行仿真制作以及利用KEIL软件对音乐盒源程序进行C语言编译,而设计制作出的一个多功能数字音乐盒。该音乐盒通过控制单片机内部的定时器来产生不同频率的方波,驱动喇叭发出不同音调的音乐。该程序通过把乐谱转化成相应的定时常数来驱动发音设备演奏出悦耳动听的音乐。本音乐盒一共设计了五首歌曲,同时还设计了三种LED彩灯的变化花样。在演奏歌曲时彩灯随音调闪烁。在停止演奏歌曲时三种彩灯花样开始闪烁。歌曲和花样均可随意切换。与此同时,数码管也不断变化数字,以此显示歌曲和彩灯花样的序号。关键词:数字音乐盒;AT89C51;KEIL;PROTEUS;数码管基于单片机的可控数字音乐盒设计目录1前言------------------------------------------------------------------------------------------------------12单片机和音乐盒硬件的功能------------------------------------------------------------------------22.1AT89C51芯片的功能----------------------------------------------------------------------------22.2音乐盒的硬件及其功能-------------------------------------------------------------------------43数字音乐盒的主体设计方案------------------------------------------------------------------------53.1音乐盒的主体结构-------------------------------------------------------------------------------53.2主设计软件的介绍-------------------------------------------------------------------------------53.2.1编程软件KEIL的简介-----------------------------------------------------------------53.2.2仿真软件PROTEUS的简介-----------------------------------------------------------64音乐盒硬件设计---------------------------------------------------------------------------------------84.1总设计框图----------------------------------------------------------------------------------------84.2各部分硬件的作用-------------------------------------------------------------------------------84.2.1时钟振荡电路------------------------------------------------------------------------------84.2.2LED和数码管的设计--------------------------------------------------------------------95音调和节拍的设计-----------------------------------------------------------------------------------115.1音调和节拍的设计以及音乐基础知识------------------------------------------------------115.2音调和节拍的编码------------------------------------------------------------------------------136源程序设计--------------------------------------------------------------------------------------------146.1音乐程序------------------------------------------------------------------------------------------146.2LED花样程序-------------------------------------------------------------------------------------156.3数码管程序---------------------------------------------------------------------------------------167数字音乐盒总设计图--------------------------------------------------------------------------------177.1仿真总设计图------------------------------------------------------------------------------------177.2实物总设计图------------------------------------------------------------------------------------188结论-----------------------------------------------------------------------------------------------------19参考文献--------------------------------------------------------------------------------------------------20致谢--------------------------------------------------------------------------------------------------------21附录A总程序源代码及注释-------------------------------------------------------------------------22基于单片机的可控数字音乐盒设计第1页共34页1前言随着科技越来越发达,单片机技术也越来越纯熟,单片机的应用也越来越广泛,可以说几乎很难找到哪个领域没有单片机的踪迹。如今,单片机在各个领域都起着至关重要的作用[1]。单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。随着人类社会的发展,人们对于视听方面的享受提出了更高的要求。而传统的音乐盒大部分是机械型的,体积庞大,而且沉重,发音单调,且不悦耳,不能实现大批量的生产,所以很难满足当代人们的需求。但是本文设计的数字音乐盒是以单片机为核心元件的数字音乐盒。单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点。因此该数字音乐盒也就具有体积小,重量轻,能演奏各种各样的音乐,功能多,外观绚丽多彩,使用非常方便等诸多优点。而且具有一定的开发价值。基于单片机的可控数字音乐盒设计第2页共34页2单片机和音乐盒硬件的功能随着当代单片机技术的突飞猛进,单片机的功能也越来越强大,主要包括有:(1)单片机集成度高;(2)系统结构简单,使用方便,实现模块化;(3)单片机可靠性高,处理功能强,速度快;(4)低电压,低功耗,便于生产便携式产品;(5)控制功能强大。而本文设计采用的是AT89C51单片机,这是一款性价比非常高的单片机。2.1AT89C51芯片的功能AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器。俗称单片机[2]。如图:图2-1AT89C51单片机引脚图基于单片机的可控数字音乐盒设计第3页共34页图2-2AT89C51单片机实物图引脚功能[3]:P0.0-P0.7:为一个8位漏级开路双向I/O口;P1.0-P1.7:是一个内部提供上拉电阻的8位双向I/O口;P2.0-P2.7:为一个内部上拉电阻的8位双向I/O口;P3.0-P3.7:管脚是8个带内部上拉电阻的双向I/O口;P3.0:RXD(串行输入口);P3.1:TXD(串行输出口);P3.2:INT0(外部中断0);P3.3:INT1(外部中断1);P3.4:T0(记时器0外部输入);P3.6:WR(外部数据存储器写选通);P3.7:RD(外部数据存储器读选通);EA:当EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,此间内部程序存储器;P3.5:T1(记时器1外部输入);ALE:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节;PSEN:外部程序存储器的选通信号;基于单片机的可控数字音乐盒设计第4页共34页RST:复位输入;XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入;XTAL2:来自反向振荡器的输出。2.2音乐盒的硬件及其功能本文设计的数字音乐盒,所需要的硬件有:AT89C51芯片:主控制器;LED彩灯:灯光闪烁,P1.0-P1.7控制八路LED彩灯;数码管:音乐序号显示,P0.0-P0.6控制数码管;晶振:给单片机正常工作提供稳定的时钟信号,电路为12MHZ晶振频率工作,起振电路中C1、C2均为30PF。电容:保持一个恒定的偏执电压供给;喇叭:发出声音,P3.7控制喇叭电源:供电;电阻;控制电路;开关:控制音乐,P3.2控制LED彩灯花样的切换,P3.3控制音乐的切换。基于单片机的可控数字音乐盒设计第5页共34页3数字音乐盒的主体设计方案3.1音乐盒的主体结构该音乐盒主要是通过控制单片机内部的定时器来产生不同频率的方波,驱动喇叭发出不同音调的音乐。如图:图3-1音乐盒主体结构框图本设计是一个基于AT89C51系列单片机的数字音乐盒,一共设计了五首不同风格的歌曲,在播放歌曲同时八路LED彩灯随音调变化而变化,同时利用数码管显示歌曲的序号,以便切换歌曲。在不播放歌曲的时候还设计了八路LED彩灯,可以随意变化三种花样,给人们带来视听的双重享受。一共设计了两个开关,一个用以切换LED彩灯花样,一个用以切换歌曲。3.2主设计软件的介绍本次设计主要用到了两款软件,一款是用以对源代码进行C语言编程的KEIL软件,另一款则是用以对实物设计进行仿真的PROTEUS软件[4]。3.2.1编程软件KEIL的简介要进行单片机的开发设计,首先离不开的就是软件,而如果你使用C语言编程,那么KEIL几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用基于单片机的可控数字音乐盒设计第6页共34页的集成环境、强大的软件仿真调试工具也会令你事