(玩電子) 電子技術學習(xi)與(yu)研(yan)究
當前位置︰單片(pian)機教(jiao)程網 >> 基礎教(jiao)程 >> 瀏(liu)覽文章

幸运pk10官网

作者:佚名(ming)   來源:本站原創   點擊數:x  更新時間︰2007年(nian)08月14日   【字體(ti)︰

利(li)用(yong)單片(pian)機(或單板機)奏樂大概是無線(xian)電愛好者感興趣的(de)問題之(zhi)一。本文從單片(pian)機的(de)基本發(fa)間實驗出(chu)發(fa),談談音樂程序的(de)設計(ji)原理,並給出(chu)具體(ti)實例,以供參考。

單片(pian)機的(de)基本發(fa)音實驗

我們知道,聲音的(de)頻譜範圍約在幾(ji)十到(dao)幾(ji)千(qian)赫茲,若能利(li)用(yong)程序來控制單處機某個口線(xian)的(de)“高”電平或低電平,則在該(gai)口線(xian)上就能產生一定頻率的(de)矩形(xing)波,接上喇(la)叭就能發(fa)出(chu)一定頻率的(de)聲音,若再利(li)用(yong)延時程序控制“高”“低”電平的(de)持續時間,就能改變(bian)輸出(chu)頻率,從而改變(bian)音調。

例如(ru),要產生200HZ的(de)音頻信號,按圖1接入喇(la)叭(若屬臨時實驗,也bu)山 la)叭直接接在P1口線(xian)上),實驗程序為(wei)︰

其中子程序DEL為(wei)延時子程序,當R3為(wei)1時,延時時間約為(wei)20us,R3中存放(fang)延時常(chang)數,對(dui)200HZ音頻,其周期(qi)為(wei)1/200秒,即5ms。這樣,當P1.4的(de)高電平或低電平的(de)持續時間為(wei)2.5ms,即R3的(de)時間常(chang)數取2500/20=125(7DH)時,就能發(fa)出(chu)200HZ的(de)音調。將上述(shu)程序鍵(jian)入學習(xi)機,並持續修改R3的(de)常(chang)數能感到(dao)音調的(de)變(bian)化。樂曲中,每一音符對(dui)應著確定的(de)頻率,表(biao)1給出(chu)C調時各音符頻率及其對(dui)應的(de)時間常(chang)數。讀(du)者能根據表(biao)1所供給的(de)常(chang)數,將其16進制代碼送入R3,反(fan)復練習(xi)體(ti)會。根據表(biao)1能奏出(chu)音符。僅(jin)這還不(bu)夠(gou),要準(zhun)確奏出(chu)一首(shou)曲子,必須準(zhun)確地控制ping)智謐啵 匆灰舴de)持續時間。

音符的(de)節拍我們能用(yong)定時器(qi)T0來控制,送入不(bu)一樣的(de)初值,就能產生不(bu)一樣的(de)定時時間。便如(ru)某歌曲的(de)節奏為(wei)每分鐘(zhong)94拍,即一拍為(wei)0.64秒。其它(ta)節拍與(yu)時間的(de)對(dui)應關系見表(biao)2。

但時,由于T0的(de)最大定時時間只能為(wei)131毫(hao)秒,因此不(bu)可能直接用(yong)改變(bian)T0的(de)時間初值來實現不(bu)一樣節拍。我們能用(yong)T0來產生10毫(hao)秒的(de)時間基準(zhun),然後設置一個中斷計(ji)數器(qi),通過判別中斷計(ji)數器(qi)的(de)值來控制節拍時間的(de)長短。表(biao)2中也給出(chu)了各種節拍所對(dui)應的(de)時間常(chang)數。例如(ru)對(dui)1/4拍音符,定時時間為(wei)0.16秒,對(dui)應的(de)時間常(chang)數為(wei)16(即10H);對(dui)3拍音符,定時時間為(wei)1.92秒,對(dui)應時間長數為(wei)192(即C0H)。

我們將每一音符的(de)時間常(chang)數和其對(dui)應的(de)節拍常(chang)數作為(wei)一組,按次序將樂曲中的(de)所有常(chang)數排(pai)列(lie)成一個表(biao),然後由查(cha)表(biao)程序依(yi)次取出(chu),產生音符並控制節奏,就能實現演(yan)奏效果(guo)。此外,結(jie)束符和體(ti)止符能分別用(yong)代碼00H和FFH來表(biao)示,若查(cha)表(biao)結(jie)果(guo)為(wei)00H,則表(biao)示曲子終(zhong)了;若查(cha)表(biao)結(jie)果(guo)為(wei)FFH,則產生對(dui)應的(de)停頓效果(guo)。為(wei)了產生手彈的(de)節奏感,在某些音符(例如(ru)兩(liang)個相同音符)音插入一個時間單位的(de)頻率略有不(bu)一樣的(de)音符。

下面給出(chu)程序序清單,可直接在TD-III型學習(xi)機上演(yan)奏,對(dui)其它(ta)不(bu)一樣型號的(de)學習(xi)機,只需對(dui)應地改變(bian)一下地址(zhi)即可。本程序演(yan)奏的(de)是民歌“八月桂花遍地開”,C調,節奏為(wei)94拍/分。讀(du)者也能自(zi)行找ye) 皇shou)歌,按表(biao)1和表(biao)2給定的(de)常(chang)數,將樂曲翻譯成碼表(biao)輸入機器(qi),而程序不(bu)變(bian)。本實驗辦法簡便,即使不(bu)懂音樂的(de)人,將一首(shou)陌生的(de)曲子翻譯成代碼也是易事,和著機器(qi)的(de)演(yan)奏學唱一首(shou)歌曲,其趣味無窮。

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

程序框圖如(ru)圖2所示。


<單片(pian)機音樂程序的(de)設計(ji)圖>

本課由單片(pian)機教(jiao)程網提(ti)供,有xing)侍庵zhi)出(chu).

硬(ying)件連(lian)接說明:

隨便找一個仿(fang)真機或者什麼單片(pian)機實驗板,只要能工作的(de)就行,將程序輸入,運(yun)行,然後找個音箱(你計(ji)算(suan)機旁邊應當就有一對(dui)吧)撥出(chu)插頭,插頭的(de)前端接在P1。0上,後面部(bu)分zhong)腋xian)接單片(pian)機的(de)地,就應當有聲了,然後怎麼改進硬(ying)件連(lian)接就是你的(de)事了。。。。

音樂程序匯(hui)編代碼代碼1 -------------Voice.asm--------------------------

        ORG     0000H
        LJMP    START
        ORG     000BH
        INC     20H     ;中斷服(fu)務,中斷計(ji)數器(qi)加1
        MOV     TH0,#0D8H
        MOV     TL0,#0EFH  ;12M晶振,形(xing)成10毫(hao)秒中斷
        RETI
START: 
        MOV     SP,#50H
        MOV     TH0,#0D8H
        MOV     TL0,#0EFH
        MOV     TMOD,#01H
        MOV     IE,#82H
MUSIC0:
        NOP
        MOV     DPTR,#DAT      ;表(biao)頭地址(zhi)送DPTR
        MOV     20H,#00H        ;中斷計(ji)數器(qi)清0
        MOV     B,#00H          ;表(biao)序號清0
MUSIC1:
        NOP
        CLR     A
        MOVC    A,@A+DPTR       ;查(cha)表(biao)取代碼
        JZ      END0     ;是00H,則結(jie)束
        CJNE    A,#0FFH,MUSIC5
        LJMP    MUSIC3
MUSIC5:
        NOP
        MOV     R6,A
        INC     DPTR
        MOV     A,B
        MOVC    A,@A+DPTR       ;取節拍代碼送R7
        MOV     R7,A
        SETB    TR0             ;啟(qi)動計(ji)數
MUSIC2:
        NOP
        CPL     P1.0
        MOV     A,R6
        MOV     R3,A
        LCALL   DEL
        MOV     A,R7
        CJNE    A,20H,MUSIC2    ;中斷計(ji)數器(qi)(20H)=R7否?
                                ;不(bu)等,則繼續循環
        MOV     20H,#00H        ;等于,則取下一代碼
        INC     DPTR
;        INC     B
        LJMP    MUSIC1
MUSIC3:
        NOP
        CLR     TR0     ;休止100毫(hao)秒
        MOV     R2,#0DH
MUSIC4:
        NOP
        MOV     R3,#0FFH
        LCALL   DEL
        DJNZ    R2,MUSIC4
        INC     DPTR
        LJMP    MUSIC1
END0:
        NOP
        MOV     R2,#64H ;歌曲結(jie)束,延時1秒後繼續
MUSIC6:
        MOV     R3,#00H
        LCALL   DEL
        DJNZ    R2,MUSIC6
        LJMP    MUSIC0
DEL:
        NOP
DEL3:                 
        MOV     R4,#02H
DEL4:  
        NOP
        DJNZ    R4,DEL4
        NOP
        DJNZ    R3,DEL3
        RET
        NOP
DAT:
 db 26h,20h,20h,20h,20h,20h,26h,10h,20h,10h,20h,80h,26h,20h,30h,20h
 db 30h,20h,39h,10h,30h,10h,30h,80h,26h,20h,20h,20h,20h,20h,1ch,20h
 db 20h,80h,2bh,20h,26h,20h,20h,20h,2bh,10h,26h,10h,2bh,80h,26h,20h
 db 30h,20h,30h,20h,39h,10h,26h,10h,26h,60h,40h,10h,39h,10h,26h,20h
 db 30h,20h,30h,20h,39h,10h,26h,10h,26h,80h,26h,20h,2bh,10h,2bh,10h
 db 2bh,20h,30h,10h,39h,10h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,20h
 db 20h,10h,20h,10h,2bh,10h,26h,30h,30h,80h,18h,20h,18h,20h,26h,20h
 db 20h,20h,20h,40h,26h,20h,2bh,20h,30h,20h,30h,20h,1ch,20h,20h,20h
 db 20h,80h,1ch,20h,1ch,20h,1ch,20h,30h,20h,30h,60h,39h,10h,30h,10h
 db 20h,20h,2bh,10h,26h,10h,2bh,10h,26h,10h,26h,10h,2bh,10h,2bh,80h
 db 18h,20h,18h,20h,26h,20h,20h,20h,20h,60h,26h,10h,2bh,20h,30h,20h
 db 30h,20h,1ch,20h,20h,20h,20h,80h,26h,20h,30h,10h,30h,10h,30h,20h
 db 39h,20h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,10h,40h,10h,20h,10h
 db 20h,10h,2bh,10h,26h,30h,30h,80h,00H

END

音樂程序匯(hui)編代碼代碼2 -------------Voice1.asm--------------------------

;標題    '八月桂花香(xiang)'發(fa)聲程序       
;摘要    詳(xiang)見'無線(xian)電'92年(nian)3期(qi)
;作者    周振安(an)
  ORG     0000H
        LJMP    START
        ORG     000BH
        INC     20H     ;中斷服(fu)務,中斷計(ji)數器(qi)加1
        MOV     TH0,#0D8H
        MOV     TL0,#0EFH  ;12M晶振,形(xing)成10毫(hao)秒中斷
        RETI
START: 
        MOV     SP,#50H
        MOV     TH0,#0D8H
        MOV     TL0,#0EFH
        MOV     TMOD,#01H
        MOV     IE,#82H
MUSIC0:
        NOP
        MOV     DPTR,#DAT      ;表(biao)頭地址(zhi)送DPTR
        MOV     20H,#00H        ;中斷計(ji)數器(qi)清0
        MOV     B,#00H          ;表(biao)序號清0
MUSIC1:
        NOP
        CLR     A
        MOVC    A,@A+DPTR       ;查(cha)表(biao)取代碼
        JZ      END0     ;是00H,則結(jie)束
        CJNE    A,#0FFH,MUSIC5
        LJMP    MUSIC3
MUSIC5:
        NOP
        MOV     R6,A
        INC     DPTR
        MOV     A,B
        MOVC    A,@A+DPTR       ;取節拍代碼送R7
        MOV     R7,A
        SETB    TR0             ;啟(qi)動計(ji)數
MUSIC2:
        NOP
        CPL     P1.0
        MOV     A,R6
        MOV     R3,A
        LCALL   DEL
        MOV     A,R7
        CJNE    A,20H,MUSIC2    ;中斷計(ji)數器(qi)(20H)=R7否?
                                ;不(bu)等,則繼續循環
        MOV     20H,#00H        ;等于,則取下一代碼
        INC     DPTR
;        INC     B
        LJMP    MUSIC1
MUSIC3:
        NOP
        CLR     TR0     ;休止100毫(hao)秒
        MOV     R2,#0DH
MUSIC4:
        NOP
        MOV     R3,#0FFH
        LCALL   DEL
        DJNZ    R2,MUSIC4
        INC     DPTR
        LJMP    MUSIC1
END0:
        NOP
        MOV     R2,#64H ;歌曲結(jie)束,延時1秒後繼續
MUSIC6:
        MOV     R3,#00H
        LCALL   DEL
        DJNZ    R2,MUSIC6
        LJMP    MUSIC0
DEL:
        NOP
DEL3:                 
        MOV     R4,#02H
DEL4:  
        NOP
        DJNZ    R4,DEL4
        NOP
        DJNZ    R3,DEL3
        RET
        NOP
DAT:  
        DB      18H,     30H,     1CH,     10H
        DB      20H,     40H,     1CH,     10H    
        DB      18H,     10H,     20H,     10H
        DB      1CH,     10H,     18H,     40H
        DB      1CH,     20H,     20H,     20H
        DB      1CH,     20H,     18H,     20H    
        DB      20H,     80H,     0FFH,    20H
        DB      30H,     1CH,     10H  ,   18H
        DB      20H,     15H,     20H ,    1CH
        DB      20H,     20H,     20H ,    26H
        DB      40H,     20H ,    20H ,    2BH
        DB      20H,     26H,     20H ,    20H    
        DB      20H,     30H ,    80H ,    0FFH
        DB      20H,     20H,     1CH ,    10H
        DB      18H,     10H,     20H ,    20H
        DB      26H,     20H ,    2BH ,    20H
        DB      30H,     20H ,    2BH ,    40H
        DB      20H,     20H  ,   1CH  ,   10H
        DB      18H,     10H,     20H,     20H
        DB      26H,     20H ,    2BH,     20H
        DB      30H,     20H,     2BH ,    40H
        DB      20H,     30H,     1CH ,    10H
        DB      18H,     20H ,    15H ,    20H
        DB      1CH,     20H ,    20H ,    20H
        DB      26H,     40H,     20H ,    20H    
        DB      2BH,     20H,     26H ,    20H    
        DB      20H,     20H,     30H ,    80H
        DB      20H,     30H,     1CH ,    10H
        DB      20H,     10H,     1CH ,    10H
        DB      20H,     20H,     26H  ,   20H
        DB      2BH,     20H,     30H  ,   20H
        DB      2BH,     40H,     20H   ,  15H
        DB      1FH,     05H,     20H    , 10H
        DB      1CH,     10H,     20H ,    20H
        DB      26H,     20H,     2BH ,    20H
        DB      30H,     20H,     2BH ,    40H
        DB      20H,     30H,     1CH  ,   10H
        DB      18H,     20H ,    15H  ,   20H
        DB      1CH,     20H ,    20H  ,   20H
        DB      26H,     40H,     20H  ,   20H
        DB      2BH,     20H,     26H   ,  20H
        DB      20H,     20H,     30H,     30H     
        DB      20H,     30H,     1CH,     10H
        DB      18H,     40H,     1CH,     20H
        DB      20H,     20H,     26H,     40H
        DB      13H,     60H,     18H ,    20H
        DB      15H,     40H,     13H ,    40H
        DB      18H,     80H,     00H
end

發(fa)表(biao)評(ping)論】【告訴好友】【收藏此文】【關閉窗口

幸运pk10官网

幸运pk10官网 | 下一页