五、單片機學習——繼電器與蜂鳴器實驗


實驗目的:    理解並掌握繼電器和蜂鳴器驅動電路的工作原理;
      理解並掌握用單片機 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);          //延時
      }        
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM