基于51单片机的带彩灯外观的音乐盒设计.docx

上传人:b****1 文档编号:1228662 上传时间:2023-04-30 格式:DOCX 页数:34 大小:809.83KB
下载 相关 举报
基于51单片机的带彩灯外观的音乐盒设计.docx_第1页
第1页 / 共34页
基于51单片机的带彩灯外观的音乐盒设计.docx_第2页
第2页 / 共34页
基于51单片机的带彩灯外观的音乐盒设计.docx_第3页
第3页 / 共34页
基于51单片机的带彩灯外观的音乐盒设计.docx_第4页
第4页 / 共34页
基于51单片机的带彩灯外观的音乐盒设计.docx_第5页
第5页 / 共34页
基于51单片机的带彩灯外观的音乐盒设计.docx_第6页
第6页 / 共34页
基于51单片机的带彩灯外观的音乐盒设计.docx_第7页
第7页 / 共34页
基于51单片机的带彩灯外观的音乐盒设计.docx_第8页
第8页 / 共34页
基于51单片机的带彩灯外观的音乐盒设计.docx_第9页
第9页 / 共34页
基于51单片机的带彩灯外观的音乐盒设计.docx_第10页
第10页 / 共34页
基于51单片机的带彩灯外观的音乐盒设计.docx_第11页
第11页 / 共34页
基于51单片机的带彩灯外观的音乐盒设计.docx_第12页
第12页 / 共34页
基于51单片机的带彩灯外观的音乐盒设计.docx_第13页
第13页 / 共34页
基于51单片机的带彩灯外观的音乐盒设计.docx_第14页
第14页 / 共34页
基于51单片机的带彩灯外观的音乐盒设计.docx_第15页
第15页 / 共34页
基于51单片机的带彩灯外观的音乐盒设计.docx_第16页
第16页 / 共34页
基于51单片机的带彩灯外观的音乐盒设计.docx_第17页
第17页 / 共34页
基于51单片机的带彩灯外观的音乐盒设计.docx_第18页
第18页 / 共34页
基于51单片机的带彩灯外观的音乐盒设计.docx_第19页
第19页 / 共34页
基于51单片机的带彩灯外观的音乐盒设计.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于51单片机的带彩灯外观的音乐盒设计.docx

《基于51单片机的带彩灯外观的音乐盒设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的带彩灯外观的音乐盒设计.docx(34页珍藏版)》请在冰点文库上搜索。

基于51单片机的带彩灯外观的音乐盒设计.docx

基于51单片机的带彩灯外观的音乐盒设计

 

单片机原理与应用技术课程设计与实现

 

题目基于51单片机的带彩灯音乐盒设计与实现

姓名张大成

专业计算机科学与技术(嵌入式方向)

学号201241023

院(系)信息工程学院

指导教师 王清珍

完成时间

 

基于51单片机的带彩灯音乐盒

摘要

随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。

小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。

传统音乐盒多是机械型的,体积笨重,发音单调,不能实现批量生产。

本文设计的音乐盒是以AT89C51单片机为核心元件的电子式音乐盒,体积小,重量轻,能演奏音乐,功能多,外观效果多彩,配有彩灯,使用方便,本音乐盒有三个按键,key1控制彩灯,key2控制音乐,key3为总开关,可同时关闭音乐与彩灯。

具有一定的商业价值。

关键字:

AT89C51;音乐盒;按键;彩灯

 

Abstract

Alongwiththedevelopmentofhumansociety,peopleofvision,hearingthingsputforwardhigherrequest.Smallmusicboxcanbringgoodmemoriesandimprovepeople'sspiritualculture.Traditionalmusicboxisheavymechanicaltype,size,pronunciationanddrab,cannotachievebatchproduction.MusicboxdesignedinthispaperbasedonAT89C51microcontrollerasthecoreelementofelectronicmusicbox,smallsize,lightweight,canplaymusic,multi-function,appearanceandcolorful,withalantern,easytouse.Themusicboxwiththreebuttons,Thekey1controlLantern,key2controlmusic,key3totalswitchcanturnoffthemusicandlanterns.Havesomecommercialvalue.

Keywords:

AT89C51;musicboxes;buttons;Lantern

 

引言

21世纪,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

单片机应用的重要意义还在于它从根本上改变了传统的控制系统设计思想和设计方法。

单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。

导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。

[1]

随着科学技术的进步和社会的发展,人类所接触的信息也在不断增加并且日益复杂。

小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。

传统音乐盒多是机械型的,体积笨重,发音单调,不能实现批量生产。

本文设计的音乐盒是以单片机为核心元件的电子式音乐盒,体积小,重量轻,能演奏和旋音乐,功能多,外观效果多彩,使用方便,并具有一定的商业价值。

关键词:

51单片机;音乐;蜂鸣器;彩灯

1.系统设计

1.1设计目的

随着电子技术及计算机技术的发展,单片机在日常生活中的应用越来越广泛,同时也显现出了它的重要性,尤其在一些特殊的场合更是不可代替。

为熟悉单片机的应用。

要求设计一个基于AT89C51单片机的带彩灯外观的音乐盒。

1.2方案论证

音调之所以不同是因为频率的不同。

根据每个音调的频率单片机内部的定时计数器来产生相应的音乐脉冲。

只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。

利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O口反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。

利用AT89C51的内部定时计数器工作在方式1下,改变初值TH0及TL0以产生不同频率。

此外结束符和休止符可以分别用代码0xff和0x00来表示,若查表结果为0xff,则表示曲子终了;若查表结果为0x00,则产生相应的停顿效果。

例如频率为523Hz,其周期T=1/523=1912us,定时时间为1912/2=956us因此只要令计数器计时956us/1us=956次(若晶振频率为6MHZ),在每次计数956次时将I/O反相,就可得到中音DO(523Hz)。

根据计数次数就可算出计数初值。

要产生音乐光有音调是不行的,每个音调还有持续一定的时间。

这可以用延时程序delay()来实现。

因此每个音乐代码有八位数字组成,高四位控制音调,低四位通过延时程序对该音调进行延时。

通过子函数连续不断的调用音乐代码就产生了动听的音乐。

音调的频率与时间都不同,让DO、RE、MI、FA、SO、LA、SI分别对应八路LED灯中的一个,这样播放音乐的同时就有LED灯对应闪烁。

[2]

1.3系统框图

本系统有最小系统及其他电路组成,包括LED显示键盘输入和蜂鸣器。

键盘有三个按键key1,key2,key3,其中key1控制彩灯的样式,本设计有六种彩灯花样,每按一次变换一种样式。

Key2控制音乐播放,本设计有五首音乐,每按一次变换到下一首,同时八路LED灯随音调不同而闪烁。

Key3为总开关用于关闭音乐跟彩灯。

如图1.1

图1.1总体结构框图

1.4模块功能

设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。

在每个机器周期的S5P2期间采样T0、T1引脚电平。

当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。

由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。

当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2ms。

51单片机最小系统晶振Y1也可以采用12MHz,在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。

如图1.2

图1.2时钟与复位模块

Sw1是电路总开关控制电源,k1是控制彩灯样式k2控制音乐播放的顺序。

Sounder是蜂鸣器的输出声音。

如图1.3

图1.3按键选择模块及音频发生模块图5LCD显示模块

 

2.硬件设计

2.1主要元器件介绍

AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。

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

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

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

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

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

外形及引脚排列如图2.1所示

图2.1AT89C51系列单片机

AT89C51提供以下标准功能:

4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。

[3]

AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。

空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。

掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。

2.2电路设计

如图按键部分有三个键,分别结于外部中断P3.2/INT0,P3.3/INT1,及串行口P3.1/TXD上,P3.2每产生一次中断count1加一,根据count1的值来决定花样灯的种类。

P3.3每产生一次中断count2加一,根据count2的数值来决定播放哪一首歌曲。

P3.1接总开关的。

播放音乐,及花样灯均通过调用子程序来实现。

八路LED灯灯接到P1口。

扬声器接到P3.7上。

总体设计电路如图2.2

图2.2设计图

2.2.1复位电路设计

复位电路的工作原理:

VCC上电时,电容充电(充电过程中会有充电电流,并且在最开始时电流最大,随着时间推移逐渐减小直到电容充满电后充电电流变为0,此时无充电电流,电容器相当于开路,这个时候才是真正意义上的隔直,所以在电源接通的一瞬间,是有通交这个过程的),在电容充电这个过程中,RST端电压确正好相反是从VCC逐渐降低到0(因为充电电流是从大变小直到0),此过程中会有一段时间VCC处于高电平状态,导致单片机复位(时间常数t=R*C决定)。

但电容不再充电后,无电流通过,RST恒为0,单片机正常工作。

[4]

单片机的第9脚RST为硬件复位端,只要将该端持续2个机器周期即2us的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,复位按钮按下后即可输入高电平。

图2.3复位电路

 

2.2.2时钟震荡电路设计

晶振电路是由一个12MHZ的电解电容和两个30pF的电容组成的。

T=12*1/12MHZ=1us。

充放电电路的时间T=RC=10KΩ×10μF=0.1s,由以上计算可以得出,充放电电路的时间远远大于2us的机器周期。

满足复位条件,所以此电路可以实现复位功能。

开机的时候的复位在电路图中,电容的的大小是10uF,电阻的大小是10k。

所以根据公式,可以算出电容充电到电源电压的0.7倍(单片机的电源是5V,所以充电到0.7倍即为3.5V),需要的时间是10K*10UF=0.1S。

也就是说在电脑启动的0.1S内,电容两端的电压时在0~3.5V增加。

这个时候10K电阻两端的电压为从5~1.5V减少(串联电路各处电压之和为总电压)。

所以在0.1S内,RST引脚所接收到的电压是5V~1.5V。

在5V正常工作的51单片机中小于1.5V的电压信号为低电平信号,而大于1.5V的电压信号为高电平信号。

所以在开机0.0S内,单片机系统自动复位(RST引脚接收到的高电平信号时间为0.1S左右)。

51单片机最小系统晶振Y1也可以采用12MHz,在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。

51单片机最小系统起振电容C2、C3一般采用15~33pF,并且电容离晶振越近越好,晶振离单片机越近越好,P0口为开漏输出,作为输出口时需加上拉电阻,阻值一般为10k。

设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。

计数值N乘以机器周期Tcy就是定时时间t。

设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。

在每个机器周期的S5P2期间采样T0、T1引脚电平。

当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。

由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。

当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2ms。

图2.4时钟震荡电路设计

2.2.3按键电路设计

音乐盒有三个按键key1,key2,key3,其中key1控制彩灯的样式,本设计有六种彩灯花样,每按一次变换一种样式。

Key2控制音乐播放,本设计有五首音乐,每按一次变换到下一首,同时八路LED灯随音调不同而闪烁。

Key3为总开关用于关闭音乐跟彩灯。

key1接P3.3口控制彩灯的样式,本设计有六种彩灯花样,每按一次变换一种样式。

key2接P3.2口控制音乐播放,本设计有五首音乐,每按一次变换到下一首,同时八路LED灯随音调不同而闪烁。

Key3接P3.1口为总开关用于关闭音乐跟彩灯。

图2.5按键电路设计

2.2.4LED显示电路设计

花样灯6种花样图,下面文字说明:

(1)第一种花样灯显示方式为:

从D1→D2→D3→D4→D5→D6→D7→D8→D7→D6→D5→D4→D3→D2→D1依次点亮,往复循环。

(2)第二种花样灯显示方式为:

从[D1→D2→D2→D7→D3→D6→D4→D5→D4→D6→D3→D7→D2→D2→D1依次点亮,往复循环。

(3)第三种花样灯显示方式为:

D1→D2→D3→D4→D5→D6→D7→D8依次点亮→D1→D2→D3→D4→D5→D6→D7→D8依次熄灭。

(4)第四种花样灯显示方式为:

(D1,D2)→(D2,D3)→(D3,D4)→(D4,D5)→(D5,D6)→(D6,D7)→(D7,D8)→(D7,D6)→(D6,D5)→(D5,D4)(D4,D3)→(D3,D2)→(D2,D1)依次点亮,往复循环。

(5)第五种花样灯显示方式为:

(D1,D2)→(D7,D8)→(D2,D3)→(D6,D7)→(D3,D4)→(D5,D6)→(D4,D5)→(D3,D4)→(D5,D6)→(D2,D3)(D6,D7)→(D1,D2)→(D7,D8)依次点亮,往复循环。

(6)第六种花样灯显示方式为:

(D1,D3,D5,D7)→(D2,D4,D6,D8)→(D3,D4,D6,D7)→(D1,D2,D4,D5)→(D2,D3,D6,D7)→(D1,D4,D5,D8)→(D1,D2,D3,D4)→(D5,D6,D7,D8)依次点亮,往复循环。

图2.6LED显示电路设计

 

2.3系统硬件原理图(附录1)

3.软件设计

3.1系统软件流程控制

开始先定义三个按键的功能,key1为切换6中花样,key2为控制歌曲的开始,暂停,key3为切换歌曲,程序为:

sbitkey1=P3^2;//按key1可切换花样,

sbitkey2=P3^3;//按key2可切换歌曲,

sbitkey3=P3^1;//总开关。

[5]

用于总体控制花样灯跟歌曲。

先判断是否按下key2,如果按下,在判断是否按下key3和key1,如果key1按下,则调用一下花样的程序:

ucharcodehuayang1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,

0xfd,0xfb,0xf7,0xef,0xdf,0xbf};//花样灯

