📄 lcd0.asm
字号:
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN:CLR P1.2
CLR P1.3
SETB P1.4
MOV DPTR,#0100H
MOV A,#02H
MOVX @DPTR,A;写入8155命令字
MOV DPTR,#0035H;扩展外部数据存储器的35H的写入,用以判断8155是否工作正常
MOV A,#26H
MOVX @DPTR,A
MOV P1,#10H;8155初始化,A输入a,b,c,d;B输出;C输出,检测
MOV DPTR,#0100H
MOV A,#0EH
MOVX @DPTR,A
MOV DPTR,#0035H;扩展外部数据存储器的35H的写入,用以判断8155是否工作正常
MOV A,#26H
MOVX @DPTR,A
LCALL CHEBUSY
CLR P3.1;写LCD功能,8位数据线传输,两行显示,5*7点阵+光标显示
CLR P3.2
MOV DPTR,#0102H
MOV A,#38H
MOVX @DPTR,A
SETB P3.3
NOP
CLR P3.3
LCALL CHEBUSY
CLR P3.1;写LCD输入模式,写完一个字符后光标右移;全部显示右移
CLR P3.2
MOV DPTR,#0102H
MOV A,#07H
MOVX @DPTR,A
SETB P3.3
NOP
CLR P3.3
LCALL CHEBUSY
CLR P3.1;写LCD,清显示
CLR P3.2
MOV DPTR,#0102H
MOV A,#01H
MOVX @DPTR,A
SETB P3.3
NOP
CLR P3.3
LCALL CHEBUSY
CLR P3.1;写LCD,开显示
CLR P3.2
MOV DPTR,#0102H
MOV A,#0FH
MOVX @DPTR,A
SETB P3.3
NOP
CLR P3.3
LCALL CHEBUSY
CLR P3.1;写LCD,写DDRAM初始地址
CLR P3.2
MOV DPTR,#0102H
MOV A,#80H
MOVX @DPTR,A
SETB P3.3
NOP
CLR P3.3
ROW: MOV DPTR,#0103H;检测是否有键入
MOV A,#00H
MOVX @DPTR,A
MOV DPTR,#0101H
MOVX A,@DPTR
CJNE A,#0FH,ROW1;有键入
LJMP ROW;无键入
ROW1: MOV DPTR,#0103H;检测第一行
MOV A,#0EH
MOVX @DPTR,A
MOV DPTR,#0101H
MOVX A,@DPTR
CJNE A,#0FH,ROW11;有键入
ROW2: MOV DPTR,#0103H
MOV A,#0DH
MOVX @DPTR,A
MOV DPTR,#0101H
MOVX A,@DPTR
CJNE A,#0FH,LROW22;有键入
ROW3: MOV DPTR,#0103H
MOV A,#0BH
MOVX @DPTR,A
MOV DPTR,#0101H
MOVX A,@DPTR
CJNE A,#0FH,LROW33;有键入
ROW4: MOV DPTR,#0103H
MOV A,#07H
MOVX @DPTR,A
MOV DPTR,#0101H
MOVX A,@DPTR
CJNE A,#0FH,LROW44;有键入
LJMP ROW
LROW22: LJMP ROW22
LROW33: LJMP ROW33
LROW44:LJMP ROW44
ROW11: ACALL DELAY;去抖动,确定
MOV DPTR,#0101H
MOVX A,@DPTR
CJNE A,#0FH,DISPLAY1;有
LJMP ROW2
DISPLAY1:JB ACC.0,NO12
NO11: LCALL CHEBUSY
SETB P3.1
CLR P3.2
MOV DPTR,#0102H
MOV A,#"1"
MOVX @DPTR,A
SETB P3.3
NOP
CLR P3.3
ACALL CHEDR
LJMP ROW2
NO12: JB ACC.1,NO13
LCALL CHEBUSY
SETB P3.1
CLR P3.2
MOV DPTR,#0102H
MOV A,#"2"
MOVX @DPTR,A
SETB P3.3
NOP
CLR P3.3
ACALL CHEDR
LJMP ROW2
NO13: JB ACC.2,NO14
LCALL CHEBUSY
SETB P3.1
CLR P3.2
MOV DPTR,#0102H
MOV A,#"3"
MOVX @DPTR,A
SETB P3.3
NOP
CLR P3.3
ACALL CHEDR
LJMP ROW2
NO14: LCALL CHEBUSY
SETB P3.1
CLR P3.2
MOV DPTR,#0102H
MOV A,#"A"
MOVX @DPTR,A
SETB P3.3
NOP
CLR P3.3
ACALL CHEDR
LJMP ROW2
ROW22: ACALL DELAY
MOV DPTR,#0101H
MOVX A,@DPTR
CJNE A,#0FH,DISPLAY2
LJMP ROW3
DISPLAY2:JB ACC.0,NO22
NO21: LCALL CHEBUSY
SETB P3.1
CLR P3.2
MOV DPTR,#0102H
MOV A,#"4"
MOVX @DPTR,A
SETB P3.3
NOP
CLR P3.3
ACALL CHEDR
LJMP ROW3
NO22: JB ACC.1,NO23
LCALL CHEBUSY
SETB P3.1
CLR P3.2
MOV DPTR,#0102H
MOV A,#"5"
MOVX @DPTR,A
SETB P3.3
NOP
CLR P3.3
ACALL CHEDR
LJMP ROW3
NO23: JB ACC.2,NO24
LCALL CHEBUSY
SETB P3.1
CLR P3.2
MOV DPTR,#0102H
MOV A,#"6"
MOVX @DPTR,A
SETB P3.3
NOP
CLR P3.3
ACALL CHEDR
LJMP ROW3
NO24: LCALL CHEBUSY
SETB P3.1
CLR P3.2
MOV DPTR,#0102H
MOV A,#"B"
MOVX @DPTR,A
SETB P3.3
NOP
CLR P3.3
ACALL CHEDR
LJMP ROW3
ROW33: ACALL DELAY
MOV DPTR,#0101H
MOVX A,@DPTR
CJNE A,#0FH,DISPLAY3
LJMP ROW4
DISPLAY3:JB ACC.0,NO32
NO31: LCALL CHEBUSY
SETB P3.1
CLR P3.2
MOV DPTR,#0102H
MOV A,#"7"
MOVX @DPTR,A
SETB P3.3
NOP
CLR P3.3
ACALL CHEDR
LJMP ROW4
NO32: JB ACC.1,NO23
LCALL CHEBUSY
SETB P3.1
CLR P3.2
MOV DPTR,#0102H
MOV A,#"8"
MOVX @DPTR,A
SETB P3.3
NOP
CLR P3.3
ACALL CHEDR
LJMP ROW4
NO33: JB ACC.2,NO24
LCALL CHEBUSY
SETB P3.1
CLR P3.2
MOV DPTR,#0102H
MOV A,#"9"
MOVX @DPTR,A
SETB P3.3
NOP
CLR P3.3
ACALL CHEDR
LJMP ROW4
NO34: LCALL CHEBUSY
SETB P3.1
CLR P3.2
MOV DPTR,#0102H
MOV A,#"C"
MOVX @DPTR,A
SETB P3.3
NOP
CLR P3.3
ACALL CHEDR
LJMP ROW4
ROW44: ACALL DELAY
MOV DPTR,#0101H
MOVX A,@DPTR
CJNE A,#0FH,DISPLAY4
LJMP ROW
DISPLAY4:JB ACC.0,NO42
NO41: LCALL CHEBUSY
SETB P3.1
CLR P3.2
MOV DPTR,#0102H
MOV A,#"#"
MOVX @DPTR,A
SETB P3.3
NOP
CLR P3.3
ACALL CHEDR
LJMP ROW
NO42: JB ACC.1,NO43
LCALL CHEBUSY
SETB P3.1
CLR P3.2
MOV DPTR,#0102H
MOV A,#"0"
MOVX @DPTR,A
SETB P3.3
NOP
CLR P3.3
ACALL CHEDR
LJMP ROW
NO43: JB ACC.2,NO44
LCALL CHEBUSY
SETB P3.1
CLR P3.2
MOV DPTR,#0102H
MOV A,#"*"
MOVX @DPTR,A
SETB P3.3
NOP
CLR P3.3
ACALL CHEDR
LJMP ROW
NO44: LCALL CHEBUSY
SETB P3.1
CLR P3.2
MOV DPTR,#0102H
MOV A,#"D"
MOVX @DPTR,A
SETB P3.3
NOP
CLR P3.3
ACALL CHEDR
LJMP ROW
DELAY: MOV R0,#0FFH
DELAY1: MOV R1,#0FFH
DJNZ R1,$
DJNZ R0,DELAY1
RET
CHEBUSY: MOV DPTR,#0102H
MOV A,#0FFH
MOVX @DPTR,A
L1: MOV DPTR,#0100H
MOV A,#0CH
MOVX @DPTR,A
CLR P3.1
SETB P3.2
SETB P3.3
CLR P3.3
MOV DPTR,#0102H
MOVX A,@DPTR
JB ACC.7,L1
MOV DPTR,#0100H
MOV A,#0EH
MOVX @DPTR,A
RET
CHEDR: MOV DPTR,#0100H
MOV A,#0CH
MOVX @DPTR,A
CLR P3.1
SETB P3.2
SETB P3.3
CLR P3.3
MOV DPTR,#0102H
MOVX A,@DPTR
JB ACC.7,CHEDR
PUSH ACC
CJNE A,#0FH,L2
MOV DPTR,#0100H
MOV A,#0EH
MOVX @DPTR,A
LCALL CHEBUSY
CLR P3.1;写LCD,写DDRAM第二行地址
CLR P3.2
MOV DPTR,#0102H
MOV A,#0C0H
MOVX @DPTR,A
SETB P3.3
NOP
AJMP L
L2: POP ACC
CJNE A,#0CFH,L
LCALL CHEBUSY
MOV DPTR,#0100H
MOV A,#0EH
MOVX @DPTR,A
CLR P3.1
CLR P3.2
MOV DPTR,#0102H
MOV A,#80H
MOVX @DPTR,A
SETB P3.3
NOP
L: CLR P3.3
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -