單片機音樂中音調和節拍的確定方法:調號-音樂上指用以確定樂曲主音高度的符號。
很明顯一個八度就有12個半音。
A、B、C、D、E、F、G。經過聲學家的研究,全世界都用這些字母來表示固定的音高。比如,A這個音,標準的音高為每秒鐘振動440周。
升C調:1=#C,也就是降D調:1=BD;277(頻率)
升D調:1=#D,也就是降E調:1=BE;311
升F調:1=#F,也就是降G調:1=BG;369
升G調:1=#G,也就是降A調:1=BA;415
升A調:1=#A,也就是降B調:1=BB。466,
C 262 #C277 D 294 #D(bE)311 E 330 F 349 #F369 G 392 #G415
A 440. #A466 B 494
所謂1=A,就是說,這首歌曲的“導”要唱得同A一樣高,人們也把這首歌曲叫做A調歌曲,或叫“唱A調”。1=C,就是說,這首歌曲的“導”要唱得同C一樣高,或者說“這歌曲唱C調”。同樣是“導”,不同的調唱起來的高低是不一樣的。
各調的對應的標準頻率為:
單片機演奏音樂時音調和節拍的確定方法
經常看到一些剛學單片機的朋友對單片機演奏音樂比較有興趣,本人也曾是這樣。在此,本人將就這方面的知識做一些簡介,但愿能對單片機演奏音樂比較有興趣而又不知其解的朋友能有所啟迪。
一般說來,單片機演奏音樂基本都是單音頻率,它不包含相應幅度的諧波頻率,也就是說不能象電子琴那樣能奏出多種音色的聲音。因此單片機奏樂只需弄清楚兩個概念即可,也就是“音調”和“節拍”。音調表示一個音符唱多高的頻率,節拍表示一個音符唱多長的時間。
在音樂中所謂“音調”,其實就是我們常說的“音高”。在音樂中常把中央C上方的A音定為標準音高,其頻率f=440Hz。當兩個聲音信號的頻率相差一倍時,也即f2=2f1時,則稱f2比f1高一個倍頻程, 在音樂中1(do)與 ,2(來)與 ……正好相差一個倍頻程,在音樂學中稱它相差一個八度音。在一個八度音內,有12個半音。以1—i八音區為例, 12個半音是:1—#1、#1—2、2—#2、#2—3、3—4、4—#4,#4—5、5一#5、#5—6、6—#6、#6—7、7—i。這12個音階的分度基本上是以對數關系來劃分的。如果我們只要知道了這十二個音符的音高,也就是其基本音調的頻率,我們就可根據倍頻程的關系得到其他音符基本音調的頻率。
知道了一個音符的頻率后,怎樣讓單片機發出相應頻率的聲音呢?一般說來,常采用的方法就是通過單片機的定時器定時中斷,將單片機上對應蜂鳴器的I/O口來回取反,或者說來回清零,置位,從而讓蜂鳴器發出聲音,為了讓單片機發出不同頻率的聲音,我們只需將定時器予置不同的定時值就可實現。那么怎樣確定一個頻率所對應的定時器的定時值呢?以標準音高A為例:
A的頻率f = 440 Hz,其對應的周期為:
T = 1/ f = 1/440 =2272μs
由上圖可知,單片機上對應蜂鳴器的I/O口來回取反的時間應為:
t = T/2 = 2272/2 = 1136μs
這個時間t也就是單片機上定時器應有的中斷觸發時間。一般情況下,單片機奏樂時,其定時器為工作方式1,它以振蕩器的十二分頻信號為計數脈沖。設振蕩器頻率為f0,則定時器的予置初值由下式來確定:
t = 12 *(TALL – THL)/ f0
式中TALL = 216 = 65536,THL為定時器待確定的計數初值。因此定時器的高低計數器的初值為:
TH = THL / 256 = ( TALL – t* f0/12) / 256
TL = THL % 256 = ( TALL – t* f0/12) %256
將t=1136μs代入上面兩式(注意:計算時應將時間和頻率的單位換算一致),即可求出標準音高A在單片機晶振頻率f0=12Mhz,定時器在工作方式1下的定時器高低計數器的予置初值為 :
TH440Hz = (65536 – 1136 * 12/12) /256 = FBH
TL440Hz = (65536 – 1136 * 12/12)%256 = 90H
根據上面的求解方法,我們就可求出其他音調相應的計數器的予置初值。
音符的節拍我們可以舉例來說明。在一張樂譜中,我們經常會看到這樣的表達式,如1=C 、1=G …… 等等,這里1=C,1=G表示樂譜的曲調,和我們前面所談的音調有很大的關聯, 、 就是用來表示節拍的。以 為例加以說明,它表示樂譜中以四分音符為節拍,每一小結有三拍。比如:
其中1 、2 為一拍,3、4、5為一拍,6為一拍共三拍。1 、2的時長為四分音符的一半,即為八分音符長,3、4的時長為八分音符的一半,即為十六分音符長,5的時長為四分音符的一半,即為八分音符長,6的時長為四分音符長。那么一拍到底該唱多長呢?一般說來,如果樂曲沒有特殊說明,一拍的時長大約為400—500ms 。我們以一拍的時長為400ms為例,則當以四分音符為節拍時,四分音符的時長就為400ms,八分音符的時長就為200ms,十六分音符的時長就為100ms。
可見,在單片機上控制一個音符唱多長可采用循環延時的方法來實現。首先,我們確定一個基本時長的延時程序,比如說以十六分音符的時長為基本延時時間,那么,對于一個音符,如果它為十六分音符,則只需調用一次延時程序,如果它為八分音符,則只需調用二次延時程序,如果它為四分音符,則只需調用四次延時程序,依次類推。
通過上面關于一個音符音調和節拍的確定方法,我們就可以在單片機上實現演奏音樂了。具體的實現方法為:將樂譜中的每個音符的音調及節拍變換成相應的音調參數和節拍參數,將他們做成數據表格,存放在存儲器中,通過程序取出一個音符的相關參數,播放該音符,該音符唱完后,接著取出下一個音符的相關參數……,如此直到播放完畢最后一個音符,根據需要也可循環不停地播放整個樂曲。另外,對于樂曲中的休止符,一般將其音調參數設為FFH,FFH,其節拍參數與其他音符的節拍參數確定方法一致,樂曲結束用節拍參數為00H來表示。
下面給出部分音符(三個八度音)的頻率以及以單片機晶振頻率f0=12Mhz,定時器在工作方式1下的定時器高低計數器的予置初值 :
C調音符
頻率Hz 262 277 293 311 329 349 370 392 415 440 466 494
TH/TL F88B F8F2 F95B F9B7 FA14 FA66 FAB9 FB03 FB4A FB8F FBCF FC0B
C調音符 1 1# 2 2# 3 4 4# 5 5# 6 6# 7
頻率Hz 523 553 586 621 658 697 739 783 830 879 931 987
TH/TL FC43 FC78 FCAB FCDB FD08 FD33 FD5B FD81 FDA5 FDC7 FDE7 FE05
C調音符
頻率Hz 1045 1106 1171 1241 1316 1393 1476 1563 1658 1755 1860 1971
TH/TL FB21 FE3C FE55 FE6D FE84 FE99 FEAD FEC0 FE02 FEE3 FEF3 FF02
資源簡介:單片機音樂中音調和節拍的確定方法:調號-音樂上指用以確定樂曲主音高度的符號。很明顯一個八度就有12個半音。A、B、C、D、E、F、G。經過聲學家的研究,全世界都用這些字母來表示固定的音高。比如,A這個音,標準的音高為每秒鐘振動440周。 升C調:1=#C,也就...
上傳時間: 2013-10-20
上傳用戶:哈哈haha
資源簡介:精通MATLAB 張志涌 入門經典教程 超清書簽版
上傳時間: 2013-05-15
上傳用戶:eeworm
資源簡介:通信原理課件 PPT版
上傳時間: 2013-04-15
上傳用戶:eeworm
資源簡介:簡易電子琴學習
上傳時間: 2013-11-01
上傳用戶:xiaozhiqban
資源簡介:給予MSP430F147的串口通訊程序,能幫助你了解MSP430系列單片機和串口通訊的基本方法
上傳時間: 2015-04-17
上傳用戶:yyq123456789
資源簡介:1.24位真彩色->256色灰度圖。 2.預處理:中值濾波。 3.二值化:用一個初始閾值T對圖像A進行二值化得到二值化圖像B。 初始閾值T的確定方法是:選擇閾值T=Gmax-(Gmax-Gmin)/3,Gmax和Gmin分別是最高、最低灰度值。 該閾值對不同牌照有一定的適應性,能夠保證背景...
上傳時間: 2014-01-08
上傳用戶:songrui
資源簡介:單片機音樂 用于播放簡單的音樂 實現音樂盒功能
上傳時間: 2016-11-20
上傳用戶:1583060504
資源簡介:PIC單片機內部SPI通信接口的使用方法(與93c46EEPROM接口)
上傳時間: 2014-01-13
上傳用戶:wl9454
資源簡介:PIC單片機內部IIC通信接口的使用方法(24cxxEEPROM接口)
上傳時間: 2014-01-12
上傳用戶:凌云御清風
資源簡介:TMS320C5402與單片機SPI串口通信的實現方法
上傳時間: 2013-12-01
上傳用戶:change0329
資源簡介:討論了BP 小波神經網絡在訓練過程中減小誤差函數時最優方向的確定和自適應調整學習率的方法。 首先論證了小波神經網絡的數學基礎,然后討論了BP 小波神經網絡的學習過程,重點討論了減小誤差函數最優方 向的確定方法,即如何保證步長方向與負梯度方向一致,由此...
上傳時間: 2014-01-22
上傳用戶:金宜
資源簡介:結合為空-空多機試飛研制的實時差分GPS無線數據鏈,介紹了UHF數據鏈作用距離、天線增益及方向圖、傳播路徑損耗及裕量等幾個重要性能參數的確定方法,可為UHF數據鏈設計提供參考。
上傳時間: 2013-11-14
上傳用戶:butterfly2013
資源簡介:Labview及Proteus軟件環境下單片機串口通訊的仿真方法
上傳時間: 2013-06-27
上傳用戶:eeworm
資源簡介:51單片機控制GSM模塊TC35的方法。值得一看,
上傳時間: 2013-04-24
上傳用戶:F0717007
資源簡介:cpld與單片機8051的通信的設計方法 以及cpld和單片機的端口對應
上傳時間: 2013-09-01
上傳用戶:wettetw
資源簡介:89C51 單片機IO 口模擬串行通信的實現方法
上傳時間: 2013-11-08
上傳用戶:座山雕牛逼
資源簡介:提高PIC16C711單片機片內AD分辨率的方法。
上傳時間: 2013-11-11
上傳用戶:kang1923
資源簡介:提出一種基于凌陽單片機的步進電機加減速的控制方法。采用凌陽科技推出的16位結構工控單片機SPMC75F2413A為控制器,由Allegro公司生產的兩相步進電機專用驅動器件SLA7042M構成步進電機的驅動電路,在傳統的3段直線加減速控制算法基礎上增加至7段S形曲線加減速...
上傳時間: 2013-12-08
上傳用戶:jiangfire
資源簡介:摘要:步進電機是工業自動化、智能儀器儀表及家用電器中重要的執行元件,微機控制其運行可提高系統控制的準確性和實時性;單片機作為微型計算機發展的一個重要分支,在智能儀表、機電一體化產品、實時控制以及分布式系統中有著廣泛的應用。論述單片機控制步進...
上傳時間: 2013-10-21
上傳用戶:gaoliangncepu
資源簡介:摘要:通過利用VC實現PC機與多單片機間串行通信方法的探討,給出了通信協議以及用VC和MCS51匯編語言編寫的部分通信程序,經驗證明了程序的穩定性、可靠性以度通信的實時性,獲得了滿意的設計效果。關鍵詞:串行通信;PC機:單片機;VC
上傳時間: 2013-10-24
上傳用戶:zhangliming420
資源簡介:摘要:介紹了在同一系統內,MCS51系列兩單片機之間采用單向并行通信接口、主從雙向并行通信接口、無主從雙向并行通信操作實現雙機互連的方法,分析了在每一種通信接口工作方式下數據傳送的特點。在三種并行通信接口為單片機應用系統擴充硬件資源的設計提供了...
上傳時間: 2013-11-24
上傳用戶:wincoder
資源簡介:MCS51系列單片機軟件控制復位的可靠方法:文章指出了一種廣泛流傳的誤解:在MCS-51系列單片機中,只要用指令使程序從起始地址開始執行,就可以復位單片機,擺脫干擾。通過實驗,揭示了軟件控制復位的可靠方法。有的單片機(如8098)有專門的復位指令,某些增強...
上傳時間: 2013-11-03
上傳用戶:sevenbestfei
資源簡介:摘 要:單片機多機通訊一般采用串行總線方式,但在通訊距離短,通訊數據量大,通訊速率高的場合也會用到多機并行通訊。本文介紹一種采用簡單邏輯電路實現單片機多機并行通訊的方法。關鍵詞:并行通訊,三態緩沖寄存器,雙端口存儲器,總線隔離1、 簡介本文介...
上傳時間: 2013-10-31
上傳用戶:hxy200501
資源簡介:詳細介紹了pic單片機開發軟件mplab6的使用方法,很難得
上傳時間: 2015-02-07
上傳用戶:love_stanford
資源簡介:89C51 單片機I_O 口模擬串行通信的實現方法
上傳時間: 2013-12-24
上傳用戶:wyc199288
資源簡介:單片機音樂程序的設計與實驗,包含音樂程序的設計原理。
上傳時間: 2015-03-23
上傳用戶:lingzhichao
資源簡介:二次指數平滑預測法和三次指數平滑預測法是普遍的預測方法,應用很廣,本代碼還包含其平滑系數的確定
上傳時間: 2014-01-08
上傳用戶:離殤
資源簡介:本程序給出了一種msp430單片機模擬實現i2c總線的一種方法
上傳時間: 2015-03-29
上傳用戶:thuyenvinh
資源簡介:Motorola 單片機 掌握I/O口的基本使用方法
上傳時間: 2014-06-30
上傳用戶:pompey
資源簡介:六首唱歌的音樂程序循環,是在單片機學習板子上開發的,按一個鍵(p3.4)可以換歌曲。
上傳時間: 2013-12-18
上傳用戶:gyq