毕业论文:单片机的音乐喷泉制作-DIY分享 全部设计资料 源代码
因为最近忙着考试,所以都没时间更新博客了,在后台有个小姐姐给我留言说自己对单片机很感兴趣,但是又不知道从哪里开始学起,是先学硬件好还是先学软件好,其实在我们复杂的电子学里,硬件和软件是分不开的,硬件就像是我们的心脏和四肢,软件就像我们的大脑,如果只有软件没有硬件,那我们的系统就是一个没用的程序,不能执行任何操作,而如果只有硬件没有软件那么整个系统就是一个行尸走肉,是一个没有“大脑”的躯壳,我说到现在大家也应该明白了,硬不离软,软不离硬,只有软硬兼修,方能大成!好了,回到刚才的问题,我建议先从硬件开始学起,先理解了硬件的架构和各部分的工作原理,然后再去看软件,这样能更好的理解原理,就像我推荐大家先用汇编后用C一样 好了,写了这么多,如果你有不同意见或者想法欢迎留言和私信。
今天送给大家一个比较简单的小项目吧,如果你有兴趣的话可以试着做一下呦!
好了老规矩先上实物图
正面图:
焊接好的成品背面图:
电路原理图:
PCB图:
音乐喷泉的项目元器件清单:
音乐喷泉单片机C语言参考源代码如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit out=P3^7;
sbit led1=P0^7;
sbit led2=P0^6;
sbit led3=P0^5;
sbit led4=P0^4;
sbit led5=P0^3;
sbit led6=P0^2;
sbit led7=P0^1;
sbit led8=P0^0;
sbit SCL=P1^2; //SCL定义为P1口的第3位脚,连接ADC0832SCL脚
sbit DO=P1^3; //DO定义为P1口的第4位脚,连接ADC0832DO脚
sbit CS=P1^0; //CS定义为P1口的第4位脚,连接ADC0832CS脚
uchar h1,date;
unsigned char adval;
void delay(uint z)
{
uchar y;
for(;z>0;z--)
for(y=120;y>0;y--);
}
以下是模数转换部分
/***********读数模转换数据********************************/
//请先了解ADC0832模数转换的串行协议,再来读本函数,主要是对应时序图来理解,本函数是模拟0832的串行协议进行的
// 1 1 0 通道
// 1 1 1 通道
unsigned char ad0832read(bit SGL,bit ODD)
{
unsigned char i=0,value=0,value1=0;
SCL=0;
DO=1;
CS=0; //开始
SCL=1; //第一个上升沿
SCL=0;
DO=ODD;
SCL=1; //第二个上升沿
SCL=0;
DO=SGL;
SCL=1; //第三个上升沿
DO=1;
for(i=0;i<8;i++)
{
SCL=1;
SCL=0; //开始从第四个下降沿接收数据
value<<=1;
if(DO)
value++;
}
for(i=0;i<8;i++)
{ //接收校验数据
value1<<=1;
if(DO)
value1+=0x01;
SCL=1;
SCL=0;
}
if(value==value1) //与校验数据比较,正确就返回数据,否则返回0
return value;
return 0;
}
void penquan() //PWM调压
{
date=ad0832read(1,0);
h1=(255-date);
out=0;
delay(h1);
if(h1>30) led1=1; else led1=0;
if(h1>70) led2=1; else led2=0;
if(h1>100) led3=1; else led3=0;
if(h1>130) led4=1; else led4=0;
if(h1>160) led5=1; else led5=0;
if(h1>180) led6=1; else led6=0;
if(h1>200) led7=1; else led7=0;
if(h1>220) led8=1; else led8=0;
out=1;
delay(date);
}
……………………
鉴于篇幅所限代码只能写到这里,由于平台不能上传附件,如果需要设计文件请留言或者私信,如果你有什么意见和建议欢迎大家交流,让我们共同学习,一起进步!
喜欢请转发留言加关注,谢谢!
单片机实例分享,打造音乐频谱时钟
(此处已添加圈子卡片,请到今日头条客户端查看)电路原理
下面我们按各功能模块逐一给大家介绍一下这个制作的电路原理吧。
图25.1 时钟显示效果
图25.2 频谱显示效果
1.电源部分
电源电路如图25.3所示。
图25.3 电源部分的电路
电源模块采用了一支很常见的7805稳压芯片,再加一大一小两个电容进行滤波,输入端直接买了个9V/1A的电源适配器,方便省事。7805额定输出电流1A,对于这样的小系统来说,已经完全够用了。实际使用下来,7805发热不太大,无需加装散热片。为了使用方便,我在7805的输入端加装了一个开关和一个红色LED,分别作为系统电源开关和指示灯。
2.时钟、温度部分
这部分电路如图25.4所示。单片机采用的是STC89C52RC,考虑到成本和功能性问题,时钟部分我没有单独买时钟芯片,直接使用内部定时器中断作为时钟源,这直接导致的结果就是时钟误差稍大。经测试,每24小时误差在1分钟左右,作为一个功能性的DIY作品,就饶了它吧,呵呵……温度传感器采用的也是常用的DS18B20,相信大家都很熟悉。3个功能按键分别是时钟(闹铃)小时调整、时钟(闹铃)分钟调整和时钟/闹铃切换。
图25.4 时钟、温度部分的电路
为了跟“频谱”切题,时钟、温度的显示没有采用传统的数字表示,而是分别把时钟的小时、分钟的十位和个位分别用点来表示,每两列表示一位,每行表示一点,左下角是时钟,右上角是温度。是不是有点晕乎呢?其实只要你看了实物就会觉得很简单,文字的确不是很好表达。时钟没有单独设置“秒”的显示,为了增强显示效果,我特地在右下角设置了沙漏下落效果,每一秒钟下落一行。
3.频谱分析部分
电路如图25.5所示。这部分的制作跟“五色LED频谱”是一样的原理,都是把音频信号经AD采样,用快速傅里叶变换求出频点的幅值,再根据幅值大小来驱动相应的LED。只不过我设计的是每次采128个点,最后十六分频而已。单片机采用的是STC12C5A60S2,已经在信号输入端加了47pF的电容滤波,但还是发现有噪声。可能是因为使用的是洞洞板,还有就是走线过长的缘故。我试着加大了电容再次滤波,但直接导致低频响应变差,鉴于噪声不是很严重,最后只好作罢,将就一下了。
图25.5 频谱分析部分的电路
4.WAV 音乐播放部分
电路如图25.6所示。这部分应该是整个系统里面最复杂的了,WAV音乐播放部分是在数码之家论坛hit00版主的“WAV播放器”的基础上修改而来的。单片机选用的是STC12C5616AD,虽然该单片机自带有SPI接口,在一定程度上已经简化了程序,但SD卡文件的操作确实有难度。原来的程序里带有语音,受到单片机存储空间的限制,语音质量太差,没有“暂停”及”上一曲”功能。我去掉了语音,增加了暂停及上一曲功能。其中暂停功能的实现花了我不少时间,本来想当暂停的时候就让单片机进入死循环,开始的时候再跳出来,结果试了以后发现完全不是那么回事。单片机PWM信号的输出本来就用的中断,单片机进不进入死循环,中断还是一样的工作。要不就让它在暂停的时候掉电或是待机什么的呢?好吧,查STC12C5616AD的手册。一看手册我笑了,PCON电源控制寄存器不正是我想找的吗,单片机进入掉电模式,单片机状态维持当前值,呵呵……问题解决。功放部分采用了LM386功放芯片,直接引用了网上LM386的典型应用电路。
图25.6 WAV音乐播放部分的电路
5.显示部分
电路如图25.7所示。为了能有好的显示效果,显示部分用的是32×16的高亮度聚光蓝色LED组成的点阵屏,1kΩ电阻限流。全过程手工焊接,可能我焊得慢,整整焊了一晚上。焊接状态与电路细节如图25.8、图25.9所示。
图25.7 显示部分的电路
由于时钟部分跟频谱分析部分共用点阵屏,所以必须考虑两路信号的隔离分时显示。还有就是32列LED的列驱动问题。信号的隔离分时显示我用的是74HC573锁存器,通过控制OE端口将需要显示的信号线路的74HC573选通,而将另外一组信号通过74HC573的高阻态实现隔离。LED的列驱动选用的是74HC154(4线—16线译码器),只需一组I/O口就可实现32列LED的列驱动了。
到此,整个系统的介绍就完了,在这里特别感谢数码之家论坛的hit00版主在制作过程中给予的大力帮助。图25.10就是这个实物作品的全家福。
为了尽量减少干扰和连线,整个板子电源全是用焊锡走的线。信号线采用杜邦线和插针连接,方便调试。
虽然制作时觉得挺累,但当看到自己做的东西“跑”起来那一刻,就什么都值了,我相信每一个DIY爱好者都会有这种感觉吧,也许这就是DIY的乐趣。相关源程序可到qq群657864614进行下载。
图25.8 焊接状态
图25.9 电路细节
图25.10 完成的电路板实物
划重点:现收集整理了1300G电子技术资料,一口价68元,需要的朋友可以私聊我!
相关问答
C语言音乐 跳动的频谱要怎么实现?首先我们采用的是基于微处理器软件分析法,微处理器是本设计的核心部分,因此我们选择增强型的8051单片机作为本次设计的芯片。软件上的分析法核心是快速傅立叶...
单片机 蜂鸣器 音乐 代码怎么编写?单片机蜂鸣器音乐代码的编写主要包括以下几个步骤:确定音符的频率:根据所需播放的音符,查阅音符对应的频率值。计算定时器溢出值:根据音符的频率和单片机...
请问大家下用 单片机 如何连接上才能做出 音乐 频谱啊?简单驱动可以这样:89S51单片机P0和P2口输出驱动16位作为频谱幅值,驱动垂直16行,由幅值经过单片机从P0和P2口输出;P1口各四位分别接两个HC154进行4~16译码,获...
用51 单片机 实现 音乐 播放的原理是什么?通过将音乐作为数字信号编码储存在闪存中,然后通过51单片机的PWM输出模块将该信号转化成模拟信号输出,驱动音频放大器放大后输出到喇叭上,从而实现音乐播放的...
基于 单片机 的多功能 音乐 盒怎么做实物?1基于单片机的多功能音乐盒怎么做实物?这道题的答案就是这样的,它是这样的做实物,.选择大小适中的一个图片作为你的音乐盒背景。你可以先用图片处理软件对...
C语言 编写年历显示程序20分- 汇财吧专业问答test[回答]C语言设计简单万年历源代码[含阳历阴历转化、密码登陆功能]C语言课程设计简单万年历源代码[含阳历阴历转化、密码登陆功能]发布:极乐鸟|发布时间:20...
天津市近现代出过哪些女性名人?天津大学陈焱陈焱天津大学机械工程学院教授,博导。2004年毕业于英国牛津大学,获得博士学位。是英国机械工程师学会会士(FellowofIMechE,FIMechE),英国皇家...
怎么将计算机调成 音乐 模式?首先需要调节音量键,确保计算器的声音打开。然后按下两次“时间/日期”键,待屏幕显示为“年月日模式”即为设置完成,这时按下按键就可以弹音乐了。不过需要注...
手机随机播放 音乐 的原理是什么?单片机发音原理:利用定时器或pwm功能,输出pwm,经一级有源滤波后放大驱动扬声器。单片机演奏音乐基本是单音频率,它不包含相应幅度的谐波频率,也就是说不能...
水 音乐 原理?改变频率就改变了电机的转速,也就改变了水泵的压力,音乐的不同频率经单片机处理送到变频电机的控制端,使电机转速随音乐的音调,节奏,和强弱变化,水泵的压力...