(4)没有信号源的称为无源蜂鸣器,其工作原理与喇叭相似,必须在其引脚两端加上变化的电压才能使蜂鸣器发声。本设计采用无源蜂鸣器[2]。
2.3.2 蜂鸣器工作原理
无源蜂鸣器的原理为:电流经过电磁线圈使线圈生成磁场进而驱动振动膜发出声音,因此需要一定的电流才能使它工作。而单片机的I/O输出端口的输出电流较小,不能使得蜂鸣器工作,因此必须加入一个电流放大电路,本设计通过使用三极管来驱动蜂鸣器。
具体的连接方式为:蜂鸣器的正极接到三极管的集电极上面,蜂鸣器的负极接地三极管的发射极接正5V电压,集极经过限流电阻R10后连接单片机的P1^7引脚。当引脚P1^7输出为高电平时,三极管截止,这时无电流经过线圈,蜂鸣器不发声;而在P1^7引脚输出低电平时,三级管导通,蜂鸣器的电流形成通路,发出声音。因此通过程序来控制P1^7输出的电平进而使蜂鸣器关闭、发出声音。程序通过改变单片机引脚输出高低电平的频率便可控制蜂鸣器发出的音调,产生各种音调的声音。另外改变P1^7输出电平的占空比,就可以做到控制蜂鸣器声音的响度[4]。
2.3.3 单片机驱动蜂鸣器的方法
由于无源蜂鸣器本身并没有信号源,因此单片机驱动它正常工作的方法比较复杂,只是通上电源蜂鸣器不能发出声音,必须反复的“通电-断电”,蜂鸣器才能正常工作、发出声音。通过程序的编写,控制P1^7引脚不断的输出低电平-高电平-低电平,这样蜂鸣器就可以不断的断电、通电从而能够发声。而断电和通电的时间不同就可以得到不同频率的声音[2]。通过P1^7引脚控制蜂鸣器工作需要加入限流电阻,选择阻值为 的电阻。
2.3.4 音乐演奏过程
在电源接通后,时钟振荡电路,复位电路准备就绪时,程序即可运行。此时通过查询的方法获得已经存储在内存中的音符信息,从音调的定时常数知道定时时间,不断地给单片机的控制引脚取反,与此同时由节拍得到延时常数即可使蜂鸣器演奏一定的时间。
2.4 LED彩灯显示电路
2.4.1 单片机P1口驱动LED
单片机的P1口与P0口相比,驱动能力较小,只有P0的一半。P0口的某位接高电平时,可提供400 的电流;当P0口的某位为低电平,能输出3.2 的灌电流,若低电平能够提高,灌电流可以增强。因此,只有在低电平输出时,单片机才能提供较大的驱动能力。而对于P1口来说,因为P1口内部有30 的上拉电阻,若采用高电平输出,则从P1口强行输出的电流会损坏单片机的输出端口;若采用低电平输出,电流能够从单片机外部流入,会使得电流值大大增加,所以当P1口驱动LED时应采用低电平输出。P1口驱动LED发光二极管的接法如图3所示[3]:
2.4.2 限流电阻阻值的选取
LED和普通二极管相似,都有正向电阻小,反向电阻大的特性,在LED工作时必须加上合适的电阻来限制流经LED的电流,阻值过大的电阻会使得LED亮度不够,而阻值太小的电阻有可能会损坏LED,因此必须选取恰当阻值的电阻[1]。
图3 单片机P1口驱动LED
LED限流电阻阻值计算方法如式(6)所示:
(6)
通过计算选取的电阻阻值为200 。系统原理图见附录1。
3. 系统软件设计
系统硬件部分完成后,功能框架便形成了。此时要编写系统应用程序,使得系统软件和硬件很好地协调发挥各部分的作用。系统功能由硬件和软件共同作用的,因为软件程序的可变性,系统最终实现的功能千差万别。因此,程序是本系统的灵魂。
3.1 控制要求
本设计要求设计的作品能够播放音乐曲调,使得LED闪烁,并且LED的闪烁能够跟随音乐的节奏。在音调低时,LED亮的少,而随着音调的升高,LED彩灯亮的个数就有所增加。设计完成后能够通过蜂鸣器播放“生日快乐歌”的曲调,随着音调的变化,LED从一个到八个不停地变化亮灯的个数。同时为了增加闪灯的效果,本设计作品使用并列两派的LED彩灯。设计的程序主要有:定义声明部分、主程序、定时中断子程序、延时子程序,完整程序见附录3。 AT89S51单片机的音乐彩灯控制器设计+仿真图+源代码(5):http://www.youerw.com/zidonghua/lunwen_1833.html