找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7608|回复: 1
打印 上一主题 下一主题
收起左侧

单片机流水灯音乐盒设计并制作资料 含ppt+仿真+pcb+源码+报告

[复制链接]
跳转到指定楼层
楼主
ppt内容预览:


任务设计
1、设计任务:设计并制作一个流水灯音乐盒。
2、设计要求
  • 流水灯音乐盒电路使用两个按键控制音乐盒,一个用来切换歌曲,另一个用来切换LED灯的变化花样;
  • 利用按键切换演奏出不同的乐曲;
  • 蜂鸣器发出某个音调,与之相对应的LED亮起;
  • 音乐盒共有五首歌曲,花样灯花样共计五种。
3.发挥部分
  • 实此电路的程序只占用了2K左右,可以方便的添加更多的音乐和LED花样,
4.创新部分
  • 演奏完整的一首的歌曲,八路LED随着音乐变化
  • 八路LED变化出各种花样,蜂鸣器随着发出“嘀嘀”声
  • 按下按键1进入演奏音乐模式,再按时就可以切换歌曲,共拥有五首歌曲。
  • 按下按键2进入花样灯模式,再按时就可以切换LED花样,共有五种花样。
、方案论证

2.1方案一:单片机接+5V电源供电,晶振电路产生单片机所需的时钟信号,通过功能键产生外部中断,控制音乐盒的上一首和下一首曲目,再由I/0接口输出控制扬声器发声,LCD显示。另外,复位电路在于营造一个程序运行的初始状态,在程序出错时,重新启动单片机工作。系统组成框图如图1所示



图1方案一 系统框图

方案二:设计一个音乐播放器同样使用AT89C51,蜂鸣器一端与一个按钮串联后再和P17焊接,另一端直接接地;P31和RST端口并联后和主电源串接,如图2所示:

图2方案二系统框图

2.2方案比较

方案一是通过按键控制系统的音乐播放。利用I/0口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏出乐曲;采用LCD显示信息,开机时有欢迎提示字符,播放时显示歌曲序号或名称;可通过功能键选择乐曲暂停,播放;当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲,同时启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。同时启动定时器T1,在LCD显示歌曲号。通过单片机P1口控制,实现功能键盘的功能;功能键盘采用按键开关,通过单片机P2口控制,实现歌曲播放顺序的调换和暂停播放功能;扬声器由单片机的P3控制,实现歌曲播放。方案二是利用AT89C51芯片通过播放按键直接控制音乐,使得蜂鸣器发出声音,方案一所需的电子元件少,这就大大减少了生产成本,此外,对于一个轻便易携的音乐盒,其附加能耗越低越好。

2.3方案论证

虽然方案一的设计比较全面,但其难度较大,且编程方面要求较高;方案二要求简单,容易实现,编程方面也较简单,因设计的是翻盖式音乐盒,其功能是在翻开翻盖的同时开关闭合,播放音乐,翻盖盖上,开关断开,音乐盒停止运行,因此方案二更符合实际需要达到了设计音乐盒的目的。

2.4 方案选择

通过2.3的方案论证,决定选择方案二,方案二的实施性更强。

、总体方案
1.工作原理
本设计采用AT89C51单片机作为本系统的控制模块。依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒,最终达到设计电路的乐器演奏、点歌、存储及显示功能。设计中应用中断系统和定时/计数原理控制演奏器发声,对音乐发生所必须确定的音符和节拍分别用程序语言实现,可以用它来弹奏和播放乐曲。

2.总体设计
设计总体框架图如图1
音乐盒的系统结构以AT89C52单片机位控制核心,加上2个按键、时钟复位电路、蜂鸣器、LED模块组成。单片机负责接收按键的输入,根据输入控制音乐播放曲目和音乐花样灯的显示样式以及蜂鸣器发音。



、系统硬件设计(单元电路设计及分析)
1.AT89C51简介
  功能特性:AT89S52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非 易失性存储器技术制造,与工业80C51 产品指令和引脚完 全兼容。片上Flash允许程序存储器在系统可编程,亦适于 常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统 可编程Flash,使得AT89S52为众多嵌入式控制应用系统提 供高灵活、超有效的解决方案。 AT89S52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。8 位微控制器 8K 字节在系统可编程 Flash AT89S52。
主要性能:与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:0Hz~33Hz 、 三级加密程序存储器 、32个可编程I/O口线 、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。
2. LED显示模块
LED显示电路是由8个LED发光二极管组成,LED接到单片机的P1口,若为低电平,可使LED亮起。发光二极管的亮、灭由内部程序控制,8个LED发光二极管分别对应不同的音阶,所以LED会随着音阶的变化按规律亮、灭。


3.时钟振荡模块
AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器。外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1,C2虽然没有什么严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。
   如果使用石英晶体,我们推荐电容使用30PF10PF,而如果使用陶瓷振荡器建议选择40PF10PF。用户也可以采用外部时钟。采用外部时钟的电路如图示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。振荡器电路图如下:
  晶振电路
4.按键控制模块
按下按键1进入演奏音乐模式,再按时就可以切换歌曲,共拥有五首歌曲。
按下按键2进入花样灯模式,再按时就可以切换LED花样,共有五种花样。当按下电路是就会回到流水灯样式一。
6. 蜂鸣器电路
蜂鸣器用于音乐的发音,受P0.4脚的控制。
7.整体电路
系统整体电路如图8 所示


图8 系统总体电路图
仿真图
、系统软件设计流程
1.主程序流程如图9所示
图9 系统主程序流程
2. 播放音乐子程序流程图10所示

图10 播放音乐子程序流程


测试及其结果分析
1.基本部分测试与分析
(1)第一种花样灯显示方式为:从D1移向D2,然后D1熄灭,再从D2移向D3,然后D2熄灭,以此类推,当循环一遍后,就从D4和D5分别向两边移动。
第一种花样
(2)第二种花样灯显示方式为:从两边向中间移动,首先从D1移向D8,再从D8移向D2,以此类推,往复循环。

(1) 音调的确定

不同音高的乐音是用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个等份,每一个等份叫一个“半音”。两个音之间的距离有两个“半音”,就叫“全音”。在钢琴等键盘乐器上,C–D、D–E、F–G、G–A、A–B两音之间隔着一个黑键,他们之间的距离就是全音;E–F、B–C两音之间没有黑键相隔,它们之间的距离就是半音。通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它们的左上角加上﹟号或者b号的叫变化音。﹟叫升记号,表示把音在原来的基础上升高半音,b叫降记音,表示在原来的基础上降低半音。例如高音DO的频率(1046Hz)刚好是中音DO的频率(523Hz)的一倍,中音DO的频率(523Hz)刚好是低音DO频率(266 Hz)的一倍;同样的,高音RE的频率(1175Hz)刚好是中音RE的频率(587Hz)的一倍,中音RE的频率(587Hz)刚好是低音RE频率(294 Hz)的一倍。

要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。

利用AT89C51的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0以产生不同频率的方法。此外结束符和休止符可以分别用代码00H和FFH来表示,若查表结果为00H,则表示曲子终了;若查表结果为FFH,则产生相应的停顿效果。

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

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

              N=Fi2Fr                                                      

N:计算值;Fi:内部计时一次为1us,故其频率为1MHz;Fr要产生的频率。

其计数值的求法如下:

T=65536-N=65536-Fi2Fr

例如:设K=65536,F=1000000=Fi=1MHz,球低音DO(261Hz)。中音DO(523Hz)。高音的DO(1046Hz)的计算值

T=65536-N=65536-Fi2Fr=65536-10000002Fr=65536-500000/Fr

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

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

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

C调各音符频率与计数值T的对照表如表1所示:

1  C调各音符频率与计数值T的对照表
低音
频率
T
参数
中音
频率
T
参数
高音
频率
T
参数
Do
262
1908
229
Do
523
956
115
Do
1046
57
57
Do﹟
277
1805
217
Do﹟
554
903
108
Do﹟
1109
54
54
Re
294
1701
204
Re
587
852
102
Re
1175
51
51
Re﹟
311
1608
193
Re﹟
622
804
97
Re﹟
1245
48
48
Mi
330
1515
182
Mi
659
759
91
Mi
1318
45
45
Fa
349
1433
172
Fa
698
716
86
Fa
1397
43
43
Fa﹟
370
1351
162
Fa﹟
740
676
81
Fa﹟
1480
41
41
So
392
1276
153
So
784
638
77
So
1568
38
38
So﹟
415
1205
145
So﹟
831
602
72
So﹟
1661
36
36
La
440
1136
136
La
880
568
68
La
1760
34
34
La﹟
464
1078
129
La﹟
932
536
64
La﹟
1865
32
32
Si
494
1012
121
Si
988
506
61
Si
1976
30
30

(2)节拍的确定

若要构成音乐,光有音调是不够的,还需要节拍,让音乐具有旋律(固定的律动),而且可以调节各个音的快满度。“节拍”,即Beat,简单说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚。若1拍实0.5s,则1/4 拍为0.125s。至于1拍多少s,并没有严格规定,就像人的心跳一样,大部分人的心跳是每分钟72下,有些人快一点,有些人慢一点,只要听的悦耳就好。音持续时间的长短即时值,一般用拍数表示。休止符表示暂停发音。

