摘要
随着人们的生活节奏越来越快,很多人长期处于大压力下,身心开始出现大大小小的问题。音乐对于调节人们
的心理压力是一种很有效的方式。因此,音乐盒开始进入大众的视野当中。基于传统音乐盒的改造和单片机的应
用,产生了电子式音乐盒。这种以单片机为核心制作而成的音乐盒与传统机械式音乐盒相比更小巧,而且包装漂
亮,制作工艺简单,且成本低廉,更加符合当代人们的需求。
本设计产品以STC89C52单片机为核心,设计出一款数字音乐盒。该音乐盒有以下主要部分组成:STC89C52单片
机的最小系统, Nokia 5110显示,Mini MP3模块,轻触按键等。功能上实现MP3,WAV格式的音乐播放,可以播放U
盘和内存卡内的音乐。本系统共有五个按钮,中央按钮的回放和暂停;上、下、左、右四个键,分别为上、下一
曲、音量加、音量减。中文液晶显示音乐播放的状态,Mini MP3模块自带功放,直接接喇。本系统采用USB电源供
电,提供电源线,可以插到电脑、手机充电器、充电宝上供电,十分方便。硬件电路图布局以Altium Designer为设
计平台,进行PCB设计,完成数字音乐盒的整体设计、 实现。
关键词:单片机;音乐盒;LCD;PCB。
绪论
1、课题设计的研究背景
音乐是人们表达内心感受的一种方式,其具有大众的魅力,吸引着来自不同地区和国家的人们共同欣赏,激发
调动人们内心深处的悸动。随着人们的生活节奏越来越快,很多人长期处于大压力下,身心开始出现大大小小的问
题。音乐对于调节人们的心理压力是一种很有效的方式。因此,音乐盒开始进入大众的视野当中。进入21世纪,随
着人类社会的进步,单片机的广泛应用,使当今的电子设备性能得到了进一步的提高,电子技术也步入了一个新的
阶段。电子设备更新的时间缩短了。
2、课题设计的目的和意义
传统的音乐盒是由一个金属圆筒驱动的,里面装着一个金属圆筒,圆筒上的金属圆环与金属圆环碰撞,发出金
属的声响。不过,这种机械的音乐盒,不仅体积大,而且声音也很单调。此外,为了保证声音的稳定性,机械音乐
盒需要平放,不能晃动,价格昂贵,无法量产。随着人类社会的发展,人们的生活水平飞速提升,传统形式的机械
音乐盒已经不能满足人们日益增长的生活需求,人们开始对音乐有了更高层次的追求。基于传统音乐盒的改造和单
片机的应用,产生了电子式音乐盒。这种以单片机为核心制作而成的音乐盒与传统机械式音乐盒相比更小巧,而且
包装漂亮,制作工艺简单,且成本低廉,更加符合当代人们的需求。
第一章 系统总体方案设计
1.1功能概述
通过以STC89C52单片机为核心,设计一款数字音乐盒。该音乐盒主要由以下几部分组成:STC89C52单片机的最
小系统, Nokia5110显示,Mini MP3模块,轻触按键等。功能上实现MP3,WAV格式的音乐播放,可以播放U盘和内存
卡内的音乐。系统有五个按键,中间的按键播放和暂停功能按键;上下左右四个按键分别是上一曲、下一曲、音量加和音量减。中文液晶显示音乐播放的状态,Mini MP3模块自带功放,直接接喇。本系统采用USB电源供电,提供电
源线,可以插到电脑、手机充电器、充电宝上供电,十分方便。硬件电路图布局以Altium Designer为设计平台,进
行PCB设计,完成数字音乐盒的整体设计、 实现。
1.2 方案设计
该音乐盒是以STC89C52单片机为核心,加上外围电路如USB供电电路、按键控制电路、MiniPlay音乐模块和
Nokia5110液晶显示模块组成,音乐盒设计框图如下所示:
图 1-1音乐盒设计框图
第二章 硬件设计
2.1 主要元件的选择
该方案以单片机为核心,由控制、显示、播放、键控制四部分组成。首先,以STC89C52单片机为核心,以Nokia
5110显示、Miniplay音乐播放模块、按键控制。
首先,通过键盘上的按钮,让单片机知道该做什么,比如上一首歌、下一首歌、播放、暂停等等,然后由 MCU
将接收到的信号显示在 LCD上,再将指令发送到 Miniplay上, Miniplay就会对与它相连的存储器进行相应的处
理。
2.2 单片机最小系统
本系统的资源是完全开放的,可以与其他的模块板或自己的使用者电路相结合,可以完成任何的试验功能。界
面灵活,易于操作。
2.2.1 单片机部分引脚说明
图 2-1单片机引脚
接外部晶体和微调电容的一端;片内它是振荡电路反相放大器的输出端,振荡电路的频率就是晶体固
有频率。若需采用外部时钟电路时,该引脚输入外部时钟脉冲。
2)控制信号引脚RST,ALE,PSEN 和EA如下:
地址锁存允许信号端。当8051 上电正常工作后,ALE 引脚不断向外输出正脉冲信号,此频率为振荡器频
率fOSC 的1/6。CPU 访问片外存储器时,ALE 输出信号作为锁存低8 位地址的控制信号。
PSEN 29
程序存储允许输出信号端。在访问片外程序存储器时,此端定时输出负脉冲作为读片外存储器的选通信
号。此引肢接EPROM 的OE 端(见后面几章任何一个小系统硬件图)。PSEN 端有效,即允许读出
EPROM/ROM 中的指令码。PSEN 端同样可驱动8 个LS 型TTL 负载。要检查一个8051/8031 小系统上电后
CPU 能否正常到EPROM/ROM 中读取指令码,也可用示波器看PSEN 端有无脉冲输出。如有则说明基本上
工作正常。外部程序存储器地址允许输入端/固化编程电压输入端。当EA 引脚接高电平时,CPU只访问片内EPROM
/ROM并执行内部程序存储器中的指令,但当PC(程序计数器)的值超过0FFFH(对8751/8051 为4K)时,将自
动转去执行片外程序存储器内的程序。当输入信号EA 引脚接低电平(接地)时,CPU 只访问外部EPROM
/ROM 并执行外部程序存储器中的指令,而不管是否有片内程序存储器。对于无片内ROM 的8031 或8032,
需外扩EPROM,此时必须将EA 引脚接地。此引脚的第二功能是Vpp 是对8751 片内EPROM固化编程时,作
为施加较高编程电压(一般12V~21V)的输入端。
3)输入/输出端口P0/P1/P2/P3如下:
表 2-4 P3引脚功能
端口引脚 第二功能
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 INTO(外中断0)
P3.3 INTO(外中断1)
P3.4 T0(定时/计数器0)
P3.5 T1(定时/计数器I)
P3.6 WR(外部数据存储器写选通)
P3.7 RD(外部数据存储器读选通)
此外,P3口还接收一些用于FLASH闪速存储器编程和程序校验的控制信号。
2.2.2定时器
AT89C52除了与AT89C51相同的定时/计数器0和定时/计数器1 外,还添加了一个定时/计数器2 .定时/计数器2
的控制和状态位为T2CON (参见表 2-5定时/计数器2功能) ,该对(RCA02H、RCAP2L)是以16 位捕获方式或16位自
动重装载方式下的捕获/自动重装载寄存器。
表 2-5定时/计数器2功能
符号 功能
TF2
定时器2溢出标志。定时器2溢出时,又由硬件置位,必须由软件 清0,当RCLK=1或TCLK=1时,定时器2溢
出,不对TF2置位。
EXF2
定时器2外部标志。当EXEN2=1,且当T2EX引脚上出现负跳变而出现捕获或重装载时,EXF2置位,申请中
断.
RCLK
接收时钟允许。RCLK=1时.用定时器2溢出脉冲作为串行口(工作于工作方式1或3时)的接收时钟,
RCLK=0,用定时器l的溢出脉冲作为接收时钟。
TCLK
发送时钟允许。TCLK=1时,用定时器2溢出脉冲作为串行口(工作于工作方式1或3时)的发送时钟,
RCLK=0 .用定时器l的溢出脉冲作为发送脉冲。
定时器2外部允许标志。当EXEN2=1时,如果定时器2未用于作串行口的波特率发生器,在T2EX端出现负跳变EXEN2脉冲时,激活定时器2 捕获或重装载.EXEN2=0,T2EX端的外部信号无效。
TR2 定时器2启动/停止控制位。TR2=l时,启动定时器2。
C/T2 定时器2定时方式或计数方式控制位。C/T2=0,选择定时方式。C/T2=1时,选择对外部事件计数方式(下
降沿触发)。
CP
/RL2
捕获/重装载选择。CP/RL2=l时,如EXEN2=l.且T2EN双端出现负跳变脉冲时发生捕获操作。CP/RL2=0时,
若定时器2溢出或EXEN2=l条件下,T2EN双端出现负跳变脉冲,都会出现自动重装载操作。当RCLK=1或
TCLK=1时则无效,在定时器2溢出时强制其自动重装载。
2.2.3复位电路
在上电或复位期间,CPU的复位状态被控制,使CPU在此期间处于复位状态,而不是一开机或一次复位后就开始
工作,避免CPU出现错误操作,同时还可以改善电磁兼容性能。
在单片机的RESET端,复位电路有两种操作模式:上电自动复位和按键手动复位。上电自动复位是通过以下方式
来完成的:在启动的一刹那, RC回路开始充电, RESET端产生一个正脉冲,当充电电流减小时, RESET的电压会逐
渐降低。按键手动复位用电平方式。按键电平复位是相当于RESET通过电阻接高电平。
2.3 液晶显示模块
2.3.1 Nokia5110显示
本次设计采用的液晶是Nokia5110显示屏。Nokia5110与其他显示屏相比有很多的优点。首先,Nokia5110性价比
高,Nokia5110可以显示15个汉字而且价格较为低廉。其次,接口简单,Nokia5110仅四根I/O线即可驱动。再次,
Nokia5110与其他相比速度较快。最后,Nokia5110工作电压3.3V,正常显示时工作电流200uA以下,具有掉电模式,
适合电池供电的便携式移动设备。
2.3.2 Nokia5110引脚
Nokia5110引脚如下:
表 2-6 Nokia5110引脚功能
引脚名称 引脚序号 功能描述
RST 1 针复位显示。它是低电平有效引脚;您可以通过将其拉低来重置显示。
CE 2 片选引脚。引脚用于选择共享相同SPI总线的众多连接设备之一。它也是一个有效的低引脚。
DC 3 数据和命令切换脚。针告诉显示器它接收的数据是命令还是可显示的数据。
DIN 4 数据输入。SPI接口的串行数据引脚
CLK 5 时钟引脚。SPI接口的串行时钟引脚
VCC 6 引脚为LCD提供电源
BL 7 引脚控制显示屏的背光。要控制其亮度。
GND 8 电源地
2.4 Miniplay音乐模块
2.4.1 MP3-TF-16P
本设计采用的是MP3-TF-16P。MP3-TF-16P是一款语音模块,只需简单的串口指令,就可以完成所选歌曲的播
放,音乐的播放等功能,不需要重复复杂的基本操作,使用方便、稳定、可靠。
MP3-TF-16P特性参数如下:
表2-7 MP3-TF-16P特性参数
名称 参数
MP3文件格式
支持所有比特率11172-3和 ISO13813-3 layer3音频解码
采样率支持(KHZ):8/11.025/12/16/22.05/24/32/44.1/48
支持 Normal、Jazz、Classic、Pop、Rock 等音效
USB 接口 2.0标准
UART 接口 标准串口,TTL 电平,波特率可设
输入电压 3.3V-5V
额定电流 15ma[不带 U 盘]
尺寸 21(长)*21(宽)[单位:mm]
工作温度 -40度 – 80度
湿度 5% ~ 95%
表 2-8 MP3-TF-16P管脚功能
引脚序号 引脚名称 功能描述 备注
1 VCC 模块电源输入 3.3V-5V,建议用5V,不可超过5.2V
2 RX UART 串行数据输入
3 TX UART 串行数据输出
4 DAC_R 音频输出右声道 驱动耳机、功放
5 DAC_L 音频输出左声道 驱动耳机、功放
6 SPK1 接小喇叭+ 驱动小于3W 喇叭
7 GND 地 电源地
8 SPK2 接小喇叭- 驱动小于3W 喇叭
9 IO1 触发口 默认上一曲(长按音量-)
10 GND 地 电源地
11 IO2 触发口 默认下一曲(长按音量+)
12 ADKEY1 AD 口1 当触发时是第一段(长按循环第一段)
13 ADKEY2 AD 口2 当触发时是第五段(长按循环第五段)
14 USB+ USB+ DP 接 U 盘或插电脑的 USB 口
15 USB- USB- DM 接 U 盘或插电脑的 USB 口
16 BUSY 播放指示 有音频输出低,无音频输出高
2.5按键输入模块
通过使用按键使操作人员与单片机之间的通信变得更加容易。常用的有两类:独立键盘和矩阵键盘。因为本设
计需要的按键数很少,只有五个分别是音量加、音量减、下一首歌曲、上一首歌曲和暂停和播放音乐,硬件电路也
很简单,所以采用了独立键盘的方式。
PCB版图
原理图
第三章软件设计
3.1 软件设计整体流程步骤
本次设计所使用的计算机程序设计软件为keil4。
整个系统的设计过程包括:第一步是串口通信和LCD显示的初始化;其次是对按键进行扫描,实现对按键的实时
检测;最后,将处理好的数据,用串口发送到音乐模块,告诉他们要做什么,然后发送给液晶显示让他们进行数据
的显示。
流程图如下所示:
图 3-1系统流程图
3.2 按键程序设计
首先进行初始化,然后在初始化之后进行;如果按下播放暂停键,在播放时会发出一个暂停指令,音乐盒会执
行暂停的指令,而在暂停时,会发出播放指令,音乐盒会执行播放指令,让音乐继续播放;
如果上一首按键按下,将则会发出上一首歌曲的指令,而音乐盒则会按照上一曲指令,播放上一首歌;如果下
一首按键按下,则会发送下一首的指令,音乐盒将会执行下一首歌曲命令播放当前歌曲的下一首;如果加音键按下
,将会发送加音命令,音乐盒将会执行增加音量的命令,如果减音键按下,将会发送减音命令,音乐盒将会执行减
小音量的命令。
3.3 Nokia 5110 程序设计
首先, Nokia 5110在打开电源后,因为它的内存和RAM的内容不明确,因此执行了初始化,完成复位;然后要
进行设置Nokia 5110液晶的坐标;最后根据传输的指令来进行相应的显示。84x48 的点阵LCD,可以显示4行汉字。
Nokia 5110 显示流程如下所示:
图 3-3 Nokia5110显示流程图
3.4 MP3-TF-16P程序设计
首先,在打开电源之后,进行初始设定。在完成了初始化之后,系统就会自动进入到设备的播放等待模式,并在最
后的播放命令中等待接收和播放。
MP3-TF-16P 串口操作流程如下所示:
图 3-4 MP3-TF-16P串口操作流程图
附录三 程序
#include "reg52.h"//51单片机头文件
#include "Delay.h" //延时函数文件
#include "nokia_5110.h"//Nokia_5110函数文件
//发送命令。校验和计算:
/*
7E ff 06 11 00 00 01 fe e9 ef 0x11这个是循环播放的命令 01是启动循环 00是停止循环
0-ff+06+11+01=fe e9
*/
sbit KEY1 = P3^4;
sbit KEY2 = P3^2;
sbit KEY3 = P3^6;
sbit KEY4 = P3^3;
sbit KEY5 = P3^5; //按键定义
sbit BUSY = P2^0; //miniplay忙检测
/********************************************************************
* 名称 : UART_Init()
* 功能 : 串口初始化,晶振11.0592,波特率9600
* 变量 : 无
* 返回值 : 无
********************************************************************/
void UART_Init(void)
{
TMOD = 0x20; //定时器模式选择
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd; //设置波特率 9600
TL1 = 0xFd;
TR1 = 1; //启动定时器1
//ES = 1; //开串口中断
//EA = 1; //开总中断
}
/********************************************************************
* 名称 : PSend_Hex()
* 功能 : 发送字符串函数,可控制发送长度
* 变量 : 无
* 返回值 : 无
********************************************************************/
void Send_Hex(unsigned char *p,unsigned char num)
{
while(num--) //剩余发送的字符数
16
{
SBUF = *p; //将要发送的数据赋给串口缓冲寄存器
while(!TI);//等待发送结束
TI = 0; //软件清零
p++; //指针加一
}
}
//下面这一块是编写的命令数据,单片机与音乐模块的通信是串口通信,发送对应的命令就可以控制模块播放
音乐
void Music_DOWN(void) //下一首命令
{
unsigned char Table[10]; //定义一个数组
Table[0]= 0x7E;
Table[1]= 0xFF;
Table[2]= 0x06;
Table[3]= 0x01;
Table[4]= 0x00;
Table[5]= 0x00;
Table[6]= 0x00;
Table[7]= 0xFE;
Table[8]= 0xFA;
Table[9]= 0xEF; //将命令赋值给数组
Send_Hex(Table,10); //扔给发送函数
}
void Music_UP(void) //上一首
{
unsigned char Table[10];
Table[0]= 0x7E;
Table[1]= 0xFF;
Table[2]= 0x06;
Table[3]= 0x02;
Table[4]= 0x00;
Table[5]= 0x00;
Table[6]= 0x00;
Table[7]= 0xFE;
Table[8]= 0xF9;
Table[9]= 0xEF;
Send_Hex(Table,10);
}
//上面发送的命令都是固定的,但是对于调节音量,数据是变化的所以就要计算校验和
void DoSum(unsigned char *Str,unsigned char len)//校验位计算
{
unsigned int xorsum = 0;
unsigned char i;
for(i=1;i<len;i++)
{
xorsum = xorsum + Str[i];
17
}
xorsum = 0 - xorsum;
*(Str+i) = (unsigned char)(xorsum >> 8);
*(Str+i+1) = (unsigned char)(xorsum & 0x00ff);
}
void Music_Vol(unsigned char Vol)
{
unsigned char Table[10];
Table[0] = 0x7E;
Table[1] = 0xFF;
Table[2] = 0x06;
Table[3] = 0x06; //指令
Table[4] = 0x00;
Table[5] = 0x00;
Table[6] = Vol;//音量
DoSum(Table,7);//计算校验码
Table[9] = 0xEF;//结束码
Send_Hex(Table,10);//发送指令数据
}
void Music_STOP(void) //停止播放命令
{
unsigned char Table[10];
Table[0]= 0x7E;
Table[1]= 0xFF;
Table[2]= 0x06;
Table[3]= 0x0E;
Table[4]= 0x00;
Table[5]= 0x00;
Table[6]= 0x00;
Table[7]= 0xFE;
Table[8]= 0xED;
Table[9]= 0xEF;
Send_Hex(Table,10);
}
void Music_Play(void) //开始播放命令
{
unsigned char Table[10];
Table[0]= 0x7E;
Table[1]= 0xFF;
Table[2]= 0x06;
Table[3]= 0x0D;
Table[4]= 0x00;
Table[5]= 0x00;
Table[6]= 0x00;
Table[7]= 0xFE;
Table[8]= 0xEE;
Table[9]= 0xEF;
18
Send_Hex(Table,10);
}
/********************************************************************
* 名称 : main()
* 功能 : 主函数
* 变量 : 无
* 返回值 : 无
********************************************************************/
void main(void)
{
unsigned char M_VOL,flag=0;
unsigned char Table[2];
Delay_ms(1000);
LCD_init(); //初始化液晶
LCD_clear(); //清除液晶显示
LCD_write_chinese_string(10,0,12,5,0,0);//显示“音乐播放器”
LCD_write_chinese_string(0,2,12,2,5,0);//显示“状态”
//LCD_write_chinese_string(40,2,12,2,9,0);//显示“播放”
LCD_write_chinese_string(40,2,12,2,11,0);//显示“停止”
LCD_write_chinese_string(0,4,12,2,7,0);//显示“音量”
UART_Init(); //串口初始化
Delay_ms(100);
M_VOL = 25; //默认音量25
Table[0] = M_VOL/10+0x30;
Table[1] = M_VOL%10+0x30;
LCD_write_english_string(40,4,Table); //显示音量数据
while(1)
{
if(!KEY2)//上一首
{
Delay_ms(20);
Music_UP();
LCD_write_chinese_string(40,2,12,2,9,0);//显示“播放”
while(!KEY2);
Delay_ms(500);
}
if(!KEY3)//下一首
{
Delay_ms(20);
Music_DOWN();
LCD_write_chinese_string(40,2,12,2,9,0);//显示“播放”
while(!KEY3);
Delay_ms(500);
}
if(flag==1)
{
if(BUSY)
19
{
Delay_ms(20);
Music_DOWN();
LCD_write_chinese_string(40,2,12,2,9,0);//显示“播放”
Delay_ms(500);
}
}
if(!KEY4)//音量加 //按键按下
{
Delay_ms(20); //短延时消抖
M_VOL++; //音量数据加
if(M_VOL>30)M_VOL = 30; //音量数据的限制
Music_Vol(M_VOL); //发送音量数据
Table[0] = M_VOL/10+0x30;
Table[1] = M_VOL%10+0x30; //将音量数据赋值给数组
LCD_write_english_string(40,4,Table); //更新显示的音量数据
Delay_ms(500);
}
if(!KEY5)//音量减
{
Delay_ms(20);
if(M_VOL<1)M_VOL = 1;
M_VOL--;
Music_Vol(M_VOL);
Table[0] = M_VOL/10+0x30;
Table[1] = M_VOL%10+0x30;
LCD_write_english_string(40,4,Table); //功能同上
Delay_ms(500);
}
if(!KEY1)//停止
{
Delay_ms(20);
if(!KEY1)//停止
{
flag++;
if(flag==2)flag=0; //这个按键按下,flag就会加一,当它等于2就会变成0,也就是说,数据是0,1.变化
//Delay_ms(20);
if(flag==0) //当等于0,发送停止命令,显示更新为停止显示
{
Music_STOP();//停止 // Mode(); //循环播放
LCD_write_chinese_string(40,2,12,2,11,0);//显示“停止”
}
if(flag==1) //当等于0,发送播放命令,显示更新为播放显示
{
Music_Play();
// Delay_ms(20);
LCD_write_chinese_string(40,2,12,2,9,0);//显示“播放”
}
}
}
}
第四章 成品的组装与测试
4.1 元件间引脚连接
对于Mini MP3模块,引脚1接电源VCC,引脚2接单片机的P31,引脚3接单片机P30,引脚6和引脚8与Phonejack
Stereo SW和喇叭相连,引脚7和引脚10分别接地。
对于Nokia 50模块,引脚6和引脚7连接电源VCC,引脚8接地,引脚、引脚2、引脚3、引脚4和引脚5分别连接单片的
P0、P、P2、P3和P4。
对于按键模块,五个独立按键分别接单片机的P32、P33、P34、P35和P36,另一端接地。
4.2 元件的焊接及注意事项
元件焊接步骤:
1.根据设计准备好元件,新的电子元件可以直接焊接。
2.将加热好的电烙铁以45°角方向放在元件的引脚和和线路板的交界处。
3.加热3-5秒后再将焊锡丝放在交界处,等待焊锡充分融化并且结合后再移开。
4.可以使用吹气微微扇风等方式使得焊点快速冷却。
5.重复以上步骤将所有元件焊接完成。
元件焊接的注意事项:
首先,焊点要尽量的小并且牢固,焊接的时间要尽量的短。其次,焊锡未凝固前不要摇晃元件,以防元件虚
焊。最后,焊接多种元件时,要按照一定顺序,比如按照元件的大小,以元件先大后小的原则进行焊接,防止元件
的焊接遗漏。
4.3 设计成品检验
首先,检查连线是否正确。可以根据原理图与实际的电路板进行比对,然后根据焊接时先大后小的原则来进行
排查,把每个元件引脚的连线一次性比对完成,检查每个去处在电路图上是否正确和存在。
其次,进行通电检测。接通电源后,应首先检查各部件的工作状况,如有无烟、有没有异味等。若发现有任何
不正常的情况,请马上关掉电源,并在排除故障后重新供电。
然后,进行静态测试。在没有输入信号的情况下,利用万用表测量电路中各个点的电势,并与理论计算结果进
行对比,以确定电路的直流运行状况。
最后,进行动态测试。将信号加到电路的输入端,依次检查各个部件的功能,如果出现异常,要及时分析原
因,排除故障,再进行调整直至达到规定为止。
第五章 总结与展望
5.1总结
本设计是把音乐和电子联系在一起。以STC89C52单片机为核心,通过按键控制达到控制音乐播放的目的,并把
当前的信息通过液晶显示屏显示出来,硬件电路图布局以Altium Designer为设计平台,进行PCB设计,完成数字音乐
盒的整体设计、实现。
5.2展望
音乐是由人们在长期发展中为了表达各种情感而迸发出的,具有大众魅力,也是舒缓人们心情的一剂良药。随
着社会的发展,人们对于通过音乐来舒缓内心焦躁的方式的需求日益增加。如今,电子技术也日益完善,其产生的
电子产品也遍布社会的各个领域,在各行各业中单片机都在发挥着核心作用。将电子技术与音乐相融合,也是研究
热点之一。将电子技术与音乐相结合形成的音乐盒不仅满足了人们对于音乐的需求而且音乐盒更小巧,包装漂亮,
制作工艺简单,且成本低廉,更加符合当代人们的需求。