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

📄 lcd12232.asm

📁 lcd12232F中文液晶并口测试程序
💻 ASM
字号:
;THIS PROGRAM IS FOR 12232F
;	RS--------P3.3 '0'指令 '1'数据
;	R/W-------P3.1  '0'写  '1'读
;	E---------P3.0   配合读写
;	DB0~7-----P1

$INCLUDE	(STC12C5404.h);(STC12C5410AD.H)

	RS_B 	EQU	P2.7	;INT1
	RW_B 	EQU	P2.1
	E_B  	EQU	P2.0


	REG1	EQU	20H
	TMP_RAM1 EQU	21H
	DEL0	EQU	30H
	DEL1	EQU	31H


	ORG	0000H
	AJMP	START
	ORG	0003H
	RETI
	ORG	0030H

START:
	
	MOV	IE,#00H;#81H
	MOV	IP,#01H
	MOV	TCON,#00H
	MOV	SP,#67H

	MOV	TMP_RAM1,#20
  START1:
	CALL	DELAY
	NOP
	DJNZ	TMP_RAM1,START1
	
	MOV	A,#00110000B
	CALL	WRITE_COM
	MOV	TMP_RAM1,#5
  START2:
	CALL	DELAY
	NOP
	DJNZ	TMP_RAM1,START2

	MOV	A,#00110000B
	CALL	WRITE_COM
	MOV	TMP_RAM1,#5
  START3:
	CALL	DELAY
	NOP
	DJNZ	TMP_RAM1,START3

	MOV	A,#00110000B
	CALL	WRITE_COM
	MOV	TMP_RAM1,#5
  START4:
	CALL	DELAY
	NOP
	DJNZ	TMP_RAM1,START4
	MOV	A,#00110000B
	CALL	WRITE_COM
	NOP	
	CALL	DELAY

	MOV	A,#00111000B;设为基本指令
	CALL	WRITE_COM
	CALL	DELAY
	MOV	A,#00000010B;DDRAM set to 00h
	CALL	WRITE_COM
	CALL	DELAY
	MOV	A,#10000000B;SET DDRAM ADDRESS
	CALL	WRITE_COM
	CALL	DELAY
	MOV	A,#00000100B;进入点设定
	CALL	WRITE_COM
	CALL	DELAY
	MOV	A,#00001100B;display on
	CALL	WRITE_COM
	CALL	DELAY
	MOV	A,#00000001B;Clearing screen
	CALL	WRITE_COM
;-=---------------------------------
MAIN:

;;自造字(图片)
	NOP
	CALL	WRITE_CGRAM_DIAIC
	MOV	A,#82H
	CALL	WRITE_COM

	MOV	DPTR,#CGRAM1
	CALL	WRITE_CGRAM
	NOP
	CALL	DELAY
	NOP
	CALL	WRITE_CGRAM
	NOP
	CALL	DELAY
	NOP
	CALL	WRITE_CGRAM
	NOP
	CALL	DELAY
	NOP
	CALL	WRITE_CGRAM
	NOP
;;自造字2(汉字)
;	CALL	WRITE_CGRAM_hz
;	MOV	A,#90H
;	CALL	WRITE_COM
;
;	MOV	DPTR,#CGRAM1
;	CALL	WRITE_CGRAM
;	NOP
;	CALL	WRITE_CGRAM
;	NOP
;	CALL	WRITE_CGRAM
;	NOP
;	CALL	WRITE_CGRAM
;	NOP
;;自造字3(汉字)
;	CALL	WRITE_CGRAM_hz1
;	MOV	A,#94H
;	CALL	WRITE_COM
;
;	MOV	DPTR,#CGRAM1
;	CALL	WRITE_CGRAM
;	NOP
;	CALL	WRITE_CGRAM
;	NOP
;------------------------------------------
;打印ASCII
ASCII_DIS:
	MOV	R2,#0
ASCII_DIS0:
	MOV	R3,#15
	MOV	A,#90H
	CALL	WRITE_COM
ASCII_DIS1:	
	MOV	A,R2
	CALL	WRITE_DAT
	INC	R2
	CALL	DELAY
	CALL	DELAY
	CALL	DELAY
	NOP
	MOV	A,R2
	CLR	C
	SUBB	A,#128
	JNC	END_ASCII
	DJNZ	R3,ASCII_DIS1
	JMP	ASCII_DIS0
END_ASCII:	
	NOP	