一首音乐是由许多不同的音符组成的,而每个音符对应着不同频率,这样就可以利用不同的频率的组合,加以与拍数对应的延时,构成音乐。了解音乐的一些基础知识,我们可知产生不同频率的音频脉冲即能产生音乐。对于单片机来说,产生不同频率的脉冲是非常方便的,利用单片机的定时/计数器来产生这样的方波频率信号。因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。如表2节拍与节拍码对照:

表2节拍与节拍码对照
节拍码
节拍数
节拍码
节拍数
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
1又1/2拍
6
3/4拍
8
2拍
8
1拍
A
2又1/2拍
A
1又1/4拍
C
3拍
C
1又1/2拍
F
3又3/4拍



每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍。如果1拍为0.4秒,1/4拍实0.1秒,只要设定延迟时间就可求得节拍的时间。假设1/4拍为1DELAY,则1拍应为4DELAY,以此类推。所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如表3为1/4和1/8节拍的时间设定。

3 1/41/8节拍的时间设定
曲调值
DELAY
曲调值
DELAY
调4/4
125毫秒
调4/4
62毫秒
调3/4
187毫秒
调3/4
94毫秒
调2/4
250毫秒
调2/4
125毫秒

(3)编码

do re mi fa so la si分别编码为1~7,重音do编为8,重音re编为9,停顿编为0。播放长度以十六分音符为单位(在本程序中为165ms),一拍即四分音符等于4个十六分音符,编为4,其它的播放时间以此类推。音调作为编码的高4位,而播放时间作为低4位,如此音调和节拍就构成了一个编码。以0xff作为曲谱的结束标志。

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

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

歌曲播放的设计。先将歌曲的简谱进行编码,储存在一个数据类型为unsigned char 的数组中。程序从数组中取出一个数,然后分离出高4位得到音调,接着找出相应的值赋给定时器0,使之定时操作蜂鸣器,得出相应的音调;接着分离出该数的低4位,得到延时时间,接着调用软件延时[1]。如表4简谱对应的简谱码、T值、节拍数:

4 简谱对应的简谱码、T值、节拍数
简谱
发音
简谱码
T值
节拍码
节拍数
5
低音SO
1
64260
1
1/4拍
6
低音LA
2
64400
2
2/4拍
7
低音TI
3
64524
3
3/4拍
1
中音DO
4
64580
4
1拍
2
中音RE
5
64684
5
1又1/4拍
3
中音MI
6
64777
6
1又1/2拍
4
中音FA
7
64820
8
2拍
5
中音SO
8
64898
A
2又1/2拍
6
中音LA
9
64968
C
3拍
7
中音TI
A
65030
F
3又3/4拍
1
高音DO
B
65058


2
高音RE
C
65110


3
高音MI
D
65157


4
高音FA
E
65178


5
高音SO
F
65217




七、总结

对比两种方案的设计,可以看出方案一,不论在软件设计,硬件设计上带来许多便捷,更能够体现符合实际生产的需要,节约成本,服务生活,引导节能环保的潮流,具有极强的现实意义和可行性,利用定时器可以产生各种固定频率的方波信号,也可以产生包括"Do"、"Re"、"Me"--等音阶在内的各种频率声音。将各个音阶连接在一起,便可组成一支曲子或是演奏一段旋律。

、设计心得体会

流水灯音乐盒设计是一项趣味性很强的设计,能激发我的浓厚兴趣。同时要求我从程序编程,调试,软件仿真和绘制开始,到硬件的焊接和调试,再到修改程序,在这期间我了解到了单片机开发的大致流程。

通过这次设计,也让我学习到了很多新的东西,这些都让我受益匪浅。单片机的定时器功能,LED的流水显示,功能键盘的设计,这些内容都颇为丰富。有以前学习过的旧知识,也有很多未曾注意到得新知识,这些都曾使我的设计出错,通过自己的努力,老师指导和同学的帮助,终于克服了一个一个的困难,把硬件实物顺利做好,把软件调试顺利完成。通过这次设计能够更熟悉的进行单片机的控制和编程,也从中发现了自己很多的不足,通过学习网上的资料和书本上的知识才能很好的完成任务,在实践的过程中不断地学习是更高效的学习方法,这次设计也有很多不足的地方,希望在以后的制作过程中能不断地提高自己,做出更好、更有用的作品。








全部资料51hei下载地址:
流水灯音乐盒.rar (3.4 MB, 下载次数: 187)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:408346 发表于 2018-10-13 16:06 | 只看该作者
程序打不开呀,楼主用的是proteus8.0吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表