码迷,mamicode.com
首页 > 其他好文 > 详细

无源蜂鸣器——小白的单片机笔记

时间:2017-05-06 11:57:32      阅读:283      评论:0      收藏:0      [点我收藏+]

标签:line   reg   ora   sig   ext   style   间隔   嵌套   效果   

蜂鸣器分类:有源蜂鸣器,无源蜂鸣器。

这里的“”不是指电源。而是指震荡源。 也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫
而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫,必须用2K~5K的方波去驱动它。
有源蜂鸣器往往比无源的贵,就是因为里面多个震荡电路。
无源蜂鸣器的优点是:1.便宜2.声音频率可控,可以做出“多来米发索拉西”的效果。3.在一些特例中,可以和LED复用一个控制口
有源蜂鸣器的优点是:程序控制方便 。
**************************************************************************************************************
以下程序针对无源蜂鸣器设计:因此需要差生连续的交流信号才能够使蜂鸣器发声。

#include"reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit beep=P1^5;
void delay(u16 i )
{
while (i--);
}

void main()
{
u16 i=0;


  for(;i<8;i++)  //想用for循环实现响几声,但不能够实现蜂鸣器通过连续的振动才能够实现发声,此处的循环条件i<8,中的数字不能控制发声的数量,仅能够控制发声的长短
  {
  beep=~beep;
  delay(100);

  }

delay(50000);
}

 

****************************************************************

以下程序可以控制发声数量:

#include"reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit beep=P1^5;//
void delay(u16 i )
{
while (i--);
}

void main()
{
u16 i=0;
u16 k=0;
for (;k<10;k++)  //大循环,控制发声的次数,再次发声数量为10  

//另,for循环中的条件变量i对于此处不需要重复循环的嵌套循环中的大循环来说没有必要,但是小循环中的条件变量必须要加,保证每个小循环完成后,条件变量能够重置,保证下一个小循环能够正常进行
{
  for(i=0;i<100;i++) //小循环,控制发声的长短,与循环条件i<100,有关 此处为条件变量赋值是必要的,不可以省略!!
    {
    beep=~beep;
    delay(100);  //小循环内的延时程序控制蜂鸣器的发声频率

    }
    delay(10000);//大循环内的延时程序,保证次发声有人能够合理观察的间隔
}
while(1);//大循环外的终止程序,再次仅仅是为了记录发声的数量,保证该循环不会持续下去
}

无源蜂鸣器——小白的单片机笔记

标签:line   reg   ora   sig   ext   style   间隔   嵌套   效果   

原文地址:http://www.cnblogs.com/Moondance/p/6815932.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!