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

📄 lcd_dis.asm

📁 LCD显示的ENGLISH键盘
💻 ASM
字号:
;单片机和液晶模块的连线为:
;P0 	<=======>	D0-D7
;P2.0	<=======>	C/D
;P2.1	<=======>	/CE


DAT1	EQU	30H			;第一参数单元
DAT2	EQU	31H			;第二参数单元
COM	EQU	32H			;指令代码单元
C_ADD	EQU	8100H			;指令通道地址
D_ADD	EQU	8000H			;数据通道地址

LCALL	MAIN

;读状态字程序
R_ST:		MOV	DPTR,#C_ADD		;设置指令通道地址
		MOVX	A,@DPTR
		RET

;判状态位STA1,STA0程序
STO1:		LCALL	R_ST
		JNB	ACC.0,STO1
		JNB	ACC.1,STO1
		RET

;判状态位STA2程序
ST2:		LCALL	R_ST	
		JNB	ACC.2,ST2
		RET

;判状态位STA3程序
ST3:		LCALL	R_ST	
		JNB	ACC.3,ST3
		RET

;判状态位STA3程序
ST6:		LCALL	R_ST	
		JNB	ACC.6,ST6
		RET


;写指令与数据程序
PR1:		LCALL	STO1		;写双字节参数指令
		MOV	A,DAT1		
		LCALL	PR13
PR11:		LCALL	STO1		;写单字节参数指令
		MOV	A,DAT2		
		LCALL	PR13
PR12:		LCALL	STO1		;写单字节参数指令
		MOV	A,COM
		MOV	DPTR,#C_ADD		;;;;;自己加的	
		LCALL	PR14
		RET
PR13:		MOV	DPTR,#D_ADD		;设置数据通道地址
PR14:		MOVX	@DPTR,A
		RET

;读数据程序
PR2:		LCALL	STO1	
		MOV	DPTR,#D_ADD
		MOVX	A,@DPTR	
		MOV	DAT2,A		;数据存入第二参数单元
		RET

;初始化程序
INT:		MOV	DAT1,#00H	;设置文本显示区域首地址
		MOV	DAT2,#00H
		MOV	COM,#40H
		LCALL	PR1
		MOV	DAT1,#1EH	;设置文本显示宽度
		MOV	DAT2,#00H
		MOV	COM,#41H
		LCALL	PR1
		MOV	DAT1,#00H	;设置图形显示区域首地址
		;MOV	DAT2,#08H
		MOV	DAT2,#08H
		MOV	COM,#42H
		LCALL	PR1
		MOV	DAT1,#1EH	;设置图形显示宽度
		MOV	DAT2,#00H
		MOV	COM,#43H
		LCALL	PR1
		MOV	COM,#0A7H	;光标形状设置
		LCALL	PR12
		MOV	COM,#84H	;显示方式设置;或
		LCALL	PR12	
		MOV	COM,#9CH		;图形文本显示方式
		LCALL	PR12
		RET

;清显示RAM程序
CLEAR:		MOV	DAT1,#00H	;设置显示RAM首地址
		MOV	DAT2,#00H
		MOV	COM,#24H
		LCALL	PR1
		MOV	R3,#00H		;设置衔环变量
		MOV	R4,#20H
		MOV	COM,#0B0H	;设置自动写方式
		LCALL	PR12
CLEAR1:		LCALL	ST3
		MOV	A,#00H
		LCALL	PR13
		DJNZ	R3,CLEAR1
		DJNZ	R4,CLEAR1
		MOV	COM,#0B2H
		LCALL	PR12
		RET

;西文显示程序

DIS:		MOV	COM,#9CH
		LCALL	PR12
		MOV	COM,#84H
		LCALL	PR12
		MOV	DAT1,#00H
		MOV	DAT2,#00H		
		MOV	COM,#24H
		LCALL	PR1
		MOV	R2,00H
PR81:		MOV	DPTR,#DTAB
		MOV	A,R2
		MOVC	A,@A+DPTR
		MOV	DAT2,A
		MOV	COM,#0C0H
		LCALL	PR11
		INC	R2
		CJNE	R2,#11,PR81
		MOV	COM,#00
		MOV	DAT2,#08
		MOV	COM,#24H
		LCALL	PR1
		MOV	R2,#00H
PR82:		MOV	DPTR,#TAB
		MOV	A,R2
		MOVC	A,@A+DPTR
		MOV	DAT2,A
		MOV	COM,#0C0H
		LCALL	PR11
		INC	R2
		CJNE	R2,#11,PR82
		RET


;建立CGRAM字符字库
  	;西文字符(8*8点阵)个数
CGRAM: 		MOV   	DAT1,#03H        	;设置CGRAM偏置地址
       		MOV    	DAT2,#00H
       		MOV    	COM,#22H
       		LCALL  	PR1
       		MOV    	DAT1,#00H        	;设置RAN地址指针
       		MOV    	DAT2,#1CH
       		MOV    	COM,#24H  		
		LCALL  	PR1
       		MOV    	COM,#0B0H        	;设置自动写方式
       		LCALL  	PR12
       		MOV    	R2,#00H      		;计算写入的字节数
CGRAM1:		LCALL	ST3			;判自动写状态
		MOV	DPTR,#CGATB
		MOV	A,R2
		MOVC	A,@A+DPTR		;取数据
		LCALL	PR13			;写入CGRAM
		INC	R2			;字符库指针加一
		CJNE	R2,#32,CGRAM1
		MOV	COM,#0B2H		;写入结束自动写指令
		LCALL	PR12
		RET
       
CGATB:	DB	000H,040H,037H,010H,081H,061H,022H,00AH		;液
	DB	016H,02BH,0E2H,022H,022H,022H,023H,022H
	DB	080H,044H,0FEH,020H,020H,03CH,044H,064H
	DB	098H,048H,050H,020H,050H,08EH,004H,000H
	;DB	00FH,008H,008H,00FH,008H,008H,00FH,008H		;晶
	;DB	07EH,042H,042H,07EH,042H,042H,07EH,042H
	;DB	0E0H,020H,020H,0E0H,020H,020H,0E0H,024H
	;DB	0FEH,084H,084H,0FCH,084H,084H,0FCH,084H


	
;汉字写入程序

CHIANDIS:	MOV	DAT1,#30		
		MOV	DAT2,#00		
		MOV	COM,#24H	
		LCALL	PR1		
		MOV	DAT2,#80H	
		MOV	COM,#0C0H	;写数据,地址加1指令
		LCALL	PR11		;DAT2在主程序中设定,如DAT2=80H
		INC	DAT2
		INC	DAT2
		LCALL	PR11		;DAT2=82H
		DEC	DAT2
		MOV	R2,#28	
		MOV	COM,#0C1H		;读数据,地址加1指令
CHINA:		LCALL	PR12
		DJNZ	R2,CHINA		;地址指针移到汉字左下角
		MOV	COM,#0C0H	
		LCALL	PR11
		INC	DAT2
		INC	DAT2
		LCALL	PR11	
		RET
	


MAIN:	LCALL	INT
	LCALL	CLEAR
	LCALL	DIS

LOOP:	LCALL	CGRAM
	LCALL	CHIANDIS
	JMP	LOOP



DTAB:	DB	57H,45H,4CH,43H,4FH,4DH,45H,00H,39H,4FH,55H	;Welcom you
;TAB:	DB	0DH,0DH,0DH,0DH,0DH,0DH,0DH,0DH,0DH,0DH,0DH	;;
TAB:	DB	08H,08H,08H,08H,08H,08H,08H,08H,08H,08H,08H	;;
END

⌨️ 快捷键说明

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