色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          單片機(jī)音樂程序

          作者: 時(shí)間:2013-03-08 來源:網(wǎng)絡(luò) 收藏

          CASE1: CJNE A,#01H,CASE2
          INC RDYDSR
          MOV A,RDYDSR
          CJNE A,#04H,RDYDSL4
          MOV RDYDSR,#00H
          RDYDSL4: MOV DISNUM0,RDYDSR
          MOV DISNUM1,#27H
          RET
          CASE2: CJNE A,#02H,CASE3
          MOV A,COSPEEDN
          JZ KA1NEXT5
          DEC COSPEEDN
          KA1NEXT5: MOV SPENR,COSPEEDN
          LCALL SPENSDISN
          RET
          CASE3: CJNE A,#03H,CASE4
          SETB SPEEDF
          LCALL SPEEDCL
          RET
          CASE4: CJNE A,#04H,CASE5
          SETB TONEF
          LCALL TONECL
          RET
          CASE5: CJNE A,#05H,CASE6
          CPL ROCF
          JNB ROCF,KA1NEXT3
          MOV DISNUM0,#24H
          SJMP KA1NEXT4
          KA1NEXT3: MOV DISNUM0,#25H
          KA1NEXT4: MOV DISNUM1,#27H
          RET
          CASE6: CJNE A,#06H,KA1RET
          MOV DISNUM0,#23H
          MOV DISNUM1,#06H
          KA1RET: RET
          ;========= 樂曲表============
          ;---------SONGS--------------
          T_SONGS: 樂曲表表首
          dw 01ffh,;song1:xiao la ba...
          dw 0b05h,
          dw 2504h,
          dw 2604h,
          dw 2506h,
          dw 0002h,
          dw 2504h,
          dw 2604h,
          dw 2506h,
          dw 0002h,
          dw 2504h,
          dw 2604h,
          dw 2504h,
          dw 2304h,
          dw 2204h,
          dw 2104h,
          dw 2206h,

          DW 16FFH;SONG16:Liang Zhi Lao Hu
          DW 0715H
          DW 0FF21H ;REP21
          DW 0FF01H ;REP01
          DW 2102H
          DW 2202H
          DW 2302H
          DW 2102H
          DW 0FF02H ;REP02
          DW 0FF03H ;REP03
          DW 2302H
          DW 2402H
          DW 2504H
          DW 2302H
          DW 2402H
          DW 2504H
          DW 0FF11H ;REP11
          DW 2501H
          DW 2601H
          DW 2501H
          DW 2401H
          DW 2302H
          DW 2102H
          DW 0FF12H ;REP12
          DW 0FF13H ;REP13
          DW 2202H
          DW 1502H
          DW 2104H
          DW 2202H
          DW 1502H
          DW 2104H
          DW 0FF22H ;REP22
          DW 0FF23H ;REP23

          DW 0000H ;樂曲表表尾
          END
          ;=========END================
          注:設(shè)計(jì)者手頭有近40首曲子的音樂數(shù)據(jù)(花了大量時(shí)間對(duì)簡(jiǎn)譜進(jìn)行手工轉(zhuǎn)換!),而每塊
          AT89C51的4KROM種除指令外剩下空間只可放14首左右。
          這里給出第一曲和第16曲《兩只老虎》作一示例。

          1. 的基本發(fā)音實(shí)驗(yàn)

          我們知道,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單處機(jī)某個(gè)口線的“高”電平或低電平,則在該口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時(shí)程序控制“高”“低”電平的持續(xù)時(shí)間,就能改變輸出頻率,從而改變音調(diào)。

          例如,要產(chǎn)生200HZ的音頻信號(hào),按圖1接入喇叭(若屬臨時(shí)實(shí)驗(yàn),也可將喇叭直接接在P1口線上),實(shí)驗(yàn)程序?yàn)椋?/P>

          其中子程序DEL為延時(shí)子程序,當(dāng)R3為1時(shí),延時(shí)時(shí)間約為20us,R3中存放延時(shí)常數(shù),對(duì)200HZ音頻,其周期為1/200秒,即5ms。這樣,當(dāng)P1.4的高電平或低電平的持續(xù)時(shí)間為2.5ms,即R3的時(shí)間常數(shù)取2500/20=125(7DH)時(shí),就能發(fā)出200HZ的音調(diào)。將上述程序鍵入學(xué)習(xí)機(jī),并不斷修改R3的常數(shù)可以感到音調(diào)的變化。

          樂曲中,每一音符對(duì)應(yīng)著確定的頻率,表1給出C調(diào)時(shí)各音符頻率及其相應(yīng)的時(shí)間常數(shù)。

          讀者可以根據(jù)表1所提供的常數(shù),將其16進(jìn)制代碼送入R3,反復(fù)練習(xí)體會(huì)。根據(jù)表1可以奏出音符。僅這還不夠,要準(zhǔn)確奏出一首曲子,必須準(zhǔn)確地控制樂曲節(jié)奏,即一音符的持續(xù)時(shí)間。

          音符的節(jié)拍我們可以用定時(shí)器T0來控制,送入不同的初值,就可以產(chǎn)生不同的定時(shí)時(shí)間。便如某歌曲的節(jié)奏為每分鐘94拍,即一拍為0.64秒。其它節(jié)拍與時(shí)間的對(duì)應(yīng)關(guān)系見表2。

          但時(shí),由于T0的最大定時(shí)時(shí)間只能為131毫秒,因此不可能直接用改變T0的時(shí)間初值來實(shí)現(xiàn)不同節(jié)拍。我們可以用T0來產(chǎn)生10毫秒的時(shí)間基準(zhǔn),然后設(shè)置一個(gè)中斷計(jì)數(shù)器,通過判別中斷計(jì)數(shù)器的值來控制節(jié)拍時(shí)間的長(zhǎng)短。表2中也給出了各種節(jié)拍所對(duì)應(yīng)的時(shí)間常數(shù)。例如對(duì)1/4拍音符,定時(shí)時(shí)間為0.16秒,相應(yīng)的時(shí)間常數(shù)為16(即10H);對(duì)3拍音符,定時(shí)時(shí)間為1.92秒,相應(yīng)時(shí)間長(zhǎng)數(shù)為192(即C0H)。

          我們將每一音符的時(shí)間常數(shù)和其相應(yīng)的節(jié)拍常數(shù)作為一組,按順序?qū)非械乃谐?shù)排列成一個(gè)表,然后由查表程序依次取出,產(chǎn)生音符并控制節(jié)奏,就可以實(shí)現(xiàn)演奏效果。

          此外,結(jié)束符和體止符可以分別用代碼00H和FFH來表示,若查表結(jié)果為00H,則表示曲子終了;若查表結(jié)果為FFH,則產(chǎn)生相應(yīng)的停頓效果。

          為了產(chǎn)生手彈的節(jié)奏感,在某些音符(例如兩個(gè)相同音符)音插入一個(gè)時(shí)間單位的頻率略有不同的音符。

          程序框圖如圖2所示。

          下面給出程序序請(qǐng)單,可直接在TD-III型學(xué)習(xí)機(jī)上演奏,對(duì)其它不同型號(hào)的學(xué)習(xí)機(jī),只需相應(yīng)地改變一下地址即可。本程序演奏的是民歌“八月桂花遍地開”,C調(diào),節(jié)奏為94拍/分。讀者也可以自行找出一首歌,按表1和表2給定的常數(shù),將樂曲翻譯成碼表輸入機(jī)器,而程序不變。本實(shí)驗(yàn)方法簡(jiǎn)便,即使不懂音樂的人,將一首陌生的曲子翻譯成代碼也是易事,和著機(jī)器的演奏學(xué)唱一首歌曲,其趣味無窮。

          程序清單(略,請(qǐng)參看源程序的說明)。

          點(diǎn)擊瀏覽下一頁(yè)

          硬件連接說明:

          隨便找一個(gè)仿真機(jī)或者什么實(shí)驗(yàn)板,只要能工作的就行,將程序輸入,運(yùn)行,然后找個(gè)音箱(你計(jì)算機(jī)旁邊應(yīng)當(dāng)就有一對(duì)吧)撥出插頭,插頭的前端接在P1。0上,后面部分找根線接的地,就應(yīng)當(dāng)有聲了,然后怎么改進(jìn)硬件連接就是你的事了。。。。


          上一頁(yè) 1 2 3 4 下一頁(yè)

          關(guān)鍵詞: 單片機(jī) 音樂程序 89C52

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