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

📄 ili9320_driverfunction.asm

📁 以 C51/8051 控制320x240彩色LCD 屛的程序 (Driver Fuction)
💻 ASM
字号:

;======= Function List =======================================================================
//****  LCD Display Driver Function  ****//
;==	LCDTest (void)					//To Test the color LCD by Display 4 kind of color in a page	
;==	ClerPage ((R5=RG, R6=GB))			//Write a Color to LCD(whole page)
;==	Reset LCD					//TO RESET AND START UP THE LCD DEVICE
;==	SetReg (R5=value[HSB], R6=value[LSB], R7=Index)	
;==	Set Index (R7=index)
;==	WriteData (R5=HSB, R6=LSB)
;==	SetAddress (R5=addr2, R6=addr1, R7=addr0)	//Set GRAM Horizonta/Vertical Address
		//addr2==Vertical[H];
		//addr1==Vertical[L];
		//addr0==Horizonte;

//**** Port Definition for LCD module *****//
RS_		BIT 	P3.2
CS_		BIT 	P3.3
RD_		BIT	P3.4
WR_		BIT	P3.5
LE_		BIT	P3.6
LCD_RST_	BIT	P3.7

LIGHT_		BIT	P1.0

DATPORT_	EQU	P2
//**** Memory Definition *****//
DataMemory	EQU	40
	
	
//**********  LCD Display Function  ************ 
;== To Test the color LCD by Display 4 kind of color in a page	
LCDTest:
	CLR	CS_
	MOV	R5,#00H
	MOV	R6,#00H
	MOV	R7,#00H
	ACALL	SetAddress
	MOV	R5,#0FFH
	MOV	R6,#0FFH
	ACALL	ClerPage
	MOV	R5,#11111000B
	MOV	R6,#00000000B
	ACALL	ClerPage
	MOV	R5,#00000111B
	MOV	R6,#11100000B
	ACALL	ClerPage
	MOV	R5,#00000000B
	MOV	R6,#00011111B
	ACALL	ClerPage
	MOV	R5,#00H
	MOV	R6,#00H
	ACALL	ClerPage
	SETB	CS_
	RET

;== 	ClerPage (R5=RG, R6=GB)
ClerPage:
	MOV	20H,R2
	PUSH	20H
	MOV	20H,R1
	PUSH	20H
	MOV	20H,R0
	PUSH	20H
	MOV	20H,R7
	PUSH	20H

	MOV	R7,#22H
	ACALL	SetIndex

	MOV	R2,#2
CLRP:	MOV	R1,#160
CLRP1:	MOV	R0,#240
CLRP0:	ACALL	WriteData
	DJNZ	R0,CLRP0
	DJNZ	R1,CLRP1
	DJNZ	R2,CLRP

	POP	20H
	MOV	R7,20H
	POP	20H
	MOV	R0,20H
	POP	20H
	MOV	R1,20H
	POP	20H
	MOV	R2,20H
	RET
;=============================
;==	Reset Device (void)
ResetLCD:
	//Reset LCD
	SETB	CS_
	CLR	LCD_RST_
	CLR	RS_
	SETB	RD_
	SETB	WR_
	SETB	LE_
	CLR	LIGHT_
	MOV	DATPORT_,#00H
	ACALL	DELAY_1MS
	SETB	LCD_RST_
	NOP
	NOP
	//Enable LCD
	CLR	CS_
//*** Setup display FO4R IL9320 driver IC ***
	MOV	R5,#08H		;Start OSC
	MOV	R6,#00H
	MOV	R7,#0E5H
	ACALL	SetReg
	MOV	R5,#00H
	MOV	R6,#01H
	MOV	R7,#00H
	ACALL	SetReg
	ACALL	DELAY_1MS
	
	MOV	R5,#00H		;calb
	MOV	R6,#01H
	MOV	R7,#0A4H
	ACALL	SetReg

	MOV	R5,#00H		;display control(1)
	MOV	R6,#00H
	MOV	R7,#07H
	ACALL	SetReg
	ACALL	DELAY_1MS
//*** Display Setting ***
	MOV	R5,#01H		;Driver output control (1)
	MOV	R6,#00H
	MOV	R7,#01H
	ACALL	SetReg
	MOV	R5,#07H		;LCD driving control
	MOV	R6,#00H
	MOV	R7,#02H
	ACALL	SetReg
	MOV	R5,#10H		;Entry mode
	MOV	R6,#30H
	MOV	R7,#03H
	ACALL	SetReg
	MOV	R5,#00H		;Resize control
	MOV	R6,#00H
	MOV	R7,#04H
	ACALL	SetReg
	MOV	R5,#02H		;Display control (2)
	MOV	R6,#02H
	MOV	R7,#08H
	ACALL	SetReg
	MOV	R5,#00H		;Display control (3)
	MOV	R6,#00H
	MOV	R7,#09H
	ACALL	SetReg
//*** Power Control ***
	MOV	R5,#01H		;power control 1 BT, AP
	MOV	R6,#01H
	MOV	R7,#07H
	ACALL	SetReg
	MOV	R5,#00H		
	MOV	R6,#01H
	MOV	R7,#17H
	ACALL	SetReg
	MOV	R5,#00H		
	MOV	R6,#00H
	MOV	R7,#10H
	ACALL	SetReg
	MOV	R5,#00H		;power control 2 DC, VC
	MOV	R6,#07H
	MOV	R7,#11H
	ACALL	SetReg
	MOV	R5,#00H		;power control 3 VRH
	MOV	R6,#00H
	MOV	R7,#12H
	ACALL	SetReg
	MOV	R5,#00H		;power control 4 VCOM amplitude
	MOV	R6,#00H
	MOV	R7,#13H
	ACALL	SetReg
	
	ACALL	DELAY_1MS

	MOV	R5,#16H		;power control 1 BT,AP
	MOV	R6,#0B0H
	MOV	R7,#10H
	ACALL	SetReg
	MOV	R5,#00H		;power control 2 DC,VC
	MOV	R6,#37H
	MOV	R7,#11H
	ACALL	SetReg
	ACALL	DELAY_1MS
	MOV	R5,#01H		;power control 3 VRH
	MOV	R6,#3EH
	MOV	R7,#12H
	ACALL	DELAY_1MS
	ACALL	SetReg
	MOV	R5,#1AH		;power control 4 vcom amplitude
	MOV	R6,#00H
	MOV	R7,#13H
	ACALL	SetReg
	MOV	R5,#00H		;power control 7 VCOMH
	MOV	R6,#0FH
	MOV	R7,#29H
	ACALL	DELAY_1MS

	ACALL	SetReg
	MOV	R5,#00H		;Horizontal GRAM Address Set
	MOV	R6,#00H
	MOV	R7,#20H
	ACALL	SetReg
	MOV	R5,#00H		;Vertical GRAM Address Set
	MOV	R6,#00H
	MOV	R7,#21H
	ACALL	SetReg
	
	MOV	R5,#00H		;Horizontal Address Start Position
	MOV	R6,#00H
	MOV	R7,#50H
	ACALL	SetReg
	MOV	R5,#00H		;Horizontal Address end Position (239)
	MOV	R6,#0EFH
	MOV	R7,#51H
	ACALL	SetReg
	MOV	R5,#00H		;Vertical Address Start Position
	MOV	R6,#00H
	MOV	R7,#52H
	ACALL	SetReg
	MOV	R5,#01H		;Vertical Address end Position (319)
	MOV	R6,#3FH
	MOV	R7,#53H
	ACALL	SetReg

	MOV	R5,#27H		;Driver Output Control 2
	MOV	R6,#00H
	MOV	R7,#60H
	ACALL	SetReg
	MOV	R5,#00H		;Base Image Display Control
	MOV	R6,#01H
	MOV	R7,#61H
	ACALL	SetReg
	MOV	R5,#00H		;Base Image Display Control
	MOV	R6,#00H
	MOV	R7,#6aH
	ACALL	SetReg

	MOV	R5,#00H		;Panel Interface Control 1
	MOV	R6,#10H
	MOV	R7,#90H
	ACALL	SetReg
	MOV	R5,#00H		;Panel Interface Control 2
	MOV	R6,#00H
	MOV	R7,#92H
	ACALL	SetReg
	MOV	R5,#00H		;Panel Interface Control 3
	MOV	R6,#00H
	MOV	R7,#93H
	ACALL	SetReg
