📄 液晶显示.asm
字号:
RS EQU P3.3
RW EQU P3.4
E EQU P3.5
ORG 0000H
LJMP START
ORG 000BH
LJMP TIMER0
ORG 0100H
START:
MOV SP,#6FH
MOV 22H,#01H
MOV 23H,#00H
MOV 34H,#32H;存放矩形波频率
MOV 35H,#32H;存放梯形波频率
MOV 36H,#32H;存放锯齿波频率
MOV 37H,#32H;存放三角波频率
MOV 38H,#32H;存放正弦波频率
MOV 39H,#32H;存放矩形波占空比
MOV 3AH,#32H;存放梯形波占空比
MOV 3BH,#00H;频率百位 (传送)
MOV 3CH,#05H;频率十位 (传送)
MOV 3DH,#00H;频率个位 (传送)
MOV 3EH,#05H;占空比十分位(传送)
MOV 3FH,#00H;占空比百分位(传送)
MOV 40H,#00H
MOV 41H,#00H
MOV R4,#50
MOV TMOD,#01H
MOV TH0 , #3CH
MOV TL0 , #0AFH
MOV IE,#82H
SETB TR0
LCALL INT_LCD
MIAN:
LCALL DISP
LCALL BOXING
LCALL READKEY
LJMP MIAN
DISP: ;显示子程序
MOV R5,#00H
LCALL ZHI
MOV R6,#80H
DISP1:
MOV A,R6
LCALL WCOM
CJNE R5,#18,L2
L1: MOV A,3BH
LJMP L8
CJNE R5,#19,L2
MOV A,3CH
LJMP L8
L2: CJNE R5,#20,L3
MOV A,3DH
LJMP L8
L3: JNB 16H,L5
CJNE R5,#26,L4
MOV A,3EH
LJMP L8
L4: CJNE R5,#27,L5
MOV A,3FH
LJMP L8
L5: JNB 17H,L7
CJNE R5,#26,L6
MOV A,3EH
LJMP L8
L6: CJNE R5,#27,L7
MOV A,3FH
LJMP L8
L7: MOV A,R5
MOVC A,@A+DPTR
L8: LCALL WDATE
INC R5
INC R6
CJNE R6,#90H,DISP2
MOV R6,#0C0H
DISP2:
CJNE R5,#32,DISP1
RET
ZHI:
JNB 10H,ZHI1
MOV DPTR,#DISTAB0
AJMP ZHIEND
ZHI1:
JNB 11H,ZHI2
MOV DPTR,#DISTAB1
AJMP ZHIEND
ZHI2:
JNB 12H,ZHI3
MOV DPTR,#DISTAB2
AJMP ZHIEND
ZHI3:
JNB 13H,ZHI4
MOV DPTR,#DISTAB3
AJMP ZHIEND
ZHI4:
JNB 14H,ZHI5
MOV DPTR,#DISTAB4
AJMP ZHIEND
ZHI5:
JNB 15H,ZHI6
MOV DPTR,#DISTAB5
MOV R3,34H
LCALL BCDZH
AJMP ZHIEND
ZHI6:
JNB 16H,ZHI7
MOV DPTR,#DISTAB6
MOV R3,35H
LCALL BCDZH
AJMP ZHIEND
ZHI7:
JNB 17H,ZHI8
MOV DPTR,#DISTAB7
MOV R3,36H
LCALL BCDZH
AJMP ZHIEND
ZHI8:
JNB 18H,ZHI9
MOV DPTR,#DISTAB8
MOV R3,37H
LCALL BCDZH
AJMP ZHIEND
ZHI9:
JNB 19H,ZHIEND
MOV DPTR,#DISTAB9
MOV R3,38H
LCALL BCDZH
ZHIEND:
RET
INT_LCD:
LCALL DELAY5MS
LCALL DELAY5MS
LCALL DELAY5MS
MOV A,#38H
LCALL WCOM_NC;不检测忙信号
LCALL DELAY5MS
MOV A,#38H
LCALL WCOM_NC
LCALL DELAY5MS
MOV A,#38H
LCALL WCOM ;忙检测
LCALL DELAY5MS
MOV A,#0CH
LCALL WCOM
LCALL DELAY5MS
MOV A,#06H
LCALL WCOM
LCALL DELAY5MS
MOV A,#01H
LCALL WCOM
LCALL DELAY5MS
RET
WCOM_NC:;不忙检测子程序
MOV P1,A
CLR E
NOP
NOP
CLR RS
CLR RW
SETB E
LCALL DELAY250us
CLR E
RET
WCOM:;写指令子程序
LCALL CHECKBUSY
LCALL WCOM_NC
RET
WDATE:;写数据子程序
LCALL CHECKBUSY
MOV P1,A
CLR E
NOP
NOP
SETB RS
CLR RW
SETB E
LCALL DELAY250us
CLR E
RET
CHECKBUSY:;忙检测子程序
PUSH ACC
MOV P1,#0FFH
CLR E
NOP
NOP
CLR RS
SETB RW
SETB E
BUSYLOOP:
NOP
JB P1.7,BUSYLOOP
CLR E
POP ACC
RET
BCDZH:
PUSH DPH
PUSH DPL
MOV A,R3
MOV B,#100
DIV AB
MOV 3BH,A
MOV A,#10
XCH A,B
DIV AB
MOV 3CH,A
MOV 3DH,B
MOV DPTR,#DISTABA
MOV A,3BH
MOVC A,@A+DPTR
MOV 3BH,A
MOV A,3CH
MOVC A,@A+DPTR
MOV 3CH,A
MOV A,3DH
MOVC A,@A+DPTR
MOV 3DH,A
POP DPL
POP DPH
RET
BOXING:
RET
READKEY: MOV 20H,P2
READKEY0:
JB 00H,READKEY1
LCALL K0
READKEY1:
JB 01H,READKEY2
LCALL K1
READKEY2:
JB 02H,READKEY3
LCALL K2
READKEY3:
JB 03H,READKEY4
LCALL K3
READKEY4:
JB 04H,READKEY5
LCALL K4
READKEY5:
JB 00H,READKEYEND
LCALL K5
READKEYEND:
RET
K0:;查看主目录键
LCALL DELAY
JB 00H,K0END
SETB 08H
CLR 0BH
CLR 0CH
CLR 0DH
MOV 40H,#00H
MOV 41H,#01H
MOV 22H,#02H
MOV 23H,#00H
K0END:
RET
K1:;"+"
LCALL DELAY
JB 01H,K10
LJMP K101
K10:LJMP K1END
K101:
SETB 09H
JNB 08H,K15
CLR 0BH
INC 41H
MOV A,41H
K11:
CJNE A,#01H,K12
MOV 22H,#02H
MOV 23H,#00H
LJMP K1END
K12:
CJNE A,#02H,K13
MOV 22H,#04H
MOV 23H,#00H
LJMP K1END
K13:
CJNE A,#03H,K14
MOV 22H,#08H
MOV 23H,#00H
LJMP K1END
K14:
MOV 22H,#10H
MOV 23H,#00H
MOV 41H,#00H
LJMP K1END
K15:JNB 0CH,K111
JNB 15H,K16
MOV A,34H
ADD A,#05H
MOV 34H,A
MOV R3,34H
LJMP K110
K16:JNB 16H,K17
MOV A,35H
ADD A,#05H
MOV 35H,A
MOV R3,35H
LJMP K110
K17:JNB 17H,K18
MOV A,36H
ADD A,#05H
MOV 36H,A
MOV R3,36H
LJMP K110
K18:JNB 18H,K19
MOV A,37H
ADD A,#05H
MOV 37H,A
MOV R3,37H
LJMP K110
K19:MOV A,38H
ADD A,#05H
MOV 38H,A
MOV R3,38H
K110:;LCALL BCDZH
K111:
K1END:
RET
K2:;"-"
LCALL DELAY
JB 02H,K200
LJMP K201
K200:
LJMP K2END
K201:
SETB 0AH
JNB 08H,K25
CLR 0BH
DEC 41H
MOV A,41H
K21:
CJNE A,#01H,K22
MOV 22H,#02H
MOV 23H,#00H
MOV 41H,#05H
LJMP K2END
K22:
CJNE A,#02H,K23
MOV 22H,#04H
MOV 23H,#00H
LJMP K2END
K23:
CJNE A,#03H,K24
MOV 22H,#08H
MOV 23H,#00H
LJMP K2END
K24:
MOV 22H,#10H
MOV 23H,#00H
LJMP K2END
K25:
JNB 0CH,K211
JNB 15H, K26
MOV A,34H
CLR C
SUBB A,#05H
MOV 34H,A
MOV R3,34H
LJMP K210
K26:
JNB 16H, K27
MOV A,35H
CLR C
SUBB A,#05H
MOV 35H,A
MOV R3,35H
LJMP K210
K27:
JNB 17H, K28
MOV A,36H
CLR C
SUBB A,#05H
MOV 36H,A
MOV R3,36H
LJMP K210
K28:
JNB 18H, K29
MOV A,37H
CLR C
SUBB A,#05H
MOV 37H,A
MOV R3,37H
LJMP K210
K29:
MOV A,38H
CLR C
SUBB A,#05H
MOV 38H,A
MOV R3,38H
K210:;LCALL BCDZH
K211:
K2END:
RET
K3:;查看波形键
LCALL DELAY
JB 03H,K3END
SETB 0BH
CLR 08H
INC 40H
MOV A,40H
CJNE A,#01H,K31
MOV 22H,#20H
MOV 23H,#00H
LJMP K3END
K31:
CJNE A,#02H,K32
MOV 22H,#40H
MOV 23H,#00H
LJMP K3END
K32:
CJNE A,#03H,K33
MOV 22H,#80H
MOV 23H,#00H
LJMP K3END
K33:
CJNE A,#04H,K34
MOV 22H,#00H
MOV 23H,#01H
LJMP K3END
K34:
MOV 22H,#00H
MOV 23H,#02H
MOV 40H,#00H
K3END:
RET
K4:;调节频率键
LCALL DELAY
JB 04H,K4END
JNB 0BH,K4END
SETB 0CH
CLR 08H
CLR 0DH
K4END:
RET
K5:;调节占空比键
LCALL DELAY
JB 05H,K5END
JNB 0BH,K4END
SETB 0DH
CLR 08H
CLR 0CH
K5END:
RET
TIMER0:PUSH ACC
PUSH PSW
PUSH DPH
PUSH DPL
MOV TH0 ,#3CH
MOV TL0 ,#0AFH
DJNZ R4,TIMEROEND
CLR 10H
SETB 11H
CLR TR0
TIMEROEND:
POP DPL
POP DPH
POP PSW
POP ACC
RETI
DELAY5MS:
MOV 30H,#10
DELAY5MS1:
MOV 31H,#125
DJNZ 31H,$
DJNZ 30H,DELAY5MS1
RET
DELAY250us:
MOV R7,#75
DJNZ R7, $
RET
DELAY: ;延时子程序
MOV 32H,#00H
DELAY1:
INC 32H
MOV A,32H
CJNE A,#200,DELAY2
SJMP DELAYEND
DELAY2:
MOV 33H,#200
DJNZ 33H,$
SJMP DELAY1
DELAYEND:
RET
;Welcome
DISTAB0:DB 20H,20H,20H,20H,20H,57H,65H,6CH,63H,6FH,6DH,20H,20H,20H,20H,20H
DB 20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H
;主目录1 K0主目录 ,K1 +,K2-
DISTAB1:DB 20H,20H,20H,4DH,61H,69H,6EH,20H,6DH,65H,6EH,75H,20H,31H,2FH,34H
DB 4BH,30H,3AH,4DH,65H,6EH,75H,20H,4BH,31H,3AH,2BH,4BH,32H,3AH,2DH
;主目录2 K3 查看波形
DISTAB2:DB 4BH,33H,3AH,56H,69H,65H,77H,20H,57H,61H,76H,65H,66H,6FH,72H,6DH
DB 20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,32H,2FH,34H
;主目录3 K4 调节频率
DISTAB3:DB 4BH,34H,3AH,46H,72H,65H,71H,75H,65H,6EH,63H,79H,28H,66H,29H,20H
DB 41H,64H,6AH,75H,73H,74H,6DH,65H,6EH,74H,20H,20H,20H,33H,2FH,34H
;主目录4 K5 调节占空比
DISTAB4:DB 4BH,35H,3AH,44H,75H,74H,79H,20H,43H,79H,63H,6CH,65H,28H,64H,29H
DB 72H,65H,67H,75H,6CH,61H,74H,69H,6FH,6EH,20H,20H,20H,34H,2FH,34H
; 矩形波
DISTAB5:DB 52H,65H,63H,74H,61H,6EH,67H,75H,6CH,61H,72H,20H,77H,61H,76H,65H
DB 66H,3AH,31H,30H,30H,48H,5AH,20H,64H,3AH,35H,30H,25H,20H,20H,20H
; 梯形波
DISTAB6:DB 41H,74H,72H,61H,70H,65H,7AH,6FH,69H,64H,61H,20H,77H,61H,76H,65H
DB 66H,3AH,31H,30H,30H,48H,5AH,20H,64H,3AH,35H,30H,25H,20H,20H,20H
; 锯齿波
DISTAB7:DB 20H,20H,20H,20H,53H,61H,77H,74H,6FH,6FH,74H,68H,20H,20H,20H,20H
DB 66H,3AH,31H,30H,30H,48H,5AH,20H,64H,3AH,20H,20H,20H,20H,20H,20H
; 三角波
DISTAB8:DB 54H,72H,69H,61H,6EH,67H,75H,6CH,61H,72H,20H,77H,61H,76H,65H,20H
DB 66H,3AH,31H,30H,30H,48H,5AH,20H,64H,3AH,20H,20H,20H,20H,20H,20H
; 正弦波
DISTAB9:DB 20H,20H,20H,20H,20H,20H,53H,69H,6EH,65H,20H,20H,20H,20H,20H,20H
DB 66H,3AH,31H,30H,30H,48H,5AH,20H,64H,3AH,20H,20H,20H,20H,20H,20H
DISTABA:;0到9的编码
DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -