從零開始學單片機(八)蜂鳴器唱歌

2021-01-08 電子產品世界
單片機上的蜂鳴器結構非常的簡單

本文引用地址:http://www.eepw.com.cn/article/201611/319879.htm

只要給一個0,它就會「叫」。讓它唱歌的原理很簡單,聲音大小是固定的,讓它的頻率變化,就能讓它發出不同的音符。

代碼中在軟體循環延時過程中,依次給它一個固定頻率的方波,讓它唱起來。

//晶振11.0592

#include

sbit speaker=P2^3;

unsigned char byteTH0,byteT0L,duration;

// 小星星句子,三個一組,第一個表示音符,第二個表示音階,第三個表示延時長度(單位約等於0.1s)

code unsigned char music[]={

1,2,2, 1,2,2, 5,2,2, 5,2,2, 6,2,2, 6,2,2, 5,2,4,

4,2,2, 4,2,2, 3,2,2, 3,2,2, 2,2,2, 2,2,2, 1,2,4,

5,2,2, 5,2,2, 4,2,2, 4,2,2, 3,2,2, 3,2,2, 2,2,4,

5,2,2, 5,2,2, 4,2,2, 4,2,2, 3,2,2, 3,2,2, 2,2,4,

1,2,2, 1,2,2, 5,2,2, 5,2,2, 6,2,2, 6,2,2, 5,2,4,

4,2,2, 4,2,2, 3,2,2, 3,2,2, 2,2,2, 2,2,2, 1,2,4 };

//定時器計時初值,高八位,代表不同音符的頻率

code unsigned char FREQH[]={

0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,

0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,

0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,

0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,} ;

//定時器計時初值,低八位,代表不同音符的頻率

code unsigned char FREQL[]={

0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,

0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,

0x8F,0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,

0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,};

void song();

void delay(unsigned char t);

void main(void)

{

unsigned char index, step;

TMOD=1;

EA=1;

ET0=1;

while(1)

{

step=0;

while(step<126)

{

index = music[step] + 7 * music[step+1] - 1;

byteTH0 = FREQH[index];

byteT0L = FREQL[index];

duration = music[step+2];

step += 3;

song();

}

delay(10);

}

}

void timer0() interrupt 1

{

TR0=0;

speaker=!speaker;

TH0 = byteTH0;

TL0 = byteT0L;

TR0=1;

}

void delay(unsigned char t)

