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

📄 lcd0.asm

📁 4*4键盘扫描
💻 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 + -