基于单片机的电子音乐盒.docx

上传人:b****5 文档编号:7665231 上传时间:2023-01-25 格式:DOCX 页数:33 大小:522.39KB
下载 相关 举报
基于单片机的电子音乐盒.docx_第1页
第1页 / 共33页
基于单片机的电子音乐盒.docx_第2页
第2页 / 共33页
基于单片机的电子音乐盒.docx_第3页
第3页 / 共33页
基于单片机的电子音乐盒.docx_第4页
第4页 / 共33页
基于单片机的电子音乐盒.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

基于单片机的电子音乐盒.docx

《基于单片机的电子音乐盒.docx》由会员分享,可在线阅读,更多相关《基于单片机的电子音乐盒.docx(33页珍藏版)》请在冰豆网上搜索。

基于单片机的电子音乐盒.docx

基于单片机的电子音乐盒

课程设计任务书

1.设计目的:

在学习专业基础课和专业课的基础上,主要在电子仪器、微机综合设计与实践、单片机与A/D和D/A和光、计、电综合应用等几个方面开展实践活动,巩固所学知识、培养动手能力。

2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等):

1.查阅资料,了解单片机控制单音喇叭发声原理。

2.设计基于单片机的电子音乐盒。

3.通过按钮可选择不同的音乐。

4.其他创新功能。

每位同学分工不同

 

3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕:

1)设计说明书符合要求;

2)相应器件的工作原理及应用;

3)系统的硬件原理图和制版图;

4)基于实验箱调试成功的系统软件程序和界面;

5)仿真结果

6)参考文献原文不少于15篇。

课程设计任务书

4.主要参考文献:

 

●要求按国标GB7714—87《文后参考文献著录规则》书写,例:

1傅承义,陈运泰,祁贵中.地球物理学基础.北京:

科学出版社,1985

(5篇以上)

5.设计成果形式及要求:

设计说明书及相关电路图

6.工作计划及进度:

2016年6月12日~2016年6月14日:

查相关的资料,熟悉单片机(或者FPGA、DSP、ARM)开发环境;

6月15日~6月18日:

在教师指导下完成系统方案和电路设计;

6月19日~6月28日:

完成程序的调试,仿真,系统的优化;

6月29日~6月30日:

完成课程设计说明书的纂写和修改;

7月1日:

答辩

系主任审查意见:

签字:

年月日

1引言3

2系统总体设计3

2.1系统组成框图3

2.2音乐盒的功能结构图及说明4

2.3电子琴的功能结构图及说明4

2.4设计软件5

2.4.1proteus5

2.4.2keil5

3硬件设计6

3.1AT89C51简介6

3.2复位电路和时钟电路7

3.2.1复位电路8

3.2.2时钟电路8

3.3按键电路9

3.44*4矩阵键盘电子琴9

3.5数码管10

4软件设计10

5.1硬件电路的仿真19

5.2软件电路的仿真19

5.3联调20

5.4仿真结果20

6课设心得21

7参考文献21

附录1:

源程序代码21

附录2:

PCB图20

1引言

音乐盒又称八音盒。

音乐盒的起源,可追溯至中世纪欧洲文艺复兴时期。

当时为使教会的的钟塔报时,而将大小的钟表上机械装置,被称为“可发出声音的组钟”。

1796年由瑞士钟表匠安托•法布尔发明,转动盒内的链环,可自动演奏音乐。

这是最古老的音乐盒。

1992年,中国第一台具有知识产权的八音琴在韵升诞生。

现代科技的发展为我们提供了更方便快捷的制作音乐盒的方式,不用经过繁琐的工艺,可以利用单片机自己制作一个简单的电子音乐盒,很有意义。

本文设计的电子音乐盒,就是基于单片机芯片设计制作的电子音乐盒。

体积小巧,音质优美且能演奏和弦音乐。

电子音乐盒以点为动力,制作工艺简单,且可批量生产,因此价格便宜。

基于单片机芯片制作的电子式音乐盒,控制功能很强大,可根据需要选歌,使用方便。

根据存储容量的大小,可以尽可能多的存储歌曲。

另外,可以设计彩灯外观效果,使小小的音乐盒达到愉悦身心的目的。

2系统总体设计

2.1系统组成框图

音乐盒的系统结构以AT89C51单片机位控制核心,4*4矩阵键盘,加上2个按键、时钟复位电路、蜂鸣器、数码管6模块组成。

单片机负责接收按键的输入,根据的输入按键所对应的音符蜂由鸣器发音。

系统组成框图如图2.1所示。

图2.1系统组成框图

2.2音乐盒的功能结构图及说明

本次设计主要设计了两个标志位,count1、count2,对应按键电路的key1、key2,key1用来暂停歌曲,并实现4*4矩阵键盘电子琴弹奏功能,key2用于切换本音乐盒内的四首歌曲。

功能结构图如下图2.2所示。

图2.2电子音乐盒功能框图

2.3电子琴的功能结构图及说明

电子琴的功能结构如图2.3所示。

4*4键盘按下获取相应的键值和音符有DO到XI高低音共16个音。

并在数码管上显示。

图2.3电子琴功能结构图

2.4设计软件

本设计主要使用两个软件,proteus、keil。

用proteus进行硬件电路设计,用keil进行软件设计,使用proteus和keil进行联调,等程序功能都实现且调试好了之后,实现电子音乐盒的设计与制作。

2.4.1proteus

Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。

它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。

它是目前最好的仿真单片机及外围器件的工具。

Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。

是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台。

且在编译方面,它支持IAR、Keil和MPLAB等多种编译器。

可以与他们进行联调,结合使用。

2.4.2keil

KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。

使用C语言编程,Keil是很好的选择。

Keil公司是一家业界领先的微控制器(MCU)软件开发工具的独立供应商。

Keil公司由德国慕尼黑的KeilElektronikGmbH和美国德克萨斯的KeilSoftwareInc公司联合运营。

Keil公司制造和销售种类广泛的开发工具,包括ANSIC编译器、宏汇编程序、调试器、连接器、库管理器、固件和实时操作系统核心(real-timekernel)。

KeilC51编译器自1988年引入市场以来成为事实上的行业标准,并支持超过500种8051变种。

Keil公司在2005年被ARM公司收购。

而后ARMKeil推出基于uVision界面,用于调试ARM7,ARM9,Cortex-M内核的MDK-ARM开发工具,用于为控制领域的开发。

在使用单片机C语言开发时,大多使用keil编程,与proteus进行联调,达到软硬件结合的目的。

3硬件设计

本设计主要是以单片机AT89C51芯片为核心,由复位电路,时钟电路,按键电路,蜂鸣器,LED流水灯,LCD1602和数码管电路组成的,实现的功能如下,电路图如图3.1所示。

a)P3.2,P3.3控制按键

b)P1.0-P1.7控制4*4矩阵键盘

c)P3.7控制蜂鸣器

d)P2..0~P2.7数码管显示

e)电路为11.0592MHZ晶振频率工作,起振电路中C1、C2均为30PF

图3.1电路图

3.1AT89C51简介

AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C51是它的一种精简版本。

AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

管脚图如图3.2所示。

图3.2AT89C51管脚

AT89C51的主要特性

a)与MCS-51兼容

b)4K字节可编程FLASH存储器

c)寿命:

1000写/擦循环

d)数据保留时间:

10年

e)全静态工作:

0Hz-24MHz

f)三级程序存储器锁定

g)128×8位内部RAM

h)32可编程I/O线

i)两个16位定时器/计数器

j)5个中断源

k)可编程串行通道

l)低功耗的闲置和掉电模式

m)片内振荡器和时钟电路

3.2复位电路和时钟电路

时钟电路和复位电路共同组成了单片机的最小系统,即最少的元件组成的单片机可以工作的系统。

是单片机应用中不可缺少的一部分,若没有最小系统,好多的设计将不能完美运行。

图3.3为本设计的复位电路和时钟电路。

图3.3复位电路和时钟电路

3.2.1复位电路

复位电路我们本来在方案选择的时候有两种选择的,上电复位和按扭复位,上电复位是利用电容充电来实现的,而按扭复位是电源对外节电容的充电使RST为高电平,复位松开后,电容通过下拉电阻放电,使RST恢复低电平。

为了制作软件的方便我们还是选择用按扭复位,因为它比较直观。

3.2.2时钟电路

单片机晶振的作用是为单片机系统提供基本的时钟信号,单片机晶振提供的时钟频率越高,单片机的运行速度就越快,单片机的一切指令的执行都是建立在单片机晶振提供的时钟频率。

没有晶振,就没有时钟周期,没有时钟周期,就无法执行程序代码,单片机就无法工作。

89系列的时钟信号由两种方式产生,一种是利用芯片内部的震荡电路,产生时钟信号的内部方式,一种是时钟信号有外部引入的外部方式。

内部时钟方式为:

89系列单片机内部有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端,其频率范围为1.2~12MHz,这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器。

89系列单片机虽然有内部震荡电路,但要形成时钟,必须外接元件.外接晶振以及电容C2,C3构成并联谐振电路,接在放大器的反馈回路中,这种方式称为内部时钟方式。

对外接电容C2,C3没有严格的要求,石英晶体的电容值一般使用30PF10PF,陶瓷振荡器一般选择40PF10PF。

若采用外部时钟,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。

3.3按键电路

AT89C51系列单片机有五个中断源,引脚与中断源的对应关系如表3.1所示

表3.1AT89C51中断源与引脚的对应关系

中断源

对应的管脚

外部中断0

P3.2/INT0

外部中断1

P3.3/INT1

定时/计数器T0中断

P3.4T0

定时/计数器T1中断

P3.5T1

串口中断

P3.6/WR

串口中断

P3.7/RD

本设计按键电路有两个按键key1,key2组成,分别接单片机的P3.2,P3.3口。

key1用来暂停歌曲,并实现4*4矩阵键盘电子琴弹奏功能,key2用于切换本音乐盒内的四首歌曲。

按键电路如图3.4所示

图3.4按键电路

3.44*4矩阵键盘电子琴

利用P1口为按键接入口,形成4×4组成16个按键矩阵,设计成16个音,4*4矩阵键盘电路如图3.5所示。

图3.54*4矩阵键盘电路图

3.5数码管

由一个共阳极7段数码管与单片机P0口并联,并加上上拉电阻使其有足够的电流,随着弹奏音符的变换,数码管会显示音符相对应的数值。

数码管电路图如3.6所示。

图3.6数码管电路

4软件设计

在本程序中设置了个标志——count2,分别初始化为1和0。

按键Key2使得count2在1~4之间切换。

程序检测count2的值,count2等于1时播放第一首歌曲,等于2时播放第二首,以此类推。

另一方面根据中断0Key1来控制count2的值等于0时来暂停歌曲。

歌曲停止后,矩阵键盘可以输入音符,相对应的数值由数码管上显示。

程序流程图如下图4.1所示。

图4.1主程序流程图

4.1软件各功能模块的流程图设计及思路说明

(1)键盘扫描程序:

检测是否有键按下,有键按下则记录按下键的键值,并跳转至功能转移程序;无键按下,则返回键盘扫描程序继续检测

(2)功能转移程序:

对检测到得按键值进行判断,是琴键则跳转至琴键处理程序,是功能键则跳转至相应的功能程序,我们设计的功能程序有两种,即音色调节功能和自动播放乐曲功能

(3)琴键处理程序:

根据检测到得按键值,查询音律表,给计时器赋值,使发出相应频率的声音

(4)自动播放歌曲程序:

检测到按键按下的是自动播放歌曲功能键后执行该程序,电子琴会自动播放事先已经存放好的歌曲,歌曲播放完毕之后自动返回至键盘扫描程序,继续等待是否有键按下

①弹奏处理程序:

②自动播放歌曲程序:

4.2电子音乐的产生

单片机演奏音乐基本是单音频率,不包含相应幅度的谐波频率,不能像电子琴那样能奏出多种音色的声音。

单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”表示一个音符唱多长的时间。

4.2.1音频脉冲的产生

音乐的产生主要是通过单片机的I/O口输出高低不同的脉冲信号来控制蜂鸣器的发音,要产生音频脉冲信号,只要算出某一音频的周期,然后将此周期除以2,即为半周期的时间,利用定时器定时这半周期的时间,每当计时到,就将输出脉冲的I/O端口反相,然后重复计时此半周期时间再对I/O口反相,这样就能在此I/O口上得到此频率的脉冲。

不同音调的乐音是用C、D、E、F、G、A、B来表示,这7个字母就是音乐的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,对应的简谱为1、2、3、4、5、6、7,相当于汉字“多来米发梭拉西”的读音,这是唱曲时乐音的发音,所以叫“音调”,即Tone。

把C、D、E、F、G、A、B这一组音的距离分成12个等份,每一个等份叫一个“半音”。

