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

📄 driver_pvg190602.asm

📁 PVG190602液晶驱动
💻 ASM
📖 第 1 页 / 共 3 页
字号:
; 	******************************************************************
; 	*S6B0108点阵液晶驱动程序[column driver:S6B0108;row driver:S6B0107*
; 	******************************************************************

RS_S6B0108		BIT 	P2.0; H:数据;L:指令
RW_S6B0108 		BIT 	P2.1; 读写控制信号,H:读;L:写
RE_S6B0108		BIT 	P2.2; 片使能信号,下降沿写数据锁存;高电平时输出给单片机
CSA_S6B0108 	BIT 	P2.3; S6B0108片选信号,L:使能
CSB_S6B0108 	BIT 	P2.4; S6B0108片选信号,L:使能
CSC_S6B0108 	BIT 	P2.5; S6B0108片选信号,L:使能
RST_S6B0108 	BIT 	P2.6; S6B0108复位信号,低电平有效
LED_S6B0108 	BIT 	P3.0; 背光控制,低电平有效
Busy_S6B0108	BIT		P0.7; 液晶忙标志
Data_S6B0108	EQU		P0;	液晶数据IO使用P0口

; 液晶驱动标志位定义
SelectFlag		BIT		20H.0; 反白标志,高电平有效
IntFlag			BIT		20H.1; 数据类型标志,高电平表示有符号数,低电平表示无符号数

; 寄存器定义
Databuf			EQU		22H; 通用数据缓存
Address			EQU		23H; 液晶绘图起始地址
ByteCount		EQU		24H; 通用读写字节数(液晶,DS1302)计数
EndAdr			EQU		25H; 液晶绘图结束地址
Chip			EQU		26H; 液晶片选
PageN			EQU		27H; 液晶页选
DPLbuf 			EQU		28H; DPTR低位地址缓存
DPHbuf	    	EQU		29H; DPTR高位地址缓存


			ORG		0000H
			SJMP	Main						
Main:		
			MOV		R7,#09;
			MOV		R0,#20H;
ClearMemory:
			MOV		@R0,#00H;
			INC		R0;
			DJNZ	R7,ClearMemory;


			CALL	S6B0108_Init; 初始化
			CALL	S6B0108_Clear; 清屏
			CLR		LED_S6B0108; 开背光

LOOP:
; 液晶驱动使用示例一
/*************************************************
; 8*16字体字符串 enjoydiy
			MOV		PageN,#00H;	显示页的地址(0-3)
			MOV		Address,#00; 显示地址0-149(00H-95H)
			MOV		DPTR,#Table_Str;
			CALL	S6B0108_WriStr8_16
; 紧接着是6*8字体字符串	enjoydiy
			MOV		DPTR,#Table_Str
			CALL	S6B0108_WriStr6_8; 调用显示字符串子程序

; 单个ASCLL码字符 a			
			MOV		A,#61H;	
			CALL	S6B0108_WriSigalASCLL8_16;
			MOV		A,#61H;
			CALL	S6B0108_WriSigalASCLL6_8;

			MOV		Address,#00;
			MOV		PageN,#02H;

; 整型数据显示,方法一 255			
			MOV		A,#0FFH;	
			CALL	Hex_Num2ASCLL;
			MOV		A,R7;
			CALL	S6B0108_WriSigalASCLL6_8;
			MOV		A,R6;
			CALL	S6B0108_WriSigalASCLL6_8;
			MOV		A,R5;	 
			CALL	S6B0108_WriSigalASCLL6_8;

; 整型数据显示,方法二  
			MOV		A,#0FFH; 255
			CALL	Display_INT_Number;

			SETB	IntFlag; 声明为有符号数
			MOV		A,#0FFH; -127
			CALL	Display_INT_Number;
;*********************************************/


;示例二 
;/********************************************
			MOV		Address,#00;
			MOV		PageN,#00H;
			MOV		DPTR,#Table_Str;
			CALL	S6B0108_WriStr8_16;

	
;*********************************************/
			JMP		LOOP;	

; 	************
; 	*读忙子程序*
; 	************
; 功能:
;		液晶读忙
; 入口参数:
; 			无
; 出口参数:
; 			无
; 占用资源:
;			无 
S6B0108_busy: 
			CLR		RS_S6B0108;
			SETB	RW_S6B0108;
			MOV		Data_S6B0108,#0FFH;
			SETB	RE_S6B0108;
			JB		Busy_S6B0108,S6B0108_busy;
			RET
; 	******************
; 	*液晶初始化子程序*
; 	******************
; 功能: 
;		液晶初始化,复位,开液晶显示	
; 入口参数:
;		 	无
; 出口参数:
; 			无
; 占用资源:
;			无 	
S6B0108_Init: 
			CLR		RST_S6B0108;
			SETB	RST_S6B0108; 	液晶复位

			SETB	CSC_S6B0108;	显示开IC1(详见S6B0108的Datasheet)
			SETB	CSB_S6B0108;
			CLR		CSA_S6B0108;
			CALL	S6B0108_busy;
			CLR		RS_S6B0108;
			CLR		RW_S6B0108;
			SETB	RE_S6B0108;
			MOV		Data_S6B0108,#3FH;
			CLR		RE_S6B0108; 		

			SETB	CSC_S6B0108;
			CLR		CSB_S6B0108;	显示开IC2(详见S6B0108的Datasheet)
			SETB	CSA_S6B0108;
			CALL	S6B0108_busy;
			CLR		RS_S6B0108;
			CLR		RW_S6B0108;
			SETB	RE_S6B0108;
			MOV		Data_S6B0108,#3FH; 
			CLR		RE_S6B0108;	   

			CLR		CSC_S6B0108;
			SETB	CSB_S6B0108;	显示开IC3(详见S6B0108的Datasheet)
			SETB	CSA_S6B0108;
			CALL	S6B0108_busy;
			CLR		RS_S6B0108;
			CLR		RW_S6B0108;
			SETB	RE_S6B0108;
			MOV		Data_S6B0108,#3FH; 
			CLR		RE_S6B0108;								
			RET
; 	****************************
; 	*液晶显示起始位置设定子程序*
; 	****************************
; 功能:
;		设定液晶显示起始位置,根据片选值设定片选	
; 入口参数:
;			Chip. 片选值(Chip = 00 or 01 or 10)
;			PageN. 页地址
;			Address. 显示地址(0-63)
; 出口参数:
;			无
; 占用资源:
;			A,Chip,PageN,Address
S6B0108_SetAddress:
			MOV		A,Chip;	设置片选
			JNB		ACC.1,Chip_10; 若Chip为10,则IC3=0,IC1=IC2=1
			SETB	CSA_S6B0108;
			SETB	CSB_S6B0108;
			CLR		CSC_S6B0108;
			SJMP	ChipSetEnd;
Chip_10:	
			SETB	CSC_S6B0108; 否则IC3=1
Chip_01:	
			JNB		ACC.0,Chip_00; 若Chip为01,则IC2=0,IC3=IC1=1
			SETB	CSA_S6B0108;
			CLR 	CSB_S6B0108;
			SJMP	ChipSetEnd;
Chip_00:
			CLR		CSA_S6B0108;	否则IC1=0,IC3=IC2=1
			SETB	CSB_S6B0108;
ChipSetEnd:	
			CALL	S6B0108_busy;  设定页地址(X address))
			CLR		RS_S6B0108;
			CLR		RW_S6B0108;
			SETB	RE_S6B0108;
			ORL		PageN,#0B8H;
			MOV		Data_S6B0108,PageN; 
			CLR		RE_S6B0108;

			CALL	S6B0108_busy; 设定地址(Y address)
			CLR		RS_S6B0108;
			CLR		RW_S6B0108;
			SETB	RE_S6B0108;
			ORL		Address,#40H;
			MOV		Data_S6B0108,Address; 
			CLR		RE_S6B0108;
			RET
