音樂(lè)程序原理_第1頁(yè)
音樂(lè)程序原理_第2頁(yè)
音樂(lè)程序原理_第3頁(yè)
音樂(lè)程序原理_第4頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、音樂(lè)程序的設(shè)計(jì)原理和程序如下:設(shè)計(jì)原理 總體原理:- x9 l$ p* s3 c# p! 8 a 樂(lè)曲中不同的音符,實(shí)質(zhì)就是不同頻率的聲音。通過(guò)單片機(jī)產(chǎn)生不同的頻率的脈沖信號(hào),經(jīng)過(guò)放大電路,由蜂鳴器放出,就產(chǎn)生了美妙和諧的樂(lè)曲。# a& q; m+ c. g# g2 c 單片機(jī)產(chǎn)生不同頻率脈沖信號(hào)的原理:/ g& p8 r p7 l v$ k t2 h0 t1)要產(chǎn)生音頻脈沖,只要算出某一音頻的脈沖(1/頻率),然后將此周期除以2,即為半周期的時(shí)間,利用定時(shí)器計(jì)時(shí)這個(gè)半周期的時(shí)間,每當(dāng)計(jì)時(shí)到后就將輸出脈沖的i/o反相,然后重復(fù)計(jì)時(shí)此半周期的時(shí)間再對(duì)i/o反相,就可以在i/o腳上得到此頻率的脈沖

2、。: o5 _* o t5 3 x) l2)利用8051的內(nèi)部定時(shí)器使其工作在計(jì)數(shù)器模式mode1下,改變計(jì)數(shù)值th0及tl0以產(chǎn)生不同頻率的方法如下:+ o& o! 0 m1 p0 u, y2 ? 例如,頻率為523hz,其周期天/523 s=1912us,因此只要令計(jì)數(shù)器計(jì)時(shí)956us/1us=956,在每計(jì)數(shù)956次時(shí)就將i/o反接,就可得到中音do(532hz)。 1 g2 5 e3 o7 v! b. m計(jì)數(shù)脈沖值與頻率的關(guān)系公式如下:% 0 l+ ! f5 |5 |0 n+ n=fi/2/fr ) f1 y9 |, ?7 ) j(n:計(jì)數(shù)值,fi:內(nèi)部計(jì)時(shí)一次為1us,故其頻率為1m

3、hz,fr:要產(chǎn)生的頻率 )9 kh8 l5 / b 其計(jì)數(shù)值的求法如下:/ q: 4 ! a# w. l6 k gt=65536-n=65536-fi/2/fr* n+ g1 y# d& l6 f; n7 l- t計(jì)算舉例:9 w; w2 q3 7 x1 x4 t0 j設(shè)k=65536,f=1000000=fi=1mhz,求低音do(261hz)、中音do(523hz)、高音do(1046hz)的計(jì)數(shù)值。6 kq# o% a. _t=65536-n=65536-fi/2/fr=65536-1000000/2/fr=65536-500000/fr9 k& ) b0 w- - h- s d低音d

4、o的t=65536-500000/262=636279 v4 f; % u5 e4 z) k7 中音do的t=65536-500000/523=64580; t9 g/ x c0 s, r高音do的t=65536-500000/1047=65059! z q3 h2 q; z9 e c調(diào)個(gè)音符頻率與計(jì)數(shù)值t的對(duì)照表如下表所示:- r* x# t! b d, r z, g4 u( : x# h) x( w. 1 h# y0 k3 w表9.1c調(diào)各音符頻率與計(jì)數(shù)值t的對(duì)照表+ x! w- / 5 d5 s音符 頻率(hz) 簡(jiǎn)譜碼t值 音符 頻率(hz) 簡(jiǎn)譜碼t值- c/ x; c+ w3 t&

5、 z; x9 e低1do 262 63628 #4fa# 740 64860f: y2 y4 x3 k* i% 3 w4 l0 z#1do# 277 63731 中5so 784 64898$ a. t0 w) |. _7 m& d低2re 294 63835 #5so# 831 649237 z% w# l6 d9 a1 y/ a! d#2re# 311 63928 中6la 880 64968 u9 q5 l! # r8 4 l( h低3m 330 64103 #6 932 64994l4 d7 : 3 k! s: q, a低4fa 349 64103 中7si 988 650301 b,

6、 ?& - 8 ac#4fa# 370 64260 高1do 1046 65058* b& , . u3 x低5so 392 64260 #1do# 1109 65085) d/ d i5 w* q j#5so# 415 64331 高2re 1175 65110; n; w2 g1 i, r+ h6 低6la 440 64400 #2re# 1245 65124. , r3 x! 6 z0 w#6 466 64463 高3m 1318 651576 r, c# k# i; x) n低7si 494 64524 高4fa 1397 65178; k/ jp- d4 w中1do 523 6458

7、0 #4fa# 1480 651986 9 w; f h( _+ j7 j/ h: v# z# f, h7 w! cd 每個(gè)音符使用1個(gè)字節(jié),字節(jié)的高4位代表音符的高低,低4位代表音符的節(jié)拍,下表為節(jié)拍碼的對(duì)照。但如果1拍為0.4秒,1/4拍是0.1秒,只要設(shè)定延遲時(shí)間就可求得節(jié)拍的時(shí)間。假設(shè)1/4節(jié)拍為1delay,則1拍應(yīng)為4delay,以此類推。所以只要求得1/4拍的delay時(shí)間,其余的節(jié)拍就是它的倍數(shù),如下表為1/4和1/8節(jié)拍的時(shí)間設(shè)定。 1 g2 y: 2 u# b表9.2節(jié)拍碼對(duì)照表# 1 l& z9 ?* e$ . y; n1/4節(jié)拍 1/8節(jié)拍0 w9 s5 e5 il8

8、g& _2 t9 v節(jié)拍碼 節(jié)拍數(shù) 節(jié)拍碼 節(jié)拍數(shù): r8 % _0 t w; u! z6 s, n) s1 1/4拍 1 1/8拍5 a. h: v, e( m1 s* u7 i2 2/4拍 2 1/4拍9 b( f- m5 o+ j/ x3 3/4拍 3 3/8拍* ( t$ p1 a6 w! d7 b! a b4 1拍 4 1/2拍- m# c) y$ q4 o8 l5 1又1/4拍 5 5/8拍- i2 . 7 b8 0 n6 1又1/2拍 6 3/4拍9 t6 k4 p) v/ o, p5 lm, _7 1又3/4拍 7 7/8拍6 3 2 9 n+ c8 2拍 8 1拍) a2 u

9、2 c, c- d# 9 2又1/4拍 9 1又1/8拍8 - y; / q x+ ya 2又1/2拍 a 1又1/4拍 q( 2 |# v) h* n1 a8 s( ab 2又3/4拍 b 1又3/8拍3 b( ! u( g$ r+ p0 g: b6 hc 3拍 c 1又1/2拍2 j9 b( i; k1 k! cd 3又1/4拍 d 1又5/8拍- ( g( c! - r3 a; ge 3又1/2拍 e 1又3/4拍; d. 5 e! b; j kf 3又3/4拍 f 1又7/8拍) c1 u; v0 p& m6 d9 kq表9.3 各調(diào)節(jié)拍的時(shí)間設(shè)定表$ + 6 r. t6 e9 0 q

10、1/4節(jié)拍 1/8節(jié)拍+ o/ yn5 q4 eu& |$ k5 m曲調(diào)值 delay 曲調(diào)值 delay8 * u! m w# j5 p8 s+ c調(diào)4/4 125毫秒 調(diào)4/4 62毫秒4 c9 - n o! y: tf& ic# a調(diào)3/4 187毫秒 調(diào)3/4 94毫秒& s8 e9 r# n$ f* q/ k9 y. b8 調(diào)2/4 250毫秒 調(diào)2/4 125毫秒$ v7 q8 e. z5 w! y) 6 b* i 建立音樂(lè)的步驟:! k t5 c% z1 n0 g0 v- r7 w 1)先把吧樂(lè)譜的音符找出,然后由上表建立t值表的順序。+ n e; k) * |4 w; |+ f

11、 2)把t值表建立在table1,構(gòu)成發(fā)音符的計(jì)數(shù)值放在“table”。! w, d+ ! p5 k- p. n3)簡(jiǎn)譜碼(音符)為高位,節(jié)拍為(節(jié)拍數(shù))為低4位,音符節(jié)拍碼放在程序的“table”處。+ o) a! 0 f) f; o/ g4 _! b6 u1 b5 x表9.4簡(jiǎn)譜對(duì)應(yīng)的簡(jiǎn)譜碼、t值、節(jié)拍數(shù)- c5 |5 ) c6 k3 l0 z! x簡(jiǎn)譜 發(fā)音 簡(jiǎn)譜碼 t值 節(jié)拍碼 節(jié)拍數(shù): f$ o+ b8 f j2 u, e: % f5 低5so 1 64260 1 1/4拍0 o; k5 x. u0 k+ v! y6 低6la 2 64400 2 2/4拍5 t0 g% v: g;

