蜂鸣器+继电器

  • 1、蜂鸣器简介
  • 2、蜂鸣器工作过程(CT107D开发板)。
  • 3、以普中科技开发板为例

1、蜂鸣器简介

蜂鸣器按照驱动方式可分为有源蜂鸣器和无源蜂鸣器。有源蜂鸣器内部带有振荡器,只要给BZ段一个低电平,蜂鸣器就会响;而无源蜂鸣器内部不带震荡源,必须给500HZ~4.5KHZ之间的频率脉冲信号它才会响。比较而言,有源蜂鸣器内部多一个震荡电路。驱动发音较为简单;无源蜂鸣器的价格较低,声音频率可以控制。

无源蜂鸣器是直流电压驱动的,只需对驱动口输出驱动电平,并通过放大电路放大驱动电流,就能使蜂鸣器发出声音,改变单片机引脚输出波形的频率,可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音; 改变输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小。

2、蜂鸣器工作过程(CT107D开发板)。

蜂鸣器正常工作的前提条件是两端有电压差,如下图所示我们可以看到蜂鸣器的引脚为BUZZ(ER),其中一端已经接了+5V电源,所以只需另一端接低电平,该蜂鸣器即可以正常工作。

BUZZ引脚对应的I/O口是P0^ 6, BUZZ和P0^6 之间有M74HC573和ULN2003两个芯片,M74HC573就是一个简单的锁存器,输出前后状态相同,注意保证它的使能端有效即可,在前面几个模块也已经多次出现,在这里就不赘述了,主要介绍一下ULN2003。

ULN2003:高耐压、大电流复合晶体管阵列,由七个硅NPN 复合晶体管组成,每一对达林顿都串联一个2.7K 的基极电阻,在5V 的工作电压下它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据,输入5VTTL电平,输出可达500mA/50V。内部结构图如下:

由上图我们可以看到,ULN2003其实主要有7个反相器组成。这意味着如果我们需要BUZZ引脚为低电平,那么I/O口 P0^ 6 输出应该为高电平,即P0^6 = 1,同时我们要保证M74HC573的使能端有效,即 Y5C=1。我们看一下Y5C的相关模块:

Y5和WR经过与非门得到Y5C,若Y5C=1,则需要Y5=0且WR=0。当J13的跳线帽2和3相连时(即WR和GND短接),表示的是蜂鸣器 继电器模块,所以我们只需要再满足Y5=0即可。这就又涉及到了74HC138模块:

74HC138 这个芯片大家就不陌生了,3-8译码器。若想Y5=0,则需要满足P2^ 7 = 1P2^ 6= 0P2^5 = 1,即将P2口高三位写成101,其余位清零即可。

P2 = ((P2 & 0x1F)|0xA0);//通过Y5C控制74HC573使能有效

注意这个模块写完后要关闭使能:

P2 = P2 & 0x1F;//P2 &= 0x1F 关闭使能

其实和LED模块比起来就是多了ULN2003芯片的使用,其它基本相同。继电器模块和蜂鸣器模块基本上完全相同。区别在于控制继电器的I/0口是P0^4,引脚是RELAY。继电器工作时, P0 ^6 = 1

关于蜂鸣器,继电器,LED灯的常用模板:

#include<reg52.h>
sbit buzz = P0^6;//蜂鸣器对应的引脚是P0^6
sbit relay = P0^4;//继电器对应的引脚
sbit led = P0^0;//P0^0 ~ P0^7对应8个LED灯
void main()
{P2 = ((P2 & 0x1F) | 0xA0);//Y5控制使能端有效buzz = 0;//打开蜂鸣器P2 = P2 & 0x1F;//使能端无效,关闭蜂鸣器P2 = ((P2 & 0x1F) | 0xA0);//Y5控制使能端有效relay = 1;//打开继电器P2 = P2 & 0x1F;//使能端无效,关闭继电器P2 = ((P2 & 0x1F) | 0x80);//Y4控制使能端有效led = 0; //点亮其中一个LED小灯P2 = P2 & 0x1F;//使能端无效while(1);
}

3、以普中科技开发板为例

原理图:


和CT107D开发板的原理基本相同,稍微简单一些,P1^5 = 1时,经过ULN2003,BZ = 0,蜂鸣器可以工作。

示例代码如下:

//演奏音乐八月桂花 #include <reg52.h>
#include <intrins.h>    sbit Beep =  P1^5; unsigned char n=0;              //n为节拍常数变量
unsigned char code music_tab[] ={
0x18, 0x30, 0x1C , 0x10,        //格式为: 频率常数, 节拍常数, 频率常数, 节拍常数,
0x20, 0x40, 0x1C , 0x10,
0x18, 0x10, 0x20 , 0x10,
0x1C, 0x10, 0x18 , 0x40,
0x1C, 0x20, 0x20 , 0x20,
0x1C, 0x20, 0x18 , 0x20,
0x20, 0x80, 0xFF , 0x20,
0x30, 0x1C, 0x10 , 0x18,
0x20, 0x15, 0x20 , 0x1C,
0x20, 0x20, 0x20 , 0x26,
0x40, 0x20, 0x20 , 0x2B,
0x20, 0x26, 0x20 , 0x20,
0x20, 0x30, 0x80 , 0xFF,
0x20, 0x20, 0x1C , 0x10,
0x18, 0x10, 0x20 , 0x20,
0x26, 0x20, 0x2B , 0x20,
0x30, 0x20, 0x2B , 0x40,
0x20, 0x20, 0x1C , 0x10,
0x18, 0x10, 0x20 , 0x20,
0x26, 0x20, 0x2B , 0x20,
0x30, 0x20, 0x2B , 0x40,
0x20, 0x30, 0x1C , 0x10,
0x18, 0x20, 0x15 , 0x20,
0x1C, 0x20, 0x20 , 0x20,
0x26, 0x40, 0x20 , 0x20,
0x2B, 0x20, 0x26 , 0x20,
0x20, 0x20, 0x30 , 0x80,
0x20, 0x30, 0x1C , 0x10,
0x20, 0x10, 0x1C , 0x10,
0x20, 0x20, 0x26 , 0x20,
0x2B, 0x20, 0x30 , 0x20,
0x2B, 0x40, 0x20 , 0x15,
0x1F, 0x05, 0x20 , 0x10,
0x1C, 0x10, 0x20 , 0x20,
0x26, 0x20, 0x2B , 0x20,
0x30, 0x20, 0x2B , 0x40,
0x20, 0x30, 0x1C , 0x10,
0x18, 0x20, 0x15 , 0x20,
0x1C, 0x20, 0x20 , 0x20,
0x26, 0x40, 0x20 , 0x20,
0x2B, 0x20, 0x26 , 0x20,
0x20, 0x20, 0x30 , 0x30,
0x20, 0x30, 0x1C , 0x10,
0x18, 0x40, 0x1C , 0x20,
0x20, 0x20, 0x26 , 0x40,
0x13, 0x60, 0x18 , 0x20,
0x15, 0x40, 0x13 , 0x40,
0x18, 0x80, 0x00
};   void int0()  interrupt 1    //采用中断0 控制节拍
{  TH0=0xd8;   TL0=0xef;   n--;
}   void delay (unsigned char m)   //控制频率延时
{   unsigned i=3*m;   while(--i);
}   void delayms(unsigned char a)  //毫秒延时子程序
{   while(--a);                  //采用while(--a) 不要采用while(a--); 各位可编译一下看看汇编结果就知道了!
}   void main()
{ unsigned char p,m;          //m为频率常数变量    unsigned char i=0;   TMOD&=0x0f;   TMOD|=0x01;   TH0=0xd8;TL0=0xef;   IE=0x82;
play:   while(1)   {   a: p=music_tab[i];   if(p==0x00)       { i=0, delayms(1000); goto play;}      //如果碰到结束符,延时1秒,回到开始再来一遍    else if(p==0xff)  { i=i+1;delayms(100),TR0=0; goto a;}   //若碰到休止符,延时100ms,继续取下一音符    else         {m=music_tab[i++], n=music_tab[i++];}  //取频率常数 和 节拍常数    TR0=1;                                             //开定时器1    while(n!=0) Beep=~Beep,delay(m);                     //等待节拍完成, 通过P1口输出音频(可多声道哦!)    TR0=0;                                                   //关定时器1    }
}

前一篇: 单片机学习(5)——独立按键与矩阵按键

下一篇: 单片机学习(7)——UART串口通信

【蓝桥杯】单片机学习(6)——蜂鸣器+继电器相关推荐

  1. 【蓝桥杯单片机】Led+蜂鸣器+继电器

    实验开发板为CT107D蓝桥官方板,编译环境为MDK5  工程搭建 CT107D开发板初始化 点亮Led 位运算控制Led(小端CPU位运算需要从右向左看) 控制继电器及蜂鸣器 #include< ...

  2. 【蓝桥杯—单片机学习笔记(四)】共阳数码管的动态显示

    一.要求 在CT107D单片机训练综合平台上,实现数码管的动态显示,在8位数码管中,前面4位显示年份"2022",接着是2个分隔符"--",最后两位是月份,从1 ...

  3. 蓝桥杯单片机学习日记3-矩阵键盘的使用,线反转法,三步消抖,按键长按与短按

    此片文章用于记录蓝桥杯单片机的学习 篮球杯单片机上的矩阵按键原理图如下: 使用矩阵键盘时,要将跳线帽J5跳至KBD模式. 值得注意的是,若开发板上的单片机使用的为STC15,那么以上原理图适用.如果单 ...

  4. 蓝桥杯单片机学习11——PCF8591A/DD/A转换芯片

    上期我们学习了DS1302实时时钟的基本使用,现在我们来学习PCF8591A/D&D/A转换芯片的相关内容 蓝桥杯单片机学习11--PCF8591A/D&D/A转换芯片 PCF8591 ...

  5. 蓝桥杯单片机学习13——NE555方波发生器频率测量

    NE555 简介 引脚图 原理图 真值表 工作原理 频率测量原理 定时器测量频率方法 代码实现 总结(一堆废话) 简介 NE555是一种高度稳定的控制器,内部用三个阻值为5KΩ的电阻分压,因此叫做55 ...

  6. 蓝桥杯单片机学习12——AT24C02EEPROM存储芯片

    上期我们学习了PCF8591A/D&D/A转换芯片的相关内容,这么我们来介绍以下AT24C02 AT24C02 简介 命名格式 引脚描述 原理图 IIC通信原理 读写地址 存储地址 基本控制方 ...

  7. 【蓝桥杯-单片机学习笔记(六)】矩阵键盘控制数码管显示0~F

    一.要求 在CT107D单片机训练平台上,首先将J5处的跳线帽接到1~2引脚,使按键S4~S19组成4*4的矩阵键盘.在扫描按键的过程中,发现有按键触发信号后,待按键松开后,数码管显示相应的数字.按键 ...

  8. 蓝桥杯单片机学习日记1-LED 蜂鸣器 继电器 数码管的简单驱动

    此片文章用于记录蓝桥杯单片机的学习. LED 蜂鸣器 继电器 数码管 这些都是比赛时常用的外设,如下原理图:  LED部分:  蜂鸣器和继电器部分(图中还有步进电机部分):  数码管部分: 可见,上述 ...

  9. 蓝桥杯单片机学习必备资源

    目录 一.你不知道蓝桥杯单片机底层驱动改了?? 二.小蜜蜂教程--自撸代码 三.个人心得 1.NE555 2.DS1302 3.DS18B20 4.AT24C02 5.PCF8951 6.串口指令读取 ...

  10. 【蓝桥杯-单片机学习笔记(十五)】NE555频率测量

    一.要求 在CT107D平台上测量NE555产生方波的频率值并显示在数码管上.频率数据显示用5位数码管,单位是Hz,数码管最左边显示"F".改变滑动变阻器Rb3可以改变频率大小. ...

最新文章

  1. 批处理解决“易语言难题”
  2. 145.二叉树的后序遍历
  3. Python爬虫加密
  4. 服务器数据缓存文件实现,跨域与缓存
  5. 3rd 逻辑运算符的基本用法
  6. 写出漂亮代码的七种方法
  7. mysql 8函数索引_新特性解读 | MySQL 8.0 索引特性1-函数索引
  8. 超融合架构的优缺点_知道 超融合基础架构吗
  9. TFS 无法找到新加的Windows用户
  10. A* 寻路算法,matplotlib地图生成
  11. php 生产环境 测试环境 同步,开发 RoR PHP Project,测试环境、生产环境部署相关问题...
  12. 太赞了!超炫的页面切换动画效果【附源码下载】
  13. cas5.2集成ldap
  14. ddr4 dqs 频率_你好,请问你知道DDR3中是DQS是什么意思吗
  15. 可用c语言编程的科学计算器,一个用C语言实现的科学计算器
  16. 对象base64转码_什么是 Base64 编码
  17. 4000元台式电脑组装配置单2022 4000元组装电脑配置清单
  18. VIVADO生成并导入网表文件
  19. 有赞 html模板,有赞的微商城可视化编辑是如何做到的?
  20. AM5728设备数的描述

热门文章

  1. C# 大头贴(小巧大头贴)
  2. 我的win8期待 新功能 新特性 新改进
  3. puzzle(0712)Lazors、折射之光
  4. 规范国际工程EPC项目设计管理
  5. 自己的反汇编引擎--Intel指令编码(2)
  6. ubuntu安装nginx教程
  7. Java编程培训学校,如何看Java培训班是否靠谱?
  8. 苹果提交专利终止宣誓书 三星上诉将更加困难
  9. 致--所有努力生活的人们(暑假学习总结与考研宣誓)
  10. 近两年小样本学习取得重大进展了吗?