//***GAMMA Control ***/
	MOV	R5,#00H		
	MOV	R6,#07H
	MOV	R7,#30H
	ACALL	SetReg
	MOV	R5,#04H		
	MOV	R6,#03H
	MOV	R7,#31H
	ACALL	SetReg
	MOV	R5,#04H		
	MOV	R6,#04H
	MOV	R7,#32H
	ACALL	SetReg
	MOV	R5,#00H		
	MOV	R6,#02H
	MOV	R7,#35H
	ACALL	SetReg
	MOV	R5,#07H		
	MOV	R6,#07H
	MOV	R7,#36H
	ACALL	SetReg
	MOV	R5,#06H		
	MOV	R6,#06H
	MOV	R7,#37H
	ACALL	SetReg
	MOV	R5,#01H		
	MOV	R6,#06H
	MOV	R7,#38H
	ACALL	SetReg
	MOV	R5,#00H		
	MOV	R6,#07H
	MOV	R7,#39H
	ACALL	SetReg
	MOV	R5,#07H		
	MOV	R6,#00H
	MOV	R7,#3cH
	ACALL	SetReg
	MOV	R5,#07H		
	MOV	R6,#07H
	MOV	R7,#3dH
	ACALL	SetReg
	MOV	R5,#01H		
	MOV	R6,#33H
	MOV	R7,#07H
	ACALL	SetReg
//** Disable LCD
	SETB	CS_
	ACALL	DELAY_1MS
	RET

;=============================
;==	SetReg (R5=value[HSB], R6=value[LSB], R7=Index)
SetReg:
	ACALL	SetIndex
	ACALL	WriteData
	RET

;=============================
;==	SetIndex (R7=index)
SetIndex:
	CLR	RS_
	SETB	LE_
	MOV	DATPORT_, R7
	CLR	LE_
	MOV	DATPORT_,#00H
	CLR	WR_	
	SETB	WR_
	RET

;=============================
;==	WriteData (R5=HSB, R6=LSB)
WriteData:
	SETB	RS_
	SETB	LE_
	MOV	DATPORT_, R6
	CLR	LE_
	MOV	DATPORT_, R5
	CLR	WR_
	SETB	WR_
	RET

;=============================
;==	SetAddress (R5=addr2, R6=addr1, R7=addr0)
SetAddress:
	MOV	20H,R7
	PUSH	20H
	MOV	R7,#20H
	ACALL	SetIndex;(R7=20H)
	POP	20H
	MOV	R7,20H

	MOV	20H,R5
	PUSH	20H
	MOV	20H,R6
	PUSH	20H
	MOV	R5,#00H
	MOV	20H,R7
	MOV	R6,20H
	ACALL	WriteData;(R5=00H, R6=addr0)
	POP	20H
	MOV	R6,20H
	POP	20H
	MOV	R5,20H
	MOV	20H,R7
	PUSH	20H
	MOV	R7,#21H
	ACALL	SetIndex;(R7=21H)
	POP	20H
	MOV	R7,20H

	ACALL	WriteData;(R5=addr2, R6=addr1)
	
	MOV	20H,R7
	PUSH	20H
	MOV	R7,#22H
	ACALL	SetIndex;(R7=22H)
	POP	20H
	MOV	R7,20H
	
	RET

//**********  System Function  ************ 
;== 	Delat 100ms
DELAY_1MS:
	MOV	20H,R7
	PUSH	20H
	MOV	20H,R6
	PUSH	20H
	MOV	R7,#200
DL:	MOV	R6,#250
	DJNZ	R6,$
	DJNZ	R7,DL
	POP	20H
	MOV	R6,20H
	POP	20H
	MOV	R7,20H
	RET


;=============================	
	END	

⌨️ 快捷键说明

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