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

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

工程名称:基于51单片机的彩灯数字音乐盒设计

前言

众所周知电子入门从点灯开始!

本案例将点灯与音乐盒相结合,能让你了解电路设计,PCB设计,单片机程序设计,3D建模的使用等多方面的知识,也能让你感受入门电子的乐趣所在。

工程描述

基于STC89C52设计的彩灯数字音乐盒,由8个彩色的LED灯组成不同的音符,当蜂鸣器发出音符时,对应的LED灯将会闪烁。同时设计有上一曲,下一曲,暂停按钮,通过数码管显示当前播放第几首歌。还预留了Type-C供电口和程序下载串口,可通过串口对程序进行更新(可以翻译自己喜欢的歌曲后更新程序下载,歌曲翻译方法见后文程序设计部分)。

图1a       成品展示图

图1 b 成品展示图

图1 c 成品展示图

电路及PCB设计

本项目的电路主要是以单片机为核心设计的一些外围电路,使用的嘉立创平台,PCB的设计也使用该平台。PCB的下单制作也使用的是嘉立创的每月两次的免费下单。(在这里推荐一下嘉立创平台,能进行电路设计,PCB设计,PCB下单制作对于想简单制作一些硬件小项目的新手十分友好)

图2 电路原理图

图3  PCB原理图

电路模块分析

  1. 主控电路

主控使用STC89C52RC直插封装的MUC作为彩灯音乐盒的主控电路。

在使用51单片机时需要在P0的IO口上接一个4.7k-10k左右的上拉电阻,因为P0口在单片机内部是不带上拉的电阻的。一般对于51单片机的P0口的上拉电阻会选择使用排阻,在本例程中也同样使用了10k的排阻。

图4 主控电路

  1. 晶振模块与复位模块

STC89C52RC是没有内部时钟的,因此必须在外部配置晶振电路才能使用,晶振就相当于单片机心脏,是单片机工作的必要条件。

通过查阅资料可以STC89C52RC可以支持0-80Mhz的晶振使用的,但一般实际项目中通常在使用51单片机时,我们一般只会选择11.0592MHz和12MHz这两种晶振。

对于这两种晶振的区别如下:

12MHz的晶振,一个及其机器周期刚好是1us,在进行时间计算时比较方便,只需要计算1us相对应的倍数即可。

11.0592MHz的晶振,再进行串口通信波特率的计算时比较方便,能得到一个整数。

对于本项目,由于需要计算每个音符的发音时长所以选择了12MHz的晶振。

51单片机有四种复位方式:外部RST引脚复位,软件复位,掉电复位上电复位和看门狗复位。

一般使用较多的是外部向RST引脚施加脉冲信号复位,其原理是:单片机上电后电容两边电压不能骤变,+5v经过电解电容给单片机复位引脚施加高电平5v,一起经过10kΩ电阻向电容充电,使复位脚电压下降,经过大于10ms后复位角变为0v,给该电路并联一个开关即可实现开关复位。

图5 晶振与复位电路

  1. 下载接口电路

下载电路使用一个4P2.54的排针作为程序的烧录接口,可以使用USB转TTL串口烧录器进行程序烧录。

图6 串口下载电路

  1. 电源供电与TYPE-C供电电路

STC89C52RC的输入电压为3-5v之间,因此可以使用Type-C线通电脑充电线直接进行供电(使用充电线供电时尽量选择不带快充的避免电流过大),此外还预留了接线柱可接3-5v的电池直接进行供电。在电路中还设计了一个电源总开关,用来控制电源是否接入。

图7 电源供电与TYPE-C供电电路

  1. 蜂鸣器电路

蜂鸣器电路采用三极管放大电路,直接使用单片机驱动蜂鸣器会因为电压不够导致蜂鸣器声音很小,设计三极放大电路增强驱动能力。蜂鸣器采用无源蜂鸣器,需要单片机提供方波信号进行驱动,三极管采用NPN型,高电平导通。

图8 蜂鸣器电路

  1. 数码管显示电路

数码管采用共阴极七段数码管,接到单片机的P0口

图9 数码管显示电路

  1. 发光二极管电路

发光二极管电路为了增强驱动能力采用了低电平点亮的方式,正极接上拉电阻。

图10 发光二极管电路

  1. 按键电路

按键电路设计有三个按键分别为上一曲,下一曲和暂停按键,对于这三个按键从设计思路上预计实现即按即停,即按即切换的效果,因此需要采取中断触发的方式。但对于51单片机外部中断引脚只有两个INT0和INT1显然不够用,对于此问题可以采用中断拓展的方式进行解决。本项目采取的中断拓展方式原理为:将三个按键接入在不同的引脚,再利用二极管单向导通的特性将三个按键都接入INT0,当三个按键有任意一个按下时即进入中断,然后在程序中判断是哪一个按键按下。这样即可实现三个按键都能进入中断且只需占用一个INT0。

图11 按键电路

程序设计

程序设计使用keil C51进行编程开发,程序的编写上主要是对于蜂鸣器与彩灯的控制。彩灯的控制相对简单,规定彩灯1-7分别对应七个音符只需在响应音符时点亮相应的彩灯即可。而蜂鸣器的控制就较为复杂了,首先需要确定不同音符的发声频率,以C调为例查到频率如下:

图12 C调音符与频率对照表

然后每个音符对应的频率存在一个数组里方便后期调用。对于发声频率的实现通过定时器对蜂鸣器IO口电平反转实现,给定时器不同的初值以实现不同频率的反转即实现对发出每个音符。对于发声时长则通过延时函数来实现。最后将音符发声时长亮灯的数据装在一个数组里,通过主函数进行调用即能实现歌曲的播放。

而这个数组就是对每一首歌曲翻译好的谱子。

歌曲的翻译方法如下:

以C调为例:

对于低音的1 1# 2 2# 3 4 4# 5 5# 6 6# 7分别记为

L1 L1_ L2 L2_ L3 L4 L4_ L5 L5_ L6 L6_ L7

同理对于中音表示为M1 M1_ …,高音表示为H1,H1_ …。

按照上述方式翻译歌曲如下:

图 13 简谱翻译展示图

外观设计

对于外观设计主要是根据PCB上所焊接的电子原件,设计相应的孔位将所需要的按键,灯光,接口等元件显露出来其余部件进行包裹。焊接好元件的实物图如下:

图14 焊接完成的PCB图

基于上图实物进行包装外壳的设计通过solidworks先进行草图的绘制将对于孔位画好后再进行凸台拉伸,构建实体。分别绘制正面和底板后期进行组合成音乐盒。其建模效果图如下:

图15 外壳3D建模效果图

模型设计完成后,用切片软件进行切片,通过3D打印将外壳制作出来,效果如下:

图16 3D打印外壳与焊接完成的PCB实物图

最终将PCB与打印好的外壳按照对应孔位安装后,即可得到实物,效果如下:

图17 最终效果图

项目总结

最后来总结一下本次项目,在本项目中需要用到的知识比较多,首先需要对基本电路有一些了解其中也有模电和数电部分知识;然后就是对单片机需要有了解,因为本项目主要是基于单片机开展,因此必须要掌握单片机的基本操作;接下来就是需要了解电路板的设计,和一些常见的电路板设计软件的使用;最后还需掌握一些3D建模软件的使用如solidworks等。掌握以上技能就能很容易的实现本项目,以本项目为基础相信聪明的读者们能做出比本项目更好的制作。

相关资料:

链接:https://pan.baidu.com/s/163jdN_OpRK-hBkiq-cdK-A

提取码:2023

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
概述: 传统的音乐盒多是机械音乐盒,但是,机械式的音乐盒体积比较大,比较笨重,且发音单调。水、灰尘等外在因素,容易使内部金属发音条变形,从而造成发音跑调。另外,机械音乐盒放音时为了让音色稳定,必须放平不能动摇,而且价格昂贵,不能实现大批量生产。基于单片机设计制作的电子式音乐盒。与传统的机械式音乐盒相比更小巧,音质更优美且能演奏和弦音乐。电子式音乐盒动力来源是电池,制作工艺简单,可进行批量生产,所以价格便宜。基于单片机制作的电子式音乐盒,控制功能强大,可根据需要选歌,使用方便。所放歌曲的节奏可以根据需要进行设置,根据存储容量的大小,可以尽可能多的存储歌曲。另外,可以设计彩灯外观效果,增设放歌时间、序号显示灯功能,使音乐盒的功能更丰富。 单片机数字音乐盒有关介绍: 电子音乐已广泛地应用于社会生活的各个领域。其类型从音乐卡片到CD、MP3 等多种多样,制作原理也各不相同。声音是通过振动产生的。单片机对某一I/O引脚以一定的频率循环置1和清0,这一引脚便产生一定频率的方波,该方波通过放大后作用于扬声器便产生一定频率的声音。若改变输出方波的频率,产生的声音也就改变了。通过控制输出方波的时间长短,声音的长短也就得到控制。因此,根据乐谱,单片机就可产生电子音乐。音乐中最关键的两个要素是音符和节拍。单片机控制的音乐发生器系统由硬件电路和软件两部分构成。利用单片机控制的电子音乐发生器软硬件上具有独特的优点,系统的开发周期短,成本低,电路制作容易。更换歌曲时,硬件电路无需作任何修改,只需修改软件即可实现。软件编程时,可用51系列单片机的汇编语言或C51语言实现。同时还可根据个人的习好通过软件改变节拍的延时时间,增电子音乐的趣味性。 发音原理介绍: 发音原理:播放一段音乐需要的是两个元素,一个是音调,另一个是音符。首先要了解对应的音调,音调主要由声音的频率决定,同时也与声音强度有关。对一定强度的纯音,音调随频率的升降而升降;对一定频率的纯音、低频纯音的音调随声强增而下降,高频纯音的音调却随强度增而上升。另外,音符的频率有所不同。基于上面的内容,这样就对发音的原理有了一些初步的了解。 音符的发音主要靠不同的音频脉冲。利用单片机的内部定时器/计数器0,使其工作在模式1,定时中断,然后控制P3.7引脚的输出音乐。只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。 音符频率的产生: 音符及定时器初始值: 例如:中音1(do)的音频=523HZ,周期T=1/523s=1912 定时器/计数器0的定时时间为:T/2=1912/2 定时器956的计数值=定时时间/机器周期=956/1=956(时钟频率=12MHZ) 装入T0计数器初值为65536-956=64580 将64580装入T0寄存器中,启动T0工作后,每计数956次时将产生溢出中断,进入中断服务时,每次对P3.0引脚的输出值进行取反,就可得到中音DO(523HZ)的音符音频。将51单片机内部定时器工作在计数器模式1下,改变计数初值TH0,TL0以产生不同的频率。 若该设计使用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。若用单片机设计制作完成,由于其功能的实现主要通过软件编程来完成,那么就降低了硬件电路的复杂性,而且其成本也有所降低,所以在该设计中采用单片机利用AT89C51,它是低功耗、高性能的CMOS型8位单片机。片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。另外, AT89C51的指令系统和引脚与8051完全兼容,片内有128B 的RAM、32条I/O口线、2个16位定时计数器、5个中断源、一个全双工串行口等。 数字音乐盒制作proteus仿真原理图:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值