毕业设计(论文)-基于51单片机的低成本音乐门铃设计 - 图文(6)

2019-03-04 13:39

TH0 = Sound_Temp_TH0;

TL0 = Sound_Temp_TL0; }

播放函数用于主文件程序中调用音符的音调以及节拍,从而产生中断,播放音乐,其部分程序如下: ……

while(Point < SoundLength) {

SL=Tone;

//计算出音符

//计算出高低音

SM=Tone/10; SH=Tone/100;

//计算出是否升半

//查出对应音符的

CurrentFre = NewFreTab[SignTab[SL-1]+SH];

频率

if(SL!=0) {

if (SM==1) CurrentFre >>= 2; if (SM==3) CurrentFre <<= 2; Temp_T

//低音 //高音

=

65536-(50000/CurrentFre)*10/(12000000/SYSTEM_OSC);//计算计数器初值

}

Sound_Temp_TH0 = Temp_T/256; Sound_Temp_TL0 = Temp_T%6; TH0 = Sound_Temp_TH0;

TL0 = Sound_Temp_TL0 + 12; //加12是对中断延时的补偿

……

21

5 系统调试与实现

这是本设计较为困难的一部分,需要经过反反复复的调试,才能达到理想中的效果,以下将分文硬件与软件两部分介绍此次调试的过程,以及调试过程中遇到的困难和解决办法。 5.1 硬件调试与实现

考虑到本设计以低成本为主,所以一切原件以便宜为上,本设计开发工具需要用到一个电烙铁,一个铁架,一卷焊锡,一盒松脂,1块6X7CM开发板,1块6X10CM开发板,一块STC89C52芯片以及一块芯片底座,一个USB接口,一个电源开关,1个10uf电容,2个30pf电容,1个12Mhz晶振,一个抖动开关,1个10k电阻,一个10k滑动变阻器,一块lm386芯片及其底座,1个220uf电容,1个0.05uf电容,一个8欧姆5瓦的扬声器,以及杜邦线若干,插排若干。

为方便调试,把系统焊接分为两个部分,其一是51单片机最小系统部分,其二是声音功率放大播放部分。这样的焊接不仅有利于系统的调试,还有利于日后对于其他系统的开发,直接利用最小系统以及杜邦线引出端口即可。

由于本人焊接技术不到位,常常出现短路问题,在第一次焊接完成后,多出出现短路,最后用万用表蜂鸣档位逐点测试,在重新焊接。其中还试过由于本人疏忽,直接把芯片焊接(没通过芯片底座)在开发板上,导致芯片烧坏,不得将其更换。开始时选用的音乐功放电路,也是基于LM386芯片,采用的是较为复杂的功放电路,但是焊接后,经过一系列调试,反复查找了失败原因,还是没有找到解决办法,但是后来突然想到,这次的设计是基于低成本的基础,一切得从简,所以选择了就只有一个10k滑动变阻器,一块lm386芯片及其底座,1个220uf电容,1个0.05uf电容所组成的功放电路,再次调试后,放出了声音,但是声音的音调和频率都与理想中有所差距,应该是由于喇叭的自身额定功率与质量有关,需要调整的话应该是在电源供电以及喇叭的质量方面修正,但这是基于低成本的设计,只要喇叭有声音,效果一般就可了。 5.2 软件调试与实现

程序主要取自一个音乐播放程序,但没有功率放大部分,更没有多音乐轮流

22

播放部分,按钮部分。

在此基础之上,首先是对其进行一定的修改,在保留原来音乐播放程序的前提下,进行主程序的设计,首先对所有端口进行初始化操作,接着进入不断循环部分,直到按键按下,进入防止抖动程序,如果不是抖动,则进入音乐播放程序,直到音乐播放完毕,再次进入等待按键按下部分,直到第二次按键按下,再次进入防止抖动程序,如果不是抖动,则再次进入音乐播放程序,直到音乐播放完毕,直到第三次按键按下,最后一次次进入防止抖动程序,如果不是抖动,则最后一次次进入音乐播放程序,直到音乐播放完毕,回到循环起点,等待第四次按键按下部分,如此类推。

在keil软件经不断改进后,生成hex文件,再用郭天祥51开发板烧入程序,并通过stc-isp烧录软件烧录后,最终得以完成。

再把烧录好的STC89C52芯片摆放到已经焊接好的电路板上,按下按钮,听到第一首音乐,在第一首音乐播放完毕后,再按下按钮,听到第二首音乐,在第二首音乐播放完毕后,再次按下按钮,听到第三首音乐,在第三首音乐播放完毕后,再按下按钮,听到第一首音乐,如此类推。

程序在开始之初是用简单的中断延迟来实现,对于编歌曲来讲需要很大的工作量,在网上查找大量的资料之后,找到了一个做音乐播放器的程序,他也是基于中断延迟来实现播放功能,但是他对于歌曲编辑的灵活性,有很大的发展空间,所以我就采用了他的部分程序。

并且利用一个名为MusicEncode的软件,可以把基本上所有的音符都转化为16位的二进制编码,大大提高了编程效率。

其次是主程序的编辑,原来的音乐播放程序只是假单的等待按钮按下后,直接播放一首完整的歌曲后紧接着另外一首完整的歌曲歌。但是这次的设计是要制作一个门铃,而不是音乐播放,考虑到设计需要,我们要实现的功能是按下按钮,播放一小段音乐,停止,等待下一个按钮,再播放,不断循环。

所以,主要考虑到的是如何在播放完一首歌曲后,进入在此等待状态。因此,运用了C里面DO……WHILE语句,一直等待按钮的按下。

对于该段程序中的主要保护手段,就是按钮防治抖动部分,因此在等待按钮按下后,采用一小段的延迟程序,再次判定是否有按钮的按下,在进入播放程序。

23

结 论

这次毕业设计,是我大学四年来学到知识的一次综合运用,对于此次工作,首要考虑到的是低成本的概念,音乐门铃在市面上一早就存在,想要继续得以发展,必须在成本上下功夫,这次设计的主要亮点是功放电路采用最简单的电路设计,只有一块芯片跟两个电阻以及两个电容。其次是程序方面的设计,主要解决的问题是如何在一个按钮的基础上,实现歌曲的轮换以及播放,这是此次设计的难点之一,另外,焊接是此次设计所用时间最多的一部分,因为本人的焊接技术不到位,焊接能力不高,所以造成焊接的屡次失败,不过我在失败中吸取经验,在完成焊接后,焊接技术得到很大的提高。

毕业设计还是本科学习阶段一次非常难得的理论与实际相结合的机会,通过这次比较完整单片机设计,我摆脱了单纯的理论知识学习状态,和实际设计的结合锻炼了我的综合运用所学的专业基础知识,解决实际工程问题的能力,同时也提高我查阅文献资料、设计手册、设计规范以及电脑制图等其他专业能力水平,而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,经验得到了丰富,并且意志品质力,抗压能力及耐力也都得到了不同程度的提升。这是我们都希望看到的也正是我们进行毕业设计的目的所在。

总体来讲,这次设计让我对大学四年来的知识做了一个充分的整合,对其了解深度再次上了一个层次,希望在日后工作中能不断锻炼,提升自我!

24

参考文献

[1] 朱光中,黄云龙,范一鸣.AT89C51单片机在可视对讲门铃中的应用[J]. 机 电一体化,2002,第6期:66-68.

[2] 余永权.nash单片机原理及应用[D].北京:电子工业出版社,1997. [3] 用单片机实现电子音乐门铃[J].无线电,2007,第534期:38-39. [4] 刘茂荣.画说乐理(二十)——音程 [J].琴童,2010,第8期:18-19. [5] 苏成富. 多功能音乐门铃[J]. 电机电器技术,2000,第3期:20-21. [6] 魏俊民.机电一体化系统设计[D].北京:中国纺织出版社,l998. [7] 侯文芳.Protel99SE在电子技术实验中的应用[J].科技信息,2011,第2期:

238-238.

[8] 王毅.单片机器件应用手册[D].北京:人民邮电出版社,1994.

[9] 吴宁. 80X86/Pentium 微型计算机原理及应用[M]. 北京:电子工业出版 社,2004:1-249.

[10] 肖金球. 单片机原理与接口技术[M]. 北京: 清华大学出版社, 2004:1-323. [11] 志宽.LM386功放IC的使用方法[J].家庭电子,2003,第8期:43-43. [12] 佩 苗文斌 李森.浅谈KeilC的常用技巧[J].企业技术开发,2011,第1期:

88-88.

[13] AT89C51 DATA SHEEP Philips Semiconductors 1999.dec.

[14] HeZuxi. Colour televsion elements and maintain [M]. Beijing: The electron industry book concern,1979:15-18.

25


毕业设计(论文)-基于51单片机的低成本音乐门铃设计 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:看一个老总如何给8个下属加薪的

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: