五、单片机学习——继电器与蜂鸣器实验

实验目的:    理解并掌握继电器和蜂鸣器驱动电路的工作原理;
      理解并掌握用单片机 I/O 驱动大电流器件的驱动方法;
实验模块:核心板+流水灯与独立按键模块+继电器模块+蜂鸣器模块;
实验内容:按键控制继电器和蜂鸣器动作,并用相应的 led 灯进行指示,即第一
        个按键按下,第一位 led 灯点亮,蜂鸣器响应;第二个按键按下,第二位 led
        灯点亮,继电器吸合;第三个按键按下,第一个、第二个流水灯点亮,继电器吸
     合、蜂鸣器响应;第四个按键按下,恢复初始状态,所有的 led 灯熄灭、继电器
        断开、蜂鸣器不响应。

模块连接图:

 

电路原理图:

电路驱动原理:(1)蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,仅仅依靠单片机 I/O 不足以驱动蜂鸣器进行工作;蜂鸣器的正极接到三极管的 C 极上面,蜂鸣器的负极接到地端,三极管的基极 B 经过限流电阻后由单片机的 P1.2 引脚控制,当 P1.2 输出高电平时,三极管 T1 截止,没有电流流过线圈,蜂鸣器不发声;当 P1.42 输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制 P1.2 脚的电平来使蜂鸣器发出声音或关闭。(2)继电器驱动电路如上,主要通过 PNP 型的三极管 S8550 来实现通过单片机的 I/O 口控制继电器的吸合与断开;三极管驱动继电器主要是应用三极管的放大特性和开关特性;当与单片机相连的 I/0 口输出低电平时,三极管导通,此时三极管的 E 极(发射极)与 C 极(集电极)间的阻值很小,此时电路相当于 VCC 经过继电器,再经过通过三极管接到地形成完整回路,继电器吸合;相反,当与单片机相连的 I/0口输出高电平时,三极管截止,此时三极管的 E 极(发射极)与 C 极(集电极)间的阻值很大,电路无法形成回路,继电器不吸合。因此,我们可以通过程序控制与单片机相连 I/O 口的电平来控制继电器的吸合与关闭。

 

工程代码1:功能描述: 控制蜂鸣器实现播放音乐"生日快乐"
硬件连接:  用1位杜邦线将J10_0与J18_bz连接

#include<reg51.h>               //包含头文件
sbit BZ=P0^0;                   //定义蜂鸣器控制管脚       
#define uchar unsigned char    
#define uint unsigned int
 
 uchar code SOUNDLONG[25]=        //"生日快乐"节拍
 {
  15,5,20,20,20,40,
  15,5,20,20,20,40,
  15,5,20,20,20,20,20,
  15,5,20,20,20,40
 };
uchar code SOUNDTONE[25]=         //"生日快乐"音调
{
 212,212,190,212,159,169,
 212,212,190,212,142,159,
 212,212,106,126,159,169,190,
 119,119,126,159,142,159     
};
//**************************************************************************************************
//延时函数
//**************************************************************************************************
delay(uint time)              //int型数据为16位,所以最大值为65535           
 {
  uint  i,j;                  //定义变量i,j,用于循环语句
  for(i=0;i<time;i++)         //for循环,循环50*time次
     for(j=0;j<50;j++);       //for循环,循环50次
 }
//**************************************************************************************************
//播放音调
//**************************************************************************************************
void Play_music()                         
{
  uint Tone,Long;                 //定义音调变量
  uint i,j,k;                     //定义
     for(i=0;i<25;i++)         //"生日快乐"的25种音调
      {
          Tone=SOUNDTONE[i];      //读取音调
          Long=30*SOUNDLONG[i];   //读取节拍
          for(j=0;j<Long;j++)     //输出不同节拍
           {
            BZ=0;                 //关闭蜂鸣器
            for(k=0;k<Tone;k++);  //Tone的不同来区分7种音调
            BZ=1;                 //打开蜂鸣器
            for(k=0;k<Tone;k++);  //Tone的不同来区分7种音调
        }
      }
}
//**************************************************************************************************
//主函数
//**************************************************************************************************
void main()
{
 while(1)
  {
   Play_music();                  //播放音乐
   BZ=0;                          //关闭蜂鸣器
   delay(10000);                  //关闭蜂鸣器时间
  }
}

 

 

工程代码2:
  功能描述: 控制继电器通断,同时发出"啪啪"声
  硬件连接:  用1位杜邦线将J11_7与J18_K2连接

***************************************************************************************************/
#include "reg51.h"       //包含头文件
sbit K2=P2^7;            //定义继电器控制IO
#define uchar unsigned char
#define uint  unsigned int
//**************************************************************************************************
//延时函数
//**************************************************************************************************
delay(uint time)              //int型数据为16位,所以最大值为65535           
 {
  uint  i,j;                  //定义变量i,j,用于循环语句
  for(i=0;i<time;i++)         //for循环,循环50*time次
     for(j=0;j<50;j++);       //for循环,循环50次
 }
//**************************************************************************************************
//主函数
//**************************************************************************************************
void main()                   //主函数
{
     while(1)                 //进入while死循环
      {
        K2=0;                 //断开继电器
        delay(5000);          //延时
        K2=1;                 //导通继电器
        delay(5000);          //延时
      }        
}

 

posted @ 2020-04-16 15:07  小豪、精神。  阅读(1758)  评论(0编辑  收藏  举报