单片机基于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
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值