12、j ny+ z7 低7si 3 64524 3 3/4拍- r* s7 q e, z u9 ( z7 i1 中1do 4 64580 4 1拍! l- |. v0 p. m2 n/ - ! q; e, 2 中2re 5 64684 5 1又1/4拍! g+ f5 k4 ( z/ x7 k) * 3 中3m 6 64777 6 1又2/4拍. e p h) es4 中4fa 7 64820 7 1又3/4拍q p& i4 yh5 4 * t9 z. 5 中5so 8 64898 8 2拍: y4 j/ m, 2 _& q: u6 中6la 9 64968 9 2又1/4拍( _6 y6 g5 e

13、2 k7 中7si a 65030 a 2又2/4拍/ y: o% ! n8 p9 0 f9 y1 e9 t1 高1do b 65058 b 2又3/4拍) h) & b 4 p 2 a7 u1 f b2 高2re c 65110 c 3拍* n, z# p( w3 j5 f) q, * c j3 高3m d 65157 d 3又1/4拍2 z$ p3 w3 j6 ew- 5 _5 y4 高4fa e 65178 e 3又2/4拍1 e2 c5 x5 z+ o0 d$ o- c5 高5so f 65217 f 3又3/4拍8 b$ 6 ?% - 不發(fā)音 0 5 g6 k; e; |1 q7 n

14、* f% j, y t0 y* a1/4拍的延遲時(shí)間=187毫秒8 t: e, v4 f) g- w ndelay: movr7,#2. nv8 0 q; g; d) fd2: movr4,#1874 ?1 ?! 0 s: l% e2 e5 v0 g0 t9 ud3: movr3,#2480 e# y g# n7 j; ldjnzr3,$0 t! j$ t. w6 b! p/ odjnzr4,d38 a5 r3 k4 m5 h9 y5 ) q$ kdjnzr7,d2# _/ g* t, d1 p( ) j/ h. z& gret5 a7 m3 z) h0 r) t9 h9 d( v4程序范例3

