📄 key_scan_lcd_dis_asm_source.asm
字号:
;定义LCD控制PIN
DI EQU P3.2 ;H-DATA L-DISPINSTRUCT
RW EQU P3.3
E EQU P3.6 ;H->L WRITE DATA TO LCM
CS1 EQU P3.4
CS2 EQU P3.5
RST EQU P3.7
XX EQU 30H
YY EQU 31H
;程序开始
ORG 0000H
LJMP MAIN
;主程序
ORG 0100H
MAIN: MOV SP,#1FH
MOV R3,#00H
CYCLE: MOV P2,#0FH
NOP
MOV A,P2
LCALL GET_ROW_KEY
MOV P2,#0F0H
NOP
MOV A,P2
LCALL GET_COL_KEY
NOP
MOV A,R0
ADD A,R1
NOP
LCALL GET_KEY_VAL
NOP
CJNE R3,#00H,LCD_DIS
LJMP CYCLE
;判断按下键的行号0,1,2,3
GET_ROW_KEY: PUSH ACC
ROW_0: CJNE A,#0EH,ROW_1
MOV R0,A
ROW_1: CJNE A,#0DH,ROW_2
MOV R0,A
ROW_2: CJNE A,#0BH,ROW_3
MOV R0,A
ROW_3: CJNE A,#07H,ROW_NO
MOV R0,A
ROW_NO: MOV A,#00H
POP ACC
RET
;判断按下键的列号0,1,2,3
GET_COL_KEY: PUSH ACC
COL_0: CJNE A,#0E0H,COL_1
MOV R1,A
COL_1: CJNE A,#0D0H,COL_2
MOV R1,A
COL_2: CJNE A,#0B0H,COL_3
MOV R1,A
COL_3: CJNE A,#070H,COL_NO
MOV R1,A
COL_NO: MOV A,#00H
POP ACC
RET
;判断按下键的键值0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
GET_KEY_VAL: PUSH ACC
KEY_0: CJNE A,#0EEH,KEY_1
MOV R3,A
KEY_1: CJNE A,#0DEH,KEY_2
MOV R3,A
KEY_2: CJNE A,#0BEH,KEY_3
MOV R3,A
KEY_3: CJNE A,#07EH,KEY_4
MOV R3,A
KEY_4: CJNE A,#0EDH,KEY_5
MOV R3,A
KEY_5: CJNE A,#0DDH,KEY_6
MOV R3,A
KEY_6: CJNE A,#0BDH,KEY_7
MOV R3,A
KEY_7: CJNE A,#07DH,KEY_8
MOV R3,A
KEY_8: CJNE A,#0EBH,KEY_9
MOV R3,A
KEY_9: CJNE A,#0DBH,KEY_A
MOV R3,A
KEY_A: CJNE A,#0BBH,KEY_B
MOV R3,A
KEY_B: CJNE A,#07BH,KEY_C
MOV R3,A
KEY_C: CJNE A,#0E7H,KEY_D
MOV R3,A
KEY_D: CJNE A,#0D7H,KEY_E
MOV R3,A
KEY_E: CJNE A,#0B7H,KEY_F
MOV R3,A
KEY_F: CJNE A,#077H,KEY_NO
MOV R3,A
KEY_NO: MOV A,#00H
POP ACC
RET
;LCD显示子程序
;***************************************************************************************
;文件名:LCD128X64.ASM
;功能:图形液晶的驱动程序
;本程序采用I/O口模仿总线时序,故无需做任何硬件扩展.屏幕显示:"您好,欢迎使用爱思单片机仿真实验仪"
;***************************************************************************************
LCD_DIS: MOV A,#3EH
LCALL INST
SETB RST
LCALL DLY10
LCALL DLY10
LCALL DLY10
CLR RST
LCALL DLY10
LCALL DLY10
LCALL DLY10
SETB RST
LCALL DLY10
LCALL DLY10
LCALL DLY10
SETB CS1
CLR CS2
MOV R7,#4H
MOV R6,#4H
AA: MOV XX,R6
DEC XX
MOV YY,R7
DEC YY
MOV DPTR,#BI0
LCALL WRITE
DJNZ R6,AA
MOV R6 ,#4H
DJNZ R7,AA
MOV XX,#0H
MOV YY,#0H
MOV DPTR,#BI1
LCALL WRITE
MOV XX,#01H
MOV YY,#00H
MOV DPTR,#BI2
LCALL WRITE
MOV XX,#02H
MOV YY,#01H
MOV DPTR,#BI3
LCALL WRITE
MOV XX,#03H
MOV YY,#01H
MOV DPTR,#BI4
LCALL WRITE
MOV XX,#00H
MOV YY,#02H
MOV DPTR,#BI5
LCALL WRITE
MOV XX,#01H
MOV YY,#02H
MOV DPTR,#BI6
LCALL WRITE
MOV XX,#02H
MOV YY,#02H
MOV DPTR,#BI7
LCALL WRITE
MOV XX,#03H
MOV YY,#02H
MOV DPTR,#BI8
LCALL WRITE
MOV A,#3FH
LCALL INST
CLR CS1
SETB CS2
MOV R7,#4H
MOV R6,#4H
AA1:MOV XX,R6
DEC XX
MOV YY,R7
DEC YY
MOV DPTR,#BI0
LCALL WRITE
DJNZ R6,AA1
MOV R6 ,#4H
DJNZ R7,AA1
MOV XX,#0H
MOV YY,#1H
MOV DPTR,#BII1
LCALL WRITE
MOV XX,#01H
MOV YY,#01H
MOV DPTR,#BII2
LCALL WRITE
MOV XX,#02H
MOV YY,#01H
MOV DPTR,#BII3
LCALL WRITE
MOV XX,#03H
MOV YY,#01H
MOV DPTR,#BII4
LCALL WRITE
MOV XX,#00H
MOV YY,#02H
MOV DPTR,#BII5
LCALL WRITE
MOV XX,#01H
MOV YY,#02H
MOV DPTR,#BII6
LCALL WRITE
MOV XX,#02H
MOV YY,#02H
MOV DPTR,#BII7
LCALL WRITE
MOV XX,#03H
MOV YY,#02H
MOV DPTR,#BII8
LCALL WRITE
MOV A,#3FH
LCALL INST
SJMP $
WRITE: MOV A,XX
MOV B,#10H
MUL AB
ADD A,#40H
MOV XX,A
LCALL INST
MOV A,YY
MOV B,#2H
MUL AB
ADD A,#0B8H
MOV YY,A
LCALL INST
MOV R0,#10H
MOV R1,#0H
TT: MOV A,R1
MOVC A,@A+DPTR
LCALL INDA
INC R1
DJNZ R0,TT
MOV A,YY
INC A
LCALL INST
MOV A,XX
LCALL INST
MOV R0,#10H
TT1: MOV A,R1
MOVC A,@A+DPTR
LCALL INDA
INC R1
DJNZ R0,TT1
RET
INST: CLR E
CLR DI
CLR RW
MOV P0,A
LCALL DLY10
CLR E
LCALL DLY10
SETB E
LCALL DLY10
CLR E
LCALL DLY10
LCALL DLY10
LCALL DLY10
RET
INDA: CLR E
SETB DI
CLR RW
MOV P0,A
LCALL DLY10
CLR E
LCALL DLY10
SETB E
LCALL DLY10
CLR E
LCALL DLY10
LCALL DLY10
LCALL DLY10
RET
DLY10: MOV R3,#01H
DL1: MOV R4,#01H
DL2: MOV R2,#0FH
DL3: DJNZ R2,DL3
DJNZ R4,DL2
DJNZ R3,DL1
RET
BI0:
DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
BI1:
DB 40h, 20h, 0F8h, 07h, 40h, 20h, 18h, 0Fh
DB 08h, 0C8h, 08h, 08h, 28h, 18h, 00h, 00h
DB 00h, 00h, 0FFh, 00h, 00h, 08h, 04h, 43h
DB 80h, 7Fh, 00h, 01h, 06h, 0Ch, 00h, 00h
BI2:
DB 10h, 10h, 0F0h, 1Fh, 10h, 0F0h, 80h, 82h
DB 82h, 82h, 0E2h, 92h, 8Ah, 0C6h, 80h, 00h
DB 40h, 22h, 15h, 08h, 14h, 63h, 00h, 00h
DB 40h, 80h, 7Fh, 00h, 00h, 00h, 00h, 00h
BI3:
DB 04h, 34h, 0C4h, 04h, 0C4h, 3Ch, 20h, 10h
DB 0Fh, 0E8h, 08h, 08h, 28h, 18h, 00h, 00h
DB 10h, 08h, 06h, 01h, 82h, 8Ch, 40h, 30h
DB 0Ch, 03h, 0Ch, 10h, 60h, 0C0h, 40h, 00h
BI4:
DB 40h, 42h, 44h, 0C8h, 00h, 0FCh, 04h, 02h
DB 82h, 0FCh, 04h, 04h, 04h, 0FEh, 04h, 00h
DB 00h, 40h, 20h, 1Fh, 20h, 47h, 42h, 41h
DB 40h, 7Fh, 40h, 42h, 44h, 63h, 20h, 00h
BI5:
DB 00h, 00h, 0F8h, 49h, 4Ah, 4Ch, 48h, 0F8h
DB 48h, 4Ch, 4Ah, 49h, 0FCh, 08h, 00h, 00h
DB 10h, 10h, 17h, 12h, 12h, 12h, 12h, 0FFh
DB 12h, 12h, 12h, 12h, 13h, 18h, 10h, 00h
BI6:
DB 00h, 00h, 0FEh, 20h, 20h, 20h, 20h, 20h
DB 3Fh, 20h, 20h, 20h, 20h, 30h, 20h, 00h
DB 80h, 40h, 3Fh, 01h, 01h, 01h, 01h, 01h
DB 01h, 0FFh, 00h, 00h, 00h, 00h, 00h, 00h
BI7:
DB 10h, 10h, 0D0h, 0FFh, 90h, 10h, 00h, 0FCh
DB 04h, 04h, 04h, 0FEh, 04h, 00h, 00h, 00h
DB 04h, 03h, 00h, 0FFh, 80h, 41h, 20h, 1Fh
DB 00h, 00h, 00h, 3Fh, 40h, 40h, 70h, 00h
BI8:
DB 80h, 40h, 20h, 0F8h, 07h, 10h, 10h, 10h
DB 0F1h, 96h, 90h, 90h, 0D0h, 98h, 10h, 00h
DB 00h, 00h, 00h, 0FFh, 00h, 80h, 40h, 30h
DB 0Fh, 40h, 80h, 40h, 3Fh, 00h, 00h, 00h
BII1:
DB 40h, 20h, 0F8h, 07h, 04h, 0F4h, 14h, 14h
DB 14h, 0FFh, 14h, 14h, 14h, 0F6h, 04h, 00h
DB 00h, 00h, 0FFh, 00h, 80h, 43h, 45h, 29h
DB 19h, 17h, 21h, 21h, 41h, 0C3h, 40h, 00h
BII2:
DB 00h, 00h, 0FEh, 22h, 22h, 22h, 22h, 0FEh
DB 22h, 22h, 22h, 22h, 0FFh, 02h, 00h, 00h
DB 80h, 60h, 1Fh, 02h, 02h, 02h, 02h, 7Fh
DB 02h, 02h, 42h, 82h, 7Fh, 00h, 00h, 00h
BII3:
DB 40h, 0B0h, 92h, 96h, 9Ah, 92h, 0F2h, 9Eh
DB 92h, 91h, 99h, 95h, 91h, 50h, 30h, 00h
DB 00h, 00h, 40h, 30h, 8Ch, 83h, 46h, 2Ah
DB 12h, 2Ah, 26h, 42h, 0C0h, 40h, 00h, 00h
BII4:
DB 00h, 00h, 0FEh, 22h, 22h, 22h, 22h, 0FEh
DB 22h, 22h, 22h, 22h, 0FFh, 02h, 00h, 00h
DB 40h, 30h, 07h, 72h, 82h, 82h, 8Ah, 93h
DB 0B2h, 82h, 82h, 0E2h, 17h, 20h, 60h, 00h
BII5:
DB 00h, 04h, 04h, 0F4h, 54h, 54h, 54h, 5Fh
DB 54h, 54h, 54h, 0FCh, 16h, 04h, 00h, 00h
DB 10h, 10h, 90h, 5Fh, 35h, 15h, 15h, 15h
DB 15h, 15h, 35h, 5Fh, 0D0h, 18h, 10h, 00h
BII6:
DB 10h, 0Ch, 04h, 44h, 8Ch, 94h, 35h, 06h
DB 0F4h, 04h, 04h, 04h, 04h, 14h, 0Ch, 00h
DB 02h, 82h, 82h, 42h, 42h, 23h, 12h, 0Eh
DB 03h, 0Ah, 12h, 22h, 42h, 0C3h, 02h, 00h
BII7:
DB 02h, 0FAh, 02h, 02h, 0FFh, 42h, 20h, 50h
DB 4Ch, 43h, 4Ch, 50h, 20h, 60h, 20h, 00h
DB 10h, 31h, 11h, 49h, 89h, 7Fh, 42h, 5Ch
DB 40h, 4Fh, 60h, 58h, 47h, 60h, 40h, 00h
BII8:
DB 80h, 40h, 20h, 0F8h, 07h, 00h, 38h, 0C0h
DB 02h, 04h, 0Ch, 80h, 60h, 1Ch, 00h, 00h
DB 00h, 00h, 00h, 0FFh, 80h, 40h, 20h, 10h
DB 00Bh, 04h, 0Ah, 11h, 60h, 0C0h, 40h, 00h
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -