單片機(jī)音樂(lè)程序設(shè)計(jì)
隨便找一個(gè)仿真機(jī)或者什么單片機(jī)實(shí)驗(yàn)板,只要能工作的就行,將程序輸入,運(yùn)行,然后找個(gè)音箱(你計(jì)算機(jī)旁邊應(yīng)當(dāng)就有一對(duì)吧)撥出插頭,插頭的前端接在P1。0上,后面部分找根線接單片機(jī)的地,就應(yīng)當(dāng)有聲了,然后怎么改進(jìn)硬件連接就是你的事了。。。。
音樂(lè)程序匯編代碼代碼1 -------------Voice.asm--------------------------
ORG 0000H
LJMP START
ORG 000BH
INC 20H ;中斷服務(wù),中斷計(jì)數(shù)器加1
MOV TH0,#0D8H
MOV TL0,#0EFH ;12M晶振,形成10毫秒中斷
RETI
START:
MOV SP,#50H
MOV TH0,#0D8H
MOV TL0,#0EFH
MOV TMOD,#01H
MOV IE,#82H
MUSIC0:
NOP
MOV DPTR,#DAT ;表頭地址送DPTR
MOV 20H,#00H ;中斷計(jì)數(shù)器清0
MOV B,#00H ;表序號(hào)清0
MUSIC1:
NOP
CLR A
MOVC A,@A+DPTR ;查表取代碼
JZ END0 ;是00H,則結(jié)束
CJNE A,#0FFH,MUSIC5
LJMP MUSIC3
MUSIC5:
NOP
MOV R6,A
INC DPTR
MOV A,B
MOVC A,@A+DPTR ;取節(jié)拍代碼送R7
MOV R7,A
SETB TR0 ;啟動(dòng)計(jì)數(shù)
MUSIC2:
NOP
CPL P1.0
MOV A,R6
MOV R3,A
LCALL DEL
MOV A,R7
CJNE A,20H,MUSIC2 ;中斷計(jì)數(shù)器(20H)=R7否?
;不等,則繼續(xù)循環(huán)
MOV 20H,#00H ;等于,則取下一代碼
INC DPTR
; INC B
LJMP MUSIC1
MUSIC3:
NOP
CLR TR0 ;休止100毫秒
MOV R2,#0DH
MUSIC4:
NOP
MOV R3,#0FFH
LCALL DEL
DJNZ R2,MUSIC4
INC DPTR
LJMP MUSIC1
END0:
NOP
MOV R2,#64H ;歌曲結(jié)束,延時(shí)1秒后繼續(xù)
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
音樂(lè)程序匯編代碼代碼2 -------------Voice1.asm--------------------------
;標(biāo)題 '八月桂花香'發(fā)聲程序
;摘要 詳見(jiàn)'無(wú)線電'92年3期
;作者 周振安
ORG 0000H
LJMP START
ORG 000BH
INC 20H ;中斷服務(wù),中斷計(jì)數(shù)器加1
MOV TH0,#0D8H
MOV TL0,#0EFH ;12M晶振,形成10毫秒中斷
RETI
START:
MOV SP,#50H
MOV TH0,#0D8H
MOV TL0,#0EFH
MOV TMOD,#01H
MOV IE,#82H
MUSIC0:
NOP
MOV DPTR,#DAT ;表頭地址送DPTR
MOV 20H,#00H ;中斷計(jì)數(shù)器清0
MOV B,#00H ;表序號(hào)清0
MUSIC1:
NOP
CLR A
MOVC A,@A+DPTR ;查表取代碼
JZ END0 ;是00H,則結(jié)束
CJNE A,#0FFH,MUSIC5
LJMP MUSIC3
MUSIC5:
NOP
MOV R6,A
INC DPTR
MOV A,B
MOVC A,@A+DPTR ;取節(jié)拍代碼送R7
MOV R7,A
SETB TR0 ;啟動(dòng)計(jì)數(shù)
MUSIC2:
NOP
CPL P1.0
MOV A,R6
MOV R3,A
LCALL DEL
MOV A,R7
CJNE A,20H,MUSIC2 ;中斷計(jì)數(shù)器(20H)=R7否?
;不等,則繼續(xù)循環(huán)
MOV 20H,#00H ;等于,則取下一代碼
INC DPTR
; INC B
LJMP MUSIC1
MUSIC3:
NOP
CLR TR0 ;休止100毫秒
MOV R2,#0DH
MUSIC4:
NOP
MOV R3,#0FFH
LCALL DEL
DJNZ R2,MUSIC4
INC DPTR
LJMP MUSIC1
END0:
NOP
MOV R2,#64H ;歌曲結(jié)束,延時(shí)1秒后繼續(xù)
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