1ucharcodehuayang2[]={0x7f,0xfe,0xbf,0xfd,0xdf,0xfb,0xef,0xf7,

0xef,0xfb,0xdf,0xfd,0xbf,0xfe};//花样灯2

ucharcodehuayang3[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x0,

0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};//花样灯3

ucharcodehuayang4[]={0x3f,0x9f,0xcf,0xe7,0xf3,0xf9,0xfc,

0xf9,0xf3,0xe7,0xcf,0x9f,0x3f};//花样灯4

ucharcodehuayang5[]={0x3f,0xfc,0x9f,0xf9,0xcf,0xf3,0xe7,

0xcf,0xf3,0x9f,0xf9,0x3f,0xfc};//花样灯5

ucharcodehuayang6[]={0x55,0xaa,0xcc,0x33,0x99,0x66,0x0f,0xf0};//花样灯6

如程序流程图所示彩灯的控制和音乐的播放。

图4.1音乐播放器程序流程图

3.11音调确定方法

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

利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可以在I/O脚上得到此频率的脉冲。

例如频率为523Hz,其周期=1/523=1912us,半周期的时间t=1912/2=956us,(12/12M)*n=956us,求出n的值为956,T=65536—956=64580。

所以在每次技术956次时将I/O反相,就可得到中音DO(523Hz)。

C调各音频频率与计数值T的对照表

低音

频率

初值T

中音

频率

初值T

高音

频率

T

Do

262

63628

Do

523

64580

Do

1046

65058

Re

294

63836

Re

578

64694

Re

1175

65110

Mi

330

64020

Mi

659

64777

Mi

1318

65157

Fa

349

64103

Fa

698

64820

Fa

139

65178

So

392

64260

So

784

64898

So

1568

65217

La

440

64400

La

880

64968

La

1760

65252

Si

494

64524

Si

988

65030

Si

1976

65283

3.12节拍的确定

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

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

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

至于1拍多少秒,并没有严格的规定,就像人的心跳一样,大部分人的心跳是每分钟72下,有些人快一点,有些人慢一点,只要悦耳就好。

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

休止符表示暂停发音。

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

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

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

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

[6]

节拍码

节拍数

1

1/8拍

2

1/4拍

3

3/8拍

4

1/2拍

5

5/8拍

6

3/4拍

8

1拍

每个音符使用一个字节,字节的高4位代表音符的节拍,低四位代表音符的高低。

3.2模块设计

3.21花样流水灯控制循环程序控制程序

while

(1){if(count1!

=0)

{switch(count1)

{case1:

for(x=0;x<14;x++)

{if(key3==1)

{P1=0xff;

fm=0;

break;}

P1=huayang1[x];

beep();

delay1(300);

if(count1!

=1)break;}break;

case2:

for(x=0;x<14;x++)

{if(key3==1)

{P1=0xff;

fm=0;

break;}

P1=huayang2[x];

beep();

delay1(300);

if(count1!

=2)break;}break;

case3:

for(x=0;x<16;x++)

{if(key3==1)

{P1=0xff;

fm=0;

break;}

P1=huayang3[x];

beep();

delay1(300);

if(count1!

=3)break;}break;

case4:

for(x=0;x<13;x++)

{if(key3==1)

{P1=0xff;

fm=0;

break;}

P1=huayang4[x];

beep();

delay1(300);

if(count1!

=4)break;}break;

case5:

for(x=0;x<13;x++)

{if(key3==1)

{P1=0xff;

fm=0;

break;}

P1=huayang5[x];

beep();

delay1(300);

if(count1!

=5)break;}break;

case6:

for(x=0;x<8;x++)

{if(key3==1)

{P1=0xff;

fm=0;

break;}

P1=huayang6[x];

beep();

delay1(300);

if(count1!

=6)break;}break;

}

}

3.22中断函数按键控制音乐播放程序

voidint0()interrupt0

{EA=0;//关总中断

delay1

(1);//去抖

if(key1==0)

{count2=0;//不让蜂鸣器唱歌

TR0=0;

count1++;

if(count1==7)

count1=1;}

EA=1;//开总中断}

voidint1()interrupt2

{EA=0;//关总中断

delay1

(1);//去抖

if(key2==0)

{count1=0;//流水灯无花样

TR0=1;

i=0;//从头开始唱

count2++;

if(count2==6)

count2=1;}

EA=1;//开总中断}

voidtimer0()interrupt1//用于产生各种音调

{TH0=timeh;

TL0=timel;

fm=~f

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2