1. Nguyên lý tạo nốt nhạc từ tần số
Mỗi nốt nhạc trong âm nhạc tương ứng với một tần số xung xác định (ví dụ nốt La chuẩn 440Hz). Vi điều khiển sử dụng Timer để đảo trạng thái chân ngõ ra nối với loa phát âm.
2. Mã nguồn phát bản nhạc chuông đầy đủ
#include <reg52.inc>
ORG 0H
LJMP MAIN
;--------------------
ORG 0003H
LJMP baodong
;==CHUONG TRINH CHINH
ORG 0030H
MAIN:
mov P3,#0FFh
MOV IE,#10000001B
SETB TCON.0
JNB P2.0,CHUOONG
JB P2.0,MAIN
LJMP MAIN
;%%%%%%%%%
;CAC CHUONG TRINH CON
baodong:
MOV R0,#195
LAPP: MOV R1,#95
LAPP1:
MOV TMOD,#10H
MOV TH1,#0FeH
MOV TL1,#0cH
CLR TF1
SETB TR1
WAIT: JNB TF1,WAIT
CPL P1.5
DJNZ R1,LAPP1
DJNZ R0,LAPP
RETI
;tre cho nut bam
;@@@@@@@@@
CHUOONG:
MOV TMOD,#10H
;RE11:
MOV R1,#180
R:
MOV TH1,#0F9H
MOV TL1,#5CH
CLR TF1
SETB TR1
S00: JNB TF1,S00
CPL P1.7
DJNZ R1,R
;DELAY1
MOV R4,#120
LAPA1: MOV R5,#100
AGAIN1: DJNZ R5,AGAIN1
DJNZ R4,LAPA1
;RE12:
MOV R1,#180
R12:
MOV TH1,#0F9H
MOV TL1,#5CH
CLR TF1
SETB TR1
S002: JNB TF1,S002
CPL P1.7
DJNZ R1,R12
;DELAY2
MOV R4,#120
LAPA2: MOV R5,#100
AGAIN222: DJNZ R5,AGAIN222
DJNZ R4,LAPA2
;MI:
MOV R1,#210
M11:
MOV TH1,#0FAH
MOV TL1,#15H
CLR TF1
SETB TR1
S00M1: JNB TF1,S00M1
CPL P1.7
DJNZ R1,M11
;DELAY3
MOV R4,#120
LAPA3: MOV R5,#100
AGAIN3: DJNZ R5,AGAIN3
DJNZ R4,LAPA3
;RE13:
MOV R1,#180
R13:
MOV TH1,#0F9H
MOV TL1,#5CH
CLR TF1
SETB TR1
S003: JNB TF1,S003
CPL P1.7
DJNZ R1,R13
;DELAY4
MOV R4,#120
LAPA4: MOV R5,#100
AGAIN4: DJNZ R5,AGAIN4
DJNZ R4,LAPA4
;SON1:
MOV R1,#220
S01:
MOV TH1,#0FBH
MOV TL1,#04H
CLR TF1
SETB TR1
S00S1: JNB TF1,S00S1
CPL P1.7
DJNZ R1,S01
;DELAY5
MOV R4,#120
LAPA5: MOV R5,#100
AGAIN5: DJNZ R5,AGAIN5
DJNZ R4,LAPA5
FAT1:
MOV R1,#220
F2F1:
MOV TH1,#0FAH
MOV TL1,#0B9H
CLR TF1
SETB TR1
S00F1: JNB TF1,S00F1
CPL P1.7
DJNZ R1,F2F1
;DELAY6
MOV R4,#120
LAPA6: MOV R5,#100
AGAIN6: DJNZ R5,AGAIN6
DJNZ R4,LAPA6
;DELAY7
MOV R4,#120
LAPA7: MOV R5,#100
AGAIN7: DJNZ R5,AGAIN7
DJNZ R4,LAPA7
;DELAY8
MOV R4,#120
LAPA8: MOV R5,#100
AGAIN8: DJNZ R5,AGAIN8
DJNZ R4,LAPA8
;11111111111
;RE14:
MOV R1,#180
R14:
MOV TH1,#0F9H
MOV TL1,#5CH
CLR TF1
SETB TR1
S004: JNB TF1,S004
CPL P1.7
DJNZ R1,R14
;DELAY9
MOV R4,#120
LAPA9: MOV R5,#100
AGAIN9: DJNZ R5,AGAIN9
DJNZ R4,LAPA9
;RE15:
MOV R1,#180
R15:
MOV TH1,#0F9H
MOV TL1,#5CH
CLR TF1
SETB TR1
S005: JNB TF1,S005
CPL P1.7
DJNZ R1,R15
;DELAY10
MOV R4,#120
LAPA10: MOV R5,#100
AGAIN10: DJNZ R5,AGAIN10
DJNZ R4,LAPA10
;MI2:
MOV R1,#210
M12:
MOV TH1,#0FAH
MOV TL1,#15H
CLR TF1
SETB TR1
S00M2: JNB TF1,S00M2
CPL P1.7
DJNZ R1,M12
;DELAY11
MOV R4,#120
LAPA11: MOV R5,#100
AGAIN11: DJNZ R5,AGAIN11
DJNZ R4,LAPA11
;RE16:
MOV R1,#180
R16:
MOV TH1,#0F9H
MOV TL1,#5CH
CLR TF1
SETB TR1
S006: JNB TF1,S006
CPL P1.7
DJNZ R1,R16
;DELAY12
MOV R4,#120
LAPA12: MOV R5,#100
AGAIN12: DJNZ R5,AGAIN12
DJNZ R4,LAPA12
LA1:
MOV R1,#250
DF1:
MOV TH1,#0FBH
MOV TL1,#90H
CLR TF1
SETB TR1
S00L1: JNB TF1,S00L1
CPL P1.7
DJNZ R1,DF1
;DELAY13
MOV R4,#120
LAPA13: MOV R5,#100
AGAIN13: DJNZ R5,AGAIN13
DJNZ R4,LAPA13
;SON2:
MOV R1,#220
S02:
MOV TH1,#0FBH
MOV TL1,#04H
CLR TF1
SETB TR1
S00S2: JNB TF1,S00S2
CPL P1.7
DJNZ R1,S02
;DELAY14
MOV R4,#120
LAPA14: MOV R5,#100
AGAIN14: DJNZ R5,AGAIN14
DJNZ R4,LAPA14
;DELAY15
MOV R4,#120
LAPA15: MOV R5,#100
AGAIN15: DJNZ R5,AGAIN15
DJNZ R4,LAPA15
;DELAY16
MOV R4,#120
LAPA16: MOV R5,#100
AGAIN16: DJNZ R5,AGAIN16
DJNZ R4,LAPA16
;2222222
;RE17:
MOV R1,#180
R17:
MOV TH1,#0F9H
MOV TL1,#5CH
CLR TF1
SETB TR1
S007: JNB TF1,S007
CPL P1.7
DJNZ R1,R17
;DELAY17
MOV R4,#120
LAPA17: MOV R5,#100
AGAIN17: DJNZ R5,AGAIN17
DJNZ R4,LAPA17
;RE18:
MOV R1,#180
R18:
MOV TH1,#0F9H
MOV TL1,#5CH
CLR TF1
SETB TR1
S008: JNB TF1,S008
CPL P1.7
DJNZ R1,R18
;DELAY18
MOV R4,#120
LAPA18: MOV R5,#100
AGAIN18: DJNZ R5,AGAIN18
DJNZ R4,LAPA18
RES:
MOV R1,#255
RS:
MOV TH1,#0FCH
MOV TL1,#0AEH
CLR TF1
SETB TR1
S00T: JNB TF1,S00T
CPL P1.7
DJNZ R1,RS
;DELAY19
MOV R4,#120
LAPA19: MOV R5,#100
AGAIN19: DJNZ R5,AGAIN19
DJNZ R4,LAPA19
;DELAY20
MOV R4,#120
LAPA20: MOV R5,#100
AGAIN20: DJNZ R5,AGAIN20
DJNZ R4,LAPA20
SI1:
MOV R1,#250
SI11:
MOV TH1,#0FCH
MOV TL1,#0CH
CLR TF1
SETB TR1
S00P1: JNB TF1,S00P1
CPL P1.7
DJNZ R1,SI11
;DELAY21
MOV R4,#120
LAPA21: MOV R5,#100
AGAIN21: DJNZ R5,AGAIN21
DJNZ R4,LAPA21
;SON3:
MOV R1,#220
S03:
MOV TH1,#0FBH
MOV TL1,#04H
CLR TF1
SETB TR1
S00S3: JNB TF1,S00S3
CPL P1.7
DJNZ R1,S03
;DELAY22
MOV R4,#120
LAPA22: MOV R5,#100
AGAIN22: DJNZ R5,AGAIN22
DJNZ R4,LAPA22
;SON4:
MOV R1,#220
S04:
MOV TH1,#0FBH
MOV TL1,#04H
CLR TF1
SETB TR1
S00S4: JNB TF1,S00S4
CPL P1.7
DJNZ R1,S04
;DELAY23
MOV R4,#120
LAPA23: MOV R5,#100
AGAIN23: DJNZ R5,AGAIN23
DJNZ R4,LAPA23
FAT2:
MOV R1,#220
F2F2:
MOV TH1,#0FAH
MOV TL1,#0B9H
CLR TF1
SETB TR1
S00F2: JNB TF1,S00F2
CPL P1.7
DJNZ R1,F2F2
;DELAY24
MOV R4,#120
LAPA24: MOV R5,#100
AGAIN24: DJNZ R5,AGAIN24
DJNZ R4,LAPA24
;MI3:
MOV R1,#210
M13:
MOV TH1,#0FAH
MOV TL1,#15H
CLR TF1
SETB TR1
S00M3: JNB TF1,S00M3
CPL P1.7
DJNZ R1,M13
;DELAY25
MOV R4,#120
LAPA25: MOV R5,#100
AGAIN25: DJNZ R5,AGAIN25
DJNZ R4,LAPA25
;DELAY26
MOV R4,#120
LAPA26: MOV R5,#100
AGAIN26: DJNZ R5,AGAIN26
DJNZ R4,LAPA26
;DELAY27
MOV R4,#120
LAPA27: MOV R5,#100
AGAIN27: DJNZ R5,AGAIN27
DJNZ R4,LAPA27
;333333333333
DOS1:
MOV R1,#255
DSS1:
MOV TH1,#0FCH
MOV TL1,#42H
CLR TF1
SETB TR1
S00D1: JNB TF1,S00D1
CPL P1.7
DJNZ R1,DSS1
;DELAY28
MOV R4,#120
LAPA28: MOV R5,#100
AGAIN28: DJNZ R5,AGAIN28
DJNZ R4,LAPA28
;DELAY29
MOV R4,#120
LAPA29: MOV R5,#100
AGAIN29: DJNZ R5,AGAIN29
DJNZ R4,LAPA29
DOS2:
MOV R1,#255
DSS2:
MOV TH1,#0FCH
MOV TL1,#42H
CLR TF1
SETB TR1
S00D2: JNB TF1,S00D2
CPL P1.7
DJNZ R1,DSS2
;DELAY30
MOV R4,#120
LAPA30: MOV R5,#100
AGAIN30: DJNZ R5,AGAIN30
DJNZ R4,LAPA30
;DELAY31
MOV R4,#120
LAPA31: MOV R5,#100
AGAIN31: DJNZ R5,AGAIN31
DJNZ R4,LAPA31
SI2:
MOV R1,#250
SI12:
MOV TH1,#0FCH
MOV TL1,#0CH
CLR TF1
SETB TR1
S00P2: JNB TF1,S00P2
CPL P1.7
DJNZ R1,SI12
;DELAY32
MOV R4,#120
LAPA32: MOV R5,#100
AGAIN32: DJNZ R5,AGAIN32
DJNZ R4,LAPA32
;SON5:
MOV R1,#220
S05:
MOV TH1,#0FBH
MOV TL1,#04H
CLR TF1
SETB TR1
S00S5: JNB TF1,S00S5
CPL P1.7
DJNZ R1,S05
;DELAY33
MOV R4,#120
LAPA33: MOV R5,#100
AGAIN33: DJNZ R5,AGAIN33
DJNZ R4,LAPA33
LA2:
MOV R1,#250
DF2:
MOV TH1,#0FBH
MOV TL1,#90H
CLR TF1
SETB TR1
S00L2: JNB TF1,S00L2
CPL P1.7
DJNZ R1,DF2
;DELAY34
MOV R4,#120
LAPA34: MOV R5,#100
AGAIN34: DJNZ R5,AGAIN34
DJNZ R4,LAPA34
;SON6:
MOV R1,#220
S06:
MOV TH1,#0FBH
MOV TL1,#04H
CLR TF1
SETB TR1
S00S6: JNB TF1,S00S6
CPL P1.7
DJNZ R1,S06
;DELAY35
MOV R4,#120
LAPA35: MOV R5,#100
AGAIN35: DJNZ R5,AGAIN35
DJNZ R4,LAPA35
RET
;+++++++++++++
END