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

📄 text1.asm

📁 一款液晶RT240128GB的以8080方式控制的底层驱动源代码程序,非常难得,放血奉献!
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;IO口定义
	_WR       BIT P0.0
	_RD       BIT P0.1
	CSL       BIT P0.2
	RS        BIT P0.3
	RST       BIT P0.4
	BUSY      BIT P0.5
	KEY       BIT P3.2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	DBUS      EQU P1
	REGNAME   EQU 30H
	REGDATA   EQU 31H
	REGDATA1  EQU 32H
	LCM_X     EQU 33H
	LCM_Y     EQU 34H
	LCM_DATA1 EQU 35H
	LCM_DATA2 EQU 36H
	COUNT1    EQU 37H
	COUNT2    EQU 38H
;#define   PORTB   P1
;sbit   WRT   =P0^0;//低电平有效//
;sbit   RAD   =P0^1;//低电平有效//
;sbit   CS   =P0^2;//低电平有效//
;sbit   RS   =P0^3;//1:数据寄存器 0:指令寄存器//
;sbit   RESET=P0^4;//低电平有效//正常工作应为高电平//
;sbit   BUSY =P0^5;//默认高电平为忙//
;sbit   INT  =P0^6;//默认高电平触发中断//
;====================================================================
;程序代码开始
	ORG 0000H
	AJMP MAIN
;==============================================================
	ORG 0040H
MAIN:
	LCALL DELAY2
	MOV SP,#60H
	CLR KEY ;如果执行此语句,将全速运行,否则要按一次按键才能显示下一个画面
	CLR RST
	LCALL DELAY2
	LCALL DELAY2
	SETB RST
;;;;;;;;;;;;;;;;;主程序部分;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TEST_PRO:LCALL LCM_INIT ;初始化
	;---------------清除显示数据:文本和图形
	LCALL CLR_P1
	LCALL CLR_P2
	;---------------全屏显示:横条
	LCALL DELAY2
	MOV LCM_DATA1,#0FFH
	MOV LCM_DATA2,#00H
	LCALL TEST_LCD;图形模式下测试LCD屏
	LCALL DELAY1
	LCALL DELAY2
	LCALL DELAY2       
	JB KEY,$ ;按键,按一下换一个画面
	MOV LCM_DATA1,#00H
	MOV LCM_DATA2,#0FFH
	LCALL TEST_LCD;图形模式下测试LCD屏
	LCALL DELAY1
	JB KEY,$ ;按键,按一下换一个画面
	;---------------全屏显示:坚条
	MOV LCM_DATA1,#0AAH
	MOV LCM_DATA2,#0AAH
	LCALL TEST_LCD;图形模式下测试LCD屏
	LCALL DELAY1
	JB KEY,$ ;按键,按一下换一个画面
	MOV LCM_DATA1,#055H
	MOV LCM_DATA2,#055H
	LCALL TEST_LCD;图形模式下测试LCD屏
	LCALL DELAY1
	JB KEY,$ ;按键,按一下换一个画面
	;---------------全屏显示:交叉点
	MOV LCM_DATA1,#0AAH
	MOV LCM_DATA2,#055H
	LCALL TEST_LCD;图形模式下测试LCD屏
	LCALL DELAY1
	JB KEY,$ ;按键,按一下换一个画面
	MOV LCM_DATA1,#055H
	MOV LCM_DATA2,#0AAH
	LCALL TEST_LCD;图形模式下测试LCD屏
	LCALL DELAY1
	JB KEY,$ ;按键,按一下换一个画面
	;---------------全屏显示:黑点
	MOV LCM_DATA1,#0FFH ;全显
	MOV LCM_DATA2,#0FFH
	LCALL TEST_LCD;图形模式下测试LCD屏
	LCALL DELAY1
	JB KEY,$ ;按键,按一下换一个画面
	;---------------文本显示
	LCALL CLR_P2 ;清屏图形区数据
	MOV DPTR,#TABOFTEXT
	LCALL HZ_DIS ;显示汉字表中的汉字
	LCALL DELAY1
	JB KEY,$ ;按键,按一下换一个画面
	LCALL DELAY1
	;---------------图片显示
	LCALL CLR_P1 ;清除文本
	MOV DPTR,#BMP000
	LCALL BMP_DIS ;画 BMP 图
	LCALL DELAY1
	JB KEY,$ ;按键,按一下换一个画面
	NOP
	LCALL CLR_P2 ;清屏画 BMP 图
	LJMP TEST_PRO
;;;;;;;;;;;;;;;;;;;;主程序部分结束;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;****************************************************
LCM_INIT:
	LCALL DELAY2
	; MOV REGNAME,#00H
	; MOV REGDATA,#0F0H
	; LCALL WRITE_COM ;软件复位
	LCALL DELAY1
	MOV DPTR,#INITTAB
IIINIT: CLR A
	MOVC A,@A+DPTR
	MOV REGNAME,A
	CLR C
	SUBB A,#0FFH
	JZ OUTINT
	CLR A
	INC DPTR
	MOVC A,@A+DPTR
	MOV REGDATA,A
	LCALL WRITE_COM
	INC DPTR
	AJMP IIINIT
OUTINT:	RET
;==============================================
HZ_DIS:
	MOV REGNAME,#00H
	MOV REGDATA,#0CDH ;字符模式
	LCALL WRITE_COM
	MOV COUNT1,#8 ;字符表中共8行汉字
	MOV LCM_X,#00H ;设显示行列地址
	MOV LCM_Y,#00H ;