; 	************
; 	*清屏子程序*
; 	************
; 功能:
; 		液晶清屏,先使能片选1再逐页清屏,接着是片2和片3,方法同样
; 入口参数:
; 			无
; 出口参数:
;  			无
; 占用资源:
;			A,R7,R6,R5,Chip,PageN,Address	
S6B0108_Clear:
			MOV		R7,#40H;
			MOV		R6,#08H;
			MOV		R5,#03H;
			MOV		Chip,#00H;
			MOV		PageN,#00H;
ClearNextPage:
			MOV		Address,#00H;
			CALL	S6B0108_SetAddress;
Next:
			CALL	S6B0108_busy;
			SETB	RS_S6B0108;
			CLR		RW_S6B0108;
			SETB	RE_S6B0108;
			MOV		Data_S6B0108,#00H;
			CLR		RE_S6B0108;
			DJNZ	R7,Next; 
			MOV		R7,#40H;
			INC		PageN; 清下一页
			DJNZ	R6,ClearNextPage;
			MOV		PageN,#00H;
			MOV		R6,#08H;
			INC		Chip; 清下一片
			DJNZ	R5,ClearNextPage;
			RET
; 	*********************
; 	*自定义字符,字符串表*
; 	*********************
; 功能:
;		在此定义将要显示的字符串
; 入口参数:
; 			DPTR
; 出口参数:
; 			返回字符在ASCLL码表中的值