{

unsigned int i;

unsigned char j=80;

for(i=0; i

while(j--);

TR0=0;

}

void song()

{

TH0 = byteTH0;

TL0 = byteT0L;

TR0 = 1;

delay(duration);

}

相關焦點

  • STC89C52單片機蜂鳴器唱歌實驗
    ////////////////////////////////////////////////////////////////////////實現功能:通過對單片機定時器的配置,讓其產生不同頻率的方波,蜂鳴器根據頻
  • 從零開始學習51單片機(八)獨立按鍵S1實驗3:一鍵控制N個設備
    上期內容回顧:從零開始學習51單片機(六)獨立按鍵S1實驗1:按下S1點亮LED1 鬆手熄滅LED1從零開始學習51單片機(七)獨立按鍵實驗2:一鍵控制兩個設備根據我們進一步的學習,就會發現我們身邊好多設備其實都是可以用單片機來控制的
  • 單片機驅動蜂鳴器C51程序
    intsbit k1=P1^4; //按鈕1sbit k2=P1^5; //按鈕2sbit beep=P3^7; //接蜂鳴器/*********************************************************本程序出自http://www.51hei.com會員uiesers的辛勤勞動,作用是驅動蜂鳴器發出聲音
  • 單片機驅動蜂鳴器原理與設計
    蜂鳴器是一種一體化結構的電子訊響器,本文介紹如何用單片機驅動蜂鳴器,他廣泛應用於計算機、印表機、複印機、報警器、電話機等電子產品中作發聲器件。   蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。
  • 單片機基礎:燥起來吧,蜂鳴器
    一、不可不知道的蜂鳴器基礎知識1、 蜂鳴器簡介:蜂鳴器是一種發聲器件 (這就夠了,就像知道LED是一種發光器件就OK)2、蜂鳴器分類:根據結構分,有壓電式和電磁式;根據」源「分,有無源蜂鳴器和有源蜂鳴器。3、必備知識點:物理學裡定義,聲音是由物體振動發出的,蜂鳴器也是如此,故」源」指的是蜂鳴器帶不帶振蕩源。
  • 51單片機學習14-蜂鳴器驅動
    這篇驅動蜂鳴器,單片機IO口通過開關三極體來驅動蜂鳴器,這裡用PNP的三極體,常用SS8550。三極體b極電阻一般選用1K。
  • 51單片機玩轉物聯網基礎篇04-蜂鳴器
    前言上一節,我們完成了按鍵操作,本節我們學習使用蜂鳴器,首先我們介紹下蜂鳴器,然後完成實驗:上電後默認驅動頻率為5KHZ,通過KEY1控制驅動頻率為1KHZ ,蜂鳴器,KEY2控制驅動頻率為 2KHZ,可以聽到不同的效果。
  • 單片機小白學步(22) IO口:蜂鳴器的使用/三極體的工作原理
    前面我們說了,單片機IO口能通過的電流是有限的,過大的電流可能會燒壞管腳,或者不能正常工作。蜂鳴器和LED相比最主要的區別,就是蜂鳴器比LED需要的電流大很多,電壓一般也會高一些。為了讓單片機驅動蜂鳴器,也就是控制蜂鳴器工作,我們需要使用一些特別的電路。不知道大家是否了解繼電器,繼電器的特點就是用小電流低電壓,控制大電流高電壓電路。
  • 基於Proteus單片機的音樂演奏實現系統
    圖2 在Proteus 環境下用單片機控制蜂鳴器發聲的原理圖。 需要的關鍵元件:單片機和蜂鳴器。 為了便於軟體編程,先要了解單片機唱歌的基本原理。 其次,如何讓蜂鳴器發聲?蜂鳴器有很多種類,但大致分為兩類:有源式(直流電就發聲,但頻率單一);無源式(根據輸入方波頻率而發出不同的聲音)。 這裡選擇無源式蜂鳴器。
  • 51單片機按鍵控制蜂鳴器啟停程序
    51單片機按鍵控制蜂鳴器啟停程序#include<reg52.h> #define uint unsigned int //宏定義sbit SPK=P3^5; //定義喇叭埠sbit key=
  • 蜂鳴器原理
    導讀:本文主要介紹的是蜂鳴器的原理,感興趣的盆友們快來學習一下吧~~~很漲姿勢的哦~~~本文引用地址:http://www.eepw.com.cn/article/277228.htm1.蜂鳴器原理--簡介  蜂鳴器其實就是一種一體化結構的電子訊響器
  • 串行口通信單片機根據上位機發送的數字控制蜂鳴器發聲
    程序源碼#include //聲明程序需要的全局變量unsigned char flag, a, num, benum;//聲明單片機的蜂鳴器sbit beep = P2 ^ 3;//聲明初始化函數void init(
  • 一個蜂鳴器的原理圖
    ===============================================================電路圖:電路功能:本電路模塊,可直接連接到單片機的I/O進行使用,是一個通用的蜂鳴器驅動模塊。
  • 8051單片機在機器人技術和醫療領域的應用
    一、單片機的應用   單片機通常用於電氣和電子項目或電路。有各種類型的單片機,例如:英銳恩的8051系列8位單片機EN8F5113等。但是,由於8051單片機與其他單片機相比具有優勢,因此經常用於各種應用中。在本文中,讓我們討論單片機8051在科學技術中的應用,但首先讓我們看一下什麼是單片機。   二、什麼是單片機?   單片機是什麼?
  • 蜂鳴器是什麼_蜂鳴器報警工作原理
    消耗電流: 電磁式的依電壓的不同,從幾十到上百毫安培都有,壓電式的就省電的多,幾毫安培就可以正常的動作, 且在蜂鳴器啟動時,瞬間需消耗約三倍的電流,驅動方式: 二種蜂鳴器都有自激式的,只要接上直流電(DC)即可發聲,因為已內建了驅動線路在蜂鳴器中了,因為動作原理的不同,電磁式蜂鳴器要用1/2方波來驅動,壓電的用方波,才能有較好的聲音輸出。
  • 單片機ISP編程器使用
    單片機ISP編程器就是用來把這個hex文件燒寫到單片機裡去的工具,這樣我們的程序才會被執行。簡單介紹一下我們使用的ISP編程器,什麼是在系統編程技術呢?在系統可編程技術即In System Programming,簡單地說就是指待編程的單片機在實驗板(目標板)上,不用拆下來用編程器進行編程,只需利用ISP編程接口,通過下載線就可把程序代碼下載到單片機內部,ISP技術是對傳統編程技術的一大革新。通過ISP技術,我們在燒寫程序的時候就不用頻繁拔插晶片,只要滑鼠點擊即可把程序寫入單片機,徹底告別以前那樣用編程器反覆燒寫撥插晶片的煩惱。
  • 蜂鳴器驅動電路設計原理圖講解
    以下介紹的幾種蜂鳴器驅動電路是針對單片機I/O口的驅動電路,適用於現行的壓電式蜂鳴器。
  • 電路找茬:蜂鳴器驅動低級錯誤電路分析
    最近在帶新人小弟做項目,讓小弟設計一個較為簡單的單片機外設電路,其中需要用到蜂鳴器。
  • 8腳51單片機DIY時間顯示+鬧鐘技術分享(一)
    那就開始吧,想著自己做就可以用最小資源來實現最大功能了,然後開始查找需要的晶片資料。平時時間顯示我們最起碼要有小時和分鐘,那麼最起碼要四位數碼管了,還要有按鍵來調整時間,那麼對IO口的管腳就開始有要求了。雖然是時鐘顯示,但是想來還是覺得不想因為節約管腳來把按鍵變少再去處理組合按鍵或者長按的按鍵。
  • 如何設計低成本蜂鳴器?
    需要在輸入端輸入一定頻率PWM的信號才能使蜂鳴器發聲。為了解放PWM資源,實現簡單控制,必須如有源蜂鳴器一樣提供一個振蕩電路。而有源蜂鳴器主要使用LC振蕩,如果要實際搭建此電路,電感參數比較難控制,而且成本高。此時,自然會想到簡易的RC振蕩,而由三極體構成的RC多諧振蕩電路顯然是一個不錯的選擇。1.2 三極體多諧振蕩電路