HZ_DP0: LCALL LOCAL_XY ;
HZ_DIS1:MOV COUNT2,#30 ;一行字节计数(含标点15个汉字,合计30个字节)
HZ_DIS11:CLR A
	MOVC A,@A+DPTR
	LCALL WRITE_DAT
	INC DPTR
	DJNZ COUNT2,HZ_DIS11
	MOV A,LCM_Y
	ADD A,#16 ;指向下一行地址
	MOV LCM_Y,A
	DJNZ COUNT1,HZ_DP0
	RET
;=====================================================
BMP_DIS:
	MOV REGNAME,#00H
	MOV REGDATA,#0C5H ;图形模式
	LCALL WRITE_COM
	MOV COUNT1,#128 ;垂直 =128点
	MOV LCM_X,#00H ;画 BMP 图
	MOV LCM_Y,#00H
BMP_D1: LCALL LOCAL_XY ;设显示定行列地址
	MOV COUNT2,#30 ;水平 30X8=240点
BMP_D2: CLR A
	MOVC A,@A+DPTR
	LCALL WRITE_DAT
	INC DPTR
	DJNZ COUNT2,BMP_D2
	INC LCM_Y ;指向下一行地址
	DJNZ COUNT1,BMP_D1
	RET
;======================================================
CLR_P1: ;清除文本层显示数据
	MOV REGNAME,#00H
	MOV REGDATA,#0CDH ;文本模式
	LCALL WRITE_COM
	MOV LCM_X,#00H
	MOV LCM_Y,#00H
	LCALL LOCAL_XY ;设行列地址
	MOV COUNT1,#128;垂直16行文本
CLR_P11:MOV COUNT2,#30 ;水平40个字节宽
CLR_P12:MOV A,#00H;MOV A,#020H
	LCALL WRITE_DAT
	DJNZ COUNT2,CLR_P12
	DJNZ COUNT1,CLR_P11
	RET
;======================================================
CLR_P2: ;清除图形层显示数据
	MOV REGNAME,#00H
	MOV REGDATA,#0C5H ;图形模式
	LCALL WRITE_COM
	MOV LCM_X,#00H
	MOV LCM_Y,#00H
	LCALL LOCAL_XY ;设行列地址
	MOV COUNT1,#128 ;垂直 =240行
CLR_P21:MOV COUNT2,#30 ;水平40X8=320点
CLR_P22:CLR A
	MOV A,#00H
	LCALL WRITE_DAT
	DJNZ COUNT2,CLR_P22
	DJNZ COUNT1,CLR_P21
	RET
;======================================================
TEST_LCD: ;图形模式下测试LCD屏
	MOV REGNAME,#00H
	MOV REGDATA,#0C5H ;图形模式
	LCALL WRITE_COM 
	MOV COUNT1,#64;;;;;;;;;;;;;;;;;;;;
	MOV LCM_Y,#00H;
TEST_1: MOV LCM_X,#00H
	LCALL LOCAL_XY
	MOV COUNT2,#30;;;;;;;;;;;;;;;;;;;
TEST_2: MOV A,LCM_DATA1
	LCALL WRITE_DAT
	DJNZ COUNT2,TEST_2
	INC LCM_Y
	LCALL LOCAL_XY
	MOV COUNT2,#30
TEST_3: MOV A,LCM_DATA2
	LCALL WRITE_DAT
	DJNZ COUNT2,TEST_3
	INC LCM_Y
	DJNZ COUNT1,TEST_1
	RET
;==============================================================
LOCAL_XY:
	MOV REGNAME,#60H ;设定显示列地址
	MOV REGDATA,LCM_X
	LCALL WRITE_COM
	MOV REGNAME,#70H ;设定显示行地址
	MOV REGDATA,LCM_Y
	LCALL WRITE_COM
	RET
;==============================================================
WRITE_COM:
	MOV A,REGNAME
	LCALL WRITE_REG
	MOV A,REGDATA
	LCALL WRITE_REG
	RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WRITE_REG:
	MOV DBUS,A
	CLR CSL
	SETB _RD
	CLR RS
	CLR _WR
	NOP
	NOP
	NOP
	NOP
	SETB _WR
	SETB RS
	SETB CSL
	RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WRITE_DAT:
	MOV DBUS,A
	CLR CSL
	SETB _RD
	SETB RS
	CLR _WR
	NOP
	NOP
	NOP
	NOP
	SETB _WR
	SETB RS
	SETB CSL
	RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
READ_RS:
	MOV A,REGNAME ;读缓存器
	LCALL WRITE_REG
	MOV DBUS,#0FFH
	CLR CSL
	SETB _WR
	CLR RS
	NOP
	MOV A,DBUS
	SETB RS
	SETB CSL
	MOV REGDATA1,A
	RET
;==============================================================
DELAY1: MOV R5,#09H
DEL11:  LCALL DELAY2
	DJNZ R5,DEL11
	RET
;==============================================================
DELAY2: MOV R6,#20H
DEL21:  MOV R7,#20H
DEL22:  DJNZ R7,DEL22
	DJNZ R6,DEL21
	RET
;===========================================
DELAY:  MOV R5,#10
	DJNZ R5,$
	RET
;==============================================================
INITTAB: ;初始化参数表:前面的是寄存器地址,后面的是参数.最后以0FFH为标志做结束
	DB 000H,0C9H ;LCD基本显示功能设定 图形模式
	DB 001H,0F0H ;中断准位(高电平) / 设定系统频率8MHz
	DB 002H,010H ;LCD内存读写速度与功能设定(读字形ROM)
	DB 003H,080H ;LCD特殊显示功能
	DB 010H,06BH ;LCD基本显示功能设定 2
	DB 011H,000H ;光标高度和行距设定
	DB 012H,091H ;显示层设定:高位8灰度,9水平单一层,A单二层,B同时一二层
	;

⌨️ 快捷键说明

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