;-------------------------------------------
;调用字库汉字
HZ_DIS:
	MOV	R2,#5
	MOV	DPTR,#CHINESE
HZ_DIS0:
	MOV	R3,#7
	MOV	A,#90H
	CALL	WRITE_COM

HZ_DIS2:
	CLR	A
	MOVC	A,@A+DPTR
	CALL	WRITE_DAT
	INC	DPTR
	CLR	A
	MOVC	A,@A+DPTR
	CALL	WRITE_DAT	
	INC	DPTR
	
	CALL	DELAY
	CALL	DELAY
	CALL	DELAY
	CALL	DELAY

	DJNZ	R3,HZ_DIS2
	MOV	A,#0A1H
	CALL	WRITE_DAT
	MOV	A,#0A0H
	CALL	WRITE_DAT	
	DJNZ	R2,HZ_DIS0

	NOP
	MOV	TMP_RAM1,#50
HZ_DIS_DEL:
	CALL	DELAY
	DJNZ	TMP_RAM1,HZ_DIS_DEL
	NOP
;------------------------------------------
AAA:
	JMP	START

;-----------------------------

;---------------------------------------
WRITE_COM:
	;WRITE COMMANDS TO ST7920
	CALL	DELAY1
	CLR	RS_B
	CLR	RS_B
	CLR	RW_B
	CLR	RW_B
;	CALL	SAME_REG_P1
	MOV	P1,A
	MOV	P1,A
	SETB	E_B
	SETB	E_B
	NOP
	NOP
	NOP
	NOP
	NOP
	CLR	E_B
	CLR	E_B
	;CALL	DELAY1
	RET
;----------------------------------------------
WRITE_DAT:
	CALL	DELAY1
	SETB	RS_B
	SETB	RS_B
	CLR	RW_B
	CLR	RW_B
;	CALL	SAME_REG_P1
	MOV	P1,A
	MOV	P1,A
	SETB	E_B
	SETB	E_B
	NOP
	NOP
	NOP
	NOP
	NOP
	CLR	E_B
	CLR	E_B
	RET
;----------------------------------------------
DELAY1:
	MOV	R7,#20
  D11:
	MOV	R6,#20
	DJNZ	R6,$
	DJNZ	R7,D11
	RET

DELAY:
	MOV	DEL0,#00H
  D2:	
	MOV	DEL1,#00H
	DJNZ	DEL1,$
	DJNZ	DEL0,D2
	RET
;-------------------------------------
DEF_CHAR:;WRITE TO CGRAN

	MOV	A,#40H;01000000B;SET CGRAM ADDRESS
	CALL	WRITE_COM
	MOV	R3,#8
  DEF1:
	MOV	A,#00H
	CALL	WRITE_DAT
	CALL	WRITE_DAT
	NOP
	MOV	A,#0FFH
	CALL	WRITE_DAT
	CALL	WRITE_DAT
	NOP
	DJNZ	R3,DEF1

	MOV	R3,#8
  DEF2:
	MOV	A,#0AAH
	CALL	WRITE_DAT
	CALL	WRITE_DAT
	MOV	A,#0AAH
	CALL	WRITE_DAT
	CALL	WRITE_DAT
	DJNZ	R3,DEF2

	MOV	R3,#8
  DEF3:
	MOV	A,#55H
	CALL	WRITE_DAT
	CALL	WRITE_DAT
	MOV	A,#0AAH
	CALL	WRITE_DAT
	CALL	WRITE_DAT
	NOP
	DJNZ	R3,DEF3
	
	MOV	R3,#8
  DEF4:
	MOV	A,#0FFH
	CALL	WRITE_DAT
	CALL	WRITE_DAT
	CALL	WRITE_DAT
	CALL	WRITE_DAT
	DJNZ	R3,DEF4
	RET
;-------------------------------
WRITE_CGRAM_hz:
	MOV	DPTR,#HZ_CGRAM
	jmp	WRITE_CGRAM_hz_same
WRITE_CGRAM_hz1:
	MOV	DPTR,#HZ_CGRAM1	
WRITE_CGRAM_hz_same:
	MOV	A,#40H;01000000B;SET CGRAM ADDRESS
	CALL	WRITE_COM
	MOV	R3,#16*4;40~7f
WCGRAM1:
	CLR	A
	MOVC	A,@A+DPTR
	CALL	WRITE_DAT
	CLR	A
	INC	DPTR
	MOVC	A,@A+DPTR
	CALL	WRITE_DAT
	INC	DPTR
	DJNZ	R3,WCGRAM1
	NOP
	RET	
;---------------------------
WRITE_CGRAM_DIAIC:
	MOV	R5,#40H
	MOV	R3,#16
	MOV	DPTR,#diaic_tab
WRITE_CGRAM_DIAIC00:
	MOV	R2,#4
	MOV	A,R5
	MOV	R4,A
WRITE_CGRAM_DIAIC0:
	MOV	A,R4
	CALL	WRITE_COM
WRITE_CGRAM_DIAIC1:
	CLR	A
	MOVC	A,@A+DPTR
	CALL	WRITE_DAT
	CLR	A
	INC	DPTR
	MOVC	A,@A+DPTR
	CALL	WRITE_DAT
	INC	DPTR
	MOV	A,#16
	ADD	A,R4
	MOV	R4,A
	DJNZ	R2,WRITE_CGRAM_DIAIC0	
	INC	R5
	DJNZ	R3,WRITE_CGRAM_DIAIC00
	NOP
	RET	
;*-------------------------------------------------------------------- *
;* 汉字字模表                                                          *
;* 汉字库: 宋体16.dot,横向取模左高位,数据排列:从左到右从上到下         *
;*-------------------------------------------------------------------- *
Hz_CGRAM:                              ; 数据表

	db  	 01h, 00h, 01h, 04h,0FFh,0FEh, 01h, 00h
	db	 01h, 04h, 7Fh,0FEh, 48h, 24h, 44h, 44h
	db	 5Fh,0F4h, 41h, 04h, 41h, 04h, 5Fh,0F4h
	db	 41h, 04h, 41h, 04h, 41h, 14h, 40h, 08h;"南",

	db  	 00h, 04h, 7Dh,0FEh, 45h, 04h, 49h, 04h
	db	 49h, 04h, 51h, 04h, 49h, 04h, 49h,0FCh
	db	 45h, 04h, 45h, 04h, 45h, 04h, 69h, 04h
	db	 51h, 04h, 41h, 04h, 41h,0FCh, 41h, 04h;"阳",

	db  	 00h, 08h, 13h,0FCh,0FAh, 48h, 22h, 48h
	db	 23h,0F8h, 22h, 48h,0FAh, 48h, 23h,0F8h
	db	 20h, 40h, 20h, 50h, 23h,0F8h, 3Ch, 40h
	db	 0E0h, 40h, 40h, 44h, 0Fh,0FEh, 00h, 00h;"理",

	db  	 00h, 00h, 00h, 08h, 7Fh,0FCh, 01h, 00h
	db	 01h, 00h, 01h, 00h, 01h, 00h, 01h, 00h
	db	 01h, 00h, 01h, 00h, 01h, 00h, 01h, 00h
	db	 01h, 04h,0FFh,0FEh, 00h, 00h, 00h, 00h;"工",
;----------------------------------------------------------------
Hz_CGRAM1:
	db       22h, 08h, 11h, 08h, 11h, 10h, 00h, 20h
	db	 7Fh,0FEh, 40h, 02h, 80h, 04h, 1Fh,0E0h
	db	 00h, 40h, 01h, 84h,0FFh,0FEh, 01h, 00h
	db	 01h, 00h, 01h, 00h, 05h, 00h, 02h, 00h;"学",

	db  	 00h, 80h, 78h, 40h, 4Fh,0FEh, 54h, 02h
	db	 58h, 14h, 63h,0F8h, 50h, 00h, 48h, 08h
	db	 4Fh,0FCh, 48h,0A0h, 68h,0A0h, 50h,0A0h
	db	 41h, 22h, 41h, 22h, 42h, 1Eh, 4Ch, 00h;"院",

	db  	 01h, 00h, 01h, 00h, 01h, 04h, 7Fh,0FEh
	db	 41h, 04h, 41h, 04h, 41h, 04h, 41h, 04h
	db	 7Fh,0FCh, 41h, 04h, 01h, 00h, 01h, 00h
	db	 01h, 00h, 01h, 00h, 01h, 00h, 01h, 00h;"中",

	db  	 01h, 00h, 01h, 00h, 01h, 00h, 01h, 00h
	db	 41h, 04h, 41h, 04h, 41h, 04h, 41h, 04h
	db	 41h, 04h, 41h, 04h, 41h, 04h, 41h, 04h
	db	 41h, 04h, 7Fh,0FCh, 40h, 04h, 00h, 00h;"山",

;---------------------------------------------------------

diaic_tab:
	db   	00h, 00h, 00h, 07h,0C0h, 00h, 00h, 00h
	db	00h, 00h, 00h, 1Fh,0E0h, 00h, 00h, 00h
	db	00h, 00h, 00h, 3Fh,0F8h, 00h, 00h, 00h
	db	0FFh,0FCh, 00h,0FFh,0FCh, 00h, 00h, 00h
	db	0FFh,0FFh,0FFh,0DFh,0FFh,0FFh,0FFh,0FEh
	db	0FFh,0FFh,0FFh,0BEh,0F7h,0FFh,0FFh,0FEh
	db	0C0h, 0Fh,0FEh, 3Ch,0F1h,0FFh,0E0h, 1Eh
	db	0C0h, 07h,0F8h, 7Ch, 78h, 7Fh, 80h, 06h
	db	0C0h, 03h,0F0h, 78h, 78h, 3Fh, 00h, 02h
	db	0C0h, 03h,0F0h,0FEh,0FCh, 3Fh, 00h, 00h
	db	0C0h, 03h,0F0h,0FFh,0FCh, 3Fh, 00h, 00h
	db	0C0h, 03h,0F1h,0FFh,0FEh, 3Fh, 00h, 00h
	db	0C0h, 03h,0F1h,0FFh,0FEh, 3Fh, 00h, 02h
	db	0C0h, 0Fh,0FBh,0F0h, 1Fh, 7Fh,0C0h, 0Eh
	db	0FFh,0FFh,0FFh,0C0h, 0Fh,0FFh,0FFh,0FEh
	db	0FFh,0FFh,0FFh, 80h, 07h,0FFh,0FFh,0FEh

;--------------------------------
WRITE_ASCII:
	MOV	R4,#16
  ASCII0:
	CLR	A
	MOVC	A,@A+DPTR
	CALL	WRITE_DAT
	INC	DPTR
	DJNZ	R4,ASCII0
	RET
;----------------------------
WRITE_HZ:
	;WRITE 8 CHINESE TO LCD
	MOV	R4,#8
  HZ1:
	CLR	A
	MOVC	A,@A+DPTR
	INC	DPTR
	CALL	WRITE_DAT
	CLR	A
	MOVC	A,@A+DPTR
	INC	DPTR
	CALL	WRITE_DAT
	DJNZ	R4,HZ1
	RET
;----------------------------------
WRITE_CGRAM:
	;CGRAM TESTING
	CLR	A
	MOVC	A,@A+DPTR
	CALL	WRITE_DAT
	INC	DPTR
	CLR	A
	MOVC	A,@A+DPTR
	CALL	WRITE_DAT
	INC	DPTR
	RET

WRITE_CGRAM1:
	MOV	A,TMP_RAM1
	MOVC	A,@A+DPTR
	CALL	WRITE_DAT
	INC	DPTR
	MOV	A,TMP_RAM1
	MOVC	A,@A+DPTR
	CALL	WRITE_DAT
	INC	TMP_RAM1
	RET	
;--------------------------
	
TABLE1:
;"这里是16*8点阵的字符代码"
DB	0C4H,0CFH,0D1H,0F4H,0C0H,0EDH,0B9H,0A4H,0D1H,0A7H,0D4H,0BAH,0C7H,0C7H,0C8H,0D9H,0C7H,0E4H
DB  	0BBH,0B6H,0D3H,0ADH,0C4H,0FAH,0B5H,0E7H,0D7H,0D3H,0D3H,0EBH,0B5H,0E7H,0C6H,0F8H,0B9H,0A4H
DB	0B3H,0CCH,0CFH,0B5H
;------------------------------------
;以下是自造字符地址表
CGRAM1:
DB	00H,01H
CGRAM2:
DB	00H,02H
CGRAM3:
DB	00H,04H
CGRAM4:	
DB	00H,06H
;-------------------------
CHINESE:
;这里是16*16点阵汉字代码表
DB	'南阳理工学院电子与电气工程系02911!广东省中山市中国灯饰之都古镇迪艾生!!!!!!!!'
;	 1  2 3 4 5 6 7 8 91011121314151617181920212223242526272829303132333435
;-------------------------
END

⌨️ 快捷键说明

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