找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 17482|回复: 13
收起左侧

基于单片机的音乐盒设计资料 含PCB与原理图,源程序和报告

  [复制链接]
ID:358515 发表于 2018-6-25 16:12 | 显示全部楼层 |阅读模式
基于单片机的数字音乐盒设计,自己整理的一些资料,包括PCB,原理图,程序,还有报告,实训的时候做的,可实现
赚点币 谢谢谢谢
目录
1 选题的背景              1
2 设计说明              1
2.1设计要求              1
2.2 附加功能              1
3 硬件设计              1
3.1 系统组成框图              1
3.2单元电路设计              2
3.2.1 晶振电路              2
3.2.2 复位电路              2
3.2.3 按键              2
3.2.4 数码管电路              2
3.2.5 蜂鸣器电路              3
3.2.6 彩灯电路              3
3.2.7 整体电路              4
4 程序设计              5
4.1音调、节拍以及编码的确定方法              5
4.1.1 音调的确定              5
4.1.2 节拍的确定              5
4.1.3 编码              6
4.2  主程序流程图              6
4.3音乐播放程序流程图              7
5 protel软件仿真及PCB板              7
5.1 原理图的绘制              8
5.2 Pcb图              8
5.3 实物图              9
6 实验程序              10
7 总结              14
附录              15

内容摘要: 本设计是一个基于STC89C516单片机的音乐盒,该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。根据设计要求的“实现通过按钮控制按顺序播放或者单曲循环”要求,设计了一个二位按钮实现对其的播放模式的控制,另设一个复位按钮实现切换歌曲。用数码管来实现对当前曲目的显示,另还设有花样LED,播放歌曲时,蜂鸣器发出某个音调,与之对应的LED亮起。此次设计,利用PROTEUS进行原理图的绘制和keil相配合进行仿真测试,在基本实现理想功能后,制作出实际电路,进行排错测试后,完成制作。





1 选题的背景

本次课设是应用单片机原理和控制理论设计音乐演奏控制器的硬件电路,并利用C语言进行程序设计。通过控制单片机内部的定时器来产生不同频率的方波,驱动喇叭发出不同的音调的音乐,在利用延迟来控制发音时间的长短。把乐谱转化成相应的定时常数就可以从发音设备中演奏出悦耳的音乐。


2 设计说明
2.1设计要求
  •   利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲
  •   设计按钮实现歌曲顺序播放或单曲循环;
  •   存储三首以上歌曲
2.2 附加功能

(1)用数码管显示当前播放曲目;

(2) LED花样彩灯随播放音符变换;

(3)通过按键实现下一首歌的切换;

3  硬件设计
3.1 系统组成框图
图3-1系统组成框图

本设计采用STC89C516RD+作为主控芯片,蜂鸣器作为输出设备产生音乐,通过MOD键能实现播放模式的控制,数码管(LED)能够实时的显示当前的歌曲号。其中P3.3外接按键,P0口用作数码管输出数据端口,P2口作LED输出数据端口P1.1蜂鸣器端口。


3.2单元电路设计
3.2.1晶振电路

放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一中有一个用于构成内部振荡器高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和起构成自然振荡器。外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1,C2虽然没有什么严格的要求,但电容容量大小会轻微影响振荡频率的高低、振荡器工作稳定性、起振的难易程序及温度稳定性。振荡器电路图如下:

图3-2-1晶振电路
3.2.2复位电路

复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。

图 3-2-2 复位电路
3.2.3按键
本设计,歌曲的切换采用复位开关,播放模式,复位电路采用二位开关。
3.2.4 数码管电路
利用P0口做数码管输出口,由于P0有的结构,做输出时需上拉电阻。
图3-2-4数码管电路
3.2.5蜂鸣器电路

蜂鸣器根据结构不同分为压电式蜂鸣器和电磁式蜂鸣器;而两种蜂鸣器又分为有源蜂鸣器和无源蜂鸣器,这里的源特指振荡源;有源蜂鸣器直接加电就可以响起,无源蜂鸣器需要我们给提供振荡源。理想的振荡源为一定频率的方波。由于系统采用了无源蜂鸣器,所以需要我们通过晶振产生一定频率的方波信号,本次采用频率为12MHZ的晶振来产生标准方波。

由于蜂鸣器的工作电流一般比较大,以致于单片机的I/O 口是无法直接驱动的,所以要利用放大电路来驱动,一般使用三极管来放大电流就可以了,如图3-2-5所示。

图3-2-5蜂鸣器电路
3.2.6 彩灯电路
彩灯部分由P2口输出,采用共阳接法,当单片P2口相应位输出0对应LED点亮。
图3-2-6彩灯电路
3.2.7整体电路
图3-2-7整体电路

4 程序设计
4.1音调、节拍以及编码的确定方法

一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能像电子琴那样能奏出多种音色的声音。因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和节拍表示一个音符唱多长的时间。

4.1.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)。

4.1.2  节拍的确定

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

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

4.1.3  编码

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

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

4.2  主程序流程图
图4-2主程序流程图
4.3音乐播放程序流程图
图4-3 音乐播放程序流程图
5 protel软件仿真及PCB板
5.1 原理图的绘制
图5-1原理图
通过Protues仿真结果,这次课程设计的要求已全部满足。
5.2 PCB图
图5-2PCB图
5.3 实物图

7 总结

一开始拿到题目的时候,先是拿出以前做过的实验把这个题目大体的框架设计出来,确定需要哪些部分的东西,然后大致画出原理图。因为是音乐盒,所以蜂鸣器是必不可少的一部分,其次是时钟电路和复位电路,由于设计要求需要有按键控制歌曲播放的模式是顺序播放还是单曲循环,所以这部分的按键电路也是必不可少的。蜂鸣器电路、时钟电路、复位电路以及按键电路,这是电路的大体模型。接下来是每个电路的具体设计,仿真时蜂鸣器没有加驱动电路,但是考虑到实际电路没有加三极管驱动可能无法工作,所以在实际电路上加上了驱动电路。其实是按键电路,一开始考虑用中断来实现这部分的功能,但是中断口设计有下一曲按键和暂停按键,外部中断不够用,所以决定用一个二位开关来控制一个I/O口,在while循环中每次执行循环时都检测一下该端口的状态,为0时使歌曲计数加一,实现顺序播放的功能。另外还添加了数码管显示当前播放曲目。为了使设计多样性,添加了根据音调变换LED彩灯,使播放不那么单调。

当然过程也不是那么顺利,也遇到了许多的问题。为了更好的实现功能,每个模块的设计都要经过一定的思索,特别是在程序部分上,编曲是最难的一部分。最后的焊接的时候,选材也是一个难题,焊接时由于粗心少焊接了几个单片机引脚致使功能不能够实现。还有复位键一开始选择了自复位开关,导致复位端一直处于高电平状态,单片机无法正常工作,最后经过排查才找出原因,换成二位开关。过程中虽然遇到了不少问题,但是经过一系列的排错和修正,也完成了本次的课程设计,过程也算了漫长而有趣。

全部资料51hei下载地址:
报告.doc (7.24 MB, 下载次数: 205)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:395128 发表于 2018-9-7 18:49 | 显示全部楼层
你好 这个资料怎么才可以下载
回复

使用道具 举报

ID:254815 发表于 2018-12-24 14:10 | 显示全部楼层
乐曲怎么存进去?
回复

使用道具 举报

ID:469794 发表于 2019-1-17 17:39 | 显示全部楼层
很棒很牛逼
回复

使用道具 举报

ID:469923 发表于 2019-1-17 23:30 | 显示全部楼层
你好 这个资料怎么才可以下载
回复

使用道具 举报

ID:151626 发表于 2019-1-18 09:32 | 显示全部楼层
很好的资料
回复

使用道具 举报

ID:624669 发表于 2019-10-18 12:07 来自手机 | 显示全部楼层
求元器件清单
回复

使用道具 举报

ID:652984 发表于 2019-11-30 14:54 | 显示全部楼层
正好要学习
回复

使用道具 举报

ID:745784 发表于 2020-5-7 08:55 | 显示全部楼层
你好,这个资料怎样才可以下载
回复

使用道具 举报

ID:743654 发表于 2020-5-16 16:43 | 显示全部楼层
很不错,虽然功能不多,但是整套设计过程下来一定收获不少,值得学习!
回复

使用道具 举报

ID:767166 发表于 2020-6-2 09:11 | 显示全部楼层
1519810852 发表于 2018-12-24 14:10
乐曲怎么存进去?

双击单片机把程序放进去
回复

使用道具 举报

ID:767166 发表于 2020-6-2 09:13 | 显示全部楼层
正好需要这个,很棒!
回复

使用道具 举报

ID:941608 发表于 2021-6-22 08:58 | 显示全部楼层
你好 我想问一下那个音乐盒里的LED灯它不变,一直在第二个亮,只有LED上面的小方块在变,还有那个数码管一直都是1是什么问题呀?
回复

使用道具 举报

ID:1031013 发表于 2022-5-31 13:18 | 显示全部楼层
资料很有参考价值,感谢老哥的贡献
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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