单片机c语言歌曲
㈠ 单片机蜂鸣器c语言《兰花草》音乐代码
程序名: MCS51U实验板配套程序-歌曲:兰花草
;电路介绍:蜂鸣器接P2.0;实验前要连接J12
;***********************************************************************
OUT BIT P2.0
ORG 0
AJMP START
ORG 0BH
AJMP TIM0
START: MOV TMOD,#1
MOV IE,#10000010B
START0: MOV 30H,#0
NEXT: MOV A,30H
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV R2,A
JZ END0
ANL A,#0FH
MOV R5,A
MOV A,R2
SWAP A
ANL A,#0FH
JNZ SING
CLR TR0
AJMP D1
SING: DEC A
MOV 22H,A
RL A
MOV DPTR,#TABLE1
MOVC A,@A+DPTR
MOV TH0,A
MOV 21H,A
MOV A,22H
RL A
INC A
MOVC A,@A+DPTR
MOV TL0,A
MOV 20H,A
SETB TR0
D1: CALL DELAY
INC 30H
AJMP NEXT
END0: CLR TR0
AJMP START0
TIM0: PUSH ACC
PUSH PSW
MOV TL0,20H
MOV TH0,21H
CPL OUT
POP PSW
POP ACC
RETI
DELAY: MOV R7,#2
D2: MOV R4,#125
D3: MOV R3,#248
DJNZ R3,$
DJNZ R4,D3
DJNZ R7,D2
DJNZ R5,DELAY
RET
;====================================
TABLE1: DW 64021,64103,64260,64400
DW 64524,64580,64684,64777
DW 64820,64898,64968,65030
DW 64934
TABLE: ;1
DB 42H,82H,82H,82H,84H,02H,72H
DB 62H,72H,62H,52H,48H
DB 0B2H,0B2H,0B2H,0B2H,0B4H,02H,0A2H
;2
DB 12H,0A2H,0D2H,92H,88H
DB 82H,0B2H,0B2H,0A2H,84H,02H,72H
DB 62H,72H,62H,52H,44H,02H,12H
;3
DB 12H,62H,62H,52H,44H,02H,82H
DB 72H,62H,52H,32H,48H
DB 00H
END
㈡ 向单片机高手求助,怎样用C语言编写歌曲程序和歌曲代码需要用那些工具怎么样编写的要求详细解答。谢谢!
首先要懂的音乐基本知识。我用高级语言编过多次,了解编程方法:
1。四分音符、八分音符、十六分音符。。。其实这是相对音长,
发音的时间相对值就可以了。
2. 音的频率,也是相对值,从某一音(从低音3)开始计算好各个音的频率:
半音(3与4,7与.1)频率的倍数(2开12次方),全音的倍数是2开六次方,
这样一个八度刚好频率2倍;
你可以先计算好所用到的各个音的频率,初始频率自已定,如440Hz;
按上面的两个相对参数发音,音乐就出来了,掌握了原则就很简单。