利用七個開關和蜂鳴器實現一個七個音階的電子琴。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
proteus
單片機匯編語言源程序如下:
LJMP START
ORG 0100H
START:
JNB P1.0,DO
JNB P1.1,RE
JNB P1.2,MI
JNB P1.3,FA
JNB P1.4,SO
JNB P1.5,LA
JNB P1.6,XI
SJMP START
DO: CPL P3.0
MOV R0,#19
DEL1: MOV R1,#50
DEL2: DJNZ R1,DEL2 //50*2=100μs
DJNZ R0,DEL1 //0.1ms*19=1.9ms
SJMP START
RE: CPL P3.0
MOV R0,#17
DEL3: MOV R1,#50
DEL4: DJNZ R1,DEL4 //50*2=100μs
DJNZ R0,DEL3 //0.1ms*17=1.7ms
SJMP START
MI: CPL P3.0
MOV R0,#15
DEL5: MOV R1,#50
DEL6: DJNZ R1,DEL6 //50*2=100μs
DJNZ R0,DEL5 //0.1ms*15=1.5ms
SJMP START
FA: CPL P3.0
MOV R0,#14
DEL7: MOV R1,#50
DEL8: DJNZ R1,DEL8 //50*2=100μs
DJNZ R0,DEL7
SJMP START //0.1ms*14=1.4ms
SO: CPL P3.0
MOV R0,#13
DEL9: MOV R1,#50
DEL10: DJNZ R1,DEL10 //50*2=100μs
DJNZ R0,DEL9 //0.1ms*13=1.3ms
SJMP START
LA: CPL P3.0
MOV R0,#11
DEL11: MOV R1,#50
DEL12: DJNZ R1,DEL12 //50*2=100μs
DJNZ R0,DEL11 //0.1ms*11=1.1ms
SJMP START
XI: CPL P3.0
MOV R0,#10
DEL13: MOV R1,#50
DEL14: DJNZ R1,DEL14 //50*2=100μs
DJNZ R0,DEL13 //0.1ms*10=1.0ms
SJMP START
END
|