Table_Str:
DB	"enjoydiy000000000000000000000000",0;


; ********************************8*6LCD点阵字库************************
; 包括以下ASCII字符:
;  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`
; abcdefghijklmnopqrstuvwxyz{|}
; **********************************************************************
Table_ASCLL6_8:
DB 0x00,0x00,0x00,0x00,0x00,0x00	; 
DB 0x00,0xBE,0x00,0x00,0x00,0x00	; !
DB 0x07,0x00,0x07,0x00,0x00,0x00	; "
DB 0x24,0xFE,0x24,0xFE,0x24,0x00	; #
DB 0x4C,0x92,0xFF,0x92,0x64,0x00	; $ 
DB 0x8E,0x6E,0x10,0xEC,0xE2,0x00	; % 
DB 0x60,0x94,0x9A,0x64,0xA0,0x00	; &  
DB 0x04,0x03,0x00,0x00,0x00,0x00	; '
DB 0x00,0x3C,0x42,0x81,0x00,0x00	; (
DB 0x81,0x42,0x3C,0x00,0x00,0x00	; )
DB 0x12,0x0C,0x3F,0x0C,0x12,0x00	; *
DB 0x00,0x08,0x3E,0x08,0x00,0x00	; +
DB 0xA0,0x60,0x00,0x00,0x00,0x00	; ,
DB 0x08,0x08,0x08,0x08,0x00,0x00	; -
DB 0x40,0x40,0x00,0x00,0x00,0x00	; .
DB 0xC0,0x30,0x0C,0x03,0x00,0x00	; /
DB 0x3E,0x41,0x41,0x3E,0x00,0x00	; 0
DB 0x00,0x02,0x7F,0x00,0x00,0x00	; 1
DB 0x62,0x51,0x49,0x46,0x00,0x00	; 2
DB 0x22,0x49,0x49,0x36,0x00,0x00	; 3
DB 0x30,0x2C,0x23,0x7F,0x20,0x00	; 4
DB 0x27,0x45,0x45,0x39,0x00,0x00	; 5
DB 0x3E,0x49,0x49,0x32,0x00,0x00	; 6
DB 0x01,0x71,0x0D,0x03,0x00,0x00	; 7
DB 0x36,0x49,0x49,0x36,0x00,0x00	; 8
DB 0x26,0x49,0x49,0x3E,0x00,0x00	; 9
DB 0x00,0x48,0x48,0x00,0x00,0x00	; :
DB 0x00,0xA2,0x62,0x00,0x00,0x00	; ;
DB 0x08,0x14,0x22,0x41,0x00,0x00	; <
DB 0x14,0x14,0x14,0x14,0x00,0x00	; =
DB 0x41,0x22,0x14,0x08,0x00,0x00	; >
DB 0x02,0x01,0xD9,0x06,0x00,0x00	; ?
DB 0x3E,0x41,0x5D,0x55,0x1E,0x00	; @
DB 0x7C,0x13,0x13,0x7C,0x00,0x00	; A
DB 0x7F,0x49,0x49,0x36,0x00,0x00	; B
DB 0x3E,0x41,0x41,0x22,0x00,0x00	; C
DB 0x7F,0x41,0x41,0x3E,0x00,0x00	; D
DB 0x7F,0x49,0x49,0x41,0x00,0x00	; E
DB 0x7F,0x09,0x09,0x01,0x00,0x00	; F
DB 0x3E,0x41,0x49,0x7A,0x00,0x00	; G
DB 0x7F,0x08,0x08,0x7F,0x00,0x00	; H
DB 0x00,0x7F,0x00,0x00,0x00,0x00	; I
DB 0x20,0x40,0x40,0x3F,0x00,0x00	; J
DB 0x7F,0x08,0x14,0x63,0x00,0x00	; K
DB 0x7F,0x40,0x40,0x40,0x00,0x00	; L
DB 0x7F,0x0C,0x70,0x0C,0x7F,0x00	; M
DB 0x7F,0x0C,0x30,0x7F,0x00,0x00	; N
DB 0x3E,0x41,0x41,0x3E,0x00,0x00	; O
DB 0x7F,0x11,0x11,0x0E,0x00,0x00	; P
DB 0x3E,0x51,0x21,0x5E,0x00,0x00	; Q
DB 0x7F,0x09,0x09,0x76,0x00,0x00	; R
DB 0x26,0x49,0x49,0x32,0x00,0x00	; S
DB 0x01,0x01,0x7F,0x01,0x01,0x00	; T
DB 0x3F,0x40,0x40,0x3F,0x00,0x00	; U
DB 0x07,0x18,0x60,0x18,0x07,0x00	; V
DB 0x0F,0x70,0x0F,0x70,0x0F,0x00	; W
DB 0x63,0x1C,0x1C,0x63,0x00,0x00	; X
DB 0x03,0x04,0x78,0x04,0x03,0x00	; Y
DB 0x61,0x51,0x4D,0x43,0x00,0x00	; Z
DB 0x00,0x00,0xFF,0x81,0x00,0x00	; [
DB 0x03,0x0C,0x70,0x80,0x00,0x00	; \
DB 0x81,0xFF,0x00,0x00,0x00,0x00	; ]
DB 0x02,0x01,0x02,0x00,0x00,0x00	; ^
DB 0x80,0x80,0x80,0x80,0x80,0x00	; _
DB 0x01,0x02,0x00,0x00,0x00,0x00	; `
DB 0x24,0x54,0x54,0x78,0x00,0x00	; a
DB 0x7F,0x44,0x44,0x38,0x00,0x00	; b
DB 0x38,0x44,0x44,0x28,0x00,0x00	; c
DB 0x38,0x44,0x44,0x7F,0x00,0x00	; d
DB 0x38,0x54,0x54,0x58,0x00,0x00	; e
DB 0x04,0x7E,0x05,0x04,0x00,0x00	; f
DB 0x6C,0x92,0xAC,0x62,0x00,0x00	; g
DB 0x7F,0x04,0x04,0x78,0x00,0x00	; h
DB 0x00,0x00,0x7D,0x00,0x00,0x00	; i
DB 0x80,0x80,0x7D,0x00,0x00,0x00	; j
DB 0x7F,0x10,0x18,0x64,0x00,0x00	; k
DB 0x00,0x00,0x7F,0x00,0x00,0x00	; l
DB 0x7C,0x04,0x78,0x04,0x78,0x00	; m
DB 0x7C,0x04,0x04,0x78,0x00,0x00	; n

⌨️ 快捷键说明

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