91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用蜂鳴器演奏簡單的樂譜

CHANBAEK ? 來源:嵌入式大本營 ? 作者:小小飛飛哥 ? 2023-05-26 16:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

那么,今天分享的是利用蜂鳴器來演奏一些簡單的樂譜。

實(shí)驗(yàn)平臺(tái)為stm32,當(dāng)然51也完全可以做,其核心思想是相似的。

首先是對(duì)蜂鳴器的介紹。蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣泛應(yīng)用于計(jì)算機(jī)、打印機(jī)、復(fù)印機(jī)、報(bào)警器、電子玩具、汽車電子設(shè)備、電話機(jī)、定時(shí)器等電子產(chǎn)品中作發(fā)聲器件。

蜂鳴器包括有源蜂鳴器和無源蜂鳴器,有源蜂鳴器只要通上電就可以發(fā)聲,而無源蜂鳴器需要有一定頻率的脈沖才能發(fā)聲。

圖片

圖片

上圖為無源蜂鳴器電路,下圖為有源蜂鳴器電路。因?yàn)?a target="_blank">單片機(jī)的輸出電流很小,不能直接驅(qū)動(dòng)蜂鳴器,所以用了三極管來放大電流。在上邊的電路中,當(dāng)輸入高電平時(shí),三極管導(dǎo)通,電流可以由3.3V電源流向蜂鳴器,當(dāng)輸入低電平時(shí),三極管截止,蜂鳴器與GND相連。通過單片機(jī)管腳輸出一段脈沖,即可讓蜂鳴器發(fā)聲。在下邊的電路中,只要輸入為低電平,三極管導(dǎo)通,蜂鳴器就可以發(fā)聲。

那么,蜂鳴器發(fā)出的聲音大小、音調(diào)高低和什么有關(guān)呢?聲音大小和輸入脈沖的占空比有關(guān),占空比越大,聲音越大,而音調(diào)的高低和脈沖頻率有關(guān),頻率越高,音調(diào)也就越高,通常讓輸出頻率為1.5~5kHZ。

接下來講解具體如何實(shí)現(xiàn)讓蜂鳴器演奏樂譜。

首先得對(duì)音樂簡譜有一定了解。本人對(duì)音樂簡譜也并不算很了解,如果要深入了解,請(qǐng)自行百度搜索。下面是我的一些粗略見解。

圖片

一首曲子包含音調(diào)和節(jié)拍。音調(diào)也就是平常我們說的音調(diào),比如1,2,3,4,5,6,7。音調(diào)越來越高,音調(diào)還包括低音、中音、高音。而節(jié)拍就是一個(gè)調(diào)子唱多久,有的音拖的長一些,有的音就比較短。這兩個(gè)要素是今天編程的核心。

首先說音調(diào),前面講到,音調(diào)的高低是和脈沖的頻率有關(guān)系的,這個(gè)關(guān)系已經(jīng)有人將它做成了表格,下面截取一部分:

圖片

頻率與周期成倒數(shù),在一個(gè)脈沖里面,讓一半為高電平,一半為低電平,而脈沖周期可以通過延時(shí)函數(shù)來確定,于是,編寫頻率發(fā)生函數(shù)。

while(1)
    {
            beep=!beep;
            led1=0;
            delay_us(music[k]);
    }

其中在delay_us()這個(gè)函數(shù)里的輸入?yún)?shù)就可以根據(jù)樂譜然后查表得到,就是上面的半周期。 由于這個(gè)參數(shù)是隨著樂譜變化的,因此,我們可以把樂譜轉(zhuǎn)化之后的數(shù)據(jù)放到一個(gè)數(shù)組里面,持續(xù)地調(diào)用數(shù)組里的數(shù)據(jù)。

這樣,音調(diào)就解決了。 接下來解決節(jié)拍的問題。 其實(shí)要解決節(jié)拍的問題,無非就是要考慮music[k]多久刷新一次。 我們可以想象一下,如果music[k]是每隔固定的一段時(shí)間跳到下一個(gè),那么造成的后果就是兩個(gè)音調(diào)之間的時(shí)間是一樣的,這樣聽起來肯定是非常怪的。 假設(shè)music[k]刷新的特別快,beep剛好發(fā)生一次翻轉(zhuǎn),music[k]就發(fā)生了改變,這樣也是不行的,因?yàn)槿绻⑿逻@么快的話,它連一個(gè)完整的脈沖周期都沒有走完。 因此,music[k]應(yīng)該要刷新慢一些,并且是隨著樂譜改變的。 刷新的慢,聽起來就會(huì)比較舒緩而已。

所以,我們可以采用定時(shí)器中斷來實(shí)現(xiàn)。 每次發(fā)生中斷,就讓數(shù)組里的數(shù)據(jù)跳到下一個(gè),實(shí)現(xiàn)數(shù)據(jù)的刷新,同時(shí),改變定時(shí)器裝載值,讓每次發(fā)生中斷所需的時(shí)間不一樣,這個(gè)時(shí)間就是由樂譜的節(jié)拍決定的。

實(shí)現(xiàn)函數(shù)

void TIM4_IRQHandler(void)
{
    if(TIM_GetITStatus(TIM4,TIM_IT_Update))
    {

        if(k

這樣也就完美解決了節(jié)拍的問題。 解決了這兩個(gè)問題,理論上我們可以把任何一首簡譜轉(zhuǎn)化為頻率(周期)和節(jié)拍(間隔時(shí)間)這兩個(gè)量,然后用數(shù)組保存好,這樣就可以通過蜂鳴器演奏出來了,當(dāng)然,這需要花費(fèi)很多的時(shí)間和精力,而且對(duì)于很多人來說,并不是很容易看懂簡譜。

于是,有了一款軟件可以比較方便的獲取這些數(shù)據(jù),軟件截圖如下

圖片

曲譜存貯格式 unsigned char code MusicName{音高,音長,音高,音長...., 0,0}; 末尾:0,0 表示結(jié)束(Important)

音高由三位數(shù)字組成:

個(gè)位是表示 1~7 這七個(gè)音符

十位是表示音符所在的音區(qū):1-低音,2-中音,3-高音;

百位表示這個(gè)音符是否要升半音: 0-不升,1-升半音。

音長最多由三位數(shù)字組成:

個(gè)位表示音符的時(shí)值,其對(duì)應(yīng)關(guān)系是:

|數(shù)值(n): |0 |1 |2 |3 | 4 | 5 | 6

|幾分音符: |1 |2 |4 |8 |16 |32 |64 音符=2^n

十位表示音符的演奏效果(0-2): 0-普通,1-連音,2-頓音

百位是符點(diǎn)位: 0-無符點(diǎn),1-有符點(diǎn)

調(diào)用演奏子程序的格式

Play(樂曲名,調(diào)號(hào),升降八度,演奏速度);

|樂曲名 : 要播放的樂曲指針,結(jié)尾以(0,0)結(jié)束;

|調(diào)號(hào)(0-11) :是指樂曲升多少個(gè)半音演奏;

|升降八度(1-3) : 1:降八度, 2:不升不降, 3:升八度;

|演奏速度(1-12000):值越大速度越快;

這款軟件提取的信息比較豐富,如果要求不高的話,只要能夠大概使用一下就好。比如它生成的音高,如果我們只是用來延時(shí)的話,那么只要把它擴(kuò)大或者縮小一定倍數(shù),使它落在頻率(周期)區(qū)間(前面講到是1.5~5kHZ,換算成半周期就是100us~500us左右),這樣就可以比較簡單的利用了。

總結(jié):用蜂鳴器演奏樂曲,主要是要把握住兩個(gè)核心。 一個(gè)是音調(diào) ,這個(gè)通過改變脈沖頻率來實(shí)現(xiàn),其實(shí)就是通過精確延時(shí)來改變脈沖周期。 另一個(gè)是節(jié)拍 ,節(jié)拍可以簡單理解為兩個(gè)音調(diào)之間的時(shí)間間隔,要控制不同的節(jié)拍,其實(shí)就是隔多長的時(shí)間去刷新前面的音調(diào),那么可以通過定時(shí)器中斷來實(shí)現(xiàn),定時(shí)的時(shí)間就是節(jié)拍長度,一旦發(fā)生中斷,就刷新前面的音調(diào),同時(shí),給定時(shí)器裝載一個(gè)新的值。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 三極管
    +關(guān)注

    關(guān)注

    145

    文章

    3657

    瀏覽量

    124692
  • 報(bào)警器
    +關(guān)注

    關(guān)注

    12

    文章

    948

    瀏覽量

    109797
  • 蜂鳴器
    +關(guān)注

    關(guān)注

    12

    文章

    895

    瀏覽量

    46971
  • 有源蜂鳴器
    +關(guān)注

    關(guān)注

    0

    文章

    30

    瀏覽量

    11848
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    利用蜂鳴器和單片機(jī)演奏簡單的音樂電路設(shè)計(jì)

    利用蜂鳴器和單片機(jī)演奏簡單的音樂,包含源程序代碼。
    發(fā)表于 04-03 12:59 ?1.1w次閱讀
    <b class='flag-5'>利用</b><b class='flag-5'>蜂鳴器</b>和單片機(jī)<b class='flag-5'>演奏</b><b class='flag-5'>簡單</b>的音樂電路設(shè)計(jì)

    結(jié)合鬧鐘與電子音樂演奏的綜合項(xiàng)目適合初學(xué)者的項(xiàng)目。

    分析、整體與模塊的仿真分析三個(gè)步驟,使硬件實(shí)現(xiàn)了鬧鐘的顯示以及整點(diǎn)報(bào)時(shí)等功能,其中整點(diǎn)報(bào)時(shí)采用整體復(fù)位、按鍵選擇演奏方式、循環(huán)演奏以及數(shù)碼管顯示樂譜的功能。系統(tǒng)能自動(dòng)從頭開始循環(huán)播放,也可隨時(shí)起停、按鍵
    發(fā)表于 12-14 21:38

    各位,問一個(gè)問題,用蜂鳴器演奏流行音樂曲子,做成產(chǎn)品賣的話,算侵權(quán)嗎?

    各位,問一個(gè)問題,用蜂鳴器演奏流行音樂曲子,做成產(chǎn)品賣的話,算侵權(quán)嗎?
    發(fā)表于 01-22 11:09

    按鍵控制無源蜂鳴器發(fā)出不同聲音來演奏音樂

    cortex-A8用不同按鍵控制無源蜂鳴器發(fā)出不同聲音來演奏音樂的程序
    發(fā)表于 06-05 21:36

    如何去實(shí)現(xiàn)一種基于51單片機(jī)的音樂盒設(shè)計(jì)

    一.硬件方案本設(shè)計(jì)以51單片機(jī)原理和控制理論設(shè)計(jì)音樂演奏控制器的硬件電路,并利用C語言進(jìn)行程序設(shè)計(jì)。通過控制單片機(jī)內(nèi)部的定時(shí)器來產(chǎn)生不同頻率的方波,驅(qū)動(dòng)蜂鳴器發(fā)出不同音調(diào)的音樂,再利用
    發(fā)表于 11-19 06:07

    通過單片機(jī)演奏音樂

    在學(xué)完單片機(jī)后的擴(kuò)展實(shí)驗(yàn)里有蜂鳴器的音樂實(shí)驗(yàn),簡單來說就是一段頻率編碼,如果熟悉音樂的可以自己寫譜給單片機(jī)編程由于對(duì)音樂一竅不通,這里把學(xué)習(xí)的代碼附上
    發(fā)表于 11-30 07:08

    怎樣去設(shè)計(jì)一個(gè)基于STC89C52單片機(jī)的智能音樂盒

    鍵盤模塊等。本實(shí)驗(yàn)主使用蜂鳴器,采用pwm技術(shù)使蜂鳴器發(fā)出不同音調(diào)的聲音,再根據(jù)樂譜編譯出不同的音樂。3.軟件設(shè)計(jì)通過給定時(shí)器不同的初值,使時(shí)間不同,演奏不同的音符。在此code中編譯
    發(fā)表于 12-08 06:47

    利用定時(shí)器定時(shí)翻轉(zhuǎn)蜂鳴器的beep引腳,產(chǎn)生方波使蜂鳴器發(fā)生

    利用定時(shí)器定時(shí)翻轉(zhuǎn)蜂鳴器的beep引腳,產(chǎn)生方波使蜂鳴器發(fā)生,所以根據(jù)定時(shí)器不同的定時(shí)產(chǎn)生不同的方波,就可以改變蜂鳴器的音調(diào)(與改變led燈亮度類似)。void time0() int
    發(fā)表于 01-07 07:59

    如何利用Arduino與蜂鳴器實(shí)現(xiàn)音樂的演奏

    如何利用Arduino與蜂鳴器實(shí)現(xiàn)音樂的演奏呢?其程序代碼該怎樣去實(shí)現(xiàn)呢?
    發(fā)表于 02-14 07:22

    MCU控制蜂鳴器演奏音樂小程序

    程序功能:MCU控制蜂鳴器演奏歌曲《祝你平安》 ,撥碼開關(guān)設(shè)置:將BUZZER位撥至ON,其余位撥至OFF,測(cè)試說明:聆聽蜂鳴器“唱出”的樂曲 ,既然是演奏樂曲對(duì)于一個(gè)音符應(yīng)該包括兩個(gè)
    的頭像 發(fā)表于 04-20 09:17 ?7241次閱讀

    蜂鳴器音樂程序與最簡單蜂鳴器電路圖之FPGA學(xué)習(xí)課程

    是否按下,或者有些功能是否正常等,當(dāng)然如果足夠浪漫,也可以讓蜂鳴器演奏音樂。 簡單蜂鳴器電路圖 本設(shè)計(jì)使用的是無源蜂鳴器,也可稱為聲響器,原
    發(fā)表于 08-07 10:35 ?2w次閱讀
    <b class='flag-5'>蜂鳴器</b>音樂程序與最<b class='flag-5'>簡單</b><b class='flag-5'>蜂鳴器</b>電路圖之FPGA學(xué)習(xí)課程

    如何使用單片機(jī)進(jìn)行蜂鳴器演奏音樂的程序資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何使用單片機(jī)進(jìn)行蜂鳴器演奏音樂的程序資料免費(fèi)下載。
    發(fā)表于 05-05 08:00 ?9次下載
    如何使用單片機(jī)進(jìn)行<b class='flag-5'>蜂鳴器</b><b class='flag-5'>演奏</b>音樂的程序資料免費(fèi)下載

    利用51單片機(jī)演奏《豬豬俠》

    利用51單片機(jī)演奏《豬豬俠》
    發(fā)表于 11-23 16:20 ?17次下載
    <b class='flag-5'>利用</b>51單片機(jī)<b class='flag-5'>演奏</b>《豬豬俠》

    51單片機(jī)實(shí)驗(yàn)-蜂鳴器播放音樂

    51單片機(jī)實(shí)驗(yàn)-蜂鳴器播放音樂題目:編程實(shí)現(xiàn)利用單片機(jī)使蜂鳴器播放“茉莉花”的樂曲。學(xué)校單片機(jī)時(shí)寫的,利用單片機(jī)控制蜂鳴器播放樂曲,開發(fā)板上
    發(fā)表于 11-23 16:23 ?42次下載
    51單片機(jī)實(shí)驗(yàn)-<b class='flag-5'>蜂鳴器</b>播放音樂

    Arduino演奏the truth that you leave

    Arduino演奏the truth that you leave利用Arduino及配套的蜂鳴器等,可以實(shí)現(xiàn)音樂的演奏。由于本人水平所限,該視頻僅僅截取了原曲的一部分,而且音調(diào)有偏差
    發(fā)表于 12-14 19:03 ?1次下載
    Arduino<b class='flag-5'>演奏</b>the truth that you leave
    主站蜘蛛池模板: 黑人边吃奶边扎下面激情视频 | 免费在线观看理论片 | 亚洲精品网站日本xxxxxxx | 热久久最新地址 | 黄色大片在线视频 | 亚洲国产香蕉视频欧美 | 日本xxxxxxx69xx| 亚洲综合激情丁香六月 | 超级淫小黄文大全很污的那种 | 国产精品日本亚洲777 | 日韩中文字幕电影 | 大学生毛片 | 亚洲精品福利视频 | 男人和女人做a免费视频 | 狠狠色丁香六月色 | 亚洲 欧美 视频 | 久久99精品久久久久久牛牛影视 | 四虎影免看黄 | 在线观看黄a | 青青热久免费精品视频在线观看 | 欧美日本色 | 天堂成人一区二区三区 | 国产全肉乱妇杂乱视频 | 天堂网在线最新版www中文网 | 国产美女亚洲精品久久久久久 | www.瑟瑟| 岛国大片在线播放 | 性高清 | 你懂的 在线观看 | 久久久久88色偷偷免费 | 国产在线美女 | 色多多视频在线观看免费大全 | 毛片高清一区二区三区 | 天天干在线观看 | 国产真实乱xxxav | 天天干夜操| 在线观看中文字幕第一页 | 久操视频免费观看 | 激情福利 | 日韩成人免费一级毛片 | 亚洲第一视频在线观看 |