亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標(biāo)題:
多功能單片機(jī)電子琴電路+匯編語(yǔ)言源代碼
[打印本頁(yè)]
作者:
lzh1762
時(shí)間:
2021-5-13 12:32
標(biāo)題:
多功能單片機(jī)電子琴電路+匯編語(yǔ)言源代碼
分享一個(gè)已驗(yàn)證的多功能電子琴
單片機(jī)源程序如下:
RS EQU P3.5
RW EQU P3.6
E EQU P3.7
ORG 00H
SJMP MAIN
ORG 00BH
MOV TH0,33H
MOV TL0,34H
CPL P3.4
RETI
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ORG 001BH
INC 3CH ;中斷服務(wù),中斷計(jì)數(shù)器加1
MOV TH1,#0D8H
MOV TL1,#0EFH ;12M晶振,形成10毫秒中斷
RETI
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ORG 30H
MAIN : SETB P3.4 ;關(guān)閉揚(yáng)聲器
LCALL CSH1602 ;初始化1602
MOV TMOD,#11H ;設(shè)置定時(shí)器0為工作模式1
SETB EA ;開(kāi)總中斷
SETB ET0 ;開(kāi)定時(shí)器0中斷
HUANYING: MOV P1,#80H ;歡迎語(yǔ)顯示地址
LCALL ENABLE
MOV DPTR,#TAB_HY
MOV 30H,#00
LP: MOV A,30H
MOVC A,@A+DPTR
JZ KEY
LCALL DELAY_100MS
LCALL WRITE_1602
INC 30H
SJMP LP
KEY: MOV P1,#01H ;清屏
ACALL ENABLE
MOV P1,#80H
LCALL ENABLE
MOV DPTR,#TAB_YANZHOU
MOV 30H,#00
LP7: MOV A,30H
MOVC A,@A+DPTR
JZ KEY_0
LCALL WRITE_1602
INC 30H
SJMP LP7
KEY_0: MOV P1,#0C0H ;音符的顯示地址
LCALL ENABLE
MOV 38H,#16 ;寫(xiě)入1602的顯示地址指針
MOV 35H,#2 ;控制節(jié)拍
KEY_1: MOV P2,#0FFH ;置P2為輸入
JB P2.0,KEY_2 ;K1鍵沒(méi)按下,轉(zhuǎn)移
LCALL DELAY_10MS ;延時(shí)消抖
JNB P2.0,$
MOV 36H,#0 ;裝入1的音符碼相對(duì)地址
LCALL BOFANG_YF
KEY_2:
JB P2.1,KEY_3 ;K2鍵沒(méi)按下,轉(zhuǎn)移
LCALL DELAY_10MS ;延時(shí)消抖
JNB P2.1,$
MOV 36H,#2
LCALL BOFANG_YF
KEY_3:
JB P2.2,KEY_4 ;K3鍵沒(méi)按下,轉(zhuǎn)移
LCALL DELAY_10MS ;延時(shí)消抖
JNB P2.2,$
MOV 36H,#4
LCALL BOFANG_YF
KEY_4:
JB P2.3,KEY_5 ;K4鍵沒(méi)按下,轉(zhuǎn)移
LCALL DELAY_10MS ;延時(shí)消抖
JNB P2.3,$
MOV 36H,#6
LCALL BOFANG_YF
KEY_5:
JB P2.4,KEY_6 ;K5鍵沒(méi)按下,轉(zhuǎn)移
LCALL DELAY_10MS ;延時(shí)消抖
JNB P2.4,$
MOV 36H,#8
LCALL BOFANG_YF
KEY_6:
JB P2.5,KEY_7 ;K6鍵沒(méi)按下,轉(zhuǎn)移
LCALL DELAY_10MS ;延時(shí)消抖
JNB P2.5,$
MOV 36H,#10
LCALL BOFANG_YF
KEY_7:
JB P2.6,KEY_9 ;K7鍵沒(méi)按下,轉(zhuǎn)移
LCALL DELAY_10MS ;延時(shí)消抖
JNB P2.6,$
MOV 36H,#12
LCALL BOFANG_YF
KEY_9:
JB P3.2,KEY_1 ;K9鍵沒(méi)按下,重新掃描
LCALL DELAY_10MS ;延時(shí)消抖
JNB P3.2,$
LCALL DELAY_10MS
;-----------播放音樂(lè)程序段---------------
MOV P1,#01H ;清屏
ACALL ENABLE
MOV P1,#80H
LCALL ENABLE
MOV DPTR,#TAB_PLAY
MOV 30H,#00
LP8: MOV A,30H
MOVC A,@A+DPTR
JZ PLAY
LCALL WRITE_1602
INC 30H
SJMP LP8
PLAY: MOV P2,#0FFH ;置P2為輸入
JB P2.0,PLAY_2 ;K1鍵沒(méi)按下,轉(zhuǎn)移
MOV DPTR,#TAB_GEQU1 ;存曲目標(biāo)志
LCALL BOFANG_GEQU
PLAY_2:
JB P2.1,PLAY_3 ;K2鍵沒(méi)按下,轉(zhuǎn)移
SETB ET1
MOV 3BH,TMOD
MOV TMOD,#11H
mov dptr,#tab2
mov p1,#0c0h
lcall enable
lcall write1
MOV DPTR,#DAT2
LCALL MUSIc0
CLR TR1
CLR ET1
MOV TMOD,3BH
PLAY_3:
JB P2.2,PLAY_4 ;K3鍵沒(méi)按下,轉(zhuǎn)移
SETB ET1
MOV 3BH,TMOD
MOV TMOD,#11H
mov dptr,#tab1
mov p1,#0c0h
lcall enable
lcall write1
MOV DPTR,#DAT1
LCALL MUSIc0
CLR TR1
CLR ET1
MOV TMOD,3BH
PLAY_4:
JB P2.3,PLAY_9
MOV R1,#50H
LCALL BOFANG_LUYIN
PLAY_9: JB P3.2,PLAY ;K8鍵沒(méi)按下,重新掃描
LCALL DELAY_10MS ;延時(shí)消抖
JNB P3.2,$
LCALL DELAY_10MS
;------------錄音程序段---------------
MOV P1,#01H ;清屏
ACALL ENABLE
MOV P1,#80H
LCALL ENABLE
MOV DPTR,#TAB_RECORD
MOV 30H,#00
LP9: MOV A,30H
MOVC A,@A+DPTR
JZ RECORD_0
LCALL WRITE_1602
INC 30H
SJMP LP9
RECORD_0: MOV R1,#50H ;錄取音符存放地址
MOV 35H,#3 ;控制節(jié)拍
MOV P1,#0C0H ;音符的顯示地址
LCALL ENABLE
MOV 38H,#16 ;寫(xiě)入1602的顯示地址指針
;---------寫(xiě)入錄音的名字---------
MOV 30H,#00
C5: MOV A,30H
LCALL TAB_RECORDING
MOV @R1,A
INC R1
INC 30H
CJNE A,#0FEH,C5
RECORD_1: MOV P2,#0FFH ;置P2為輸入
JB P2.0,RECORD_2 ;K1鍵沒(méi)按下,轉(zhuǎn)移
LCALL DELAY_10MS ;延時(shí)消抖
JNB P2.0,$
MOV 36H,#0 ;裝入1的音符碼相對(duì)地址
LCALL BOFANG_YF
LCALL CUNCU ;調(diào)存音符子程序
RECORD_2:
JB P2.1,RECORD_3 ;K2鍵沒(méi)按下,轉(zhuǎn)移
LCALL DELAY_10MS ;延時(shí)消抖
JNB P2.1,$
MOV 36H,#2
LCALL BOFANG_YF
LCALL CUNCU
RECORD_3:
JB P2.2,RECORD_4 ;K3鍵沒(méi)按下,轉(zhuǎn)移
LCALL DELAY_10MS ;延時(shí)消抖
JNB P2.2,$
MOV 36H,#4
LCALL BOFANG_YF
LCALL CUNCU
RECORD_4:
JB P2.3,RECORD_5 ;K4鍵沒(méi)按下,轉(zhuǎn)移
LCALL DELAY_10MS ;延時(shí)消抖
JNB P2.3,$
MOV 36H,#6
LCALL BOFANG_YF
LCALL CUNCU
RECORD_5:
JB P2.4,RECORD_6 ;K5鍵沒(méi)按下,轉(zhuǎn)移
LCALL DELAY_10MS ;延時(shí)消抖
JNB P2.4,$
MOV 36H,#8
LCALL BOFANG_YF
LCALL CUNCU
RECORD_6:
JB P2.5,RECORD_7 ;K6鍵沒(méi)按下,轉(zhuǎn)移
LCALL DELAY_10MS ;延時(shí)消抖
JNB P2.5,$
MOV 36H,#10
LCALL BOFANG_YF
LCALL CUNCU
RECORD_7:
JB P2.6,RECORD_8 ;K7鍵沒(méi)按下,轉(zhuǎn)移
LCALL DELAY_10MS ;延時(shí)消抖
JNB P2.6,$
MOV 36H,#12
LCALL BOFANG_YF
LCALL CUNCU
RECORD_8:
JB P2.7,RECORD_9 ;K8鍵沒(méi)按下,轉(zhuǎn)移
LCALL DELAY_10MS ;延時(shí)消抖
JNB P2.7,$
MOV 36H,#42 ;休止符標(biāo)志存36H
LCALL DELAY_100MS
LCALL CUNCU
RECORD_9:
JNB P3.2,J0 ;K8鍵沒(méi)按下,重新掃描
LJMP RECORD_1
J0: LCALL DELAY_10MS ;延時(shí)消抖
JNB P3.2,$
LCALL DELAY_10MS
MOV @R1,#255 ;寫(xiě)入歌曲結(jié)束標(biāo)志
LJMP KEY ;回演奏模式
;***********子程序區(qū)***************
;=======初始化1602顯示器========
CSH1602: MOV P3,#0FFH
MOV P1,#01H
ACALL ENABLE
MOV P1,#38H
ACALL ENABLE
MOV P1,#0CH
ACALL ENABLE
MOV P1,#06H
ACALL ENABLE
RET
;====1602發(fā)命令子程序====
ENABLE: CLR RS
CLR RW
CLR E
ACALL DELAY_2MS
SETB E
RET
;=====讀1602IR中命令子程序======
ENABLE_1: CLR RS
SETB RW
CLR E
ACALL DELAY_2MS
SETB E
RET
;====寫(xiě)數(shù)據(jù)子程序(1602)====
WRITE_1602: MOV P1,A
SETB RS
CLR RW
CLR E
MOV R5,#50 ;延時(shí)100us(12M晶振)
DJNZ R5,$
SETB E
RET
;===========播放一個(gè)音符并顯示音符和頻譜=========
BOFANG_YF: MOV A,36H
LCALL TAB_YF
MOV 33H,A
MOV A,36H
INC A
LCALL TAB_YF
MOV 34H,A
MOV TH0,33H
MOV TL0,34H
SETB TR0 ;啟動(dòng)定時(shí)器0
MOV A,36H ;取音符的顯示碼
LCALL TAB_YF1
LCALL WRITE_1602
DEC 38H
MOV A,36H
INC A
LCALL TAB_YF1
LCALL WRITE_1602
DJNZ 38H,D2 ;1602一行沒(méi)寫(xiě)滿,轉(zhuǎn)移
MOV 30H,#16 ;1602滿行清行并從頭開(kāi)始寫(xiě)
MOV P1,#0C0H
LCALL ENABLE
MOV A,#' '
LP10: LCALL WRITE_1602
DJNZ 30H,LP10
MOV 38H,#16
MOV P1,#0C0H
LCALL ENABLE
;----------顯示頻譜分析條程序段----------
D2: MOV A,36H ;音符碼轉(zhuǎn)換為相應(yīng)鍵值
MOV B,#2
DIV AB
ADD A,#1
MOV 39H,A
MOV 3AH,39H ;保護(hù)音符碼對(duì)應(yīng)的鍵值
MOV P1,#85H ;設(shè)定頻譜分析條顯示初地址
LCALL ENABLE
MOV A,#'>'
D5: LCALL WRITE_1602
DJNZ 39H,D5
;--------控制節(jié)拍時(shí)長(zhǎng)程序段---------
MOV 37H,35H ;保護(hù)循環(huán)次數(shù)控制(節(jié)拍)
LP1: ACALL DELAY_100MS
DJNZ 35H,LP1 ;延時(shí)次數(shù)控制
MOV 35H,37H
;---------發(fā)音結(jié)束,清除頻譜分析條------------
MOV P1,#85H ;頻譜分析條顯示的初地址
LCALL ENABLE
MOV A,#' '
MOV 39H,3AH
D6: LCALL WRITE_1602
DJNZ 39H,D6
MOV A,#10H ;釋放音符碼顯示地址
CLR C
SUBB A,38H
ADD A,#0C0H
MOV P1,A
LCALL ENABLE
CLR TR0 ;關(guān)定時(shí)器0
RET
;===========播放一個(gè)音符并顯示頻譜=========
BOFANG_YF_1: MOV A,36H
LCALL TAB_YF
MOV 33H,A
MOV A,36H
INC A
LCALL TAB_YF
MOV 34H,A
MOV TH0,33H
MOV TL0,34H
SETB TR0 ;啟動(dòng)定時(shí)器0
;----------顯示頻譜分析條程序段----------
MOV A,36H ;音符碼轉(zhuǎn)換為相應(yīng)鍵值
MOV B,#2
DIV AB
ADD A,#1
MOV 39H,A
MOV 3AH,39H ;保護(hù)音符碼對(duì)應(yīng)的鍵值
MOV P1,#85H ;設(shè)定頻譜分析條顯示初地址
LCALL ENABLE
MOV A,#'>'
D7: LCALL WRITE_1602
DJNZ 39H,D7
;--------控制節(jié)拍時(shí)長(zhǎng)程序段---------
MOV 37H,35H ;保護(hù)循環(huán)次數(shù)控制(節(jié)拍)
LP11: ACALL DELAY_100MS
DJNZ 35H,LP11 ;延時(shí)次數(shù)控制
MOV 35H,37H
;---------發(fā)音結(jié)束,清除頻譜分析條------------
MOV P1,#85H ;頻譜分析條顯示的初地址
LCALL ENABLE
MOV A,#' '
MOV 39H,3AH
D8: LCALL WRITE_1602
DJNZ 39H,D8
CLR TR0 ;關(guān)定時(shí)器0
RET
;============播放一首歌并顯示歌名=============
;------(一個(gè)音符2字節(jié)存儲(chǔ),音符碼存低字節(jié),節(jié)拍存高字節(jié);254為歌曲名結(jié)束標(biāo)志,255為歌曲結(jié)束標(biāo)志)----------
BOFANG_GEQU: MOV P1,#0C0H ;歌名顯示地址
LCALL ENABLE
MOV 30H,#00
LP2: MOV A,30H
MOVC A,@A+DPTR
INC 30H
CJNE A,#254,XIANSHI_GEMING
SJMP C1
XIANSHI_GEMING: MOV P1,A
LCALL WRITE_1602
SJMP LP2
C1: MOV P1,#0C0H ;歌詞顯示地址
LCALL ENABLE
LP3: MOV A,30H
MOVC A,@A+DPTR ;取音符碼
CJNE A,#0FFH,C6
SJMP S0
C6: CJNE A,#42,C0 ;音符碼為休止符不開(kāi)定時(shí)器,直接調(diào)用延時(shí)
INC 30H
MOV A,30H
MOVC A,@A+DPTR
INC 30H
MOV 35H,A
LP12: LCALL DELAY_100MS
DJNZ 35H,LP12
SJMP LP3
C0: MOV 36H,A
INC 30H
MOV A,30H
MOVC A,@A+DPTR
MOV 35H,A
INC 30H
LCALL BOFANG_YF_1
SJMP LP3
S0: RET
;============播放一錄音并顯示歌名和歌詞=============
;------(一個(gè)音符2字節(jié)存儲(chǔ),音符碼存低字節(jié),節(jié)拍存高字節(jié);254為歌曲名結(jié)束標(biāo)志,255為歌曲結(jié)束標(biāo)志)----------
BOFANG_LUYIN: MOV P1,#0C0H ;歌名顯示地址
LCALL ENABLE
LP4: MOV A,@R1
INC R1
CJNE A,#254,XIANSHI_LUYIN
SJMP C2
XIANSHI_LUYIN: MOV P1,A
LCALL WRITE_1602
SJMP LP4
C2: MOV P1,#0C0H ;歌詞顯示地址
LCALL ENABLE
LP5: MOV A,@R1 ;取音符碼
CJNE A,#255,C3
SJMP S2
C3: CJNE A,#42,C4 ;音符碼為休止符不開(kāi)定時(shí)器,直接調(diào)用延時(shí)
INC R1
MOV A,@R1
MOV 35H,A
INC R1
LP6: LCALL DELAY_100MS
DJNZ 35H,LP6
SJMP LP5
C4: MOV 36H,A
INC R1
MOV A,@R1
MOV 35H,A
INC R1
LCALL BOFANG_YF_1
SJMP LP5
……………………
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
完整代碼:
電子琴.rar
(67.51 KB, 下載次數(shù): 18)
2021-5-13 12:31 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1