两个音之间的距离有两个“半音”,就叫“全音”。

通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它们的左上角加上﹟号或者b号的叫变化音。

﹟叫升记号,表示把音在原来的基础上升高半音,b叫降记音,表示在原来的基础上降低半音。

例如高音DO的频率(1046Hz)刚好是中音DO的频率(523Hz)的一倍,中音DO的频率(523Hz)刚好是低音DO频率(266Hz)的一倍;同样的,高音RE的频率(1175Hz)刚好是中音RE的频率(587Hz)的一倍,中音RE的频率(587Hz)刚好是低音RE频率(294Hz)的一倍。

通常利用AT89S5X单片机的内部定时器0,在工作方式1下,改变计数初值TH0和TL0来产生不同的频率。

例如,若采用12MHz的晶振,要产生频率为587Hz的音频脉冲时,其音频脉冲信号的周期T=1/587=1703.5775us,半周期的时间为852us,因此只要令计数器计数852us/1us=852,在每次计数852次时,将I/O口反相,就可得到C调中音Re。

计数脉冲值与频率的关系公式如下:

N=Fi

2

Fr式

(1)

N:

计算值;Fi:

内部计时一次为1us,故其频率为1MHz;

那么计数值T的求法如下:

T=65536-N=65536-Fi

2

Fr

例如:

设K=65536,F=1000000=Fi=1MHz,低音DO(261Hz)。

中音DO(523Hz)。

高音的DO(1046Hz)的计算值

T=65536-N=65536-Fi

2

Fr=65536-1000000

2

Fr=65536-500000/Fr

低音DO的T=65536-500000/262=63628

低音DO的T=65536-500000/523=64580

低音DO的T=65536-500000/1047=65058

综上所述,在11.0592MHz频率下,C调音符频率计数值T的关系如下表4.1所示

表4.2.1C调音符频率计数值T的关系

低音

频率

T

中音

频率

T

高音

频率

T

Do

262

62018

Do

523

63773

Do

1046

64654

Re

294

62401

Re

587

63965

Re

1175

64751

Mi

330

62491

Mi

659

64137

Mi

1318

64836

Fa

349

62895

Fa

698

64215

Fa

1397

64876

So

392

63184

So

784

64360

So

1568

64948

La

440

63441

La

880

64488

La

1760

65012

Si

494

63506

Si

988

64603

Si

1976

65067

本设计中,在11.0592MHz频率下,中央C调1~7和高8度1~7的计数值T即初值的十六进制数数值为:

ucharcodechuzhi[]={0xff,0xff,//占位

0xFC,0x8E,0xFC,0xED,0xFD,0x43,0xFD,0x6A,0xFD,0xB3,0xFD,0xF3,0xFE,0x2D,0xFE,0x47,0xFE,0x76,0xFE,0xA1,0xFE,0xC7,0xFE,0xD9,0xFE,0xF9,0xFF,0x16};

4.2.2音乐节拍

若要构成音乐,光有音调是不够的,还需要节拍,让音乐具有旋律(固定的律动),而且可以调节各个音的快满度。

Beat,简单说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚。

若1拍实0.5s,则1/4拍为0.125s。

至于1拍多少s,并没有严格规定,只要听的悦耳就好。

音持续时间的长短即时值,一般用拍数表示。

休止符表示暂停发音。

在音乐中,最小的音符为十六分音符,即四分之一拍,所以只要延时函数设置为十六分音符的时间(165MS),其他的音符延时其的整数倍,就可得到相应的节拍。

十六分音符的延时函数为

voiddelay(uintz)

{uintx,y;

for(x=z;x>0;x--)

for(y=19000;y>0;y--);}

一首音乐是由许多不同的音符组成的,而每个音符对应着不同频率,这样就可以利用不同的频率的组合,加以与拍数对应的延时,构成音乐。

了解音乐的一些基础知识,我们可知产生不同频率的音频脉冲即能产生音乐。

对于单片机来说,产生不同频率的脉冲是非常方便的,利用单片机的定时/计数器来产生这样的方波频率信号。

因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。

每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,表4.2为节拍码的对照。

如果1拍为0.4秒,1/4拍实0.1秒,只要设定延迟时间就可求得节拍的时间。

假设1/4拍为1DELAY,则1拍应为4DELAY,以此类推。

所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如表4.3为1/4和1/8节拍的时间设定。

表4.2.2.1节拍码的对照

节拍码

节拍数

节拍码

节拍数

1

1/4拍

1

1/8拍

2

2/4拍

2

1/4拍

3

3/4拍

3

3/8拍

4

1拍

4

2/1拍

5

1又1/4拍

5

5/8拍

6

8

1又1/2拍

2拍

6

8

3/4拍

1拍

A

2又1/2拍

A

1又1/4拍

C

3拍

C

1又1/2拍

F

3又3/4拍

表4.2.2.21/4和1/8节拍的时间设定

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.2.3移调

一般的歌曲有3/8、2/4、3/4、4/4等节拍类型,但不管有几拍,基本上是在C调下演奏的。

如果是C调,则音名唱Do,音名D唱Re,音名E唱Mi,音名F唱Fa,音名G唱So,音名A唱La,音名B唱Ti等。

但并不是所有的歌曲都是在C调下演奏的,还有D调,E调,F调,G调等。

D调是将C调各音符上升一个频率实现的,即C调下的音名D在D调下唱Do,C调下的音名E在D调下唱Re,C大调各音名F在D调下升高半音符F#唱Mi,C调下的音名G在D调下唱Fa,C调下的音名A在D调下唱So,C调下的音名B在D调下唱La,C调下的音名C在D调下升高半音符C#唱Ti。

这种改变唱法成为移调。

E调是在D调的基础上进行移调的,而F调是在E调的基础上进行移调的……各大调音符与音名的关系如表4.4所示。

表4.2.3各大调音符与音名的关系

音调

Do

Re

Mi

Fa

So

La

Ti

C调

C

D

E

F

G

A

B

D调

D

E

F#

G

A

B

C

E调

E

F#

G#

A

B

C

D

F调

F

G

A

B

C

D

E

G调

G

A

B

C

D

E

F#

A调

A

B

C#

D

E

F#

G#

B调

B

C

D

E

F

G

A

4.2.4音乐编码

本设计以音乐简谱进行编码。

简谱中的1~7,分别编码为1~7,重音1~7,分别编码8、9、A、B、C、D、E。

停顿编为0,结束标志为FF。

简谱节拍的对应关系也是编码的关键。

在简谱中,全音符是在数字后面加三根延时线的音符,其时值等于四分音符的四倍,打满四拍就得一个全音符。

若延时函数为165ms,即十六分音符的时间,则一个全音符需要16次延时。

可分为两个8次延时。

可编码为0x08,0x08。

二分音符是在数字后面加了一根延时线的音符,分音符时值是四分音符的两倍,打两拍得一个二分音符。

将其编码为8。

而四分音符在简谱里就是不带延时线,没有减时线单单的一个音符,以四分音符为一拍,也就是手打一拍就是一个四分音符的时值。

将其编码为4。

八分音符是在数字下面划了一根减时线的音符;八分音符时值等于四分音符的一半,而以四分音符为一拍的话,那八分音符也就是半拍。

在本次设计中将其编码为2。

十六分音符在简谱里是在数字下面划了两根减时线的音符;十六分音符时值等于四分音符的四分之一,也就是四分之一拍。

将其编码为1。

符点音符在音符后面加个符点,等于把这个音符的时值再延长它本身时值的一半。

比如符点四分音符,时值等于四分音符加八分音符的时值。

休止符最好的理解就是你把它当一个音符看待,但是是没有音高的音符,因为它时值也是跟一般音符一样标记的。

可编码成0。

 

举例1:

音调do,发音长度为两拍,即二分音符,将其编码为0x18。

举例2:

音调re,发音长度为半拍,即八分音符,将其编码为0x22

4.2.5歌曲播放设计

将歌曲的简谱进行编码后,储存在一个数据类型为unsignedchar的数组中。

音乐播放程序从数组中取出一个数,然后分离出高4位得到音调,接着找出相应的值赋给定时器0,使之定时操作蜂鸣器,得出相应的音调;接着分离出该数的低4位,得到延时时间,这样就建立了音乐库。

表4.5为简谱对应的简谱码、T值及节拍数。

表4.2.5简谱对应的简谱码、T值和节拍数

简谱

发音

简谱码

T值

节拍码

节拍数

5

低音SO

1

64260

1

1/4拍

6

低音LA

2

64400

2

2/4拍

7

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1