数字音乐盒硬件设计.docx
- 文档编号:10313601
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:33
- 大小:657.07KB
数字音乐盒硬件设计.docx
《数字音乐盒硬件设计.docx》由会员分享,可在线阅读,更多相关《数字音乐盒硬件设计.docx(33页珍藏版)》请在冰豆网上搜索。
数字音乐盒硬件设计
CHANGZHOUINSTITUTEOFTECHNOLOGY
设计说明书
项目名称:
数字音乐盒
二级学院:
电子信息与电气工程学院
专业:
电气工程及其自动化
班级:
11电一
学生:
夏蕊
学号:
11020434
指导教师:
蔡纪鹤
职称:
讲师
起止时间:
2013年12月30日—2013年1月9日
1.简介
1.1课题意义
1.2设计方案
1.3研究容
2.总体方案设计
2.1系统硬件组成图
2.2主控机模块
3.最小系统
3.1主控芯片介绍
3.2时钟电路
3.3复位电路
3.4电源
4.输入部分
4.1按键模块
5.输出部分
5.1显示模块
5.2放声模块
5.3音乐机模块
5.4LM386功放模块
6.实物制作与仿真
6.1实物制作
6.2仿真
7.节拍确定
8.总结
参考文献
附录:
附录一:
元器件清单
附录二:
原理图
附录三:
程序清单
附录四:
实物图
1.简介
1.1课题意义
音乐盒的起源,可追溯至中世纪欧洲文艺复兴时期。
当时为使教会的钟塔报时,而将大小的钟表装上机械装置,被称为“可发出声音的组钟”。
音乐盒有着300多年的发展历史,是人类文明发展的历史见证。
传统的音乐盒多是机械音乐盒,其工作原理是通过齿轮带动一个带有铁钉的铁桶转动,铁桶上的铁钉撞击铁片制成的琴键,从而发出声音。
但是,机械式的音乐盒体积比较大,比较笨重,且发音单调。
水、灰尘等外在因素,容易使部金属发音条变形,从而造成发音跑调。
另外,机械音乐盒放音时为了让音色稳定,必须放平不能动摇,而且价格昂贵,不能实现大批量生产。
本文设计的音乐盒,是基于单片机设计制作的电子式音乐盒。
与传统的机械式音乐盒相比更小巧,音质更优美且能演奏和弦音乐。
电子式音乐盒动力来源是电池,制作工艺简单,可进行批量生产,所以价格便宜。
基于单片机制作的电子式音乐盒,控制功能强大,可根据需要选歌,使用方便。
根据存储容量的大小,可以尽可能多的存储歌曲。
另外,可以设计彩灯外观效果,使音乐盒的功能更加丰富。
1.2设计方案
设计一个单片机的音乐盒,利用按键切换演奏出不同的乐曲。
扬声器发出乐曲,数码管显示当前为第几首歌曲。
使用五个按键,两个用来切换歌曲,一个为电路的复位按键。
两个用来启动和停止。
1.3研究容
(1)电路的工作模式:
演奏歌曲,数码管显示当前的歌曲。
(2)按下按键启动键进入演奏音乐模式,按上一曲下一曲来切换歌曲,共三首歌曲。
(3)按下按键停止键进入播放音乐停止数码管灭显。
2总体方案设计
2.1单片机音乐盒系统组成框图
图1单片机音乐盒硬件方案
1、利用按键切换演奏出不同的乐曲。
扬声器发出乐曲,使用5个按键,两个用来切换歌曲,一个用来启动,一个用来停止,另一个是复位。
2、用protel99se设计电路图等。
3、歌曲可以自己随意的写进音乐盒中。
4、由于歌曲的存比较大,单片机存小,将两块单片机一同使用,两者可以通讯。
5、数码管显示当前播放的是哪一首歌曲。
经过反复论证,最终确定了如下方案:
1.主控制器:
选用两片51核的单片机作为主控制器
主控机:
负责显示状态,检测按键以及向下位机传输数据
音乐机:
在接受到上位机的引号后产生一定频率方波从而发声
2.外设装置:
这部分是由按键、数码管、扬声器等组成
2.2系统硬件组成图
图2设计原理图
3.2主控机模块
作为此次设计的核心硬件,主控机的作用几乎囊括了除音乐播放外的其他所有功能。
功能一:
控制显示模块
功能二:
控制按键模块
功能三:
向下位机传输控制信号
图3主控机模块
3.最小系统
3.1主控芯片介绍
STC89C51是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,置4KBEEPROM,MAX810复位电路,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口。
另外STC89X51可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35Mhz,6T/12T可选。
图4STC89C51单片机引脚图
单片机是美国STC公司最新推出的一种新型51核的单片机。
片含有Flash程序存储器、SRAM、UART、SPI、PWM等模块。
(一)STC89C51主要功能、性能参数如下:
(1)置标准51核,机器周期:
增强型为6时钟,普通型为12时钟;
(2)工作频率围:
0~40MHZ,相当于普通8051的0~80MHZ;
(3)STC89C51RC对应Flash空间:
4KB;
(4)部存储器(RAM):
512B;
(5)定时器\计数器:
3个16位;
(6)通用异步通信口(UART)1个;
(7)中断源:
8个;
(8)有ISP(在系统可编程)\IAP(在应用可编程),无需专用编程器\仿真器;
(9)通用I\O口:
32\36个;
(10)工作电压:
3.8~5.5V;
(11)外形封装:
40脚PDIP、44脚PLCC和PQFP等。
(二)STC89C51单片机的引脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
I/O口作为输入口时有两种工作方式,即所谓的读端口与读引脚。
读端口时实际上并不从外部读入数据,而是把端口锁存器的容读入到部总线,经过某种运算或变换后再写回到端口锁存器。
只有读端口时才真正地把外部的数据读入到部总线。
上面图中的两个三角形表示的就是输入缓冲器CPU将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作。
这是由硬件自动完成的,不需要我们操心,1然后再实行读引脚操作,否则就可能读入出错,为什么看上面的图,如果不对端口置1端口锁存器原来的状态有可能为0Q端为0Q^为1加到场效应管栅极的信号为1,该场效应管就导通对地呈现低阻抗,此时即使引脚上输入的信号为1,也会因端口的低阻抗而使信号变低使得外加的1信号读入后不一定是1。
若先执行置1操作,则可以使场效应管截止引脚信号直接加到三态缓冲器中实现正确的读入,由于在输入操作时还必须附加一个准备动作,所以这类I/O口被称为准双向口。
89C51的P0/P1/P2/P3口作为输入时都是准双向口。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有部程序存储器。
注意加密方式1时,/EA将部锁定为RESET;当/EA端保持高电平时,此间部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
3.2时钟电路
89C51单片机的时钟信号通常有两种方式产生:
一是部时钟方式,二是外部时钟方式。
部时钟方式如图3所示。
在89S51单片机部有一振荡电路,只要在单片机的XTAL1(18)和XTAL2(19)引脚外接石英晶体(简称晶振),就构成了自激振荡器并在单片机部产生时钟脉冲信号。
图中电容C1和C2的作用是稳定频率和快速起振,电容值在5~30pF,典型值为30pF。
晶振CYS的振荡频率围在1.2~12MHz间选择,典型值为12MHz和6MHz。
图589c51部时钟电路
3.3复位电路
当在89C51单片机的RST引脚引入高电平并保持2个机器周期时,单片机部就执行复位操作(若该引脚持续保持高电平,单片机就处于循环复位状态)。
复位电路通常采用上电自动复位和按钮复位两种方式。
最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充放电来实现的。
只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。
除了上电复位外,有时还需要按键手动复位。
本设计就是用的按键手动复位。
按键手动复位有电平方式和脉冲方式两种。
其中电平复位是通过RST(9)端与电源Vcc接通而实现的。
按键手动复位电路见图4。
时钟频率用11.0592MHZ时C取10uF,R取10kΩ。
图689C52复位电路
3.4电源
使用直流电源。
2、3脚接地,1脚实际是VCC(电源),但是电路中要接蓝色的自锁开关,然后开关的另一个脚再接电源。
图7DC电源插口原理图
4.输入部分
4.1按键模块
(1)按键是输入信号的主要工具。
(2)该模块主要由五个独立按键组成:
按键1:
复位
按键2:
上一曲
按键3:
启动
按键4:
下一曲
按键5:
停止
单片机键盘有独立键盘和矩阵式键盘两种:
独立键盘每一个I/O口上只接一个按键,按键的另一端接电源或接地(一般接地),这种接法程序比较简单且系统更加稳定;而矩阵式键盘式接法程序比较复杂,但是占用的I/O少。
根据本设计的需要这里选用了独立式键盘接法。
独立式键盘的实现方法是利用单片机I/O口读取口的电平高低来判断是否有键按下。
将常开按键的一端接地,另一端接一个I/O口,程序开始时将此I/O口置于高电平,平时无键按下时I/O口保护高电平。
当有键按下时,此I/O口与地短路迫使I/O口为低电平。
按键释放后,单片机部的上拉电阻使I/O口仍然保持高电平。
我们所要做的就是在程序中查寻此I/O口的电平状态就可以了解我们是否有按键动作了。
在用单片机对键盘处理的时候涉及到了一个重要的过程,那就是键盘的去抖动。
这里说的抖动是机械的抖动,是当键盘在未按到按下的临界区产生的电平不稳定正常现象,并不是我们在按键时通过注意可以避免的。
这种抖动一般10~200毫秒之间,这种不稳定电平的抖动时间对于人来说太快了,而对于时钟是微秒的单片机而言则是慢长的。
硬件去抖动就是用部分电路对抖动部分加之处理,软件去抖动不是去掉抖动,而是避抖动部分的时间,等键盘稳定了再对其处理。
所以这里选择了软件去抖动,实现法是先查寻按键当有低电平出现时立即延时10~200毫秒以避开抖动(经典值为20毫秒),延时结束后再读一次I/O口的值,这一次的值如果为1表示低电平的时间不到10~200毫秒,视为干扰信号。
当读出的值是0时则表示有按键按下,调用相应的处理程序。
硬件电路如图8所示:
图8按键模块
5.输出部分
5.1显示模块
显示模块主要包括数码管,单片机等其他元件。
该模块的主要功能:
(1)播放开机动画
(2)显示点歌的曲目
LED数码管(LEDSegmentDisplays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在部连接完成,只需引出它们的各个笔划,公共电极。
数码管分为动态显示和静态显示驱动两种,静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个STC89C52的I/O端口才32个呢:
),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
图9显示模块
5.2放声模块
采用LM386驱动
由于单片机输出的是方波,不经过电路信号放大驱动喇叭发声很小,基本听不见,采用典型的386运放驱动电路可以将声音驱动的清晰动听。
LM386功放电路特点是外围电路复杂,声音清晰。
5.3音乐机模块
作为此次设计的存储音乐的核心硬件,音乐机机的作用就是根据主控机传输的相应信号进行判断,相应的播放对应的歌曲。
通过主控机的P2.5~P2.7传过来的数据给音乐机的P1.0~P1.2,实现两块单片机的通讯,最终通过音乐机的P0.0口传输出音乐信号,后经声音驱动电路放出美妙的音乐。
图10音乐机模块
5.4LM386功放模块
功率放大器的作用是给音响放大器的负载(扬声器)提供一定的输出概率。
当负载一定时,希望输出的功率尽可能大,输出的信号的非线性失真尽可能小,效率尽可能高。
LM386是美国的国家半导体公司生产的音频功率放大器,主要应用于低电压消费类产品。
为使外围元件最少,电压增益置为20,但在1脚和8脚之间增加一只外接电阻或电容,便可将电压增益调为任意值,直至200。
输入端以地为参考,同时输出端被自动地偏置到电源电压的一半,工作电压围宽,4~12V或5~18V,在6V电源电压下,它的静态功耗仅为24mV,且外围元件少。
LM386是8引脚双排直插式塑料封装结构,其外形与引脚排列如图所示,
图11LM386引脚图
2脚为反向输入端,3脚为同向输入端,5脚为输出端,6脚与4脚分别为电源和地端,1脚和8脚为电压增益设定端;使用时,引脚7和地之间接旁路电容,通常为10uf。
功放电路如图10所示;
图12LM386运放电路
6.实物制作与仿真
6.1实物制作
1.先将每个元器件插好并焊接2.将引脚剪掉(无斜口钳)3.焊接一些近的焊点,用焊锡直接连线4.焊接数码管和一些不会挡住其他焊点的连线5.在焊接距离远的6.焊接喇叭7.将没焊接的线全焊接上,并检查(有无短路)8.插上元器件,通电测试。
6.2仿真
图13仿真运行后
7.节拍的确定
一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。
因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。
音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。
在音乐中所谓“音调”,其实就是我们常说的“音高”。
在音乐中常把中央C上方的A音定为标准音高,其频率f=440Hz。
当两个声音信号的频率相差一倍时,也即f2=2f1时,则称f2比f1高一个倍频程,在音乐中1(do)与,2(来)与……正好相差一个倍频程,在音乐学中称它相差一个八度音。
在一个八度音,有12个半音。
以1—i八音区为例,12个半音是:
1—#1、#1—2、2—#2、#2—3、3—4、4—#4,#4—5、5一#5、#5—6、6—#6、#6—7、7—i。
这12个音阶的分度基本上是以对数关系来划分的。
如果我们只要知道了这十二个音符的音高,也就是其基本音调的频率,我们就可根据倍频程的关系得到其他音符基本音调的频率。
知道了一个音符的频后,怎样让单片机发出相应频率的声音呢?
一般说来,常采用的方法就是通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将定时器予置不同的定时值就可实现。
那么怎样确定一个频率所对应的定时器的定时值呢?
以标准音高A为例:
A的频率f=440Hz,其对应的周期为:
T=1/f=1/440=2272μs
图14频率表
由上图可知,单片机上对应蜂鸣器的I/O口来回取反的时间应为:
t=T/2=2272/2=1136μs
这个时间t也就是单片机上定时器应有的中断触发时间。
一般情况下,单片机奏乐时定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。
设振荡器频率为f0,
则定时器的予置初值由下式来确定:
t=12*(TALL–THL)/f0,式中TALL=216=65536,THL为定时器待确定的计数初值。
因此定时器的高低计数器的初值为:
TH=THL/256=(TALL–t*f0/12)/256TL=THL%256=(TALL–t*f0/12)%256
将t=1136μs代入上面两式(注意:
计算时应将时间和频率的单位换算一致),即可求出标准音高A在单片机晶振频率f0=12Mhz,定时器在工作方式1下的定时器高低计数器的予置初值为:
TH440Hz=(65536–1136*12/12)/256=FBH
TL440Hz=(65536–1136*12/12)%256=90H
根据上面的求解方法,我们就可求出其他音调相应的计数器的予置初值。
说明************************************************************************
曲谱存贮格式unsignedcharcodeMusicName{音高,音长,音高,音长....,0,0};末尾:
0,0表示结束(Important)
音高由三位数字组成:
个位是表示1~7这七个音符
十位是表示音符所在的音区:
1-低音,2-中音,3-高音;
百位表示这个音符是否要升半音:
0-不升,1-升半音。
音长最多由三位数字组成:
个位表示音符的时值,其对应关系是:
|数值(n):
|0|1|2|3|4|5|6
|几分音符:
|1|2|4|8|16|32|64音符=2^n
十位表示音符的演奏效果(0-2):
0-普通,1-连音,2-顿音
百位是符点位:
0-无符点,1-有符点
调用演奏子程序的格式
Play(乐曲名,调号,升降八度,演奏速度);
|乐曲名:
要播放的乐曲指针,结尾以(0,0)结束;
|调号(0-11):
是指乐曲升多少个半音演奏;
|升降八度(1-3):
1:
降八度,2:
不升不降,3:
升八度;
|演奏速度(1-12000):
值越大速度越快;
结论
在进行了长达一个多星期的时间的摸索与实验,我与同学分工合作完成了硬件编制,使我不仅仅是对于单片机入门软件与硬件的常用设计与功能加深了理解,还使我对于一项设计研究的制作过程所需要的详细步骤和具体的实现方法的力度的掌握。
当然在这次宝贵的课程设计活动中,经验才是对于我们最大的收获,而且还增强了自身对未知问题以及对知识的深化认识的能力,用受益匪浅这个词语来概括这次难忘的活动我觉得再合适不过了。
但是,光是完成了作品还是不可以自我满足的,在从一开始的时候就怀着将作品制作得更加人性化,更加令人满意,更加地使功能完美又方便地被应用领域这个最终目的下,随着对单片机这门学科的认识加深,到达了拓展的程度,我想这个目的将在不远的时期被实现。
总之,这次设计从软件编写、调试到软硬件联机调试,真是曾经为程序的编写而冥思查找过,曾经为无法找出错误而郁闷苦恼过,也曾经为某一功能不能实现而犹豫彷徨过,但最终我们成功了。
我不仅品味到了结果的喜悦,更明白了过程的弥足珍贵。
参考文献
[1]建忠.单片机原理及应用[M],电子科技大学,2008.2.
[2]黄智伟.全国大学生电子设计竞赛系统设计[M],:
航空航天大学,2006.6.
[3]黄智伟.凌阳单片机课程设计指导[M],:
航空航天大学,2006.11.
[4]广弟,朱月秀,王秀山.单片机基础[M],:
航空航天大学,2001.7.
[5]曙光,郭万有,颂华.可编程逻辑器件原理开发与应用[M],:
电子科技大学,2000.
[6]候伯亨.VHDL硬件描述语言与数字逻辑电路设计[M],:
电子科技大学,1999.
[7]康华光.模拟电子技术基础(第四版)[M],:
华中理工大学,1999.
[8]谭浩强.C语言程序设计(第二版)[M],:
清华大学,1991.
[9]小
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 音乐盒 硬件 设计