⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 单片机课程设计-数字音乐盒.asm

📁 数字音乐盒
💻 ASM
📖 第 1 页 / 共 2 页
字号:
RS BIT P2.0	;定义液晶显示端口标号
RW BIT P2.1
E BIT P2.2
;********************************************
L50MS EQU 60H
L1MS EQU 61H
L250MS EQU 62H
SEC EQU 65H
MIN EQU 64H
HOU EQU 63H
;*******************************************
org 0000h
ljmp main
ORG 000BH
LJMP TT0
ORG 001BH
LJMP T1INT
org 1000h
main: 
;-----------------------;液晶初始化
MOV SP,#70H    
MOV P0,#01H  ;清屏
CALL ENABLE
MOV P0,#38H  ;8位,2行显示
lCALL ENABLE
MOV P0,#0FH  ;屏显on,光标on,闪烁on
lCALL ENABLE
MOV P0,#06H  ;计数地址加1,显示幕on
lCALL ENABLE
;-------------------------------内存初始化
lcall initil      
;-------------------------------
key1:
lcall key
lcall modd         
ljmp key1
;---------------------键盘扫描
key:
nop
nop
lcall ks
jnz k1	      ;有按键转到K1
lcall kaiji
lcall SOP
xn:
ljmp key
k1:
lcall modd
lcall modd
lcall ks
jnz k2
ljmp key
k2:
mov R2,#0feh   ;读键盘
mov R4,#00h
k3:
mov A,R2
mov P1,A
mov A,P1
JB ACC.4,L1     ;为1跳转,第一行无按键
mov a,#00h
ljmp lk
L1:
jb acc.5,L2
mov a,#04h
ljmp lk
L2:
jb acc.6,L3
mov a,#08h
ljmp lk
L3:
jb acc.7,next1
mov a,#0ch
;-------------------------------------------------------
lk:
add a,R4
push acc
k4:
lcall delay1   ;若同时有其他按键,则等待
lcall ks
jnz k4
;--------------------------------------------------------
mov r3,#07h     
clr a
mov r0,#30h
mov r1,#31h
mm1:
mov a,@r1
mov @r0,a
inc r0
inc r1
djnz r3,mm1
pop acc
mov @r0,a 
RET
;------------------------------------------------------
next1:
inc R4	   ;------列扫描
mov a,R2
JNB acc.3,n2
ljmp n1
n2:
ljmp key
n1:
rl a
mov R2,a
ljmp k3
;----------------------------------------------
ks:
mov a,#0f0h     ;判断P1口
mov P1,a
nop
nop
mov a,P1
cpl a
anl a,#0f0h
RET
;--------------------------------------------------
DELAY1:
SETB RS0
dl:
mov R5,#0ah
dl2:
mov R6,#63
dl3:
nop 
nop
djnz R6,dl3
djnz R5,dl2 
CLR RS0     
RET
;--------------------------------------------------- 
;30H-37H初值为零
;----------------------------------------------------
initil:      
mov r3,#08h
mov r0,#30h
m1:
mov @r0,#00h
inc r0
djnz r3,m1         
RET
;----------------------------------------------------
;显示     
;---------------------------------------------------
modd:  
MOV P0,#8EH
lCALL ENABLE         
mov A,37H
mov DPTR,#TABLE3         
MOVC A,@A+DPTR
lCALL WRITE2       
RET
;--------------------------------------------------
;开机提示字
;-------------------------------------------------
kaiji:
mov a,37h
cjne a,#0fh,DFF
MOV P0,#80H    ;设光标地址 
lCALL ENABLE
MOV DPTR,#TABLE1;写数据
lCALL WRITE1         
DFF:
RET
;----------------------------------------------
;按键值播放歌曲
;----------------------------------------------
SOP:
mov a,37h
cjne a,#01h,A11
LCALL MODD
MOV 52H,#HIGH TABLE10
MOV 53H,#LOW TABLE10
LCALL INITILE2
lcall MAIN0
A11:
CJNE A,#02H,A22
LCALL MODD
MOV 52H,#HIGH TABLE20
MOV 53H,#LOW TABLE20 
LCALL INITILE2      
lcall MAIN0
A22:
CJNE A,#03H,A33
LCALL MODD
MOV 52H,#HIGH TABLE30
MOV 53H,#LOW TABLE30 
LCALL INITILE2      
lcall MAIN0       
A33:
CJNE A,#04H,A44
LCALL MODD
MOV 52H,#HIGH TABLE40
MOV 53H,#LOW TABLE40 
LCALL INITILE2      
lcall MAIN0
A44:
CJNE A,#05H,A55
LCALL MODD
MOV 52H,#HIGH TABLE50
MOV 53H,#LOW TABLE50 
LCALL INITILE2      
lcall MAIN0
A55:
CJNE A,#06H,A66
LCALL MODD
MOV 52H,#HIGH TABLE60
MOV 53H,#LOW TABLE60 
LCALL INITILE2      
lcall MAIN0   
A66:
CJNE A,#07H,A77
LCALL MODD
MOV 52H,#HIGH TABLE70
MOV 53H,#LOW TABLE70 
LCALL INITILE2      
lcall MAIN0      
A77:
CJNE A,#08H,A88
LCALL MODD
MOV 52H,#HIGH TABLE80
MOV 53H,#LOW TABLE80 
LCALL INITILE2      
lcall MAIN0
A88:
CJNE A,#09H,A99
LCALL MODD
MOV 52H,#HIGH TABLE90
MOV 53H,#LOW TABLE90 
LCALL INITILE2      
lcall MAIN0      
A99:
CJNE A,#0AH,AAA
LCALL MODD
MOV 52H,#HIGH TABLE100
MOV 53H,#LOW TABLE100 
LCALL INITILE2      
lcall MAIN0      
AAA:RET           
;******************************************
INITILE2:
MOV L50MS,#20
MOV L1MS,#00H
MOV L250MS,#00H
MOV SEC,#00H
MOV MIN,#00H
MOV HOU,#00H
MOV A,HOU
MOV B,#10
DIV AB
ADD A,#30H         ;将BCD吗转化为ASIIC码
MOV P0,#0C8H    ;显示小时十位
CALL ENABLE
CALL WRITE2
MOV A,B
ADD A,#30H
MOV P0,#0C9H    ;显示小时个位
CALL ENABLE
CALL WRITE2
MOV A,#3AH
MOV P0,#0DH    ;显示冒号
CALL ENABLE
CALL WRITE2
MOV A,MIN
MOV B,#10
DIV AB
ADD A,#30H
MOV P0,#0CBH    ;显示分十位
CALL ENABLE
CALL WRITE2
MOV A,B
ADD A,#30H
MOV P0,#0CCH    ;显示分个位
CALL ENABLE
CALL WRITE2
MOV A,#3AH
MOV P0,#0CDH    ;显示冒号
CALL ENABLE
CALL WRITE2
MOV A,SEC
MOV B,#10
DIV AB
ADD A,#30H 
MOV P0,#0CEH    ;显示秒十位
CALL ENABLE
CALL WRITE2
MOV A,B
ADD A,#30H
MOV P0,#0CFH    ;显示秒个位
CALL ENABLE
CALL WRITE2
MOV P0,#0C0H    ;设光标地址 
CALL ENABLE
MOV DPTR,#TABLE2;写数据
CALL WRITE1         
RET
;*********************************************写指令
ENABLE: 
CLR RS
CLR RW
CLR E
LCALL DELAY
SETB E
RET
;**********************************************写数据
WRITE1:
MOV R1,#00H
A1:
MOV A,R1
MOVC A,@A+DPTR
CALL WRITE2
INC R1
CJNE A,#0FEH,A1   ;未到字符串末尾继续
RET
WRITE2:
MOV P0,A
SETB RS
CLR RW
CLR E
CALL DELAY
SETB E
RET
;**********************************************
DELAY:
MOV R4,#05
D1:
MOV R5,#0FFH
DJNZ R5,$
DJNZ R4,D1
RET	 
;----------------------------------------------
TAB:
db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h
db 80h,90h,88h,83h,0c6h,0a1h,86h,8eh
TAB1:db 89h,86h,0c7h,0c7h,0c0h
TAB2:db 0c6h,88h,0c0h
TABLE1:DB'WELCOM HERE',0FEH
TABLE2:DB'DFF WB ',0FEH
TABLE4:DB 'CAU',0FEH
TABLE3:DB 30H,31H,32H,33h    
DB 34H,35H,36H,37H
DB 38h,39H,41H,42H
DB 43H,44H,45H,46H				
;--------------------------------------------------------------------
;播放歌曲程序
;--------------------------------------------------------------------
MAIN0:
MOV TMOD,#11H
MOV IE,#8aH 
;MOV TH1,#3cH
;MOV TL1,#0b0H	  
lcall ks
jnz TTM12           
MOV 40H,#00H
;---------------------------------------------------------
NEXT20:
MOV A,40H
MOV DPH,52H
MOV DPL,53H
MOVC A,@A+DPTR
MOV R2,A
JZ STOP
ANL A,#0FH
MOV R1,A

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -