用户工具

站点工具


侧边栏

抱歉,您没有权限增加页面
4.单片机入门教程:11.无源蜂鸣器

单片机入门教程之无源蜂鸣器

一:实验原理
对于蜂鸣器内部结构就不哔哔了,感兴趣的百度一下你就知道,知道长啥样怎么用就行了,爆个照:

蜂鸣器分为有源和无源的两种,无源蜂鸣器直接通电不会响,需要输入一定频率才会响。有源的就是自带震荡源,直接加电就会响,有源的驱动比较简单,就像LED一样通电断电即可,没有学习的必要,所以我们板子上采用的是无源蜂鸣器,让单片机IO口输出频率来驱动它发出Do Re Mi Fa So La Si Do,生日快乐,兰花草……

如何让单片机IO口输出频率呢,就是让IO口输出方波,方波就是高低电平,比如你先让IO口输出10ms高电平,然后再输出10ms低电平,这样就输出了一个50Hz的频率。人耳能听到的频率范围为20Hz-2KHz,向蜂鸣器输入只要在这个范围内就可以听到声音了。蜂鸣器驱动电路图如下,有源的或者无源的都可以这样接:

二:实验现象与代码演示
采用软件延时方法计算频率,使IO口输出440Hz频率方波,让蜂鸣器发出声

注:本代码完整工程在stc51 discovery开发板【实验例程】【进阶实验】【实验三十四】

三:代码解释
本实验是输出440Hz频率方波,440Hz即时间等于1/440hz=0.002272s=2272us,把IO口置高电平1136us,再置低电平1136us,这样输出一个方波就可以了,首先我们要有个大概的延时用来输出高电平和低电平的时间,第57行,是一个100us的延时函数。第32行,先让IO口置低电平,然后通过for循环把100us延时11次就大概是1136us了,同样第38行再把IO口置高电平1136us。这样就可以输出一个440hz音了,但是这样你只会听到很短的一声就没了,然后看第27行,把这个声音连续播放150遍就能听到很长一段了。再看第45行,这里是把蜂鸣器关闭一段时间,这样你听到的就是间断的蜂鸣声了。

那么怎样让蜂鸣器播放Do Re Mi Fa So La Si Do呢?很简单,我们只要把七个音符对应频率换算成高低电平的时间,然后换算成定时器的初装值放到TL和TH中,这样产生定时间,然后在定时器中断中把IO口取反就输出方波频率了。音符与频率的表如下:

4.单片机入门教程/11.无源蜂鸣器.txt · 最后更改: 2017/03/07 13:38 由 wawooo