15、 n. o& bu1 k: j7 org 0000h ;主程序起始地址% |, d x7 j% l% l, r( t7 osjmp start ;跳至主程序, x. ?6 f, c- q% z0 z* v( t! borg 000bh ;timer0中斷起 始地址i1 o7 x, v% 7 1 g ljmp tim0 ;跳至timer0中斷子程序9 9 ?s. n5 v8 d b3 lstart:mov tmod,#01h ;設(shè)t0在m1 c - d/ x$ dq mov ie,#82h ;中斷使能% z; o9 q k, k i. sstart0:mov 30h,#00 ;取簡(jiǎn)譜碼指針! u

16、; f s& k+ bnext: mov a,30h ;簡(jiǎn)譜碼指針載入a2 e. f ! - v# w) n% mov dptr,#tab ;至tab取簡(jiǎn)譜碼! d! x! ( r9 e, s0 . lmovc a,a+dptr ;* 4 g v. w2 r5 y& ?* i* d0 c& n mov r2,a ;渠道的簡(jiǎn)譜碼暫存于r2- o w3 , d* b % g0 u jzend0 ;是否渠道00(結(jié)束碼)% r h o+ y1 9 c anla,#0fh ;不是,則取低4位(節(jié)拍碼)2 g r& g m( w* t mov r5,a;將節(jié)拍碼存入r5. e7 r2 c! 1 o8 y

17、2 y+ f u mov a,r2;將取到的簡(jiǎn)譜碼再載入a+ . + y7 t0 l0 k1 a; f5 swap a ;高低4位交換m: u; i! + u5 m lw anla,#0fh;取低4位(音符碼)% m6 h; j e6 m9 e jnzsing;取到的音符碼是否為0? x. a- k% c% z1 t2 e v! r9 p1 o* d, z clr tr0 ;開(kāi)始,則不發(fā)音! l- t5 , p2 k f; n sjmp d1 ;跳至d1# u 9 ) a: 3 / jsing: dec a ;取到的音符碼減1(不含0)5 e( g/ a+ c& h2 z- l, b mov

18、22h,a;存入(22h)5 2 _% k% o z1 rla ;乘23 l- t7 l5 u: o+ p mov dptr,#tab1 ;至table1取相對(duì)的高位字節(jié)計(jì)數(shù)值. n8 e0 , q0 t6 e w |$ u: j movc a,a+dptr ;5 _o; * d* 0 ch7 mov th0,a;取到的高位字節(jié)存入th0+ r9 k/ t# * c: ?) smov 21h,a;取到的高位字節(jié)存入(21h)1 t7 ?0 j; y h f6 amov a,22h;在載入取到的音符碼& 6 u# z( 0 ez- m/ e& orla ;乘2te) x6 r g8 c% _0

19、xinca ;加14 c. b) a: d5 ?movc a,a+dptr ;至table1取相對(duì)的低位字節(jié)計(jì)數(shù)值& g4 y+ n$ i/ n; g7 u) omov tl0,a;取到的低位字節(jié)存入tl01 n4 k& ?0 n8 , c+ % zmov 20h,a;取到的低位字節(jié)存入(20h)0 a1 w% s& . q6 l: dsetb tr0 ;啟動(dòng)timer0$ 0 ? ?/ u9 w2 g. z/ o: b0 pd1:lcall delay;其本單位時(shí)間1/4拍187毫秒1 g: g7 3 x1 e inc30h ;取簡(jiǎn)譜碼指針加1* z z$ l: o5 m2 u jmp ne

20、xt;取下一個(gè)簡(jiǎn)譜碼3 d1 s! n e/ e# d1 yend0: clr tr0 ;停止timer0) q% : q6 7 _: m5 v jmp start0;重復(fù)循環(huán) i0 r) m( w; i2 ftim0: push acc;將a的值暫存于堆棧! r! p) k1 f. _6 m1 q6 d l, he push psw;將psw的值暫存于堆棧: v& l% f9 a% x mov tl0,20h ;重設(shè)計(jì)數(shù)值4 u/ n6 a3 6 w* z. u ?1 b( w5 r2 p mov th0,21h ;: yd8 0 m8 s cplp3.0;將p3.0位反相,控制蜂鳴器發(fā)聲(

21、 * e0 m4 v. f5 e( : j- g pop psw;至堆棧取回psw的值6 h( e$ h; s k- ( o) k pop acc;至堆棧取回a的值* x8 g$ y9 a+ d- / k2 s6 reti : s z* o: w6 y% k/ b/ u) . ?) idelay:mov r7,#02 ) p& # w# e& 1 g0 q; e z* fd2: mov r4,#187 $ |. e! d9 v3 w$ k. ! td3: mov r3,#248 4 m4 h3 u! o! d* l: us djnz r3,$ # z k, + k i7 m% : z djnz

22、 r4,d3 4 g7 u- r/ ) a$ q. v6 q. h djnz r7,d2 _7 o$ g+ u& $ l$ c ret g2 a+ 9 o) - l6 y. tab1: ;決定節(jié)拍, u( g$ s9 o7 6 y+ w6 h n0 q5 ddw64260,64400,64521,64580 n9 j j, d9 # b: c dw64684,64777,64820,64898. r1 q. r# 4 g n# * k# a n5 dw64968,65030,65058,651100 u, p6 x9 e( k0 k; w4 i) l6 i dw65157,65178,65217 6 br$ e, x, g, h/ l9 i( xtab: ;樂(lè)曲名稱梁祝4 wk 1 w% w/ s$ m db0

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論