3.2 51单片机-蜂鸣器模块

举报
DS小龙哥 发表于 2021/12/09 23:38:59 2021/12/09
【摘要】 3.2 蜂鸣器模块 3.2.1 蜂鸣器原理图 图3-2-1 实验板上的蜂鸣器没有直接与单片机的IO口相连接,需要使用一个杜邦线手动连接(图中黄色的线)。 3.2.2 无源蜂鸣器与有源蜂鸣器介绍 有源和无源这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,...

3.2 蜂鸣器模块

3.2.1 蜂鸣器原理图

图3-2-1

实验板上的蜂鸣器没有直接与单片机的IO口相连接,需要使用一个杜邦线手动连接(图中黄色的线)。

3.2.2 无源蜂鸣器与有源蜂鸣器介绍

有源和无源这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K~5K的方波去驱动它,有源蜂鸣器往往比无源的贵,就是因为里面多个震荡电路。

有源蜂鸣器:内部有振荡、驱动电路,加电源就可以响,用起来省事,缺点是频率固定,就只一个单音(高、低电平直接驱动,发出滴答的声音)。

无源蜂鸣器: 价格便宜(少了个振荡电路),声音频率可控,可以做出“多来米发索拉西”的效果,缺点是驱动比较麻烦一点。

当前实验板上使用的就是无源蜂鸣器,要操作蜂鸣器需要使用方波进行控制。

3.2.3 示例代码

控制蜂鸣器发出滴答的声音,延时函数可以使用单片机小精灵软件自动生成。


  
  1. #include <reg51.h> //添加通用的51单片机头文件
  2. #include <intrins.h>
  3. void delay200us(void);
  4. void BEEP_Ctl(int cmd,int time);
  5. sbit BEEP=P1^5//定义蜂鸣器引脚(需要使用杜邦线连接IO口)
  6. int main(void)
  7. {
  8.     int i;
  9.     while(1)
  10.     {
  11.         i=!i;
  12.         BEEP_Ctl(i,1000);
  13.     }
  14. }
  15. /*
  16. 开启蜂鸣器(2KHZ~5KHZ方波)
  17. 1s等于1000ms
  18. 1ms等于1000us
  19. 1HZ=s 1KHZ=ms 1MHZ=us
  20. 1/5000HZ=0.0002s=200us
  21. */ 
  22. void BEEP_Ctl(int cmd,int time)
  23. {
  24.      int i;
  25.     if(cmd) //打开蜂鸣器
  26.     {
  27.         for(i=0;i<time;i++)
  28.         {
  29.             BEEP=0;
  30.             delay200us();
  31.             BEEP=1;
  32.             delay200us();
  33.         }
  34.     }
  35.     else   //关闭蜂鸣器
  36.     {
  37.         BEEP=0;
  38.         for(i=0;i<time;i++)delay200us();
  39.     }
  40. }
  41. void delay200us(void)
  42. {
  43.     unsigned char a,b;
  44.     for(b=39;b>0;b--)
  45.         for(a=1;a>0;a--);
  46. }

3.2.4 使用无源蜂鸣器播放音乐

图3-2-2 乐谱编辑器

电子琴的1234567分别对应CDEFGAB。

文章来源: xiaolong.blog.csdn.net,作者:DS小龙哥,版权归原作者所有,如需转载,请联系作者。

原文链接:xiaolong.blog.csdn.net/article/details/121016586

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。