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

📄 lcdm.asm

📁 LCD 单片机显示
💻 ASM
字号:
COM EQU 21H
DAT EQU 20H

TABLE EQU 22H
CS1 EQU P2.3 ;片选左
CS2 EQU P2.4 ;片选右
RS EQU P2.0;寄存器选择信号
RW EQU P2.1 ;读/写选择信号
E EQU P2.2 ;使能信号
COUNT EQU 24H
LL EQU 25H
ORG 0000H
LJMP INT
ORG 100H

INT:	        
		MOV LL,#40H;列地址设置为“0”
CLEAR:		MOV COM,#0C0H
		LCALL PRL0
		LCALL PRR0
		MOV COM,#3FH ;开显示设置
		LCALL PRL0
		LCALL PRR0
	MOV R4,#00H ;页面地址暂存器
		MOV DPTR,#CCW0
		MOV 23H,#01111110B          ;duo pai zi
	
	
CLEAR12:MOV A,R4
		ORL A,#0B8H ;“或”页面地址设置代码
		MOV COM,A ;页面地址设置
		LCALL PRL0
		LCALL PRR0
;**********************************************************************左半屏

		MOV R7,LL
		MOV A,23H
		
		
		JNB ACC.7,LOOPL1
		JMP LOOPL11
	LOOPL1:	MOV R5,#06H

	LOOPL11:JNB ACC.5,LOOPL2
		JMP LOOPL22
	LOOPL2:	MOV R5,#06H
	LOOPL22:JNB ACC.3,LOOPL3
		JMP LOOPL33
	LOOPL3:	MOV R5,#06H
	LOOPL33:JNB ACC.1,LOOPL4
		JMP CONTINUEL
	LOOPL4:	MOV R5,#05H


CONTINUEL:		MOV A,R5
		JZ  YBP   ;跳转到右半屏
	LOOP:	MOV COM,R7 
		LCALL PRL0
		MOV R3,#10H ;显示16行

		MOV COUNT,R3
		MOV A,#7FH
		SUBB A,R7
		CLR C
		MOV B,#10H
		SUBB A,B
		JNC CLEAR22
		MOV A,#81H
		SUBB A,R7
		MOV R3,A
		MOV COUNT,R3


CLEAR22:	MOV A,#00H 
		MOVC A,@A+DPTR
		MOV DAT,A
		LCALL PRL1
		INC DPTR
		INC DPTR
		DJNZ R3,CLEAR22
		
		MOV A,COUNT
		CJNE A,#10H,YBP

SCD:		MOV A,R7         ;R7=R7+16  向后移16列
		ADD A,#10H
		MOV R7,A
		CJNE A,#80H,AAA
		JMP YBP
AAA:	DJNZ R5,LOOP	
;**********************************************************************右半屏
YBP:		MOV R7,#40H;列地址设置为“0”


		MOV A,R5
		MOV R6,A

MOV A,LL
MOV B,#10H
DIV AB
MOV A,B
CJNE A,#0,CONTINUER
DEC R6


CONTINUER:	MOV A,R6
			JZ NEXT11
LOOPR:		MOV COM,R7 
		LCALL PRR0
		MOV R3,#10H ;显示16行

MOV A,R6
CJNE A,#02H,NOSCD
MOV A,LL   ;解决LL为4F时乱码的问题
INC A
MOV B,#10H
DIV AB
MOV A,B
JZ RER3
JMP NOSCD
RER3:
MOV R3,#0FH
JMP CLEAR222

NOSCD:
MOV A,R6
CJNE A,#01H,CLEAR222

MOV A,LL
MOV B,#10H
DIV AB
MOV A,B
JZ NOMAL
JMP UNNO
NOMAL:

JMP CLEAR222

UNNO:
MOV A,LL   ;解决LL为4F时乱码的问题
INC A
MOV B,#10H
DIV AB
MOV A,B
JZ GO
JMP NOGO
GO:

JMP NEXT11
NOGO:

MOV A,#10H
SUBB A,COUNT
MOV R3,A



CLEAR222:	MOV A,#00H ;显示“液”
		MOVC A,@A+DPTR
		MOV DAT,A
		LCALL PRR1
		INC DPTR
		INC DPTR
		DJNZ R3,CLEAR222



SCD2:	MOV A,R7         ;R7=R7+16  向后移16列
		ADD A,#10H
		MOV R7,A
		DJNZ R6,LOOPR		
;**********************************************************************	
		
   NEXT11:      MOV A,23H
		RR A
		MOV 23H,A
		JNB ACC.5,DP1
		JNB ACC.3,DP2
		JNB ACC.1,DP3
		MOV DPTR,#CCW0
		JMP DP

	DP1:	MOV DPTR,#CCW1
	 	CJNE R4,#02,FF
		CJNE R4,#03,DP

	DP2:	MOV DPTR,#CCW2
	 	CJNE R4,#04,FF
		CJNE R4,#05,DP

	DP3:	MOV DPTR,#CCW3
	 	CJNE R4,#06,FF
		CJNE R4,#07,DP
		
	 DP:	INC DPTR
         FF:	INC R4

		CJNE R4,#08H,NEXTT

		MOV A,#50
		LCALL DELAY
		INC LL
		LJMP CLEAR
		
NEXTT:JMP CLEAR12



CCW0:

DB 010H,004H,060H,004H,001H,0FFH,0C6H,000H,030H,000H,002H,000H,0E2H,007H,022H,002H ; 
DB 022H,002H,0E2H,007H,002H,040H,002H,080H,0FEH,07FH,002H,000H,002H,000H,000H,000H ; "河" 0

DB 004H,000H,004H,000H,0E4H,07FH,024H,004H,024H,005H,064H,005H,0B4H,005H,02FH,07FH ; 
DB 024H,005H,0A4H,005H,064H,005H,024H,025H,024H,044H,0E6H,03FH,004H,000H,000H,000H ; "南" 1

DB 010H,004H,012H,002H,092H,001H,072H,000H,0FEH,0FFH,051H,000H,091H,004H,000H,004H ; 
DB 022H,004H,0CCH,002H,000H,002H,000H,002H,0FFH,0FFH,000H,001H,000H,001H,000H,000H ; "科" 2

DB 008H,001H,008H,041H,088H,080H,0FFH,07FH,048H,000H,028H,040H,000H,040H,0C8H,020H ; 
DB 048H,013H,048H,00CH,07FH,00CH,048H,012H,0C8H,021H,048H,060H,008H,020H,000H,000H ; "技" 3

DB 020H,000H,020H,080H,020H,040H,020H,020H,020H,010H,020H,00CH,0A0H,003H,07FH,000H ; 
DB 0A0H,001H,020H,006H,020H,008H,020H,030H,020H,060H,020H,0C0H,020H,040H,000H,000H ; "大" 4

DB 040H,000H,030H,002H,010H,002H,012H,002H,05CH,002H,054H,002H,050H,042H,051H,082H ; 
DB 05EH,07FH,0D4H,002H,050H,002H,018H,002H,057H,002H,032H,002H,010H,002H,000H,000H ; "学" 5

CCW1:


DB 000H,000H,000H,000H,0F8H,00FH,048H,004H,048H,004H,048H,004H,048H,004H,0FFH,03FH ; 
DB 048H,044H,048H,044H,048H,044H,048H,044H,0F8H,04FH,000H,040H,000H,070H,000H,000H ; "电" 6

DB 000H,001H,000H,001H,002H,001H,002H,001H,002H,001H,002H,041H,002H,081H,0E2H,07FH ; 
DB 012H,001H,00AH,001H,006H,001H,002H,001H,000H,001H,080H,001H,000H,001H,000H,000H ; "子" 7

DB 080H,000H,040H,000H,030H,000H,0FCH,07FH,007H,000H,00AH,000H,0A8H,07EH,0A8H,022H ; 
DB 0A9H,022H,0AEH,022H,0AAH,022H,0A8H,022H,0A8H,07EH,008H,000H,008H,000H,000H,000H ; "信" 8

DB 000H,000H,000H,020H,000H,038H,0FCH,001H,054H,03DH,054H,041H,056H,041H,055H,045H ; 
DB 054H,059H,054H,041H,054H,041H,0FCH,071H,000H,000H,000H,008H,000H,030H,000H,000H ; "息" 9

DB 000H,020H,000H,020H,002H,020H,002H,020H,002H,020H,002H,020H,002H,020H,0FEH,03FH ; 
DB 002H,020H,002H,020H,002H,020H,002H,020H,002H,020H,002H,020H,000H,020H,000H,000H ; "工" 10

DB 010H,004H,012H,003H,0D2H,000H,0FEH,0FFH,091H,000H,011H,041H,080H,044H,0BFH,044H ; 
DB 0A1H,044H,0A1H,07FH,0A1H,044H,0A1H,044H,0BFH,044H,080H,044H,000H,040H,000H,000H ; "程" 17
CCW2:



DB 080H,000H,040H,000H,030H,000H,0FCH,07FH,007H,000H,00AH,000H,0A8H,07EH,0A8H,022H ; 
DB 0A9H,022H,0AEH,022H,0AAH,022H,0A8H,022H,0A8H,07EH,008H,000H,008H,000H,000H,000H ; "信" 14

DB 000H,000H,000H,020H,000H,038H,0FCH,001H,054H,03DH,054H,041H,056H,041H,055H,045H ; 
DB 054H,059H,054H,041H,054H,041H,0FCH,071H,000H,000H,000H,008H,000H,030H,000H,000H ; "息" 15

DB 000H,020H,000H,020H,002H,020H,002H,020H,002H,020H,002H,020H,002H,020H,0FEH,03FH ; 
DB 002H,020H,002H,020H,002H,020H,002H,020H,002H,020H,002H,020H,000H,020H,000H,000H ; "工" 16

DB 010H,004H,012H,003H,0D2H,000H,0FEH,0FFH,091H,000H,011H,041H,080H,044H,0BFH,044H ; 
DB 0A1H,044H,0A1H,07FH,0A1H,044H,0A1H,044H,0BFH,044H,080H,044H,000H,040H,000H,000H ; "程" 17

DB 020H,000H,020H,000H,024H,000H,024H,000H,0A4H,001H,064H,001H,03CH,009H,027H,011H ; 
DB 024H,029H,024H,045H,0A4H,003H,024H,001H,024H,000H,020H,000H,020H,000H,000H,000H ; "专" 18

DB 000H,020H,010H,020H,060H,020H,080H,023H,000H,021H,0FFH,03FH,000H,020H,000H,020H ; 
DB 000H,020H,0FFH,03FH,000H,022H,080H,021H,060H,020H,038H,030H,010H,020H,000H,000H ; "业" 19

CCW3:



DB 000H,008H,000H,008H,0F8H,00BH,028H,009H,029H,009H,02EH,009H,02AH,009H,0F8H,0FFH ; 
DB 028H,009H,02CH,009H,02BH,009H,02AH,009H,0F8H,00BH,000H,008H,000H,008H,000H,000H ; "单" 20

DB 000H,080H,000H,040H,000H,030H,0FEH,00FH,010H,001H,010H,001H,010H,001H,010H,001H ; 
DB 010H,001H,01FH,001H,010H,001H,010H,0FFH,010H,000H,018H,000H,010H,000H,000H,000H ; "片" 21

DB 008H,004H,008H,003H,0C8H,000H,0FFH,0FFH,048H,000H,088H,041H,008H,030H,000H,00CH ; 
DB 0FEH,003H,002H,000H,002H,000H,002H,000H,0FEH,03FH,000H,040H,000H,078H,000H,000H ; "机" 22

DB 020H,000H,021H,000H,0EEH,03FH,004H,010H,000H,008H,000H,021H,000H,011H,07EH,009H ; 
DB 04AH,005H,04AH,003H,0FEH,0FFH,04AH,005H,04AH,009H,07EH,031H,000H,011H,000H,000H ; "课" 23

DB 010H,004H,012H,003H,0D2H,000H,0FEH,0FFH,091H,000H,011H,041H,080H,044H,0BFH,044H ; 
DB 0A1H,044H,0A1H,07FH,0A1H,044H,0A1H,044H,0BFH,044H,080H,044H,000H,040H,000H,000H ; "程" 24

;1.左区驱动子程序
	;1)写指令代码子程序(左)
PRL0:	SETB CS1
		CLR CS2
		CLR RS; ;RS=0
		SETB RW ;R/W=1
PRL01:	MOV P0,#0FFH ;P0 口置“1”
		SETB E ;E=1
		MOV A,P0 ;读状态字
		CLR E ;E=0
		JB ACC.7,PRL01
		;判″忙″标志为“0”否,否再读
		CLR RW ;R/W=0
		MOV P0,COM ;写指令代码
		SETB E ;E=1
		CLR E ;E=0
		RET
	;————————————————
	;2)写显示数据子程序(左)
PRL1:	SETB CS1
		CLR CS2
		CLR RS ;RS=0
		SETB RW ;R/W=1
PRL11:	MOV P0,#0FFH ;P0 口置“1”
		SETB E ;E=1
		MOV A,P0 ;读状态字
		CLR E ;E=0
		JB ACC.7,PRL11
		;判″忙″标志为“0”否,否再读
		SETB RS ;RS=1
		CLR RW ;R/W=0
		MOV P0,DAT ;写数据
		SETB E ;E=1
		CLR E ;E=0



		RET
	;————————————————
;3)读显示数据子程序(左)
PRL2:	SETB CS1
		CLR CS2
		CLR RS ;RS=0
		SETB RW ;R/W=1
PRL21:	MOV P0,#0FFH ;P0 口置“1”
		SETB E ;E=1
		MOV A,P0 ;读状态字
		CLR E ;E=0
		JB ACC.7,PRL21
		;判″忙″标志为“0”否,否再读
		SETB RS ;RS=1
		MOV P0,#0FFH ;P0 口置“1”
		SETB E ;E=1
		MOV DAT,P0 ;写数据
		CLR E ;E=0
		RET
	;————————————————
	;————————————————
	;2.右区驱动子程序
	;1)写指令代码子程序(右)
PRR0:	CLR CS1
		SETB CS2
		CLR RS ;RS=0
		SETB RW ;R/W=1
PRR01:	MOV P0,#0FFH ;P0 口置“1”
		SETB E ;E=1
		MOV A,P0 ;读状态字
		CLR E ;E=0
		JB ACC.7,PRR01
		;判″忙″标志为“0”否,否再读
		CLR RW ;R/W=0
		MOV P0,COM ;写指令代码
		SETB E ;E=1
		CLR E ;E=0
		RET
	;————————————————
	;2)写显示数据子程序(右)
PRR1:	CLR CS1
		SETB CS2
		CLR RS ;RS=0
		SETB RW ;R/W=1
PRR11:	MOV P0,#0FFH ;P0 口置“1”
		SETB E ;E=1
		MOV A,P0 ;读状态字
		CLR E ;E=0
		JB ACC.7,PRR11
		;判″忙″标志为“0”否,否再读
		SETB RS ;RS=1
		CLR RW ;R/W=0
		MOV P0,DAT ;写数据
		SETB E ;E=1
		CLR E ;E=0
		RET
	;————————————————
	;3)读显示数据子程序(右)
PRR2:	CLR CS1
		SETB CS2
		CLR RS ;RS=0
		SETB RW ;R/W=1
PRR21:	MOV P0,#0FFH ;P0 口置“1”
		SETB E ;E=1
		MOV A,P0 ;读状态字
		CLR E ;E=0
		JB ACC.7,PRR21
		;判″忙″标志为“0”否,否再读
		SETB RS ;RS=1
		MOV P0,#0FFH ;P0 口置“1”
		SETB E ;E=1
		MOV DAT,P0 ;写数据
		CLR E ;E=0
		RET
	;————————————————
	;————————————————

	DELAY:	   ;MOV A,#1  LCALL DELAY	即10ms
		MOV R3,A
D1:		MOV R4,#20
D2:		MOV R5,#248
		DJNZ R5,$
		DJNZ R4,D2
		DJNZ R3,D1
RET
END

⌨️ 快捷键说明

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